InnoSetup,如果选择任何任务,则阻止安装

时间:2015-01-06 19:36:39

标签: installer inno-setup pascal pascalscript

我的inno脚本有两个任务:

[Tasks]
Name: client; Description: Install FTP client
Name: server; Description: Install FTP server

如果选择了任何任务,我想以非侵入性的方式拒绝安装,对于非侵入我的意思是例如在检查其中一个任务时启用/禁用“下一步”按钮,没有广告消息 - 框。

我不确定innosetup是否有参数或“检查”功能以简单的方式执行此操作

我怎么能这样做?

1 个答案:

答案 0 :(得分:3)

在Inno Setup中无法按照原生的方式进行操作。您需要自己从代码中完成。

您可以使用WizardSelectedTasks功能稍作作弊。此函数返回以逗号分隔的所选任务名称(或描述)列表,因此在未选择任务时返回空字符串。剩下的就是绑定任务列表OnClickCheck事件,更新下一个按钮启用状态并编写一段代码来初始化下一个按钮状态:

[Setup]
AppName=My Program
AppVersion=1.5
DefaultDirName={pf}\My Program

[Tasks]
Name: client; Description: Install FTP client
Name: server; Description: Install FTP server

[Code]
// helper function
function IsAnyTaskSelected: Boolean;
begin
  Result := WizardSelectedTasks(False) <> '';
end;

// event handler for setting the next button initial state when
// entering the tasks page
procedure CurPageChanged(CurPageID: Integer);
begin
  if CurPageID = wpSelectTasks then
    WizardForm.NextButton.Enabled := IsAnyTaskSelected;
end;

// method of the task list check click event
procedure TasksListClickCheck(Sender: TObject);
begin
  WizardForm.NextButton.Enabled := IsAnyTaskSelected;
end;

procedure InitializeWizard;
begin
  WizardForm.TasksList.OnClickCheck := @TasksListClickCheck;
end;