我需要使用多个软件版本进行设置,并且希望它具有便携式/安装选项。
上面的屏幕截图是组件页面,我已对其进行了修改以查看其工作方式。它应该在信息页面之后显示,然后在选择选项后应该显示目录选择页面。我认为[Files],[Tasks]和[Components]部分找出了我主要要处理的代码部分。
例如,如果用户选择使用单选按钮安装专业版,则单击“下一步”后,应显示目录选择页面,然后在继续后应安装或提取(取决于便携式或安装选择)。安装程序应基于标记为pro的指定文件(在[文件]和[组件]部分中)安装/提取指定版本。
我已经尝试了很多代码变体,但是当前的变体版本低于下面,并且无法正常工作(忽略SelectedValueIndex数字,我尚未输入正确的值,但我想确保首先编译)。 我有无声开关的代码,我也必须链接到单选按钮,但我认为该部分可以工作。从字面上看,它只是试图使选择(单选按钮和复选框)起作用。同样,如果您为版本ID之一(如组框)选择安装,则便携式选项将变灰(不可选择),反之亦然。目前,我无法使单选按钮具有任何值,而它们什么也不做。
简单的解释: 可以说有2个免费和专业版的应用程序。 屏幕截图是组件页面,我对其进行了修改以使其看起来像这样,因此在安装之前会提示您,然后基本上选择是要安装还是提取便携式版本(如果选择了安装),如果选择了便携式,则将安装到程序文件中。提取到安装程序目录。安装的文件取决于用户选择免费还是专业。 (分别在[文件]和[组件]部分中设置。)
procedure InitializeWizard();
var SystemMenu: HMENU;
begin
{Create Mode Selection Page}
UsagePage := CreateInputOptionPage(wpInfoBefore,
'Mode', 'Select Installation Mode',
'Mode',
True, False);
UsagePage.Add('FreeInstall');
UsagePage.Add('BusinessInstall');
UsagePage.Add('TechnicianInstall');
UsagePage.Add('ProfessionalInstall');
UsagePage.Add('FreePortable');
UsagePage.Add('BusinessPortable');
UsagePage.Add('TechnicianPortable');
UsagePage.Add('ProfessionalPortable');
//
{Set Default Checkbox - Normal Install}
if (FreeInstall)
then
UsagePage.SelectedValueIndex := 1
else
UsagePage.SelectedValueIndex := 0;
if (BusinessInstall)
then
// Set the Respective Checkbox on The Wizard.
UsagePage.SelectedValueIndex := 1
else
UsagePage.SelectedValueIndex := 0;
if (TechnicianInstall)
then
// Set the Respective Checkbox on The Wizard.
UsagePage.SelectedValueIndex := 1
else
UsagePage.SelectedValueIndex := 0;
if (ProfessionalInstall)
then
// Set the Respective Checkbox on The Wizard.
UsagePage.SelectedValueIndex := 1
else
UsagePage.SelectedValueIndex := 0;
{Set Default Checkbox - Portable}
if (FreePortable)
then
UsagePage.SelectedValueIndex := 1
else
UsagePage.SelectedValueIndex := 0;
if (BusinessPortable)
then
// Set the Respective Checkbox on The Wizard.
UsagePage.SelectedValueIndex := 1
else
UsagePage.SelectedValueIndex := 0;
if (TechnicianPortable)
then
// Set the Respective Checkbox on The Wizard.
UsagePage.SelectedValueIndex := 1
else
UsagePage.SelectedValueIndex := 0;
if (ProfessionalPortable)
then
// Set the Respective Checkbox on The Wizard.
UsagePage.SelectedValueIndex := 1
else
UsagePage.SelectedValueIndex := 0;
WizardForm.Caption := '{#MyAppName} v{#MyAppVersion}';
TotalSpace;
WizardForm.DiskSpaceLabel.Hide;
It wont compile like this
答案 0 :(得分:0)
使用Check
parameter将[Files]
节条目绑定到所选的自定义页面:
[Files]
Source: "MyProgFree.exe"; DestDir: "{app}"; Check: IsModeSelected(0)
Source: "MyProgPro.exe"; DestDir: "{app}"; Check: IsModeSelected(1)
[Code]
var
UsagePage: TInputOptionWizardPage;
function IsModeSelected(Mode: Integer): Boolean;
begin
Result := (UsagePage.SelectedValueIndex = Mode);
end;
procedure InitializeWizard();
begin
UsagePage :=
CreateInputOptionPage(
wpInfoBefore, 'Mode', 'Select Installation Mode', 'Mode', True, False);
UsagePage.Add('FreeInstall');
UsagePage.Add('ProInstall');
end;