Wix Bootstrapper (записать) Условное отображение метки

#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 вам нужно написать код для установки переменной во время выполнения» -> Как??