Wix CustomAction для запуска только в базовом режиме

#wix #windows-installer

#wix #windows-установщик

Вопрос:

Моя установка wix 3.5 может быть загружена и запущена в обычной ситуации установки. Я также использую тот же msi для обновлений и вызываю msiexec с /qb помощью (базовый тихий интерфейс) из самого приложения.

До сих пор все в порядке. В обычных настройках у меня есть возможность запустить приложение после установки (взято из руководства) и работает нормально.

 <Property Id="WIXUI_EXITDIALOGOPTIONALCHECKBOXTEXT" Value="Start $(var.AppName) $(var.ExeVersion) now..." />
<Property Id="WixShellExecTarget" Value="[#$(var.AppName).exe]" />
<CustomAction Id="LaunchApplication" BinaryKey="WixCA" DllEntry="WixShellExec" Impersonate="yes" />
  

Я хочу, чтобы мое обновление было тихим и запускало обновленное приложение после успешной установки. Для этого у меня есть пользовательское действие, подобное этому, в моем InstallExecuteSequence :

 <InstallExecuteSequence>
  <RemoveExistingProducts After="InstallFinalize"/>
  <Custom Action="LaunchApplication"
          After="RemoveExistingProducts"/>
</InstallExecuteSequence>
  

Это тоже нормально, однако очевидно, что теперь мое приложение автоматически запускается с обычными настройками (не / qb). Чтобы преодолеть это, я полагаю, мне нужно определить, в каком UILevel я нахожусь, и запустить пользовательское действие только в INSTALLUILEVEL_BASIC .

Итак, вот мой вопрос: как я могу определить UILevel в InstallExecuteSequence или CustomAction ? Или есть способ запустить CustomAction только в тихом базовом режиме в Wix.

Ответ №1:

Вы должны обусловить пользовательское действие UILevel = 3

Комментарии:

1. Я знаю, но как мне точно настроить его на uilevel 3?

2. Вы можете указать условие в тексте элемента «Пользовательский».

3. спасибо за подсказку. Вот рабочий пример для справки: <Пользовательское действие =»LaunchApplication» After=»RemoveExistingProducts»>UILevel = 3</Пользовательский>