如何从包含在Bundle元素中的MsiPackage中选择特性



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

相关内容

  • 没有找到相关文章

最新更新