Установить подфункции не устанавливать по умолчанию

У меня есть установка WIX с функцией и двумя подфункциями. Я хотел бы, чтобы эта функция была обязательной, а две дополнительные функции необязательными, но не устанавливались по умолчанию. Вот мое дерево функций:

<Feature Id="A" Level="3" AllowAdvertise="no" TypicalDefault="install" 
         InstallDefault="local" Absent="disallow" >
  <Feature Id="A1" Level="1" AllowAdvertise="no" />
  <Feature Id="A2" Level="1" AllowAdvertise="no" />
</Feature>

Я думал, что добавление:

<Property Id="INSTALLLEVEL" Value=3 />

установит основную функцию для установки и подфункции не устанавливать. Это не тот случай; все функции установлены по умолчанию.

Я использую WixUI_FeatureTree. Интересно, может ли это испортить свойство INSTALLLEVEL.

Так что же я пытаюсь сделать возможным? Как я могу отключить две подфункции по умолчанию?

Редактировать: интересно. Я поставил INSTALLLEVEL=1000 и попробовал это снова, и все функции были все еще установлены для установки. Может ли WixUI_FeatureTree быть забивающим INSTALLLEVEL?

3 ответа

Решение

Я думаю, что ваша проблема заключается в перезаписи значения свойства INSTALLLEVEL во время выполнения UISequence. Добавление кода

<Property Id="INSTALLLEVEL" Value=3 />

инициализирует значение свойства в самом начале процесса установки. Но когда вы переходите от диалога к диалогу, свойство INSTALLLEVEL может измениться, прежде чем вы увидите диалог FeathreTree. Пожалуйста, проверьте подробные записи в журнале "Правильное значение изменено" и окончательное значение свойства INSTALLLEVEL в конце файла журнала. Возможно, вам придется создать пользовательское действие, чтобы установить для INSTALLLEVEL любое значение, которое вам нужно. Пример можно найти в источниках WIX: диалоговое окно SetupType делает именно это:

<Control Id="TypicalButton" Type="PushButton" X="40" Y="65" Width="80" 
         Height="17" ToolTip="!(loc.SetupTypeDlgTypicalButtonTooltip)" 
         Default="yes" Text="!(loc.SetupTypeDlgTypicalButton)">
  <Publish Property="WixUI_InstallMode" Value="InstallTypical">1</Publish>
  <Publish Event="SetInstallLevel" Value="3">1</Publish>
</Control>

Свойство INSTALLLEVEL похоже на высокую отметку. Если вы установили его на 1000 и не хотите, чтобы функция была выбрана по умолчанию, вы должны установить уровень функции на 1001 или выше. Это все на уровне или ниже уровня, который устанавливается по умолчанию.

Из MSDN:

Свойство INSTALLLEVEL - это начальный уровень, на котором функции по умолчанию выбраны "ВКЛ" для установки. Функция устанавливается только в том случае, если значение в поле Level таблицы Feature меньше или равно текущему значению INSTALLLEVEL. Уровень установки для любой установки задается свойством INSTALLLEVEL и может быть целым числом от 1 до 32 767. Для дальнейшего обсуждения уровней установки см. Таблицу возможностей.

Еще одно наблюдение и, возможно, более важное.

Ваши подфункции имеют Level="1", и это в любом случае установит их для любого действующего INSTALLLEVEL. Вы должны установить их уровень выше, если вам нужно отключить их по умолчанию. Как это:

<Feature Id="A" Level="3" AllowAdvertise="no" TypicalDefault="install" 
         InstallDefault="local" Absent="disallow" >
  <Feature Id="A1" Level="10" AllowAdvertise="no" />
  <Feature Id="A2" Level="10" AllowAdvertise="no" />
</Feature>
Другие вопросы по тегам