Почему иногда мне нужно перезагрузить компьютер после установки нового программного обеспечения, а иногда нет?
Есть ли какая-то причина, по которой он нуждается в такой перезагрузке или почему это не всегда так или иначе?
Почему иногда мне нужно перезагрузить компьютер после установки нового программного обеспечения, а иногда нет?
Есть ли какая-то причина, по которой он нуждается в такой перезагрузке или почему это не всегда так или иначе?
Это зависит.
Если устанавливаемое программное обеспечение влияет на неотъемлемую часть операционной системы, требуется перезагрузка. Например, новое ядро для операционной системы.
В системах Windows это часто используется, потому что пользователи считаются слишком глупыми, чтобы правильно использовать свои компьютеры. В качестве примера Microsoft публикует подробности того, как изменить "тип узла", используемый для работы в сети, на своем веб-сайте, включая инструкцию "перезагрузить компьютер", когда все, что требуется, - это перезапуск сетевой службы, как подробно описано здесь. Поскольку мы, как пользователи, слишком глупы, чтобы перезапустить службу, нам говорят, чтобы перезапустить все.
Для некоторых программных продуктов я пришел к выводу, что это привычка и часто не требуется, даже когда это сказано. Если я не думаю, что часть программного обеспечения должна была сделать что-то важное для операционной системы, я бы не стал беспокоиться и не испытывал никаких проблем (и если бы были проблемы, их было бы легко решить).
Иногда программное обеспечение вносит изменения, которые не могут вступить в силу во время использования компьютера. Возможные причины: файл используется, изменение может произойти только во время загрузки компьютера, может возникнуть проблема безопасности, которая может быть решена только до того, как компьютер активирует свою сеть, возможно, вирусный сканер будет мешать работе. установить.
Иногда это просто небрежное программирование разработчиков.
Я уверен, что есть еще много.
Часто при установке нового программного обеспечения dll (файл), который используется многими другими программными пакетами, необходимо обновить до новой версии. (Это гораздо более вероятно при обновлении уже установленного приложения.)
Если dll используется запущенным приложением, его часть будет загружена в память, а остальная часть будет считана с диска при необходимости. Поэтому DLL будет заблокирован на диске. (Подумайте о проблемах, если он не был заблокирован!)
Заблокированная DLL не может быть обновлена, поэтому установщик попросит Windows заменить DLL новой версией при следующем перезапуске машины. Отсюда необходимость перезагрузки.
Некоторые лучшие установщики расскажут вам о приложениях, которые должны быть закрыты перед запуском установщика, поэтому разрешите обновление DLL без перезапуска. Однако это делает пользовательский интерфейс установщика более сложным и приводит к большему количеству обращений в службу поддержки.
Установщик приложения также может заставить приложение сохранить его состояние, выключить его, а затем перезапустить после обновления DLL. Это может быть сделано только в том случае, если DLL используется одним приложением. Большинство самообновляющихся приложений делают это - это должно быть нормой для приложений массового рынка, когда много пользователей.
Все вышеперечисленное может привести к сложной логике, которую сложно проверить. Тестирование установщиков занимает много времени, так как вам нужно попытаться угадать каждое состояние компьютера пользователя. Поэтому часто лучше, чтобы установщик был простым и всегда работал, даже если это приводит к еще нескольким перезапускам для пользователя.
Не часто пользователь решает купить другое приложение из-за перезапуска установщика, поэтому продавец тратит время (деньги) на то, что нужно, чтобы заставить пользователя покупать его приложения.
Как часто у вас возникали проблемы после установки приложения, которое само решалось после перезагрузки? Подумайте о стоимости поддержки многих пользователей, звонящих по телефону с проблемами, которые решаются только с перезагрузкой. Как разработчик может очень быстро заставить собравшихся перезагрузить пользователя после установки программного обеспечения, даже если вы считаете, что в этом нет необходимости.
Большинство операционных систем и программного обеспечения были написаны в те дни, когда дисковое пространство и память стоили больших денег. В настоящее время приложения стремятся получить личную копию всех используемых ими библиотек, что приводит к обновлению ластика, но требует больше места для хранения.
На серверах это делается с помощью "контейнеров", однако "контейнеры" не подходят для настольных программ, так как вы хотите иметь доступ к данным, сохраненным одним приложением с другим приложением. (В противном случае просто используйте iPhone.)
Причина в том, что если вы этого не сделаете: вы потерпите крах. От Рэймонда Чена:
Даже если вы замените используемый файл, в системе все равно может быть код, который хочет использовать старую версию. Например, предположим, у вас есть два файла, которые работают вместе:
- A.DLL
- B.dll
Вы выпускаете патч, который обновляет оба файла, но
A.dll
используется. Нет проблем. Вы просто заменяете их обоих. В результате программы, которые все еще использовалиA.dll
продолжают использовать старую версию, но новые программы будут использовать новую. И все программы получают новую версиюB.dll
.Теперь программа, которая использовала старый
A.dll
решает вызвать функцию в. Естественно, он ожидает старую версиюB.dll
, но вместо этого получает новую версию. В зависимости от того, какое изменение вы внесли вB.dll
, этот вызов может сработать или может привести к сбою. Обе библиотеки DLL предполагают, что его партнер происходит из одного и того же сопоставленного набора.
Честно говоря, разработчикам программного обеспечения требуется меньше усилий (и, следовательно, меньше денег), чтобы предположить, что обновления всегда будут приводить к перезапуску. Это, вероятно, такое же решение для счетчиков компонентов, как и для разработчиков.
В конечном счете, существует очень мало обновлений, которые в идеальном мире нельзя было бы сделать без перезапуска, но для этого требуется предварительное планирование, и есть некоторые риски, учитывая широкий спектр возможных конфигураций, которые может иметь система.
Вам необходимо перезагрузить компьютер при изменении важных системных файлов для Windows, поскольку Windows не позволяет изменять эти файлы во время их использования. Поэтому большинство обновлений из Центра обновления Windows требуют перезагрузки, как и программы, которые интегрируются в Windows (например, антивирус). До перезагрузки Windows не может выполнить несколько последних шагов, необходимых для "установки" программы.
Вы можете сравнить это с Linux, который редко требует перезагрузки. Даже когда вас просят перезагрузить компьютер, вам обычно нужно только выйти из системы и снова войти в нее. Это связано с тем, что типичная среда Linux состоит из множества различных отдельных программ, которые работают вместе для создания полной ОС. Если важный файл изменяется во время установки, вам, как правило, лучше всего перезапустить только одну конкретную программу, которая использует этот файл.
Это связано с тем, что очень трудно изменить код во время его работы, не вызывая каких-либо серьезных проблем. Решение: остановите все перед изменением кода, таким образом, вы можете быть уверены, что ничего не работает. Это взлом грубой силы, который в большинстве случаев не нужен во многих случаях, когда он предположительно требуется, но он может быть абсолютно необходим, особенно если вам приходится обновлять особенно важный код. На самом деле существует целая компания, которая специализируется на создании обновлений, которые НЕ требуют перезагрузки для этого особенно важного кода. То, как они это делают, находится в этой статье http://www.ksplice.com/paper.