Wix安装程序:一个功能,有条件决定使用哪个组件GroupRef

Wix安装程序:一个功能,有条件决定使用哪个组件GroupRef,wix,Wix,我的安装程序有一个名为“工具”的功能 此功能安装的内容取决于客户端运行的SQL Server版本 如果SQL 2008 do ComponentGroupRef ID=SQL2008,否则ComponentGroupRef ID=SQL2012,我如何拥有一个条件为“如果SQL 2008 do ComponentGroupRef ID=SQL2008”的功能 我正在创建两个属性来保存SQL2008和SQL2012的目录,所以这些是我用来确定的属性 这很接近,但显示了“工具”功能两次 <Fe

我的安装程序有一个名为“工具”的功能

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

如果SQL 2008 do ComponentGroupRef ID=SQL2008,否则ComponentGroupRef ID=SQL2012,我如何拥有一个条件为“如果SQL 2008 do ComponentGroupRef ID=SQL2008”的功能

我正在创建两个属性来保存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>   


一如既往-谢谢你的帮助

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

尝试使用嵌套功能:

<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> 


当我这样做的时候,我得到了一个名为“工具”的主菜单,其中有两个子菜单,都是“工具”。在本地,我有SQL 2008和SQL 2012,但我的第一个条件是“如果SQL-2008而不是SQL-2012”。找到答案。我有两个功能,标题为“工具”,级别为0。如果为true,以下条件将级别设置为1(启用)。