1

我有一个使用 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>
4

1 回答 1

3

在默认引导程序中,这是我们从命令行传递参数的方式:

<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=One,A,B

于 2014-06-24T22:08:37.743 回答