Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/backbone.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Inno setup 隐藏Inno安装组件_Inno Setup - Fatal编程技术网

Inno setup 隐藏Inno安装组件

Inno setup 隐藏Inno安装组件,inno-setup,Inno Setup,我正在尝试构建一个安装程序w/Inno安装程序,根据一些配置选项运行其他安装程序。为了简单起见,假设我有20个安装程序,可以在5种不同的配置中安装,其中每个配置都有一些必需的安装程序和一些可选的安装程序。配置A可能需要安装程序1、2、5、6,并且有11、13和14的选项。配置B可能需要1、2、3、9,并且有12、19和20的选项。等等 每个安装程序都有一个组件。理想情况下,我希望为配置使用类型,但我不知道如何使某些组件成为必需的,而使其他组件成为可选的(如果可能,请告诉我)。因此,目前我只有一个

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

每个安装程序都有一个组件。理想情况下,我希望为配置使用类型,但我不知道如何使某些组件成为必需的,而使其他组件成为可选的(如果可能,请告诉我)。因此,目前我只有一个“自定义”类型,并使用一个自定义向导页面,允许您指定配置。根据选择,我使用代码检查和禁用(因此不能取消选择)所需的组件,同时仍然允许选择可选组件

一般来说,它工作得很好,但我希望只显示适用于所选配置的组件。因此,使用上面的示例,对于配置A,Components页面将显示1、2、5、6选中并禁用,以及11、13和14未选中并启用。是否可以保留所有已定义的组件,但只隐藏不适用的组件?或者定义多个组件页面,但只显示该配置的一个

我在网上找到了解决方案,但由于用户可能会点击“上一步”按钮,因此我可以删除组件,但不重新添加它们的想法似乎不是一个好的选择。

否,组件列表(
ComponentsList
)在安装程序启动时只填充一次。它不能在运行时更改

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

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

您可以使用将
文件
注册表
等节项绑定到自定义组件。或者,您可以根据可见自定义组件列表中的选择更新真正的隐藏组件列表。

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

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

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


您可以使用将
文件
注册表
等节项绑定到自定义组件。或者,您可以根据可见自定义组件列表中的选择更新真正的隐藏组件列表。

感谢您的回复。为了确保我的理解清楚,您的建议基本上是不定义标准组件,而是创建自定义向导页面,模拟每个配置的组件页面。然后使用文件/运行部分中的Check参数确定实际运行的安装程序。我的理解正确吗?我的回答有点宽泛。但是是的,这是一个可能的实现。谢谢你的回复。为了确保我的理解清楚,您的建议基本上是不定义标准组件,而是创建自定义向导页面,模拟每个配置的组件页面。然后使用文件/运行部分中的Check参数确定实际运行的安装程序。我的理解正确吗?我的回答有点宽泛。但是是的,这是一个可能的实现。