Dlaczego muszę ponownie uruchamiać komputer po zainstalowaniu nowego oprogramowania?

38

Dlaczego czasami muszę ponownie uruchomić komputer po zainstalowaniu nowego oprogramowania, a innym razem nie?

Czy jest jakiś powód, dla którego potrzebuje tego ponownego uruchomienia lub dlaczego nie zawsze jest tak czy inaczej?

losowy
źródło
2
Jest to po prostu aktualizacja rejestru
Dwayne Samuels
4
W niektórych przypadkach możesz po prostu ponownie uruchomić usługę zamiast restartu.
ccook
patrz także superuser.com/questions/2467/…
Ian Ringrose
8
@dwayne Większość problemów dotyczy zablokowanego pliku (dll), a nie rejestru. Rejestr służy do informowania systemu Windows o plikach do zastąpienia podczas ponownego uruchomienia, ale nie jest to powód, dla którego konieczne jest ponowne uruchomienie.
Ian Ringrose

Odpowiedzi:

38

To zależy.

Jeśli instalowane oprogramowanie wpływa na integralną część systemu operacyjnego, konieczne jest ponowne uruchomienie. Na przykład nowe jądro dla systemu operacyjnego.

W systemach Windows jest często używany, ponieważ użytkownicy są uważani za zbyt głupich, aby prawidłowo używać swoich komputerów. Na przykład Microsoft publikuje szczegółowe informacje na temat zmiany „Typu węzła” używanego do pracy w sieci na swojej stronie internetowej , w tym instrukcję „restartowania komputera”, gdy wszystko, co jest wymagane, to ponowne uruchomienie usługi sieciowej, jak opisano tutaj . Ponieważ my, jako użytkownicy jesteśmy zbyt głupi, aby zrestartować usługę, kazano nam zrestartować wszystko.

W przypadku niektórych programów doszedłem do wniosku, że jest to nawyk i często nie jest konieczny, nawet jeśli otrzyma takie polecenie. Jeśli nie sądzę, że oprogramowanie powinno zrobić coś ważnego dla systemu operacyjnego, zwykle nie zawracam sobie głowy i nie doświadczyłem żadnych problemów (a jeśli byłyby problemy, byłyby łatwe do rozwiązania).

Neal
źródło
6
Zgadzam się. Obecnie, chyba że zaktualizują krytyczny plik systemowy lub sterownik, nie ma powodu, aby ponownie uruchamiać system. Często to programiści chcą mieć pewność, że „pokrywają wszystkie bazy”.
surfasb
1
Jeśli jest to starszy instalator, może po prostu poprosić o ponowne uruchomienie bez względu na to. Jeśli jest to naiwny programista, może zostać ustawiony monit o ponowne uruchomienie bez względu na to, czy jest potrzebny. Nowsze instalatory, które prawidłowo wykorzystują funkcje MSI, są w stanie raportować, które aplikacje przechowują potrzebne pliki (dlls itp.) Otwarte i pytają użytkownika o ich zatrzymanie - tylko wtedy, gdy zdecydują się pozostawić uruchomione aplikacje, zostaną wyświetlone monity do ponownego uruchomienia. Jest to dość niechlujny bałagan, nic nie zmusza deweloperów do korzystania z MSI, a tym bardziej do prawidłowego korzystania z niego.
Stephanie
15

Czasami oprogramowanie wprowadzi zmianę, która nie może wejść w życie, gdy komputer jest używany. Może być kilka przyczyn - plik jest w użyciu, zmiana może nastąpić tylko podczas uruchamiania komputera, może istnieć problem bezpieczeństwa, który można zrobić tylko przed włączeniem sieci do komputera, być może skaner antywirusowy zakłóci działanie zainstalować.

Czasami jest to po prostu niechlujne programowanie przez programistów.

Jestem pewien, że jest ich znacznie więcej.

bryan
źródło
1
W szczególności, które zmiany nie mogą wejść w życie, gdy komputer jest w użyciu?
Anderson Green
13

Często podczas instalowania nowego oprogramowania dll (plik) używany przez wiele innych pakietów oprogramowania musi zostać uaktualniony do nowej wersji. (Jest to znacznie bardziej prawdopodobne w przypadku aktualizacji aplikacji, którą już zainstalowałeś).

Jeśli dll jest używany przez działającą aplikację, jej część zostanie załadowana do pamięci, a reszta zostanie odczytana z dysku, gdy będzie to potrzebne. Dlatego dll zostanie zablokowany na dysku. (Pomyśl o problemach, jeśli nie były zablokowane!)

Zablokowanej biblioteki DLL nie można zaktualizować, więc przy następnym uruchomieniu komputera instalator poprosi system Windows o zastąpienie biblioteki DLL nową wersją. Stąd potrzeba ponownego uruchomienia.

Niektórzy lepsi instalatorzy powiedzą ci, które aplikacje powinny zostać zamknięte przed uruchomieniem instalatora, więc zezwolenie na aktualizację biblioteki DLL bez ponownego uruchomienia. Jednak to sprawia, że ​​interfejs instalatora jest bardziej złożony i prowadzi do większej liczby wezwań pomocy technicznej.

Instalator aplikacji może również sprawić, że aplikacja zapisze swój stan, zamknie się, a następnie uruchom ponownie po zaktualizowaniu biblioteki DLL. Można to zrobić tylko wtedy, gdy biblioteka DLL jest używana przez jedną aplikację. Większość samo-aktualizujących się aplikacji to robi - taka powinna być norma dla aplikacji masowego rynku, gdy jest wielu użytkowników.

