Остановка отображения пользовательских диалоговых окон в WiX удалить

У меня есть проект установщика WiX, который использует настраиваемое диалоговое окно для запроса параметров для обновления файла web.config и запуска сценария базы данных при установке. Все работает правильно, приложение установлено и работает правильно.

Тем не менее, пользовательское диалоговое окно также отображается, когда я удаляю программное обеспечение, и это, безусловно, не нужно (так как я не обновляю файл web.config).

Есть ли способ подавить пользовательский диалог при удалении приложения?

(Я также должен удалить sql procs, который я установил, во время удаления, но это выходит за рамки этой проблемы).

2 ответа

Решение

Решение вашего вопроса состоит в том, чтобы связать пользовательское действие с условием (Not REMOVE ="ALL"). Это заставит действие выполняться при новой установке и установке с обслуживанием, но не при удалении. Если вам не нужно запускаться при установке с обслуживанием, а только при новой установке, вы можете установить условие: (Не установлено И НЕ (УДАЛЕНО ="ВСЕ")). Полный список свойств MSI и краткое описание здесь: http://msdn.microsoft.com/en-us/library/aa370905(VS.85).aspx.

Логика последовательности и пользовательских действий в файлах MSI ОЧЕНЬ сложна. Это действительно окупается, чтобы избежать пользовательских действий, когда вы можете.

Более того - все файлы MSI имеют встроенную поддержку автоматической установки. Это означает, что вся последовательность графического интерфейса пользователя может быть пропущена, а файл MSI установлен без участия пользователя. Это важная функция для корпоративного развертывания с помощью SMS / SCCM или других механизмов развертывания. Отображение пользовательского диалогового окна при запуске установки в автоматическом режиме является нарушением этой базовой функции MSI. Это можно обойти, правильно настроив отображение диалогового окна на основе свойства UILevel: http://msdn.microsoft.com/en-us/library/aa372096(VS.85).aspx. Просто, чтобы все было интересно и запутанно, во время установки Microsoft определила 4 уровня графического интерфейса пользователя, от абсолютно бесшумного до различных параметров, таких как индикатор выполнения и т. Д. Подробнее см. Ссылку

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

Фрагмент Wix, демонстрирующий создание пользовательского действия и его вставку в InstallExecuteSequence:

<!--Custom Action Sample Section-->
<Binary Id='VBScriptCustomAction.vbs' SourceFile='VBScriptCustomAction.vbs'/>
<CustomAction Id='test' BinaryKey='VBScriptCustomAction.vbs' VBScriptCall='Hello' Return='ignore'/>

<InstallExecuteSequence>
  <Custom Action="test" Sequence='4111'><![CDATA[NOT REMOVE~="ALL"]]></Custom>
</InstallExecuteSequence>
<!-- End of Custom Action Sample Section-->
Другие вопросы по тегам