我有一个使用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>
答案 0 :(得分:3)
在默认的bootstrapper中,这是我们从命令行传递参数的方式:
<Wix>
<Bundle>
<Variable Name="CommandLineArgument" bal:Overridable="yes"/>
<Chain>
<MsiPackage>
<MsiProperty Name="CommandLineArgument" Value="[CommandLineArgument]"/>
</MsiPackage>
</Chain>
</Bundle>
</Wix>
记下BAL:Overridable。这就是我如何确保我们可以从命令行传递属性值。不要忘记将名称空间声明添加到Wix元素xmlns:bal =&#34; http://schemas.microsoft.com/wix/BalExtension",并链接到WixBalExtension.dll。
在您的情况下,您应该为特征值[s]指定的MSI属性应为&#34; ADDLOCAL&#34;。
<MsiProperty Name="ADDLOCAL" Value="[CommandLineArgument]"/>
要从命令行执行捆绑,请执行以下操作:
bundle.exe CommandLineArgument = One,A,B