Dlaczego nie możesz odinstalować wielu programów jednocześnie w systemie Windows?

99

Dlaczego system Windows nie pozwala na odinstalowanie lub usunięcie wielu programów jednocześnie? Jakie jest tego uzasadnienie? Czy to zepsuje system wewnętrzny?

Nie szukam sposobu na odinstalowanie wielu programów jednocześnie, po prostu szukam powodu, dla którego nie byłoby takiej opcji.

Jeroen Bollen
źródło
9
Aby ludzie nie odinstalowali wszystkiego naraz ... może.
M.Bennett,
@ M.Bennett Też tak myślałem, ale nie ma sposobu na wybranie wielu programów, więc użytkownicy i tak naprawdę nie mogą odinstalować wszystkiego przez przypadek.
Jeroen Bollen,
5
W rzeczywistości możesz usunąć wiele programów jednocześnie, jest to jedyny Instalator Windows, który uniemożliwia odinstalowanie wielu programów, to znaczy, ponieważ pozwala tylko na jedną instancję samego siebie. Łatwo usunąć pliki programów, możesz usunąć całą zawartość plików programów, jeśli chcesz, które odinstalują te programy po prostu nieskutecznie.
Ramhound
@Ramhound: Wydajesz się być jedynym, kto tu właściwie rozumieć intencję pytającego za: chce system odinstalować programy w sekwencji . Odpowiedzi tutaj rozumiały jego pytanie inaczej: czy można jednocześnie odinstalować kilka programów. Nie trzeba dodawać, że w Linuksie jest to łatwe: wystarczy pisać apt-get -y uninstall prog1 prog2 prog3.
Niccolo M.
4
@NiccoloM Moje pytanie dotyczyło tego, dlaczego nie możesz jednocześnie. : P
Jeroen Bollen

Odpowiedzi:

101

Jeśli czytasz cokolwiek na temat działania systemu Instalatora Windows, oczywiste jest, że zastosowali kilka pomysłów z transakcyjnych baz danych do instalacji i konserwacji programu, nie wspominając już o .msisamych plikach, które są bazą danych.

Przy projektowaniu dowolnej bazy danych zawsze pojawia się pytanie - czy chcesz szybkości, dokładności / bezpieczeństwa? Biorąc pod uwagę, że instalatorzy mogą modyfikować konfigurację systemu, a nieszczęście może uniemożliwić działanie systemu, bezpieczeństwo ma pierwszeństwo przed prędkością. Jednym z powodów, dla których .msiinstalatorzy są tak powolni, jest to, że pliki przywracania są tworzone dla każdego pliku itp., Które zostaną zmodyfikowane, a następnie usunięte - umożliwiając „cofnięcie” wszelkich zmian, jeśli coś pójdzie nie tak ( takich jak przerwa w dostawie prądu lub awaria systemu).

Teraz uważam, że sam silnik MSI wymusza instalowanie, modyfikowanie lub usuwanie tylko jednego programu na raz - jeśli spróbujesz uruchomić jakiś czas .msi, inny program się odinstalowuje, na przykład albo nie uruchomi się, albo zaczeka na aktualnie uruchomioną dezinstalację skończyć. Instalatory spoza MSI mogą nie zachowywać się w ten sposób - ponieważ nie używają silnika MSI. Ale z powodu tej decyzji dotyczącej bezpieczeństwa prawdopodobnie dlatego appwiz.cplnalega, aby zezwolić tylko na jeden deinstalator na raz.

CCleaner pozwala uruchamiać deinstalatory bez czekania na zakończenie poprzednio uruchomionych. Instalatory MSI prawdopodobnie nadal nie będą działać równolegle z powodu powyższego.

LawrenceC
źródło
29
Należy zauważyć, że menedżerowie pakietów w systemach uniksowych również nie będą próbowali usuwać kilku pakietów naraz z tego samego powodu. Jeśli usuniesz wiele pakietów, zostaną one usunięte jeden po drugim, prawdopodobnie każdy w ramach własnej transakcji.
Joey
+1 Znakomita odpowiedź! Należy zwrócić uwagę na jedną rzecz. Jeśli masz kilka niezależnych plików wykonywalnych, takich jak CPU-Z, w folderze, możesz je odinstalować (usunąć) jednocześnie.
MonkeyZeus
4
@Joey To prawda, ale możesz przynajmniej poinstruować menedżerów pakietów * nix, aby to zrobili, a oni ustalą kolejność. Myślę, że większym problemem jest to, że Windows nie rozumie pojęcia zależności na poziomie zarządzania pakietami.
tudor
4
@tudor: Myślę, że to tylko różnica w zarządzaniu aplikacjami w różnych systemach operacyjnych. Windows zarządza aplikacjami , podczas gdy w systemach uniksowych menedżerowie pakietów zarządzają pakietami , którymi mogą być biblioteki, aplikacje i podobne rzeczy. Windows może zarządzać takimi rzeczami (na pewno robi to wewnętrznie, np. Po włączeniu lub wyłączeniu składników systemu Windows), ale posiadanie bibliotek innych firm w całym systemie nie działało tak dobrze pod koniec lat 90., więc zachęca się aplikacje do pakiet wszystkie ich zależności.
Joey,
@Joey Rozumiem twój punkt widzenia, ale obwinianie użytkownika (lub programisty) nie zajdzie daleko w tak otwartej przestrzeni współdzielonej. Użytkownicy widzą tylko aplikacje, ale aplikacje są tylko podzbiorem pakietów. Wiele bibliotek, nawet z różnymi wersjami i sprzedawców, po prostu musi być zarządzane . Wymaganie od dewelopera zarządzania nim było w najlepszym razie optymistyczne, IMHO, i spowodowało ciężkie wzdęcia. Windows Store ma na to wpływ, ale nadal jest daleka droga od automatycznego rozwiązywania zależności, co sprawia, że ​​* nixes jest o wiele prostszy w tym względzie.
tudor
19

