隐藏Inno设置组件

时间:2016-11-30 15:24:20

标签: inno-setup

我正在尝试使用Inno Setup构建一个安装程序,该安装程序根据某些配置选项运行其他安装程序。为简单起见,假设我有20个安装程序可以设置为5种不同的配置,其中每个配置都有一些必需的安装程序和一些可选的安装程序。配置A可能需要安装程序1,2,5,6,并具有11,13和14的选项。配置B可能需要1,2,3,9,并具有12,19和20的选项。依此类推

我为每个安装程序配备了一个组件。理想情况下,我本来希望使用类型进行配置,但我无法弄清楚如何使其他组件成为可选的(如果有可能,请告诉我)。所以,目前我只有一个“自定义”类型,并使用一个自定义向导页面,允许您指定配置。根据选择,我使用代码检查和禁用(因此无法取消选择)所需的组件,同时仍然允许选择可选的组件。

一般情况下它运行良好,但我希望只显示适用于所选配置的组件。因此,使用上面的示例,对于配置A,“组件”页面将显示1,2,5,6已选中和已禁用以及11,13和14未选中并已启用。是否可以保留定义的所有组件,但只是隐藏那些不适用的组件?或者可能定义多个组件页面,但只显示该配置的页面?

我在网上发现this解决方案,但由于用户可能会点击后退按钮,我可以删除组件但不重新添加它们的概念似乎不是一个好选择。

1 个答案:

答案 0 :(得分:0)

不,当安装程序启动时,组件列表(ComponentsList)仅填充一次。它无法在运行时更改。

通过这种复杂的设置,您最好放弃内置组件功能并构建自己的自定义“组件”页面。或者您可以保留内置的“组件”页面,只需隐藏标准组件列表并构建您自己的组件。

创建类似的布局,但在安装“类型”更改时重新创建“组件”列表。

您可以使用Check parameterFilesRegistry等部分条目绑定到自定义组件。或者,您可以根据可见自定义组件列表中的选择更新实际隐藏组件列表。