Wix Installer: одна функция с условием, чтобы решить, какой ComponentGroupRef использовать

Мой установщик имеет функцию под названием "Инструменты"

То, что установлено с помощью этой функции, зависит от того, какую версию 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 ответ

Как вы обнаружили, название функции не обязательно должно быть уникальным. У вас есть две функции с одинаковым названием, так что это так.

Попробуйте использовать вложенные функции:

<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> 
Другие вопросы по тегам