Установить подфункции не устанавливать по умолчанию
У меня есть установка 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>