2013-03-05 1 views
2

У меня есть пользовательское действие, которое запускает пользовательский интерфейс после того, как .msi разворачивает файлы. Этот пользовательский интерфейс устанавливает конфигурацию, а также развертывает различные вещи в разных местах (SQL-серверы и т. Д.). Сам пользовательский интерфейс работает в C# (.NET 2.0). Как я могу получить состояние установщика (то есть, обновить/установить/восстановить и отключить/отключить UI/fullUI и т. Д.)?MSI пользовательское действие установщик состояние взаимодействие

В принципе, как я могу получить доступ к тому, в каком режиме установлен инсталлятор, из пользовательского интерфейса на C# /. NET 2, чтобы я мог обрабатывать эти состояния в моем коде?

(Это похоже на Stack Overflow вопроса How to add a WiX custom action that happens only on uninstall (via MSI)?, но не совсем.)

ответ

1

Вы можете попытаться передать значение свойств в качестве параметров пользовательского действия, которые дают вам эту информацию. Свойство «Installed» устанавливается только в том случае, если пакет работает в режиме обслуживания (изменить или удалить). Чтобы провести различие между модификацией и удалением, вы можете проверить свойство «REMOVE». Вот список с условиями, которые необходимо создать внутри вашего пользовательского действия.

  1. Условие для установки: НЕ установлен
  2. Условия для деинсталлировать: REMOVE = "ALL"
  3. Условие для обслуживание: Установка И СНИМАТЬ <> "ALL"

Для обновления вам необходимо использовать свойство, которое вы определили для установки, если определена более старая версия. Предполагая, что вы использовали этот метод из Stack Oveflow, вопрос How to implement WiX installer upgrade?.

Для уровня пользовательского интерфейса можно проверить имущество UILevel.

+0

Похоже, что это может быть жизнеспособным вариантом (вместо создания нового пользовательского действия и нового, несвязанного кода для установщика). Единственная проблема заключается в том, чтобы вникать в WiX (но я подозревал, что мне все равно придется это делать) – Izzy