Как установить уровень функции в зависимости от условий в wix?
Я пытаюсь установить функции в зависимости от состояния. Первоначально я установил уровень функции на 1 и поместил условие внутри функции, чтобы изменить уровень функции.
Я не могу изменить уровень функции, и он всегда равен 1, независимо от условий.
<Feature
Id = "AddinsFeature"
Title = "InstallAddin"
Level = "1"
Absent="allow">
<ComponentRef Id = "AddInComp"/>
<Condition Level="0">
<![CDATA[FALSE]]>
</Condition>
</Feature>
2 ответа
Как использовать условия функции WiX, в основном объясняется здесь: https://www.firegiant.com/wix/tutorial/getting-started/conditional-installation/
Чтобы функция была установлена на уровне, указанном вашим условием, условие должно быть оценено как истинное. Вы можете заставить это быть верным, устанавливая это к 1:
<Feature Id="AddinsFeature" Title="InstallAddin" Level="1" Absent="allow">
<!-- Force condition to be true, which sets the feature to the Level attribute value -->
<Condition Level="0">1</Condition>
<ComponentRef Id = "AddInComp"/>
</Feature>
Выше мы устанавливаем уровень установки функции в 0, потому что его условие 1 истинно (число 1 истинно в логике MSI - по определению - как в логическом). В реальном мире состояние было бы намного сложнее - конечно.
Каждая установка имеет общий INSTALLLEVEL - и он действует как верхний предел, как объяснено здесь Крисом Пейнтером. Каждая функция, которая оценивается до уровня функции ниже или в INSTALLLEVEL, устанавливается по умолчанию.
Примечание: когда вы устанавливаете
Feature level to 0
в вашем источнике WiX эта функция не отображается в графическом интерфейсе настройки, и она также не будет установлена по умолчанию (подробнее см. ссылку ниже).
Манипулирование функциями может быть очень сложным. Несколько ссылок:
- Как установить функцию на основе свойства, заданного в настраиваемом действии?
- Неустановленная функция устанавливается (более подробно)
- Сбой условия wix (Уровень =0 скрывает функцию от GUI)
- http://www.joyofsetup.com/2008/04/09/feature-states-in-component-conditions/