【问题标题】:WiX ComponentGroup ConditionWiX 组件组条件
【发布时间】:2016-08-29 16:04:11
【问题描述】:

我有一个Feature,它引用了一个ComponentGroupComponentGroup 是在另一个文件的 Fragment 中定义的,并且包含 Components 的数量。

此项目在产品的多个版本之间共享,我想维护一个版本的 Product.wxs 文件(代码库在产品版本之间是通用的)。

我可以在 ComponentGroup 上设置一个 Condition 来确定是否将其包含在安装程序中吗?

【问题讨论】:

    标签: wix windows-installer installation conditional-statements wix3.10


    【解决方案1】:

    是的,你可以。下面的代码 sn-p 是完全有效的 WiX 代码:

    <Feature Id="MyFeature" Title="Some title" Level="100">
      <ComponentGroupRef Id="ComponentGroup1"/>
      <ComponentGroupRef Id="ComponentGroup2"/>
      <?if $(var.IncludeAnotherGroup) = true ?>
        <ComponentGroupRef Id="AnotherGroup"/>
      <?endif ?>
    </Feature>
    

    您可以在构建时提供 IncludeAnotherGroup 变量的值,例如像这样(NAnt 代码):

    <candle ...>
      <defines>
        <define name="IncludeAnotherGroup" value="true" />
      </defines>
      <sources basedir="${paths.wxs}">
        <include name="**.wxs"/>
      </sources>
    </candle>
    

    【讨论】:

    • 这正是我所需要的。我正在使用 Visual Studio 解决方案从命令行调用构建。在构建安装程序之前(准确地说,在构建整个代码库之前),我正在修改 config.wxi 中版本字符串的值。可以从 msbuild 命令行设置 wix 变量吗?
    • @Jon,有一堆官方文档是关于在 WiX 中使用 MSBuild:wixtoolset.org/documentation/manual/v3/msbuild
    • 这可能适用于原始提问者,但我注意到这并不能回答您是否可以在 ComponentGroup 元素中使用 Condition 元素的实际问题。答案似乎是否定的。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-11-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多