Показать полную графическую версию : [архив] Inno Setup .:[все вопросы]:.
Из скрипта видно, что создаётся Label, в котором отображается процент распакованных файлов, т.е прогрессбар дёргаться не должен, смена текста в Label'е бывает на больших файлах запаздывает.
Выход, только переписывать всё вручную, но поверьте, игра не стоит свеч, т.е писать много... »
тогда понятно, я думал, может есть что-то проще....
поиграйтесь со значениями в procedure InitializeWizard с:
Код:
ProgressLabel.Top:= ScaleY(107)
ProgressLabel.Left:= ScaleX(392) »
это я знаю, указать координаты не сложно. проблема в том, что я хочу, чтобы проценты были на одной строке с надписью "Установка...", но если я просто перемещаю их туда, они скрываются, т.е. строка статуса получается поверх процентов (даже если я размещаю проценты почти в конце прогресс-бара), а мне надо наоборот.....
Как называется элемент чекбокс "Не создавать папку в меню «Пуск»"? »
Попробуйте скомпилировать этот скрипт:
[Setup]
AppName=My Program
AppVerName=My Program v 1.5
DefaultDirName={pf}\My Program
DefaultGroupName=My Program
AllowNoIcons=yes
OutputDir=.
Compression=lzma/ultra
InternalCompressLevel=ultra
SolidCompression=yes
[Languages]
Name: russian; MessagesFile: compiler:Languages\Russian.isl
[Files]
Source: compiler:Examples\MyProg.exe; DestDir: {app}; Flags: ignoreversion
[Icons]
Name: {group}\My Program; Filename: {app}\MyProg.exe
[Code]
procedure InitializeWizard();
begin
WizardForm.NoIconsCheck.Caption:= 'привет';
WizardForm.NoIconsCheck.Checked:= True;
WizardForm.NoIconsCheck.Enabled:= True;
WizardForm.NoIconsCheck.Left:= 180;
WizardForm.NoIconsCheck.Top:= 150;
end;
это я знаю, указать координаты не сложно. проблема в том, что я хочу, чтобы проценты были на одной строке с надписью "Установка...", но если я просто перемещаю их туда, они скрываются, »
Самое простое изменить, т.е. уменьшить значение WizardForm.FilenameLabel.Width
Помогите с ошибкой ничего не могу понять ,
пишет ошибку типа неверна комадная строка
[setup]
AppName=Grandia 2
AppVerName=Grandia 2 [Repack]
AppPublisher=X-NET
DefaultDirName={pf}\Grandia 2
OutputDir=D:\Репаки\Prototype
DefaultGroupName=Grandia 2
UninstallFilesDir={app}\Uninstall
Compression=lzma/ultra64
InternalCompressLevel=ultra64
SolidCompression=true
DiskSpanning=yes
SlicesPerDisk=3
DiskSliceSize=1100000000
DisableProgramGroupPage=true
;DisableReadyPage=true
UninstallDisplayIcon={app}\Grandia2.exe, 0
UninstallDisplayName=Grandia 2
SetupIconFile=C:\Users\Администратор\Desktop\MAINICON.ico
[Languages]
Name: RUS; MessagesFile: compiler:Languages\Russian.isl
[Icons]
Name: "{group}\Запустить игру"; Filename: "{app}\Grandia2.exe"; WorkingDir: "{app}"; Check: GroupIcons
Name: "{group}\Удалить игру"; Filename: {app}\Uninstall\unins000; WorkingDir: {app}; Check: GroupIcons
Name: "{group}\Настроить"; Filename: {app}\GmConfig.exe; WorkingDir: {app}; Check: GroupIcons
Name: "{userdesktop}\Grandia 2"; Filename: {app}\Grandia2.exe; WorkingDir: {app}; Check: CreateIcons
;GameUx
[Files]
Source: ISSkin.dll; DestDir: {app}; Flags: dontcopy
Source: WinX1.cjstyles; DestDir: {tmp}; Flags: dontcopy
Source: get_hw_caps.dll; Flags: dontcopy
Source: 1.bmp; DestDir: {tmp}; Flags: dontcopy
Source: "C:\Program Files\Grandia 2\Grandia2.exe"; DestDir: "{app}"; Flags: ignoreversion
Source: "C:\Program Files\Grandia 2\*"; DestDir: "{app}"; Flags: ignoreversion recursesubdirs createallsubdirs
;GameUx
[Run]
Filename: "{src}\DirectX\DXSETUP.exe"; Parameters: "\silent"; StatusMsg: ExpandConstant('{cm:UP}'); Check: InstallDirectX
Filename: "{src}\Redist\vcredist_x86.exe"; Parameters: "\q"; StatusMsg: "Идет установка Microsoft Visual C++ Redistibutable"; WorkingDir: "{src}\Redist"; Check: InstallRedist
Самое простое изменить, т.е. уменьшить значение WizardForm.FilenameLabel.Width »
спасибо, понял!
пишет ошибку типа неверна комадная строка »
всё правильно, где вы видели обратный слеш '\' в ком. строке?
Замените '\' на '/', т.е.
[Run]
Filename: "{src}\DirectX\DXSETUP.exe"; Parameters: "/silent"; StatusMsg: ExpandConstant('{cm:UP}'); Check: InstallDirectX
Filename: "{src}\Redist\vcredist_x86.exe"; Parameters: "/q"; StatusMsg: "Идет установка Microsoft Visual C++ Redistibutable"; WorkingDir: "{src}\Redist"; Check: InstallRedist
Mihail88
10-08-2009, 21:11
serg aka lain, Serega, благодарю.
То что нужно, если не секрет как вы их узнаёте? Всмысле используемые элементы инсталлятора.
Serega ты не как я и ни как другие ты мега гуру Inno setup...... (может сделаешь?)
Serega, блин всё получилось спасибо тебе, но теперь одна ошибка осталось в аську выйди, вопросы бы задавал по inno
serg aka lain
10-08-2009, 23:30
То что нужно, если не секрет как вы их узнаёте? Всмысле используемые элементы инсталлятора. »
Ну, можно взглянуть в файл Setup.e32 в папке Inno, с помощью редактора ресурсов (ResHacker , etc) TWIZARDFORM
или вот готовый
object WizardForm: TWizardForm
Left = 191
Top = 139
BorderIcons = [biSystemMenu]
BorderStyle = bsDialog
Caption = 'WizardForm'
ClientHeight = 360
ClientWidth = 497
Font.Color = clWindowText
Font.Height = -11
Font.Name = 'MS Sans Serif'
Font.Style = []
Scaled = False
OnClose = FormClose
PixelsPerInch = 96
TextHeight = 13
object Bevel: TBevel
Left = 0
Top = 313
Width = 497
Height = 2
Shape = bsTopLine
end
object CancelButton: TNewButton
Left = 464
Top = 327
Width = 17
Height = 23
Cancel = True
Caption = '*'
TabOrder = 4
OnClick = CancelButtonClick
end
object NextButton: TNewButton
Left = 440
Top = 327
Width = 17
Height = 23
Caption = '*'
Default = True
TabOrder = 3
OnClick = NextButtonClick
end
object BackButton: TNewButton
Left = 424
Top = 327
Width = 16
Height = 23
Caption = '*'
TabOrder = 2
OnClick = BackButtonClick
end
object OuterNotebook: TNewNotebook
Left = 0
Top = 0
Width = 497
Height = 313
ActivePage = InnerPage
Color = clBtnFace
ParentColor = False
TabOrder = 0
object WelcomePage: TNewNotebookPage
Color = clWindow
ParentColor = False
object WizardBitmapImage: TBitmapImage
Left = 0
Top = 0
Width = 164
Height = 314
end
object WelcomeLabel2: TNewStaticText
Left = 176
Top = 76
Width = 301
Height = 234
AutoSize = False
Caption = '*'
ShowAccelChar = False
TabOrder = 1
WordWrap = True
end
object WelcomeLabel1: TNewStaticText
Left = 176
Top = 16
Width = 301
Height = 54
AutoSize = False
Caption = '*'
ShowAccelChar = False
TabOrder = 0
WordWrap = True
end
end
object InnerPage: TNewNotebookPage
object Bevel1: TBevel
Left = 0
Top = 58
Width = 499
Height = 3
Shape = bsTopLine
end
object InnerNotebook: TNewNotebook
Left = 40
Top = 72
Width = 417
Height = 237
ActivePage = LicensePage
TabOrder = 1
object LicensePage: TNewNotebookPage
object LicenseNotAcceptedRadio: TNewRadioButton
Left = 0
Top = 216
Width = 417
Height = 17
Caption = '*'
Checked = True
TabOrder = 3
TabStop = True
OnClick = LicenseNotAcceptedRadioClick
end
object LicenseAcceptedRadio: TNewRadioButton
Left = 0
Top = 196
Width = 417
Height = 17
Caption = '*'
TabOrder = 2
OnClick = LicenseAcceptedRadioClick
end
object LicenseMemo: TRichEditViewer
Left = 0
Top = 24
Width = 417
Height = 161
ReadOnly = True
ScrollBars = ssVertical
TabOrder = 1
WantReturns = False
UseRichEdit = False
end
object LicenseLabel1: TNewStaticText
Left = 0
Top = 0
Width = 417
Height = 14
AutoSize = False
Caption = '*'
ShowAccelChar = False
TabOrder = 0
WordWrap = True
end
end
object PasswordPage: TNewNotebookPage
object PasswordEdit: TPasswordEdit
Left = 0
Top = 40
Width = 265
Height = 21
TabOrder = 2
end
object PasswordEditLabel: TNewStaticText
Left = 0
Top = 24
Width = 417
Height = 14
AutoSize = False
Caption = '*'
FocusControl = PasswordEdit
TabOrder = 1
WordWrap = True
end
object PasswordLabel: TNewStaticText
Left = 0
Top = 0
Width = 417
Height = 14
AutoSize = False
Caption = '*'
ShowAccelChar = False
TabOrder = 0
WordWrap = True
end
end
object InfoBeforePage: TNewNotebookPage
object InfoBeforeMemo: TRichEditViewer
Left = 0
Top = 24
Width = 417
Height = 205
ReadOnly = True
ScrollBars = ssVertical
TabOrder = 1
WantReturns = False
UseRichEdit = False
end
object InfoBeforeClickLabel: TNewStaticText
Left = 0
Top = 0
Width = 417
Height = 14
AutoSize = False
Caption = '*'
ShowAccelChar = False
TabOrder = 0
WordWrap = True
end
end
object UserInfoPage: TNewNotebookPage
object UserInfoSerialEdit: TNewEdit
Left = 0
Top = 120
Width = 417
Height = 21
MaxLength = 255
TabOrder = 5
OnChange = UserInfoEditChange
end
object UserInfoSerialLabel: TNewStaticText
Left = 0
Top = 104
Width = 417
Height = 14
AutoSize = False
Caption = '*'
FocusControl = UserInfoSerialEdit
TabOrder = 4
WordWrap = True
end
object UserInfoOrgEdit: TNewEdit
Left = 0
Top = 68
Width = 417
Height = 21
MaxLength = 255
TabOrder = 3
OnChange = UserInfoEditChange
end
object UserInfoOrgLabel: TNewStaticText
Left = 0
Top = 52
Width = 417
Height = 14
AutoSize = False
Caption = '*'
FocusControl = UserInfoOrgEdit
TabOrder = 2
WordWrap = True
end
object UserInfoNameEdit: TNewEdit
Left = 0
Top = 16
Width = 417
Height = 21
MaxLength = 255
TabOrder = 1
OnChange = UserInfoEditChange
end
object UserInfoNameLabel: TNewStaticText
Left = 0
Top = 0
Width = 417
Height = 14
AutoSize = False
Caption = '*'
FocusControl = UserInfoNameEdit
TabOrder = 0
WordWrap = True
end
end
object SelectDirPage: TNewNotebookPage
object SelectDirBitmapImage: TBitmapImage
Left = 0
Top = 0
Width = 32
Height = 32
end
object DiskSpaceLabel: TNewStaticText
Left = 0
Top = 216
Width = 417
Height = 14
AutoSize = False
Caption = '*'
ShowAccelChar = False
TabOrder = 4
WordWrap = True
end
object DirBrowseButton: TNewButton
Left = 400
Top = 67
Width = 17
Height = 23
Caption = '*'
TabOrder = 3
OnClick = DirBrowseButtonClick
end
object DirEdit: TEdit
Left = 0
Top = 68
Width = 397
Height = 21
TabOrder = 2
Text = 'DirEdit'
end
object SelectDirBrowseLabel: TNewStaticText
Left = 0
Top = 44
Width = 417
Height = 14
AutoSize = False
Caption = '*'
ShowAccelChar = False
TabOrder = 1
WordWrap = True
end
object SelectDirLabel: TNewStaticText
Left = 44
Top = 0
Width = 373
Height = 14
AutoSize = False
Caption = '*'
ShowAccelChar = False
TabOrder = 0
WordWrap = True
end
end
object SelectComponentsPage: TNewNotebookPage
object ComponentsDiskSpaceLabel: TNewStaticText
Left = 0
Top = 216
Width = 417
Height = 14
AutoSize = False
Caption = '*'
ShowAccelChar = False
TabOrder = 3
end
object ComponentsList: TNewCheckListBox
Left = 0
Top = 48
Width = 417
Height = 157
Offset = 2
OnClickCheck = ComponentsListClickCheck
RequireRadioSelection = True
TabOrder = 2
end
object TypesCombo: TNewComboBox
Left = 0
Top = 24
Width = 417
Height = 21
Style = csDropDownList
ItemHeight = 0
TabOrder = 1
OnChange = TypesComboChange
end
object SelectComponentsLabel: TNewStaticText
Left = 0
Top = 0
Width = 417
Height = 14
AutoSize = False
Caption = '*'
ShowAccelChar = False
TabOrder = 0
WordWrap = True
end
end
object SelectProgramGroupPage: TNewNotebookPage
object SelectGroupBitmapImage: TBitmapImage
Left = 0
Top = 0
Width = 32
Height = 32
end
object NoIconsCheck: TNewCheckBox
Left = 0
Top = 215
Width = 417
Height = 17
Caption = '*'
TabOrder = 4
OnClick = NoIconsCheckClick
end
object GroupBrowseButton: TNewButton
Left = 400
Top = 67
Width = 17
Height = 23
Caption = '*'
TabOrder = 3
OnClick = GroupBrowseButtonClick
end
object GroupEdit: TNewEdit
Left = 0
Top = 68
Width = 397
Height = 21
TabOrder = 2
Text = 'GroupEdit'
end
object SelectStartMenuFolderBrowseLabel: TNewStaticText
Left = 0
Top = 44
Width = 417
Height = 14
AutoSize = False
Caption = '*'
ShowAccelChar = False
TabOrder = 1
WordWrap = True
end
object SelectStartMenuFolderLabel: TNewStaticText
Left = 44
Top = 0
Width = 373
Height = 14
AutoSize = False
Caption = '*'
ShowAccelChar = False
TabOrder = 0
WordWrap = True
end
end
object SelectTasksPage: TNewNotebookPage
object TasksList: TNewCheckListBox
Left = 0
Top = 24
Width = 417
Height = 205
Color = clBtnFace
RequireRadioSelection = True
ShowLines = False
TabOrder = 1
WantTabs = True
end
object SelectTasksLabel: TNewStaticText
Left = 0
Top = 0
Width = 417
Height = 14
AutoSize = False
Caption = '*'
ShowAccelChar = False
TabOrder = 0
WordWrap = True
end
end
object ReadyPage: TNewNotebookPage
object ReadyMemo: TNewMemo
Left = 0
Top = 24
Width = 417
Height = 205
Color = clBtnFace
ReadOnly = True
ScrollBars = ssBoth
TabOrder = 1
WantReturns = False
WordWrap = False
end
object ReadyLabel: TNewStaticText
Left = 0
Top = 0
Width = 417
Height = 14
AutoSize = False
Caption = '*'
ShowAccelChar = False
TabOrder = 0
WordWrap = True
end
end
object PreparingPage: TNewNotebookPage
object PreparingErrorBitmapImage: TBitmapImage
Left = 0
Top = 0
Width = 16
Height = 16
Visible = False
end
object PreparingLabel: TNewStaticText
Left = 24
Top = 0
Width = 393
Height = 14
AutoSize = False
Caption = '*'
ShowAccelChar = False
TabOrder = 0
Visible = False
WordWrap = True
end
end
object InstallingPage: TNewNotebookPage
object FilenameLabel: TNewStaticText
Left = 0
Top = 16
Width = 417
Height = 16
AutoSize = False
ForceLTRReading = True
ShowAccelChar = False
TabOrder = 1
end
object StatusLabel: TNewStaticText
Left = 0
Top = 0
Width = 417
Height = 16
AutoSize = False
ShowAccelChar = False
TabOrder = 0
end
object ProgressGauge: TNewProgressBar
Left = 0
Top = 42
Width = 417
Height = 21
Min = 0
Max = 100
end
end
object InfoAfterPage: TNewNotebookPage
object InfoAfterMemo: TRichEditViewer
Left = 0
Top = 24
Width = 417
Height = 205
ReadOnly = True
ScrollBars = ssVertical
TabOrder = 1
WantReturns = False
UseRichEdit = False
end
object InfoAfterClickLabel: TNewStaticText
Left = 0
Top = 0
Width = 417
Height = 14
AutoSize = False
Caption = '*'
ShowAccelChar = False
TabOrder = 0
WordWrap = True
end
end
end
object MainPanel: TPanel
Left = 0
Top = 0
Width = 497
Height = 58
BevelOuter = bvNone
Color = clWindow
TabOrder = 0
object WizardSmallBitmapImage: TBitmapImage
Left = 440
Top = 0
Width = 55
Height = 58
BackColor = clWindow
end
object PageDescriptionLabel: TNewStaticText
Left = 40
Top = 26
Width = 389
Height = 29
AutoSize = False
Caption = '*'
ShowAccelChar = False
TabOrder = 1
WordWrap = True
end
object PageNameLabel: TNewStaticText
Left = 24
Top = 10
Width = 405
Height = 14
AutoSize = False
Caption = '*'
ShowAccelChar = False
TabOrder = 0
end
end
end
object FinishedPage: TNewNotebookPage
Color = clWindow
ParentColor = False
object WizardBitmapImage2: TBitmapImage
Left = 0
Top = 0
Width = 164
Height = 314
end
object NoRadio: TNewRadioButton
Left = 176
Top = 184
Width = 301
Height = 17
Caption = '*'
TabOrder = 4
Visible = False
end
object YesRadio: TNewRadioButton
Left = 176
Top = 156
Width = 301
Height = 17
Caption = '*'
Checked = True
TabOrder = 3
TabStop = True
Visible = False
end
object RunList: TNewCheckListBox
Left = 176
Top = 156
Width = 301
Height = 149
BorderStyle = bsNone
ParentColor = True
TabOrder = 2
Visible = False
WantTabs = True
end
object FinishedLabel: TNewStaticText
Left = 176
Top = 76
Width = 301
Height = 53
AutoSize = False
Caption = '*'
ShowAccelChar = False
TabOrder = 1
WordWrap = True
end
object FinishedHeadingLabel: TNewStaticText
Left = 176
Top = 16
Width = 301
Height = 54
AutoSize = False
Caption = '*'
ShowAccelChar = False
TabOrder = 0
WordWrap = True
end
end
end
object BeveledLabel: TNewStaticText
Left = 0
Top = 306
Width = 5
Height = 14
Caption = '*'
Enabled = False
ShowAccelChar = False
TabOrder = 1
end
end
seregaprocedure CurStepChanged(CurStep: TSetupStep);
var
res:Integer;
s,s1:string;
begin
If CurStep=ssInstall
then
begin
if (FileExists(AddBackslash(ExpandConstant('{src}')) + 'data1.bin')) and (FileExists(AddBackslash(ExpandConstant('{src}')) + 'data.bin')) then
begin
s:=ExpandConstant('{src}')+'\data.bin';
s1:=ExpandConstant('{app}');
Exec(s, '-y -o"'+ s1 + '"', '', SW_HIDE, ewWaitUntilTerminated, res);
WizardForm.StatusLabel.Caption:='Распаковка файлов...';
ProgressBar1.Position := 1
s:=ExpandConstant('{src}')+'\data1.bin';
s1:=ExpandConstant('{app}');
Exec(s, '-y -o"'+ s1 + '"', '', SW_HIDE, ewWaitUntilTerminated, res);
WizardForm.StatusLabel.Caption:='Распаковка файлов...';
ProgressBar1.Position := 3
Exec(ExpandConstant('{app}\zone\russian\pre.bat'), '', '', SW_HIDE, ewWaitUntilTerminated, res);
WizardForm.StatusLabel.Caption:='Распаковка файлов...';
ProgressBar1.Position := 6
s:=ExpandConstant('{src}')+'\data2.bin';
s1:=ExpandConstant('{app}');
Exec(s, '-y -o"'+ s1 + '"', '', SW_HIDE, ewWaitUntilTerminated, res);
WizardForm.StatusLabel.Caption:='Распаковка файлов...';
ProgressBar1.Position := 8
Exec(ExpandConstant('{app}\zone\russian\pre.bat'), '', '', SW_HIDE, ewWaitUntilTerminated, res);
DeleteFile(ExpandConstant('{app}\zone\russian\msvcr80.dll'));
DeleteFile(ExpandConstant('{app}\zone\russian\packjpg_dll.dll'));
DeleteFile(ExpandConstant('{app}\zone\russian\zlib1.dll'));
DeleteFile(ExpandConstant('{app}\zone\russian\precomp.exe'));
DeleteFile(ExpandConstant('{app}\zone\russian\pre.bat'));
WizardForm.StatusLabel.Caption:='Распаковка файлов...';
ProgressBar1.Position := 11
s:=ExpandConstant('{src}')+'\data3.bin';
s1:=ExpandConstant('{app}');
Exec(s, '-y -o"'+ s1 + '"', '', SW_HIDE, ewWaitUntilTerminated, res);
WizardForm.StatusLabel.Caption:='Распаковка файлов...';
ProgressBar1.Position := 13
Exec(ExpandConstant('{app}\main\1.bat'), '', '', SW_HIDE, ewWaitUntilTerminated, res);
WizardForm.StatusLabel.Caption:='Распаковка файлов...';
ProgressBar1.Position := 14
Exec(ExpandConstant('{app}\main\2.bat'), '', '', SW_HIDE, ewWaitUntilTerminated, res);
WizardForm.StatusLabel.Caption:='Распаковка файлов...';
ProgressBar1.Position := 15
s:=ExpandConstant('{src}')+'\data4.bin';
s1:=ExpandConstant('{app}');
Exec(s, '-y -o"'+ s1 + '"', '', SW_HIDE, ewWaitUntilTerminated, res);
WizardForm.StatusLabel.Caption:='Распаковка файлов...';
ProgressBar1.Position := 17
Exec(ExpandConstant('{app}\main\3.bat'), '', '', SW_HIDE, ewWaitUntilTerminated, res);
DeleteFile(ExpandConstant('{app}\msvcr80.dll'));
DeleteFile(ExpandConstant('{app}\packjpg_dll.dll'));
DeleteFile(ExpandConstant('{app}\zlib1.dll'));
DeleteFile(ExpandConstant('{app}\precomp.exe'));
WizardForm.StatusLabel.Caption:='Распаковка файлов...';
ProgressBar1.Position := 19
s:=ExpandConstant('{src}')+'\data5.bin';
s1:=ExpandConstant('{app}');
Exec(s, '-y -o"'+ s1 + '"', '', SW_HIDE, ewWaitUntilTerminated, res);
WizardForm.StatusLabel.Caption:='Распаковка файлов...';
ProgressBar1.Position := 20
Exec(ExpandConstant('{app}\main\dec1.bat'), '', '', SW_HIDE, ewWaitUntilTerminated, res);
WizardForm.StatusLabel.Caption:='Распаковка файлов...';
ProgressBar1.Position := 23
Exec(ExpandConstant('{app}\main\dec2.bat'), '', '', SW_HIDE, ewWaitUntilTerminated, res);
WizardForm.StatusLabel.Caption:='Распаковка файлов...';
ProgressBar1.Position := 26
Exec(ExpandConstant('{app}\main\dec3.bat'), '', '', SW_HIDE, ewWaitUntilTerminated, res);
WizardForm.StatusLabel.Caption:='Распаковка файлов...';
ProgressBar1.Position := 29
Exec(ExpandConstant('{app}\main\4.bat'), '', '', SW_HIDE, ewWaitUntilTerminated, res);
WizardForm.StatusLabel.Caption:='Распаковка файлов...';
ProgressBar1.Position := 30
Exec(ExpandConstant('{app}\main\5.bat'), '', '', SW_HIDE, ewWaitUntilTerminated, res);
WizardForm.StatusLabel.Caption:='Распаковка файлов...';
ProgressBar1.Position := 31
Exec(ExpandConstant('{app}\main\6.bat'), '', '', SW_HIDE, ewWaitUntilTerminated, res);
WizardForm.StatusLabel.Caption:='Распаковка файлов...';
ProgressBar1.Position := 32
Exec(ExpandConstant('{app}\main\7.bat'), '', '', SW_HIDE, ewWaitUntilTerminated, res);
WizardForm.StatusLabel.Caption:='Распаковка файлов...';
ProgressBar1.Position := 33
Exec(ExpandConstant('{app}\main\8.bat'), '', '', SW_HIDE, ewWaitUntilTerminated, res);
WizardForm.StatusLabel.Caption:='Распаковка файлов...';
ProgressBar1.Position := 34
Exec(ExpandConstant('{app}\main\9.bat'), '', '', SW_HIDE, ewWaitUntilTerminated, res);
WizardForm.StatusLabel.Caption:='Распаковка файлов...';
ProgressBar1.Position := 35
Exec(ExpandConstant('{app}\main\10.bat'), '', '', SW_HIDE, ewWaitUntilTerminated, res);
WizardForm.StatusLabel.Caption:='Распаковка файлов...';
ProgressBar1.Position := 37
s:=ExpandConstant('{src}')+'\data6.bin';
s1:=ExpandConstant('{app}');
Exec(s, '-y -o"'+ s1 + '"', '', SW_HIDE, ewWaitUntilTerminated, res);
WizardForm.StatusLabel.Caption:='Распаковка файлов...';
ProgressBar1.Position := 39
end else begin
MsgBox(ExpandConstant('{cm:file}'), mbInformation, MB_OK);
Abort;
end;
end;
end; вот на ру.бораде нашёл
и еще Serega не мог бы вот это доделать? вотЪ (http://forum.oszone.net/attachment.php?attachmentid=30340&stc=1&d=1249933403)
Mihail88
11-08-2009, 00:05
serg aka lain не устаю благодарить :)
Тоже пользуюсь ResHacker'om ещё Res.Tuner не плох.
В общем буду разбератся.
zl0ybot, повторюсь: я такой же пользователь как и вы, просто умею пользоваться литературой...
Если вы будете продолжать в таком направлении, я начну вас игнорировать...
и еще Serega не мог бы вот это доделать? »
Вообще-то это я и делал, только для примера, а то говорили, что такое на Inoo Setup не сделаешь...
Что конкретно вам в нём не понятно?
Ну, можно взглянуть в файл Setup.e32 в папке Inno, с помощью редактора ресурсов (ResHacker , etc) TWIZARDFORM
или вот готовый »
Согласен, а я пользуюсь редактором от Restools.
Допустим пишем в коде WizardForm, ставим точку и через секунду появляется список с возможными вариантами для WizardForm. Прикрепил к сообщению скриншот, как это всё выглядит...
http://pic.ipicture.ru/uploads/090811/sS1o0ezSVt.jpg (http://ipicture.ru/)
Скажите как это убрать? и ещё не запускается с галочки в конце установки
Код в вложении
Serega что бы она работала я как понял ты сделал его для показа а надо что бы работали функции устоновить/удалить
после установки работала кнопка играть и т.д. И еще вот скрипт #define MainExe "{app}\Bully.exe"
#define GDFBinary "{app}\Bully.exe"
[Setup]
AppName=Bully
AppVerName=Bully 1.00.0154
DefaultDirName={pf}\Bully
OutputDir=Output
Compression=none
DisableReadyPage=true
InternalCompressLevel=ultra64
SolidCompression=true
ArchitecturesInstallIn64BitMode=x64
ArchitecturesAllowed=x64 x86
RestartIfNeededByRun=false
UsePreviousAppDir=false
DirExistsWarning=no
DisableProgramGroupPage=true
DefaultGroupName=Bully
UsePreviousGroup=false
UsePreviousSetupType=false
UsePreviousTasks=false
UninstallFilesDir={app}\Uninstall
WizardImageFile=WizardImage.bmp
[Files]
Source: arc.exe; DestDir: {tmp}; Flags: dontcopy
Source: GameuxInstallHelper.dll; DestDir: {app}\Uninstall; Flags: overwritereadonly ignoreversion
Source: {src}\Gamedata\*; Destdir: {app}; Flags: ignoreversion recursesubdirs createallsubdirs external
Source: Bully.exe; DestDir: {app}
Source: msvcp71.dll; DestDir: {app}
Source: msvcr71.dll; DestDir: {app}
Source: version.cfg; DestDir: {app}
Source: Readme.txt; DestDir: {app}
[Languages]
Name: rus; MessagesFile: compiler:Languages\Russian.isl
[Messages]
SelectDirBrowseLabel=Нажмите «Установить», чтобы начать установку. Если Вы хотите выбрать другую папку, нажмите «Обзор».
BeveledLabel=RepacK by leek
[LangOptions]
WelcomeFontName=Tahoma
WelcomeFontSize=11
[Registry]
Root: HKLM; SubKey: SOFTWARE\Rockstar Games\Bully Scholarship Edition; ValueType: dword; ValueName: Language; ValueData: $00000419
Root: HKLM; SubKey: SOFTWARE\Rockstar Games\Bully Scholarship Edition; ValueType: string; ValueName: SerialNum; ValueData: 0000-0000-0000-0000
Root: HKLM; SubKey: SOFTWARE\Rockstar Games\Bully Scholarship Edition; ValueType: string; ValueName: Version; ValueData: 1.00.0154
[Run]
Filename: {app}\Bully.exe; WorkingDir: {app}\; Description: Начать игру; Flags: postinstall
Filename: {src}\DirectX\DXSETUP.exe; Parameters: /silent; StatusMsg: Обновление:Microsoft DirectX 9.0c...; Check: InstallDirectX
Filename: {src}\Redistributables\vcredist_x86.exe; Parameters: "/q:a /c:""VCREDI~3.EXE /q:a /c:""""msiexec /i vcredist.msi /qn"""" """; StatusMsg: Обновление:Microsoft Visual C++ 2005...; Check: InstallDirectX
[Icons]
Name: {group}\Bully; Filename: {app}\Bully.exe; WorkingDir: {app}\
Name: {group}\ReadMe; Filename: {app}\ReadMe.txt
Name: {group}\Удалить игру; Filename: {uninstallexe}
Name: {commondesktop}\Bully; Filename: {app}\Bully.exe; WorkingDir: {app}\; Check: MakeDesktopIcon
[UninstallDelete]
Name: {app}\*; Type: filesandordirs
[Code]
type
TGUID = record
Data1: Cardinal;
Data2,
Data3: Word;
Data4: array [0..8] of char;
end;
function GenerateGUID(var GUID: TGUID): Cardinal; external 'GenerateGUID@files:GameuxInstallHelper.dll stdcall setuponly';
function AddToGameExplorer(Binary: String; Path: String; InstallType: Integer; var GUID: TGUID): Cardinal; external 'AddToGameExplorerA@files:GameuxInstallHelper.dll stdcall setuponly';
function CreateTask(InstallType: Integer; var GUID: TGUID; TaskType: Integer; TaskNumber: Integer; TaskName: String; Binary: String; Parameters: String): Cardinal; external 'CreateTaskA@files:GameuxInstallHelper.dll stdcall setuponly';
function RetrieveGUIDForApplication(Binary: String; var GUID: TGUID): Cardinal; external 'RetrieveGUIDForApplicationA@{app}\Uninstall\GameuxInstallHelper.dll stdcall uninstallonly';
function RemoveFromGameExplorer(var GUID: TGUID): Cardinal; external 'RemoveFromGameExplorer@{app}\Uninstall\GameuxInstallHelper.dll stdcall uninstallonly';
function RemoveTasks(var GUID: TGUID): Cardinal; external 'RemoveTasks@{app}\Uninstall\GameuxInstallHelper.dll stdcall uninstallonly';
const
PlayTask = 0;
SupportTask = 1;
var
NeedSize:Integer;
FreeMB, TotalMB: Cardinal;
NeedSpaceLabel,FreeSpaceLabel: TLabel;
DesktopIcon, DirectX: TCheckBox;
GUID: TGUID;
ProgressBar1: TNewProgressBar;
/////Вычисление свободного места на диске
procedure GetFreeSpaceCaption(Sender: TObject);
var
Path: String;
begin
Path := ExtractFileDrive(WizardForm.DirEdit.Text);
GetSpaceOnDisk(Path, True, FreeMB, TotalMB);
if FreeMB > 1024 then
FreeSpaceLabel.Caption := 'Доступно места на диске: '+ FloatToStr(round(FreeMB/1024*100)/100) + ' GB' else
FreeSpaceLabel.Caption := 'Доступно места на диске: '+ IntToStr(FreeMB)+ ' MB';
if FreeMB < NeedSize then
WizardForm.NextButton.Enabled := False else
WizardForm.NextButton.Enabled := True; end;
procedure animateprogress;
begin ProgressBar1.Position := ProgressBar1.Position+1
end;
procedure GetNeedSpaceCaption; /////Вычисление требуемого места для установки
begin
if NeedSize > 1024 then
NeedSpaceLabel.Caption := 'Требуется места на диске: '+ FloatToStr(round(NeedSize/1024*100)/100) + ' GB' else
NeedSpaceLabel.Caption := 'Требуется места на диске: '+ IntToStr(NeedSize)+ ' MB';end;
function MakeDesktopIcon: Boolean;
begin
Result:=DesktopIcon.Checked;end;
function InstallDirectX: Boolean;
begin
Result:=DirectX.Checked;end;
procedure InitializeWizard();
begin
begin
NeedSize := 4210; //Здесь указывается место для приложения
WizardForm.DiskSpaceLabel.Hide;
WizardForm.FilenameLabel.Hide;
WizardForm.ProgressGauge.Top:=ScaleY(100); //Изменение стандартного прогрессбара
WizardForm.ProgressGauge.Width:=262; //
WizardForm.ProgressGauge.Left:=155; //
WizardForm.StatusLabel.Top:=ScaleY(80);
WizardForm.WelcomeLabel2.Top:=ScaleY(90);
NeedSpaceLabel := TLabel.Create(WizardForm);
with NeedSpaceLabel do
begin
Parent := WizardForm.SelectDirPage;
Left := ScaleX(0);
Top := ScaleY(202);
Width := ScaleX(209);
Height := ScaleY(13);
end;
end;
FreeSpaceLabel := TLabel.Create(WizardForm);
with FreeSpaceLabel do
begin
Parent := WizardForm.SelectDirPage;
Left := ScaleX(0);
Top := ScaleY(220);
Width := ScaleX(209);
Height := ScaleY(13);
end;
WizardForm.DirEdit.OnChange := @GetFreeSpaceCaption;
WizardForm.DirEdit.Text := WizardForm.DirEdit.Text + #0;
begin //Создание чекбокса для создания ярлыка на рабочем столе
DesktopIcon := TCheckBox.Create(WizardForm);
with DesktopIcon do
begin
Parent := WizardForm.SelectDirPage;
Caption := 'Добавить ярлык на Рабочий стол';
Left := ScaleX(0);
Top := WizardForm.DirEdit.Top+35;
Width := ScaleX(400);
Height := ScaleY(15);
TabOrder := 0;
Checked := True;
end;
end;
begin //Создание чекбокса для установки DirectX
DirectX := TCheckBox.Create(WizardForm);
with DirectX do
begin
Parent := WizardForm.SelectDirPage;
Caption := 'Установить дополнительное программное обеспечение';
Left := ScaleX(0);
Top := WizardForm.DirEdit.Top+55;
Width := ScaleX(400);
Height := ScaleY(15);
TabOrder := 0;
Checked := True;
end;
end;
begin ///Создание нового прогрессбара
ProgressBar1 := TNewProgressBar.Create(wizardform);
with ProgressBar1 do
begin
Parent := wizardform.installingpage;
Top := 100
Width := 150;
Height := wizardform.progressgauge.height;
Max :=3; //кол-во архивов
end;
end;
end;
procedure CurPageChanged(CurPageID: Integer);
begin
begin
if CurPageID=wpSelectDir then
begin //Тут если Свободное место на диске < требуемого то кнопка "Установвить" на PageSelectDir неактивна
GetNeedSpaceCaption;
if FreeMB < NeedSize then
WizardForm.NextButton.Enabled:=False
WizardForm.NextButton.Caption:='Установить'; //Rename кнопки "Далее" на SelectDir
end;
end;
end;
procedure CurStepChanged(CurStep: TSetupStep); ///Регистрация в GameExplorer
var
Binary, MainExe: String;
ResultCode:Integer;
begin
if CurStep = ssInstall then //Перед установкой
begin
GenerateGUID(GUID);
ExtractTemporaryFile('arc.exe'); //Извлечение Arc.exe в Temp
if (FileExists(AddBackslash(ExpandConstant('{tmp}')) + 'arc.exe')) and (FileExists(AddBackslash(ExpandConstant('{src}')) + 'data-a.bin')) then
begin
WizardForm.StatusLabel.Caption:='Распаковка файлов...'; //Извлечение из 1-го архива
Exec(ExpandConstant('{tmp}\Arc.exe'), 'x '+AddQuotes(ExpandConstant('{src}\data-a.bin'))+' -y -dp'+AddQuotes(ExpandConstant('{app}')), '', SW_HIDE, ewWaitUntilTerminated, ResultCode);
ProgressBar1.Position := ProgressBar1.Position+1
WizardForm.StatusLabel.Caption:='Распаковка файлов...'; //Извлечение из 2-го архива
Exec(ExpandConstant('{tmp}\Arc.exe'), 'x '+AddQuotes(ExpandConstant('{src}\data-b.bin'))+' -y -dp'+AddQuotes(ExpandConstant('{app}')), '', SW_HIDE, ewWaitUntilTerminated, ResultCode);
ProgressBar1.Position := ProgressBar1.Position+1
WizardForm.StatusLabel.Caption:='Распаковка файлов...'; //Извлечение из 3-го архива
Exec(ExpandConstant('{tmp}\Arc.exe'), 'x '+AddQuotes(ExpandConstant('{src}\data-c.bin'))+' -y -dp'+AddQuotes(ExpandConstant('{app}')), '', SW_HIDE, ewWaitUntilTerminated, ResultCode);
ProgressBar1.Position := ProgressBar1.Position+1
end else begin
MsgBox('Исполняемый файл:' + #13#10#13#10 + (AddBackslash(ExpandConstant('{tmp}')) + 'arc.exe') + #13#10#13#10 + 'не найден. Установка отменена', mbInformation, MB_OK);
Abort;
end;
end;
if CurStep = ssPostInstall then
begin
Binary:=ExpandConstant('{#GDFBinary}');
MainExe:=ExpandConstant('{#MainExe}');
AddToGameExplorer(Binary, ExpandConstant('{app}'), 3, GUID);
CreateTask(3, GUID, PlayTask, 0, 'Play', MainExe, '');
end;
end;
function InitializeSetup(): Boolean;
var
UnStr: String;
ErrorCode, Mesages: Integer;
begin //Повторный запуск
Result := True;
if RegQueryStringValue(HKEY_LOCAL_MACHINE, 'Software\Microsoft\Windows\CurrentVersion\Uninstall\Bully_is1', 'UninstallString', UnStr) then
begin
If UnStr <> '' then
begin
Mesages := MsgBox('Bully уже установлена в Вашей системе.'+#10#10+'Хотите удалить приложение?', mbInformation, MB_YESNOCANCEL);
case Mesages of
idYes:
begin
UnStr := RemoveQuotes(UnStr);
Exec(UnStr, '/silent', '', SW_Show, ewWaitUntilTerminated, ErrorCode);
Result := True;
end
idNo:
begin
Result := True;
end
idCancel:
begin
Result := False;
end;
end;
end;
end;
end;
procedure CurUninstallStepChanged(CurUninstallStep: TUninstallStep);
var
ResultStr:String;
Binary: String;
GUID: TGUID;
begin /////////////////////////////////////////Удаление игровых сохранений
if CurUninstallStep=usPostUninstall then
begin
RegQueryStringValue(HKLM, 'Software\Microsoft\Windows\CurrentVersion\Uninstall\Bully_is1', 'UnInstConfirm', ResultStr)
if DirExists(ExpandConstant('{userdocs}')+'\Prince of Persia') then
if MsgBox('Удалить сохраненные игры и настройки?',mbconfirmation, mb_YesNo) = IDYES then
begin
if not DelTree(ExpandConstant('{userdocs}')+'\Bully', True, True, True)
then
MsgBox('Папка не удалена!' #13#13 'Папка не существует или задействована.', mbError, MB_OK);
end;
end;
begin
if CurUninstallStep=usUninstall then //Удаление из GameExplorer
begin
Binary:=ExpandConstant('{#GDFBinary}');
RetrieveGUIDForApplication(Binary, GUID);
RemoveFromGameExplorer(GUID);
RemoveTasks(GUID);
UnloadDll(ExpandConstant('{app}\Uninstall\GameuxInstallHelper.dll'));
end;
end;
end;
можно ли отсюда вынуть весь мусор только что бы осталось распаковка freearc'а и progressbar (оба)
FlatX007
11-08-2009, 16:40
Доброго времени суток. Вопрос такой ...
Есть некий инсталятор, его единственная задача дополнить unins000.dat списком новых файлов, что бы они удалились деинстилятором. Как мне сделать сторонный модуль (скрипт) что бы в нём указать файлы для секции [UninstallDelete], это нужно для того чтобы каждый раз не "перепаковывать" экзэшник.
Помогите плиз с кодом. Нужно сделать некоторые вещи, но не знаю как.
1)Как заставить инсталяшку не оставлять след в установке-удалении программ
2)Встал вопрос с правами. При обновлении файла сбрасываются права на файл. Как их можно сохранить?
3) Ну и самое интересное. Нужно перед инсталляцией (обновлением) сделать бэкап файлов с сохранением прав на эти файлы.
[Setup]
AppName=Обновление для программы заказа продукции фирмы ЗАО"Арнебия"
AppVerName=Обновление для программы заказа продукции фирмы ЗАО"Арнебия" ver. 0.1
AppPublisher=Arnebia Inc
AppPublisherURL=http://www.arnebia.ru/
AppSupportURL=http://www.arnebia.ru/
AppUpdatesURL=http://www.arnebia.ru/
DefaultDirName={reg:HKLM\SOFTWARE\Arnebia,AppPath|{pf}\Arnebia\ArnebiaProduct}
DisableDirPage=yes
DefaultGroupName=Arnebia
OutputDir=C:\test progr
OutputBaseFilename=setup
SetupIconFile=C:\test progr\ArnebiaProduct\ArnebiaDoc.ico
Compression=lzma
SolidCompression=yes
[Dirs]
Name: {app}\img
[Tasks]
Name: desktopicon; Description: {cm:CreateDesktopIcon}; GroupDescription: {cm:AdditionalIcons}; Flags: unchecked
[Icons]
Name: {group}\; Filename: {app}\ArnebiaDoc.ico; IconFilename: {app}\ArnebiaDoc.ico; Flags: runminimized
[Files]
Source: ..\..\..\test progr\ArnebiaProduct\img\img_installer\AP_Setup.jpg; DestDir: {app}\img\img_installer
Source: ..\..\..\test progr\ArnebiaProduct\img\img_product\Копия 25s.gif; DestDir: {app}\img\img_product
Source: ..\..\..\test progr\ArnebiaProduct\img\img_product\Копия 26s.gif; DestDir: {app}\img\img_product
Source: ..\..\..\test progr\ArnebiaProduct\img\img_product\Копия 27s.gif; DestDir: {app}\img\img_product
Source: ..\..\..\test progr\ArnebiaProduct\img\img_product\Копия 28s.gif; DestDir: {app}\img\img_product
Source: ..\..\..\test progr\ArnebiaProduct\img\img_product\Копия Копия 25s.gif; DestDir: {app}\img\img_product
Source: ..\..\..\test progr\ArnebiaProduct\img\img_product\Копия Копия 26s.gif; DestDir: {app}\img\img_product
Source: ..\..\..\test progr\ArnebiaProduct\img\img_product\Копия Копия 27s.gif; DestDir: {app}\img\img_product
Source: ..\..\..\test progr\ArnebiaProduct\img\img_product\Копия Копия 28s.gif; DestDir: {app}\img\img_product
Source: ..\..\..\test progr\ArnebiaProduct\img\img_product\Копия Копия Копия 25s.gif; DestDir: {app}\img\img_product
Source: ..\..\..\test progr\ArnebiaProduct\img\img_product\Копия Копия Копия 26s.gif; DestDir: {app}\img\img_product
Source: ..\..\..\test progr\ArnebiaProduct\img\img_product\Копия Копия Копия 27s.gif; DestDir: {app}\img\img_product
Source: ..\..\..\test progr\ArnebiaProduct\img\img_product\Копия Копия Копия 28s.gif; DestDir: {app}\img\img_product
Source: ..\..\..\test progr\ArnebiaProduct\ArnebiaDoc.ico; DestDir: {app}
Source: ..\..\..\test progr\ArnebiaProduct\client.xml; DestDir: {app}
Source: ..\..\..\test progr\ArnebiaProduct\data.mdb; DestDir: {app}
[Code_]
procedure MyAfterInstall();
begin
MsgBox('Just installed ArnebiaProduct.exe as ' + CurrentFileName + '.', mbInformation, MB_OK);
end;
var
UpDate:string;
function GetInstallPath( AppID: String ): String;
var
Path: String;
begin
Path:= '';
RegQueryStringValue(HKLM, 'SOFTWARE\Arnebia', 'AppPath', Path);
Result:= Path;
end;
function InitializeSetup(): Boolean;
var
Version,s:string;
begin
Result:=True;
UpDate:='2.0.0.7';
// Проверка через реестр
if not RegValueExists(HKLM, 'SOFTWARE\Arnebia', 'AppPath') then
begin
s:='Программа не установлена.' #13#13 'Дальнейшая работа невозможна.';
MsgBox(s, mbError, mb_Ok);
Result:=False;
end else
// Проверка присутствия файла в папке с установленной программой
begin
If (FileSearch('ArnebiaProduct.exe', ExpandConstant('{code:GetInstallPath}'))='') then
begin
s:='Извините, в директории '+ExpandConstant('{code:GetInstallPath}')+'' #13 'не обнаружены файлы, подтверждающие подлинность программы.' #13#13 'Пожалуйста, выберите правильный путь.';
MsgBox(s, mbError, mb_Ok);
Result:= False;
end else
// MsgBox('Версия:'+ Version, mberror, mb_Ok)
begin
if Version < UpDate then //сравниваем
begin
RegQueryStringValue(HKEY_LOCAL_MACHINE, 'SOFTWARE\Arnebia', 'AppVers', Version);
Result:=true;
end else begin
MsgBox('Обновление на данную версию не устанавливается.', mberror, mb_Ok);
Result:=false;
end;
end;
end;
end;
procedure DeinitializeSetup();
begin
RegWriteStringValue(HKEY_LOCAL_MACHINE, 'SOFTWARE\Arnebia', 'AppVers', UpDate);
end;
Заранее очень благодарен за помощь. А то на работе трясут... сроки, а я застрял на этих моментах.pi
Всем привет!
Установил "Inno Setup 5.2.3 RU". Программа запустилось Анг. Как русс сделать?
Спасибо!
FlatX007
13-08-2009, 21:08
1)Как заставить инсталяшку не оставлять след в установке-удалении программ »
CreateUninstallRegKey
Возможные значения : yes or no
Значение по умолчанию : yes
Описание:
При значении no инсталлятор не будет создавать пункта программы в диалоге Установка и удаление программ. Это может быть полезно,
если программа является обновлением для уже установленного приложения и запись в этом диалоге не нужна, но надо сохранить возможность удаления обновления (Uninstallable=no).
Также при значении no UpdateUninstallLogAppName равно no.
Всем привет!
Установил "Inno Setup 5.2.3 RU". Программа запустилось Анг. Как русс сделать? »
Вы имеете ввиду язык инсталятора или меню программы ?
Если язык инсталятора - то залазим в папку с установленной программой
C:\Program Files\Inno Setup 5\Languages\.. находим файл Russian.isl переименовываем в Default.isl и копируем его в C:\Program Files\Inno Setup 5\
FlatX007
Спасибо!
Вопрос: Как создать в C:\Documents and Settings\All Users\Главное меню\Программы. Добавит Удалить игру+ReadME+Настройки игры.?
С какой прогой Inno Setup (Компилятор) или ISTool и как?
http://s52.radikal.ru/i136/0908/b1/dece8a5903da.jpg
Два дня голову ломаю, :( Надеюсь тут мне ответят.
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.
Available in ZeroNet 1osznRoVratMCN3bFoFpR2pSV5c9z6sTC