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