我有一个使用WiX Burn v3.8创建的exe。我们叫它bundle。exe。在这个包中,我有一个具有3个功能的MSI,其中两个嵌套在一个下面。我想从命令行调用Bundle.exe,并将选定的功能传递到我的MSI中。我应该注意到,我有一个现有的UI,让用户选择安装哪些功能,所以我不想使用WiX Bootstrapper应用程序。
//Fragment of my MSI.wxs
<Feature Id="One">
//ComponentRefs
<Feature Id='A' >
//ComponentRefs
</Feature>
<Feature Id="B" >
//ComponentRefs
</Feature>
</Feature>
//Fragment of my Bundle.wxs
<Bundle>
<Chain>
//List of MsiPackages
</Chain>
</Bundle>
在默认引导程序中,我们是这样从命令行传递参数的:
<Wix>
<Bundle>
<Variable Name="CommandLineArgument" bal:Overridable="yes"/>
<Chain>
<MsiPackage>
<MsiProperty Name="CommandLineArgument" Value="[CommandLineArgument]"/>
</MsiPackage>
</Chain>
</Bundle>
</Wix>
记录BAL:Overridable。这就是我如何能够确保我们可以从命令行传递属性值。不要忘记将命名空间声明添加到Wix元素xmlns:bal="http://schemas.microsoft.com/wix/BalExtension",并链接到WixBalExtension.dll。
在你的例子中,你应该分配特征值的MSI属性应该是"ADDLOCAL"。
<MsiProperty Name="ADDLOCAL" Value="[CommandLineArgument]"/>
从命令行执行以下命令:
bundle.exe CommandLineArgument = 1, A、B