Как я могу выполнить пользовательское действие в WiX, которое выполняется только при установке или удалении?

У меня есть два пользовательских действия, один из которых я хотел бы выполнить, когда мой продукт установлен, а другой, когда он будет удален.

Мое пользовательское действие в настоящее время вызывается из модуля слияния после "InstallFinalize", но это происходит как для установки, так и для удаления. Я попытался добавить условие "НЕ УСТАНАВЛИВАЕМЫЙ И НЕ ОБНОВЛЯЮЩИЙ ПРОДУКТ", но это дало мне ошибку:

Ошибка 2762. Невозможно записать запись script. Транзакция не началась.

Я также пытался подключиться к другим действиям (например, UnpublishComponents), но я не могу найти какие-либо уникальные для установки или удаления.

Как я могу исправить эту проблему?

Ответ 1

Попробуйте следующий
1. Только для установки:

<InstallExecuteSequence>
<Custom Action="SomeAction" After="InstallFinalize">NOT Installed AND NOT REMOVE</Custom>
</InstallExecuteSequence>

2. Для удаления попробуйте использовать: ответ Роб

свойство UPGRADINGPRODUCTCODE устанавливается только во время RemoveExistingProducts CA.