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>