Wszystkie powyższe mogą prowadzić do skomplikowanej logiki, która jest trudna do przetestowania. Testowanie instalatorów zajmuje dużo czasu, ponieważ musisz zgadnąć, w jakim stanie może być maszyna użytkownika. Często najlepiej jest, aby instalator był prosty i zawsze działał, nawet jeśli prowadzi to do kilku ponownych uruchomień dla użytkownika .

Często zdarza się, że użytkownik decyduje się na zakup innej aplikacji ze względu na restart instalatora, więc sprzedawca poświęca czas (pieniądze) na pracę nad tym, co jest potrzebne, aby użytkownik kupił swoje aplikacje.

Jak często miałeś problem po zainstalowaniu aplikacji, która rozwiązała się po ponownym uruchomieniu? Pomyśl o kosztach wsparcia wielu użytkowników dzwoniących z problemami, które zostaną rozwiązane po ponownym uruchomieniu. Może szybko stać się bardzo kuszący jako programista, aby zawsze zachęcał użytkownika do ponownego uruchomienia po zainstalowaniu oprogramowania, nawet jeśli uważasz, że nie jest to potrzebne.

----------

Większość systemów operacyjnych i oprogramowania powstało w czasach, gdy przestrzeń dyskowa i pamięć kosztują dużo pieniędzy. Nastąpił ruch, aby aplikacje miały prywatną kopię wszystkich używanych bibliotek dll, dzięki czemu aktualizacja gumki jest większa, ale zajmuje więcej miejsca.

Na serwerach odbywa się to za pomocą „kontenerów”, jednak „kontenery” nie działają dobrze w przypadku oprogramowania komputerowego, ponieważ chcesz mieć dostęp do danych zapisanych przez jedną aplikację z inną aplikacją. (W przeciwnym razie wystarczy użyć iPhone'a.)

Ian Ringrose
źródło
7

Powodem jest to, że jeśli nie: rozbijesz się. Od Raymond Chen :

Nawet jeśli zastąpisz używany plik, w systemie może nadal znajdować się kod, który chce użyć starej wersji. Załóżmy na przykład, że masz dwa pliki, które współpracują ze sobą:

  • A.dll
  • B.dll

Wydajesz łatkę, która aktualizuje oba pliki, ale A.dlljest używana. Nie ma problemu. Po prostu wymieniasz oba. W rezultacie programy, które nadal używały, A.dllnadal korzystają ze starej wersji, ale nowe programy będą korzystać z nowej. Wszystkie programy otrzymują nową wersję B.dll.

Teraz program, który używał starej, A.dlldecyduje się na wywołanie funkcji. Naturalnie oczekuje starej wersji B.dll, ale zamiast tego pobiera nową wersję. W zależności od tego, jaką zmianę wprowadziłeś B.dll, to połączenie może działać - lub może ulec awarii. Obie biblioteki DLL zakładają, że jego partner pochodzi z tego samego dopasowanego zestawu.

Ian Boyd
źródło
Istnieje wiele sposobów na opisanie tego, ale wymagają przemyślenia.
Daniel R Hicks
2

Szczerze mówiąc, jest to mniej pracy (a zatem i mniej $$) ze strony twórców oprogramowania, aby założyć, że aktualizacje zawsze spowodują ponowne uruchomienie. Jest to prawdopodobnie tyle samo decyzja liczników bean, co twórców.

Ostatecznie jest bardzo niewiele aktualizacji, których w idealnym świecie nie można byłoby wykonać bez ponownego uruchomienia, ale wymaga to dużo wstępnego planowania i wiąże się z pewnym ryzykiem, biorąc pod uwagę różnorodność możliwych konfiguracji systemu.

Daniel R. Hicks
źródło
0

Ma to związek z tym, że bardzo trudno jest zmienić kod, ponieważ działa bez powodowania poważnych problemów. Rozwiązanie: zatrzymaj wszystko przed zmianą kodu, dzięki czemu będziesz mieć pewność, że nic nie działa. Jest to hack brutalny, który w większości przypadków jest niepotrzebny, ale jest absolutnie konieczny, szczególnie jeśli aktualizujesz szczególnie ważny kod. W rzeczywistości istnieje cała firma specjalizująca się w aktualizacjach, które NIE wymagają ponownego uruchomienia tego szczególnie ważnego kodu. Sposób, w jaki to robią, znajduje się w tym dokumencie http://www.ksplice.com/paper .

Aviendha
źródło
-1

Wymagane jest ponowne uruchomienie komputera podczas modyfikowania ważnych plików systemowych dla systemu Windows, ponieważ system Windows nie zezwala na modyfikowanie tych plików podczas ich używania. Dlatego większość aktualizacji z Windows Update wymaga ponownego uruchomienia, podobnie jak programy integrujące się z Windows (jak antywirus). Do momentu ponownego uruchomienia system Windows nie może wykonać kilku ostatnich kroków niezbędnych do „zainstalowania” programu.

Możesz to porównać do Linuksa, który rzadko wymaga ponownego uruchomienia. Nawet gdy zostaniesz poproszony o ponowne uruchomienie komputera, zwykle wystarczy wylogować się i zalogować ponownie. Jest tak, ponieważ typowe środowisko Linux składa się z wielu różnych programów współpracujących ze sobą w celu stworzenia kompletnego systemu operacyjnego. Jeśli ważny plik zostanie zmodyfikowany podczas instalacji, zwykle w najlepszym wypadku wystarczy zrestartować tylko jeden konkretny program, który używa tego pliku.

Exp HP
źródło