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

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

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

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

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

Ответы [ 2 ]

2 голосов
/ 07 октября 2009

Решением вашего вопроса является условие пользовательского действия с условием ( Not REMOVE = "ALL" ). Это заставит действие выполняться при новой установке и установке для обслуживания, но не при удалении. Если вам не нужно запускаться при установке для обслуживания, но только при новой установке, вы можете установить условие: ( Не установлено и не установлено (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 уровня GUI во время установки, начиная от полностью бесшумный, с помощью различных опций, таких как индикатор выполнения и т. д. Подробнее см. по ссылке.

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

0 голосов
/ 07 октября 2009

Фрагмент 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-->
...