Зачем мне нужно перезагрузить компьютер после установки нового программного обеспечения?


38

Почему иногда мне нужно перезагрузить компьютер после установки нового программного обеспечения, а иногда нет?

Есть ли какая-то причина, по которой он нуждается в такой перезагрузке или почему это не всегда так или иначе?


2
Это в основном, чтобы обновить реестр
Дуэйн Сэмюэлс

4
В некоторых случаях вы можете просто перезапустить сервис вместо перезагрузки.
ccook


8
@dwayne Большинство проблем связано с заблокированным файлом (dll), а не реестром. Реестр используется, чтобы сообщить Windows файлы для замены при перезапуске, но это не причина, по которой требуется перезапуск.
Ян Рингроз

Ответы:


38

Это зависит.

Если устанавливаемое программное обеспечение влияет на неотъемлемую часть операционной системы, требуется перезагрузка. Например, новое ядро ​​для операционной системы.

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

Для некоторых программных продуктов я пришел к выводу, что это привычка и часто не требуется, даже если это необходимо сделать. Если я не думаю, что часть программного обеспечения должна была сделать что-то важное для операционной системы, я бы не стал беспокоиться и не испытывал никаких проблем (и если бы были проблемы, их было бы легко решить).


6
Я согласен. В наши дни, если они не обновляют критический системный файл или драйвер, нет необходимости перезагружать систему. Часто именно разработчики хотят убедиться, что они «охватывают все основы».
surfasb

1
Если это более старый установщик, он может просто запросить перезагрузку. Если это наивный разработчик, он может быть настроен на запрос перезапуска независимо от того, нужен он или нет. Более новые установщики, которые правильно используют функции MSI, на самом деле могут сообщать о том, какие приложения удерживают необходимые файлы (библиотеки DLL и т. Д.) Открытыми, и предлагать пользователю остановить их - только если они решат оставить запущенные приложения, им будет предложено для перезапуска. Это в значительной степени неаккуратный беспорядок, ничто не заставляет разработчиков использовать MSI, а тем более использовать его правильно.
Стефани

15

Иногда программное обеспечение вносит изменения, которые не могут вступить в силу во время использования компьютера. Причины могут быть следующими: файл используется, изменение может произойти только во время загрузки компьютера, может возникнуть проблема безопасности, которая может быть решена только до того, как компьютер активирует свою сеть, возможно, вирусный сканер будет мешать работе. установить.

Иногда это просто небрежное программирование разработчиков.

Я уверен, что есть еще много.


1
В частности, какие изменения не могут вступить в силу, когда компьютер используется?
Андерсон Грин

13

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

Если dll используется запущенным приложением, его часть будет загружена в память, а остальная часть будет считана с диска, когда это необходимо. Поэтому DLL будет заблокирован на диске. (Подумайте о проблемах, если они не были заблокированы!)

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

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

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

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

Не часто пользователь решает купить другое приложение из-за перезапуска установщика, поэтому продавец тратит время (деньги) на то, что нужно, чтобы заставить пользователя покупать их приложения.

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

----------

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

На серверах это делается с помощью «контейнеров», однако «контейнеры» не подходят для настольного программного обеспечения, так как вы хотите иметь доступ к данным, сохраненным одним приложением с другим приложением. (В противном случае просто используйте iPhone.)


7

Причина в том, что если вы этого не сделаете: вы потерпите крах. От Раймонда Чена :

Даже если вы замените используемый файл, в системе все равно может быть код, который хочет использовать старую версию. Например, предположим, у вас есть два файла, которые работают вместе:

  • A.DLL
  • B.dll

Вы выпускаете патч, который обновляет оба файла, но A.dllиспользуется. Нет проблем. Вы просто заменяете их обоих. В результате программы, которые все еще использовали, A.dllпродолжают использовать старую версию, но новые программы будут использовать новую. И все программы получают новую версию B.dll.

Теперь программа, которая использовала старую, A.dllрешает вызвать функцию. Естественно, она ожидает старую версию B.dll, но вместо этого получает новую версию. В зависимости от того, какие изменения вы внесли B.dll, этот вызов может сработать - или может произойти сбой. Обе библиотеки DLL предполагают, что его партнер происходит из одного и того же сопоставленного набора.


Есть способы обойти то, что вы описываете, но они требуют обдумывания.
Даниэль Р Хикс

2

Честно говоря, разработчики программного обеспечения меньше работают (и, следовательно, меньше $$), полагая, что обновления всегда будут приводить к перезапуску. Это, вероятно, такое же решение для счетчиков компонентов, как и для разработчиков.

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


0

Это связано с тем, что очень трудно изменить код во время его работы, не вызывая при этом серьезных проблем. Решение: остановите все перед изменением кода, таким образом, вы можете быть уверены, что ничего не работает. Это взлом грубой силы, который в большинстве случаев не нужен во многих случаях, когда он предположительно требуется, но он может быть абсолютно необходим, особенно если вам приходится обновлять особенно важный код. На самом деле существует целая компания, которая специализируется на создании обновлений, которые НЕ требуют перезагрузки для этого особенно важного кода. То, как они это делают, находится в этой статье http://www.ksplice.com/paper .


-1

Вам необходимо перезагрузить компьютер при изменении важных системных файлов для Windows, поскольку Windows не позволяет изменять эти файлы во время их использования. Поэтому большинство обновлений из Центра обновления Windows требуют перезагрузки, как и программы, которые интегрируются в Windows (например, антивирус). До перезагрузки Windows не может выполнить несколько последних шагов, необходимых для «установки» программы.

Вы можете сравнить это с Linux, который редко требует перезагрузки. Даже когда вас просят перезагрузить компьютер, вам обычно нужно только выйти из системы и снова войти в нее. Это связано с тем, что типичная среда Linux состоит из множества различных отдельных программ, которые работают вместе для создания полной ОС. Если важный файл изменяется во время установки, вам, как правило, лучше всего перезапустить только одну конкретную программу, которая использует этот файл.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.