InnoSetup,如果选择了任何任务则阻止安装
InnoSetup, prevent installation if any task is selected
我的 inno 脚本有两个任务:
[Tasks]
Name: client; Description: Install FTP client
Name: server; Description: Install FTP server
如果选择了任何任务,我想以非侵入方式拒绝安装,因为 non.intrusive 我的意思是例如 enabling/disabling "next" 按钮,当两者之一任务已检查,没有广告消息框。
我不确定 innosetup 是否有参数或 "check" 函数来以简单的方式执行此操作
我该怎么做?
无法在 Inno Setup 中本地执行您想要的操作。您需要自己从代码中完成。
你可以在这里使用 WizardSelectedTasks
函数作弊。此函数 returns 以逗号分隔的所选任务名称(或描述)列表,因此当未选择任何任务时它 returns 为空字符串。剩下的就是绑定任务列表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;
我的 inno 脚本有两个任务:
[Tasks]
Name: client; Description: Install FTP client
Name: server; Description: Install FTP server
如果选择了任何任务,我想以非侵入方式拒绝安装,因为 non.intrusive 我的意思是例如 enabling/disabling "next" 按钮,当两者之一任务已检查,没有广告消息框。
我不确定 innosetup 是否有参数或 "check" 函数来以简单的方式执行此操作
我该怎么做?
无法在 Inno Setup 中本地执行您想要的操作。您需要自己从代码中完成。
你可以在这里使用 WizardSelectedTasks
函数作弊。此函数 returns 以逗号分隔的所选任务名称(或描述)列表,因此当未选择任何任务时它 returns 为空字符串。剩下的就是绑定任务列表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;