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

标签 installation inno-setup pascal pascalscript

我的 inno 脚本有两个任务:

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

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

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

我怎样才能做到这一点?

最佳答案

无法在 Inno Setup 中本地执行您想要的操作。您需要自己通过代码来完成此操作。

您可以使用WizardSelectedTasks在这里进行一些作弊。功能。此函数返回选定任务名称(或描述)的逗号分隔列表,因此当未选择任务时它返回空字符串。剩下的就是绑定(bind)任务列表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;

关于installation - InnoSetup,如果选择任何任务则阻止安装,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27805898/

相关文章:

Cordova :找不到目录

sharepoint - 从 PowerShell 运行 SharePoint 计时器作业

inno-setup - 仅为特定组件编译 Inno Setup 安装程序

将 cdecl 函数调用从 C 转换为使用带有可变参数列表的回调的 Pascal

c++ - Pascal 的 readkey 有等价物吗?在 C 或 C++ 中?

sql-server-2008 - 如何在 Inno Setup 中获取本地化的 Windows 管理员组名称?

laravel - 在 laravel V6.14.0 上安装 Dusk

inno-setup - 创新设置: Run uninstall script only once

inno-setup - 在 Inno Setup 中,如何设置哪个组件在 "Select Components"页面上获得初始焦点

pascal - 如何在 Pascal 中创建 QuickBlox session