У меня есть пакет MSI для установщика Windows, который устанавливает драйверы, которые иногда требуют перезагрузки до их обновления; драйверы устанавливаются путем отложенного пользовательского действия после WriteRegistryValues. Когда требуется перезагрузка, происходит откат, и пользователю предлагается перезагрузить компьютер и снова запустить установку.Установщик Windows - обновление после перезагрузки
В процедуре InstallExecuteSequence действие RemoveExistingProducts находится между InstallValidate и InstallInitialize, поэтому, когда обновление сообщает о необходимости перезагрузки, предыдущий пакет был удален. Поэтому, когда требуется перезагрузка, после отката и сообщения об ошибке «перезагрузка и повторное выполнение этого» наше программное обеспечение больше не установлено. Если пользователь перезагружается и повторяет установку, все работает нормально.
Мне нужно автоматизировать перезагрузку и возобновление установки, так что пользователю не нужно на самом деле сделать что-нибудь (кроме согласия на перезапуск конечно.)
Команда, написанный в ключ RunOnce реестра, необходимо может работать установка снова после перезагрузки, но я думаю, что будет сложно установить ForceReboot на то, что происходит в отложенном пользовательском действии, которое устанавливает драйвер. Также, может быть, сложно решить, что делать в возобновленной установке.
Рекомендации по лучшим практикам или указателям на потенциальные проблемы будут очень желанными.