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