Решением вашего вопроса является условие пользовательского действия с условием ( 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, условиях, пользовательских действиях и т. П., Но это не ответило бы на ваш вопрос. Пожалуйста, добавьте любые дополнительные вопросы.