Inno Setup Task 仅在选择了特定组件时才选中

Inno Setup Task checked only if a specific Component is selected

任务可以设置为根据所选组件显示,只需列出 Components: a b c 等,并且可以通过指定 Flags: unchecked 设置为默认不选中。但是,似乎没有办法 运行 如果只选择了一个特定组件而对所有其他组件保持未选中状态,则使用代码进行条件检查以检查任务。

Name: "SystemInfo"; Description: "Audit System Information"; GroupDescription: "Additional Setup Options"; Flags: unchecked; Components: Client Standalone Server

如果选择了客户端、独立或服务器组件,我希望将 SystemInfo 任务显示为可选选项,但如果选择了服务器组件,我希望默认选中此选项而不是未选中。基本上,有没有办法在代码中执行 Check: IsComponentServerSelected 并删除 Flag: unchecked 如果为真?也许我忽略了另一种方法?

我对这个解决方案不是很满意,但至少它看起来确实有效。可以通过创建两个类似的 [Task] 条目并根据所选组件显示选中或未选中的条目来实现这一点,如下所示:

Name: "SystemInfo"; Description: "Audit System Information"; GroupDescription: "Additional Setup Options"; Flags: unchecked; Components: Client
Name: "SystemInfoServer"; Description: "Audit System Information"; GroupDescription: "Additional Setup Options"; Components: Server Standalone

然后在 [Code] 中引用两个任务,而不仅仅是一个:

      if IsTaskSelected('SystemInfo') or IsTaskSelected('SystemInfoServer') then
    begin;
      AuditSystemInfo;
    end;

我仍然很想知道是否有更好的解决方案允许只存在一个任务并根据所选组件动态更改标志状态。请注意,我确实尝试使用 Flag: {code: GetAuditFlag},但这没有用,我认为是因为它被调用得太早,即在安装程序初始化之前。