Установщик Windows - возобновление обновления после перезагрузки

У меня есть пакет MSI для установщика Windows, который устанавливает драйверы, которые иногда требуют перезагрузки перед обновлением; драйверы устанавливаются отложенным настраиваемым действием после WriteRegistryValues. Когда требуется перезагрузка, происходит откат, и пользователю предлагается перезагрузиться и снова запустить установку.

В InstallExecuteSequence действие RemoveExistingProducts находится между InstallValidate и InstallInitialize, поэтому, когда обновление сигнализирует о необходимости перезапуска, предыдущий пакет был удален. Поэтому, когда требуется перезагрузка, после отката и сообщения об ошибке «перезагрузите и перезапустите это», наше программное обеспечение больше не устанавливается. Если пользователь перезагружается и повторяет установку, все работает нормально.

Мне нужно автоматизировать перезагрузку и возобновить установку, чтобы пользователю не приходилось ничего делать (кроме, конечно, согласия на перезапуск).

Команда, записанная в ключ RunOnce реестра, может снова запустить установку после перезагрузки, но я думаю, что будет сложно обусловить ForceReboot тем, что происходит в отложенном настраиваемом действии, которое устанавливает драйвер. Также может быть сложно решить, что делать при возобновленной установке.

Мы будем очень рады советам по передовому опыту или указателям на потенциальные проблемы.


person user14402    schedule 26.09.2008    source источник


Ответы (1)


RemoveExistingProducts перед InstallInitialize или после InstallFinalize не будет помещать действие в сценарий аудита нового продукта, поэтому, как вы сказали, старый продукт удаляется до завершения обновления.

Таким образом, вы можете попробовать поместить выполнение RemoveExisitngProducts между InstallInitialize и InstallFinalize, таким образом, удаление находится в части сценария аудита, поэтому он будет отслеживать, перезагрузку и возобновление.

ознакомьтесь со свойствами перезагрузки системы здесь

person CheGueVerra    schedule 26.09.2008