Wix Installer:一个具有条件的功能,用于决定使用哪个ComponentGroupRef

时间:2014-09-12 19:26:55

标签: wix

我的安装程序有一个名为"工具"

的功能

此功能安装的内容取决于客户端运行的SQL Server版本。

如何使用条件说明"如果SQL 2008执行ComponentGroupRef ID = SQL2008,否则ComponentGroupRef ID = SQL2012"

我创建了2个属性来保存SQL2008和SQL2012的目录,因此这些属性是我用来做出决定的属性。

这很接近,但显示"工具"功能两次。

<Feature Id="SQL2008Tools" Title="Tools" Level="1" Description="Installs all support UI Tools for SQL 2008">
      <Condition Level="1"><![CDATA[SQL2008BINDIR AND NOT SQL2012BINDIR]]></Condition>
      <ComponentGroupRef Id="Tools2008Component"/>
    </Feature>

    <Feature Id="SQL2012Tools" Title="Tools" Level="1" Description="Installs all support UI Tools for SQL 2012">
      <Condition Level="1"><![CDATA[SQL2012BINDIR]]></Condition>
      <ComponentGroupRef Id="Tools2012Component"/>
    </Feature>   

一如既往 - 感谢您的帮助!

1 个答案:

答案 0 :(得分:2)

正如您所发现的,功能的标题不一定是唯一的。您有两个具有相同标题的功能,因此它显示了这种方式。

尝试使用嵌套功能:

<Feature Id="SQLTools" Title="Tools" Level="1" Description="Installs support UI Tools for SQL Server"> 
  <Feature Id="SQL2008Tools" Title="SQL 2008 Tools" Level="1" Description="Installs all support UI Tools for SQL 2008">
    <Condition Level="1"><![CDATA[SQL2008BINDIR AND NOT SQL2012BINDIR]]></Condition>
    <ComponentGroupRef Id="Tools2008Component"/>
  </Feature>

  <Feature Id="SQL2012Tools" Title="SQL 2012 Tools" Level="1" Description="Installs all support UI Tools for SQL 2012">
    <Condition Level="1"><![CDATA[SQL2012BINDIR]]></Condition>
    <ComponentGroupRef Id="Tools2012Component"/>
  </Feature> 
</Feature>