如何在安装期间为可选文件添加CheckBox?(innosetup)

App*_*eek 8 inno-setup pascalscript

我正在尝试在我的自定义页面中创建一个自定义复选框(因为它是一个单页安装程序),只需要一个没有对话框或任何东西的复选框,我正在尝试编译的安装程序非常线性和简单.

我想以这种方式在复选框上绑定"FILE3.EXE":如果选中复选框,则复制DestDir中的文件(FILE3.EXE),否则如果取消选中复选框,则在安装期间跳过文件(FILE3.EXE).

这是我使用的代码,显然缺少复选框代码,因为我无法做到这一点

[Files]
Source: FILE1.EXE; DestDir: {app};
Source: FILE2.EXE; DestDir: {app};
Source: FILE3.EXE; DestDir: {app}; //OPTIONAL
Run Code Online (Sandbox Code Playgroud)

jac*_*ate 19

您不必为此手动创建CheckBoxes.让用户选择安装内容的标准方法是使用脚本文件的[Types][Components]部分.

查看位于iss安装文件夹\ examples中的Componens.iss脚本.

; -- 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"
Run Code Online (Sandbox Code Playgroud)

在运行时,安装程​​序在向导中显示此对话框:

组件对话框

  • @Globulorozzo你应该说明你的问题中的重要信息,希望每个人"看到代码"对于谁试图帮助你不是很好! (2认同)

TLa*_*ama 14

您需要创建一个Check函数,该函数将从[Code]脚本部分返回复选框的状态.像这样的东西可能会做你想要的,但在代码脚本之前,我会在下面纠正你:

  • 使用TNew ...您可以使用的类,所以在您的情况下使用TNewEdit而不是TEdit
  • 使用TWizardPage.SurfaceParent,如果你想在页面(这里我不知道在某个组件,如果这是你的意图,只是指出这一点:-)
  • 格式化你的代码,它不需要如此平坦

在下面的示例中,我使用了在某种情况下Check调用InstallHelpFile某个文件的条件安装函数MyProg.chm.该Check功能的工作原理简单; 当您将True返回给函数时,将处理该文件,当您返回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;
Run Code Online (Sandbox Code Playgroud)