Dotyczy to tylko programów korzystających z systemu Windows Installer .

Jeśli program korzysta z własnego (nie) systemu instalatora, nic nie stoi na przeszkodzie, aby uruchomić inny deinstalator w tym samym czasie.

Instalator Windows ogranicza liczbę wystąpień, aby uniknąć konfliktów między wieloma programami, gdy zmieniają one systemowe ustawienia (często udostępniane) i pliki.

Większość dezinstalatorów śledzi zmiany, aby w razie awarii móc je wycofać. Jeśli ktoś nie jest świadomy wszystkich zmian wprowadzanych (przez inne deinstalatory), może faktycznie działać gorzej, jeśli spróbuje przywrócić nieudaną instalację.

System Instalatora Windows został stworzony z myślą o ujednoliceniu systemu, z którego mogą korzystać wszyscy programiści aplikacji (w systemie Windows), aby uniknąć takich problemów.

Ƭᴇcʜιᴇ007
źródło
9

Zadania dezinstalacyjne często modyfikują pliki współdzielone przez wiele programów lub pliki systemowe \ Rejestr (jest to częściowy powód, dla którego jest to potrzebne do zarządzania administracyjnego). Jeśli uruchomionych zostanie wiele zadań odinstalowywania, mogą one powodować konflikty. Jeśli kiedykolwiek miałeś do czynienia z „DLL Hell”, byłoby tak samo. Inne programy lub sam system Windows mogą pozostawać w niespójnym stanie.

KA
źródło
To jest większość tego, na czym polega właściwa odpowiedź. Jeśli program „A” instaluje inną niż podstawowa bibliotekę DLL systemu Windows „X”, to program „B” wymaga go w swoim instalatorze, prawdopodobnie również będzie częścią deinstalatora. Ale odinstalowanie DLL „X” spowodowałoby uszkodzenie programu „A”. Dlatego dezinstalator zwykle pyta o udostępnione biblioteki DLL i inne pliki JEŻELI powinny zostać usunięte. W przypadku jednoczesnego działania tego rodzaju monitowanie może nie działać poprawnie. Wreszcie, a może co ważniejsze, wszyscy zapomnieli o rejestrze systemu Windows, który jest podstawowym komponentem bazy danych, często aktualizowanym w instalatorach / deinstalatorach.
Darrell Teague,
-1

Jednoczesne odinstalowywanie programów, oprócz potencjalnych innych wymienionych problemów, ma bardzo małą zaletę: nie będzie dużo szybsze niż odinstalowywanie programów sekwencyjnie. Odinstalowanie programu to zadanie obejmujące dyskowe operacje we / wy. Uruchamianie kilku programów wykonujących operacje we / wy nie jest szybsze niż uruchamianie ich sekwencyjnie (chyba że programy są zainstalowane na dwóch osobnych dyskach fizycznych). W rzeczywistości będzie prawdopodobnie wolniej, ponieważ dwa konkurujące ze sobą zadania IO spowodują, że pamięć podręczna dysku będzie mniej wydajna, a fizyczne głowice dysku będą musiały przeskakiwać z miejsca na miejsce.

Niccolo M.
źródło
To nie ma znaczenia jako odpowiedź. Wszystko, co dotyczy operacji we / wy dysku, może spowolnić, jeśli zrobisz zbyt wiele rzeczy naraz, ale jedyną rzeczą, której system Windows naprawdę uniemożliwia , są jednoczesne instalacje. I jest dobry powód, aby chcieć móc wykonywać jednoczesne (od) instalacje - użytkownikom byłoby znacznie łatwiej ustawić w kolejce wiele operacji i pozwolić im działać razem, zamiast siedzieć i czekać dla każdego z nich do ukończenia po kolei. Ponadto problem z rywalizacją jest nieaktualny w przypadku dysków SSD.
Andrew Medico