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

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

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

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

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

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

1 Ответ

2 голосов
/ 27 сентября 2008

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

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

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

...