Распространенной ошибкой является попытка управления функциями через свойство INSTALLLEVEL.Уровень установки должен быть статическим, его не следует изменять во время установки.
Значение INSTALLLEVEL считается уровнем, выше которого функции больше не устанавливаются.Например, если INSTALLLEVEL = 5, будет установлена функция с уровнем 4, а функция с уровнем 6 не будет установлена.
С помощью INSTALLLEVEL вы можете управлять исходным состоянием функции, например:
<Feature Id="MyFeatures" Level="4" ConfigurableDirectory='INSTALLLOCATION' Display='expand' AllowAdvertise='no'>
<!-- Feature is not installed by default -->
<Feature Id='First' Level='6' AllowAdvertise='no' ConfigurableDirectory='INSTALLLOCATION'/>
<!-- Feature is installed by default -->
<Feature Id="Second" Level="4" AllowAdvertise="no" ConfigurableDirectory="INSTALLLOCATION"/>
</Feature>
Для вышеуказанной конфигурации вы можете затем добавить условия установки, установив уровень ниже или выше, чем INSTALLLEVEL:
<Feature Id="MyFeatures" Level="4" ConfigurableDirectory='INSTALLLOCATION' Display='expand' AllowAdvertise='no'>
<Feature Id='First' Level='6' AllowAdvertise='no' ConfigurableDirectory='INSTALLLOCATION'>
<Condition Level="4">(MYTREAT="1") AND (SPECIALVALUE="special")</Condition>
</Feature>
<Feature Id="Second" Level="4" AllowAdvertise="no" ConfigurableDirectory="INSTALLLOCATION">
<Condition Level="6">(INSTALLLEVEL = 3) OR (MYTREAT="1" AND SPECIALVALUE)</Condition>
</Feature>
</Feature>
Как видите, атрибуты уровня функции вращаются вокруг INSTALLLEVEL, а не наоборотвокруг.
Редактировать:
Условия компонентов оцениваются перед отображением диалоговых окон установки.Таким образом, вы не можете обусловить функцию с помощью диалогового элемента управления (например, флажка или кнопки).
Решение состоит в том, чтобы использовать настраиваемое действие, которое изменяет действие функции на основе вашего настраиваемого свойства.Например, вы можете использовать функцию MsiSetFeatureState .Вы можете найти учебник по индивидуальным действиям здесь: http://www.codeproject.com/KB/install/msicustomaction.aspx