是否可以根据命令行设置创建一个带有WiX的msi软件包,它可以选择安装组件?
例如。我的msi 总是包含组件:
如果没有任何参数执行msi(例如用户双击msi),那么我们只安装program.exe和componentA.dll
但是如果调用msi传递命令行参数(例如installer.msi / special),那么还会安装componentB.dll
答案 0 :(得分:2)
听起来你应该相应地将你的组件放入features。例如,根据您提到的示例,program.exe
和ComponentA.dll
可能是FeatureA
,ComponentB.dll
是FeatureB
。
然后,您可以通过传递适当的INSTALLLEVEL属性值来控制要安装的功能。
第一篇文章中的备注部分非常好地概述了如何处理这个问题:
安装级别:
对于任何安装,都有一个已定义的安装级别, 这是1到32,767之间的整数值。初始值是 由INSTALLLEVEL属性确定,该属性在属性中设置 表。
仅在功能级别值较小时才安装功能 大于或等于当前安装级别。用户界面可以这样创作 初始化安装时,安装程序允许 用户修改功能表中任何功能的安装级别。 例如,作者可以定义表示的安装级别值 特定安装选项,例如Custom,Typical或Minimum, 然后创建一个使用SetInstallLevel ControlEvents的对话框 使用户能够选择其中一种状态。
取决于 用户选择的状态,该对话框设置安装级别属性 到相应的值。如果作者指定了典型的等级 100,用户选择“典型”,只选择具有等级的功能 安装100或更少。此外,自定义选项可能会导致 到另一个包含SelectionTree控件的对话框。该 然后,SelectionTree Control允许用户单独更改 是否安装了每个功能。