#wix #windows-installer #bootstrapper #burn #wix3.11
#викс #windows-установщик #загрузчик #запись #wix3.11 #wix
Вопрос:
Я пытаюсь отобразить надпись «Установить» или «Удалить» в зависимости от действия, выполняемого установщиком записи wix. До сих пор я пробовал это:
<?define InstallStatus=[WixBundleAction]?>
<?if $(var.InstallStatus) = 5?>
<Variable Name="StatusLabel" Value="Install"/>
<?else ?>
<Variable Name="StatusLabel" Value="Uninstall"/>
<?endif ?>
Но он всегда возвращает Удаление. Когда я проверил файл журнала, я получил инициализирующую строковую переменную ‘statusLabel’ со значением ‘Удалить’.
Когда я попытался напечатать InstallStatus, у него не было значения («»). Похоже, что до этого оно не установлено.
Есть ли какой-либо другой способ добиться этого?
Ответ №1:
<?define InstallStatus=[WixBundleAction]?>
это код препроцессора, который вычисляется во время компиляции, но WixBundleAction
является переменной записи, которая недоступна до времени выполнения. В версии v3.x вы должны написать код для установки переменной во время выполнения. В версии 4 в SetVariable
# 4948 реализован новый элемент, который позволяет декларативно устанавливать переменную, как вы пытаетесь сделать.
Если вы используете wixstdba, то, вероятно, захотите узнать о # 4149, который добавил поддержку отображения другого сообщения для установки и удаления.
Комментарии:
1. «В версии v3.x вам нужно написать код для установки переменной во время выполнения» -> Как??