Подготовка : действительно ли необходимо проверять лицензионный ключ при удалении? Не могли бы вы сделать так, чтобы пользовательское действие не запускалось при удалении? Его можно настроить так, чтобы он не запускался при деинсталляции, инициированной основным обновлением, в отличие от обычных деинсталляций, запускаемых вручную. Он включает в себя свойство UPGRADINGPRODUCTCODE
. Добавив NOT UPGRADINGPRODUCTCODE
к вашему условию, пользовательское действие никогда не будет выполняться во время значительных обновлений. Что-то вроде: UILevel=2 AND NOT UPGRADINGPRODUCTCODE
. Условие NOT REMOVE="ALL"
также не позволит запускаться при обычной деинсталляции. Условия тяжелые - есть много режимов установки для тестирования.
Сохранять свойства : Вы также можете сохранить пароль в реестре и создать свою настройку для ее считывания, если она там есть. Это включает в себя поиск в реестре, что легко может сделать WiX.
Live? : Вы живете со своим предыдущим пакетом? Если это так, вы можете установить исправленную версию с небольшим обновлением, чтобы изменить последовательность удаления установленного продукта. В приведенном выше случае я предложил изменить условия пользовательского действия, и это возможно при незначительном обновлении.
Инициализация, инициированная Setup.exe : Если вы используете программу запуска setup.exe, созданную с помощью Burn, одним из вариантов будет запуск удаления старой версии с помощью программы запуска, а не изнутри самого MSI (который имеет серьезные технические ограничения из-за необходимости только одного активного сеанса установки MSI в любое время). Это позволит вам передать любую командную строку в процедуру удаления.
В моем усталом состоянии это все, что я могу произвести прямо сейчас. Я проверю, жив ли ты или нет, и узнаю, сколько я забыл упомянуть.