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