Это в порядке для планирования пользовательского действия RemoveExistingProducts перед InstallValidate?

Проблема

У меня есть MSI, который создает и запускает службу Windows во время установки и останавливает и удаляет сервис во время удаления. Это хорошо работает при установке и удалении отдельно, но при обновлении, Файлы используемое диалоговое окно отображено (только на Vista и позже из-за нового менеджера по Перезапуску), указав, что сервис используется.

Фон

Используемое диалоговое окно Файлов отображено во время последовательности InstallExecute пользовательским действием InstallValidate, которое сразу планируется перед пользовательским действием RemoveExistingProducts; это означает, что предыдущая версия еще не была удалена, таким образом, Файлы используемое диалоговое окно нужно показать.

Документация MSDN указывает, что действие RemoveExistingProducts должно быть запланировано после действия InstallValidate, и мне в настоящее время планировали действия RemoveExistingProducts сразу после действия InstallValidate.

Потенциальное решение

Я хотел бы перенести пользовательское действие RemoveExistingProducts к сразу перед пользовательским действием InstallValidate так, чтобы предыдущая установка имела шанс остановить и удалить сервис перед Файлами, которые показывают используемое диалоговое окно. Я попробовал перепланирование действия, и это, кажется, работает правильно без неблагоприятных побочных эффектов (хотя журнал все еще указывает, что действие InstallValidate выполняется перед действием RemoveExistingProducts), но я не решаюсь использовать это решение, так как это нарушает документацию MSDN, и могут быть отрицательные воздействия, которые я еще просто не вижу.

Кто-либо попробовал это? Единственная другая альтернатива, о которой я могу думать, должна иметь новую остановку установки сервис старой установки, но это - нежелательный, потому что это требует, чтобы установка имела информацию обо всех старых установках, которые это может обновить (остановка этого конкретного сервиса может включить больше, чем просто простой вызов Менеджеру по сервису для остановки его).

8
задан Kevin Kibler 13 January 2010 в 15:42
поделиться

2 ответа

Я реализовал возможное решение, указанное в вопросе, запланировав RemoveExistingProducts непосредственно перед InstallValidate . Я еще не видел никаких проблем, но я опубликую еще раз, когда установка станет более полезной.

Обновление

Наша установка использовала это уже некоторое время, и я не заметил никаких побочных эффектов.

6
ответ дан 5 December 2019 в 21:19
поделиться

Одна потенциальная проблема заключалась в том, что если пользователь отменяет во время установкиValidate (например, из-за недостаточно дискового пространства или файла в использовании) или во время установки, какое поведение отката. Идеальная ситуация состоит в том, что состояние приложения такое же, как и ранее (например, предыдущее приложение установлено). Возможно, вы даете это с вашей секвенированием, хотя откат может быть функцией, без которой вы можете жить.

0
ответ дан 5 December 2019 в 21:19
поделиться
Другие вопросы по тегам:

Похожие вопросы: