Od czasów systemu Windows XP instalatory Windows (pliki .msi), w tym instalatory InstallShield (które są tylko bootstrapem dla MSI), odinstalowały aplikację około pięć razy dłużej niż inne instalatory. To samo zwykle dotyczy instalacji.
Dlaczego nadal trwają tak długo i dlaczego ludzie nadal używają MSI do instalacji? Na przykład:
Odinstaluj VLC - zajmuje około 5 sekund.
Odinstaluj XYZ - uruchamia „Przygotowanie do usunięcia ...”, po czym następuje 15 sekundowe opóźnienie.
Wszystko, co robi, to usuwanie plików i czyszczenie rejestru (który może obejmować rejestracje COM), więc dlaczego to trwa tak długo?
windows
uninstall
installer
windows-installer
Chris S.
źródło
źródło
Do you want to allow the following program from an unknown publisher to make changes to this computer?
okienko ukrywało się w tle.Odpowiedzi:
Instalator Windows najpierw systematycznie tworzy punkt przywracania systemu, co jest dość powolną operacją.
Również z artykułu zatytułowanego, odpowiednio, „Instalator Windows jest do bani” , fragment:
Dodam też, że instalator Windows przechowuje wszystkie informacje w rejestrze, który nie jest najszybszą bazą danych na świecie.
źródło
dpkg
wykorzystuje do swojej bazy danych pakietu (choć, co prawda, dpkg nie przechowywać wszystko w nim):/var/lib/dpkg/status
jest płaski plik, który wymienia każdy pojedynczy pakiet, który został zainstalowany raz tekst, a nie ponieważ zostały oczyszczone - i ja nawet nie jestem pewien, czy zawsze pomija oczyszczonych.dpkg
nie okłamuje mnie za pomocą pasków postępu, które mówią „Pozostały czas: 0 sekund” przez dwie minuty, ale…Instalator Windows ma reputację powolności. Przyczynia się do tego kilka rzeczy, które omówię poniżej. Ale ostatecznie należy zadać sobie pytanie, czy jedna, dwie lub trzy minuty to tak naprawdę kwestia sporna podczas instalowania i odinstalowywania oprogramowania. Zajmuję więcej czasu niż przeglądanie kanałów telewizyjnych :)
Rejestr
Jest to winowajca numer jeden. Instalator Windows intensywnie wykorzystuje rejestr do swoich operacji. W miarę dojrzewania systemu, instalowania i odinstalowywania aplikacji oraz wzrostu rejestru lub jego fragmentacji, MSI będzie wolniejszy. Ta sama aplikacja zainstaluje się i odinstaluje znacznie szybciej w nieskazitelnej instalacji Windows niż w dojrzałym systemie. Rozwiązaniem tutaj jest utrzymanie rejestru w czystości i defragmentacji.
Do czyszczenia rejestru użyj jednego z wielu dostępnych narzędzi. Ale w przypadku defragmentacji rejestru nie mogę zalecić wystarczającej liczby NTREGOPT do wewnętrznej optymalizacji gałęzi i PageDefrag do fizycznej defragmentacji plików.
Powodem, dla którego operacje MSI mogą być wolne w rejestrze, jest to, w jaki sposób MSI z nich korzysta. Instalator Windows używa rejestru do śledzenia, które Produkty zainstalowały, które Składniki i lokalizację, w której został zainstalowany. Oryginalne identyfikatory GUID instalacji są używane w formacie skompresowanym. Informacje o instalacjach dla poszczególnych komputerów można znaleźć pod adresem
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Installer\UserData\S-1-5-18
, natomiast dane dla poszczególnych użytkowników znajdują się obok nich wHKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Installer\UserData\
kluczach SID użytkownika i na kluczach.Oba te klucze mogą być dość duże i zawierają wiele podkluczy i wartości. Kontrolują Produkty, Komponenty i Ścieżki Kluczowe każdej zainstalowanej aplikacji. Wszystkie te informacje muszą zostać odczytane i przetworzone w celu prawidłowej procedury odinstalowania. Jednak format rejestru zawiera klucze w kolejności alfabetycznej, co pozwala na wyszukiwanie binarne. Ale wartości nie są. Są one zapisywane podczas ich tworzenia, dlatego należy przeprowadzić procedurę wyszukiwania liniowego. Co spowalnia działanie algorytmu.
Podsumowując, MSI jest raczej kompletną i dokładną metodą instalacji i deinstalacji oprogramowania. Ale cierpi z powodu zależności rejestru. System jest doskonały. To rejestr systemu Windows już dawno powinien był zostać przerobiony :)
Aby uzyskać bardziej zaawansowane informacje:
Aby uzyskać dogłębną analizę tego, co robi MSI podczas każdej procedury instalowania lub odinstalowywania, zapoznaj się z tym artykułem wyjaśniającym, jak skonfigurować debugowanie MSI. Lub, dla mniej, ale wciąż cennych informacji, ten jak aktywować rejestrowanie.
źródło
Instalator Windows ma wiele dużych zalet dla wdrożenia korporacyjnego , niektóre z nich opisałem tutaj: https://serverfault.com/a/274609/20599
Duża część powolności sesji Instalatora Windows wynika z jego możliwości wycofywania . Po pierwsze, tworzy punkt przywracania przed instalacją lub odinstalowaniem (pod warunkiem, że przywracanie systemu nie zostało wyłączone). Następnie wykona kopię zapasową wszystkich plików, których dotyczy problem, zarówno podczas deinstalacji, jak i instalacji, aby zapewnić przywrócenie systemu do pierwotnego stanu w przypadku wystąpienia błędu.
Kolejnym czynnikiem jest to, że wszystkie składniki MSI zostaną zarejestrowane w rejestrze . Obejmuje to pewne koszty ogólne .
W przypadku skompilowanych plików MSI potrzeba również trochę czasu na wyodrębnienie plików instalacyjnych .
Zobacz tę odpowiedź, aby uzyskać szczegółowe informacje techniczne dotyczące przyspieszenia instalacji MSI .
źródło
Instalatory Windows są tak często używane z wielu powodów - integracji systemu operacyjnego, zasad bezpieczeństwa, instalacji nienadzorowanych i wielu innych.
Najczęstszym powodem, dla którego mogę wymyślić, są nienadzorowane instalacje i dystrybucje sieciowe. Duże korporacje mogą łatwo dystrybuować aplikacje, umieszczając plik .MSI na dysku sieciowym, a następnie po prostu wywołując plik wsadowy (lub aplikację kreatora dystrybucji) na zdalnym komputerze, aby zautomatyzować proces instalacji.
Chociaż poza plikami .MSI istnieją inne opcje, istnieją pewne unikalne funkcje, które integrują się z większością wersji systemu Windows , których nie ma wiele innych instalatorów.
I właśnie dla tego wiesz - InstallShield nie zawsze jest nakładką na pliki MSI. Mają także własne autorskie rozwiązanie instalacyjne.
źródło