可以通过简单列出Components: a b c
等将任务设置为依赖于所选组件进行显示,并且可以通过指定Flags: unchecked
将其设置为默认情况下不进行检查。但是,如果只选择了一个特定组件并且对所有其他组件保持未选中状态,则似乎没有办法使用Code运行条件检查以检查任务。
Name: "SystemInfo"; Description: "Audit System Information"; GroupDescription: "Additional Setup Options"; Flags: unchecked; Components: Client Standalone Server
如果选择了Client,Standalone或Server组件,我希望将SystemInfo任务显示为可选项,但如果选择了Server组件,我希望默认情况下检查此选项,而不是取消选中。基本上,有没有办法在代码中执行Check: IsComponentServerSelected
并删除Flag: unchecked
如果为真?也许我忽略了另一种方法吗?
答案 0 :(得分:1)
我对这个解决方案并不完全满意,但至少看起来似乎有效。可以通过创建两个类似的[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}
,但这不起作用,我假设因为它太早被调用,即在安装程序初始化之前。