Как я могу добавить флажок для дополнительных файлов во время установки в Inno Setup?
Я пытаюсь сделать настраиваемый флажок на 9X_pascalscript своей настраиваемой странице (потому что 9X_pascalscript это одностраничный установщик), нужен только 9X_inno-setup флажок без диалогов или чего-либо еще, установщик, который 9X_inno-setup я пытаюсь скомпилировать, очень линейный 9X_inno-setup и простой.
Я хочу привязать FILE3.EXE
к флажку таким 9X_pascalscript образом: если флажок установлен, скопируйте 9X_inno-setup файл (FILE3.EXE
) в DestDir
, в противном случае, если флажок 9X_inno-setup не установлен, пропустите файл (FILE3.EXE
) во время 9X_inno-setup установки.
Это код, который я использовал, очевидно, что 9X_pascalscript код флажка отсутствует, потому что я не 9X_inno-setup могу это сделать
[Files]
Source: FILE1.EXE; DestDir: {app};
Source: FILE2.EXE; DestDir: {app};
Source: FILE3.EXE; DestDir: {app}; //OPTIONAL
[Code]
procedure ExitProcess(uExitCode: UINT);
external 'ExitProcess@kernel32.dll stdcall';
var
MainPage : TWizardPage;
FolderToInstall : TEdit;
InstallLocation : String;
procedure CancelClick(Sender: TObject);
begin
if ExitSetupMsgBox then
begin
ExitProcess(0);
end;
end;
procedure BrowseClick(Sender : TObject);
var
Dir : String;
begin
Dir := FolderToInstall.Text;
if BrowseForFolder('Browse',Dir,false) then
FolderToInstall.Text := Dir;
WizardForm.DirEdit.Text := Dir;
end;
procedure InitializeWizard();
var
LabelFolder : TLabel;
begin
MainPage := CreateCustomPage(wpWelcome,'','');
LabelFolder := TLabel.Create(MainPage);
LabelFolder.Parent := WizardForm;
LabelFolder.Top := 164;
LabelFolder.Left := 6;
LabelFolder.Caption := 'Directory:'
FolderToInstall := TEdit.Create(MainPage);
FolderToInstall.Parent := WizardForm;
FolderToInstall.Top := 182;
FolderToInstall.Left := 85;
FolderToInstall.Width := 380;
FolderToInstall.Text := WizardDirValue;
FolderToInstall.ReadOnly := True;
end;
- Вы хотите иметь полное индивидуальное решение или хотите использовать уже встроенные функ ...
Ответ #1
Ответ на вопрос: Как я могу добавить флажок для дополнительных файлов во время установки в Inno Setup?
Для этого не нужно вручную создавать флажки. Стандартный 9X_inno-setup способ предоставить пользователю возможность 9X_inno-setup выбирать, что установить, - использовать 9X_inno-setup разделы [Types]
и [Components]
в файле сценария.
Взгляните на 9X_pascalscript сценарий Components.iss
, расположенный в папке установки 9X_inno-setup Inno Setup \ examples.
; -- Components.iss --
; Demonstrates a components-based installation.
; SEE THE DOCUMENTATION FOR DETAILS ON CREATING .ISS SCRIPT FILES!
[Setup]
AppName=My Program
AppVersion=1.5
DefaultDirName={pf}\My Program
DefaultGroupName=My Program
UninstallDisplayIcon={app}\MyProg.exe
OutputDir=userdocs:Inno Setup Examples Output
[Types]
Name: "full"; Description: "Full installation"
Name: "compact"; Description: "Compact installation"
Name: "custom"; Description: "Custom installation"; Flags: iscustom
[Components]
Name: "program"; Description: "Program Files"; Types: full compact custom; Flags: fixed
Name: "help"; Description: "Help File"; Types: full
Name: "readme"; Description: "Readme File"; Types: full
Name: "readme\en"; Description: "English"; Flags: exclusive
Name: "readme\de"; Description: "German"; Flags: exclusive
[Files]
Source: "MyProg.exe"; DestDir: "{app}"; Components: program
Source: "MyProg.chm"; DestDir: "{app}"; Components: help
Source: "Readme.txt"; DestDir: "{app}"; Components: readme\en; Flags: isreadme
Source: "Readme-German.txt"; DestName: "Liesmich.txt"; DestDir: "{app}"; Components: readme\de; Flags: isreadme
[Icons]
Name: "{group}\My Program"; Filename: "{app}\MyProg.exe"
Во время выполнения 9X_inno-setup установщик представляет этот диалог в мастере:
- @Globulorozzo В своем вопросе вы должны указать, что важная информация, желать, чтобы все "видели в коде", не ...
Ответ #2
Ответ на вопрос: Как я могу добавить флажок для дополнительных файлов во время установки в Inno Setup?
Вам необходимо создать функцию Check
, которая 9X_inno-setup будет возвращать состояние флажка из раздела 9X_inno-setup [Code]
вашего скрипта. Что-то вроде этого может 9X_pascalscript сделать то, что вы хотите, но перед сценарием 9X_inno-setup кода я бы исправил вас следующим образом:
- используйте классы TNew ... там, где это возможно, поэтому в вашем случае используйте
TNewEdit
вместоTEdit
- используйте
TWizardPage.Surface
в качествеParent
, если вы хотите, чтобы на странице был определенный компонент (здесь я не уверен, что это ваше намерение, просто указываю на это :-) - отформатируйте код, он не должен быть таким плоским
В 9X_pascalscript следующем примере я использовал функцию 9X_inno-setup Check
с именем InstallHelpFile
для условной установки определенного 9X_inno-setup файла, в данном случае MyProg.chm
. Функция Check
работает 9X_inno-setup просто; когда вы возвращаете True функции, файл 9X_inno-setup обрабатывается, пропускается, когда вы возвращаете 9X_inno-setup False.
[Setup]
AppName=My Program
AppVersion=1.5
DefaultDirName={pf}\My Program
OutputDir=userdocs:Inno Setup Examples Output
[Files]
Source: "MyProg.exe"; DestDir: "{app}"
Source: "MyProg.chm"; DestDir: "{app}"; Check: InstallHelpFile;
[Code]
var
InstallHelpCheckBox: TNewCheckBox;
procedure InitializeWizard;
var
LabelFolder: TLabel;
MainPage: TWizardPage;
FolderToInstall: TNewEdit;
begin
MainPage := CreateCustomPage(wpWelcome, '', '');
LabelFolder := TLabel.Create(MainPage);
LabelFolder.Parent := WizardForm;
LabelFolder.Top := 164;
LabelFolder.Left := 6;
LabelFolder.Caption := 'Directory:'
FolderToInstall := TNewEdit.Create(MainPage);
FolderToInstall.Parent := MainPage.Surface;
FolderToInstall.Top := 182;
FolderToInstall.Left := 85;
FolderToInstall.Width := 380;
FolderToInstall.Text := WizardDirValue;
FolderToInstall.ReadOnly := True;
InstallHelpCheckBox := TNewCheckBox.Create(MainPage);
InstallHelpCheckBox.Parent := MainPage.Surface;
InstallHelpCheckBox.Top := FolderToInstall.Top + FolderToInstall.Height + 8;
InstallHelpCheckBox.Left := FolderToInstall.Left;
InstallHelpCheckBox.Width := FolderToInstall.Width;
InstallHelpCheckBox.Caption := 'Install help file';
end;
function InstallHelpFile: Boolean;
begin
{ here is the Check function used above; if you return True to this }
{ function, the file will be installed, when False, the file won't }
{ be installed }
Result := InstallHelpCheckBox.Checked;
end;
Ответ #3
Ответ на вопрос: Как я могу добавить флажок для дополнительных файлов во время установки в Inno Setup?
Вы можете сделать это намного проще с помощью 9X_inno-setup CreateInputOptionPage(). См. Подробную информацию 9X_pascalscript в справке по Inno Setup. http://www.jrsoftware.org/ishelp/index.php?topic=scriptpages
Ответ #4
Ответ на вопрос: Как я могу добавить флажок для дополнительных файлов во время установки в Inno Setup?
// Create: for i := 0 to g_SetupX_Count do begin WizardForm.ComponentsList.AddCheckBox(g_SetupX_Name[i], '', 0, g_SetupX_Active[i], true, false, false, nil); g_SetupX_CompListIndex[i] := nextPosi; nextPosi := nextPosi + 1; end; // Evaluate: for i := 0 to g_SetupX_Count do begin g_SetupX_Active[i] := WizardForm.ComponentsList.Checked[g_SetupX_CompListIndex[i]]; end;
9X_inno-setup
-
6
-
3
-
1
-
2
-
10
-
8
-
2
-
4
-
7
-
5
-
2
-
2
-
6
-
2
-
6
-
4
-
5
-
1
-
4
-
5
-
7
-
4
-
3
-
2
-
3
-
6
-
3
-
4
-
1
-
1
-
2
-
2
-
2
-
1
-
2
-
2
-
2
-
2
-
2
-
2
-
3
-
3
-
3
-
3
-
2
-
2
-
1
-
1
-
4
-
3