В одной версии установщика нашего продукта я добавил пользовательский диалог (показан ЦС с использованием session.Message()
), который спрашивает пользователя, хочет ли он сохранить некоторые свои данные при удалении.WIX подавляет диалог удаления при выполнении основного обновления?
В CA установлено условие REMOVE="ALL" AND NOT WIX_UPGRADE_DETECTED
. Диалог отображается правильно при нормальной деинсталляции, но также появляется при удалении существующего продукта при крупном обновлении. В этот момент установщик зависает, и его можно закрыть только из диспетчера задач, что приведет к некорректному обновлению.
Версия установщика, содержащая проблему, уже отправлена. Есть ли что-то, что мы можем включить в следующую версию установщика (которая делает серьезное обновление), которая решает проблему с диалогом при удалении существующего продукта?
Я создал CA в более новой версии (основное обновление), которая вызывает msiexec, как вы описали (с использованием исправленных msi). Действие выполняется после FindRelatedProducts, но по какой-то причине кэшированные msi не заменяются, и обновление падает. Но когда я попытался вызвать msiexec из приложения Console, кешированный msi был заменен правильно. У вас есть идея, почему это происходит? –
MSI имеет мьютекс, который предотвращает одновременную установку. Один msi не может установить еще один MSI (который эффективно использует recache). Перед запуском новой MSI вам нужно запустить команду. –
Я предполагаю, что мне нужно как-то запустить команду msiexec из пакета, прежде чем устанавливать основное обновление. Или, вы имеете в виду, что мне нужно создать отдельное приложение, которое запускает команду? –