Почему некоторые установщики должны перезагрузить компьютер перед запуском программы? - PullRequest
7 голосов
/ 26 октября 2008

Я довольно новичок в развертывании настольных приложений, поэтому я впервые создаю установщик для своего программного обеспечения. В настоящее время при первом запуске программы после ее установки происходит сбой. После этого все работает нормально. Я все еще нахожусь в процессе отладки этой проблемы, но я заметил, что перезагрузка сразу после установки и перед запуском программного обеспечения, кажется, исправляет эту ошибку.

По каким причинам некоторые установщики просят вас перезагрузиться перед запуском программного обеспечения?

Кроме того, почему некоторые установщики должны перезагружаться перед завершением установки?

Заранее спасибо!

Ответы [ 3 ]

8 голосов
/ 26 октября 2008

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

В целом, это крайне нежелательно. Больше не должно быть причин, чтобы кому-либо, кроме самой Windows, требовалась перезагрузка после установки.

Я бы предложил вернуться в отладчик, чтобы узнать больше подробностей о том, почему ваше приложение дает сбой. Надеюсь, в вашем коде достаточно трассировки, чтобы разрешить этот тип отладки.

1 голос
/ 26 октября 2008

Как правило, перезагрузка требуется только в том случае, если установщик должен заменить файлы, которые в данный момент используются (и заблокированы) операционной системой. Иногда установщики ошибаются на стороне reboot-just-in-case, но это реже, чем раньше.

0 голосов
/ 27 октября 2008

У нас есть случай с установщиком, который я поддерживаю, где нам нужно принудительно перезагрузить компьютер для Vista только из-за UAC и повышения привилегий. После завершения установки нам нужно запустить программу как пользовательский контекст current , а не расширенный контекст Vista.

В вашем случае, я подозреваю, что некоторые файлы не были правильно зарегистрированы, и вам просто нужно придерживаться отладки;)

...