Warum dauert die Deinstallation von Windows Installers (.msi-Dateien) so viel länger als für andere Installer?
24746
Chris S
Seit den Tagen von Windows XP haben Windows Installer (.msi-Dateien), einschließlich InstallShield-Installationsprogramme (dies ist nur ein Bootstrap für MSI), etwa fünfmal länger als andere Installationsprogramme, um eine Anwendung zu deinstallieren. Dasselbe gilt normalerweise auch für die Installation.
Warum dauert es immer noch so lange und warum wird MSI für die Installation verwendet? Zum Beispiel:
VLC deinstallieren - dauert etwa 5 Sekunden. XYZ deinstallieren - Startet "Vorbereitung zum Entfernen ...", gefolgt von einer Verzögerung von 15 Sekunden.
Alles, was es tut, ist das Entfernen von Dateien und das Reinigen der Registrierung (was COM-Registrierungen enthalten kann). Warum dauert es also so lange?
Ich möchte nur anmerken, dass dies nur der Fall ist, wenn Sie (1) die Systemwiederherstellungs-Checkpoint-Funktion deaktivieren, * und * (2) ein gigantischer Installer (der für Windows Installer nicht eindeutig ist - ich habe eine Menge langsamer Inno gesehen Installateure, einfach weil sie riesig sind). Ich habe Windows-Installer installieren und in (buchstäblich) ein paar Sekunden selbst entfernen müssen. (Bootvis installiert sich zum Beispiel in 3 Sekunden auf meinem System. Es wird in der gleichen Zeit deinstalliert. Und nein, mein System ist auch nicht so schnell.) Der Unterschied ist, dass Windows Installer viele weitere Funktionen hat, also größere Programme Verwenden Sie es öfter.
Mehrdad vor 13 Jahren
0
@Mehrdad meintest du, (1) die Systemwiederherstellung aktivieren?
Chris S vor 12 Jahren
0
Ja, Tippfehler.
Mehrdad vor 12 Jahren
0
Ich kam hierher, weil die Deinstallation von MSI für immer dauerte ... und der Grund war, dass das Popup-Fenster "Möchten Sie zulassen, dass das folgende Programm von einem unbekannten Herausgeber Änderungen an diesem Computer vornimmt?" Im Hintergrund versteckt wurde.
Nicolas Raoul vor 11 Jahren
2
In dieser Antwort finden Sie technische Details zur Beschleunigung von MSI-Installationen: http://superuser.com/a/296534/11906
Stein Åsmul vor 10 Jahren
0
Früher bestand die Installation darin, dass ein Programm ausgeführt wurde und die Software in ein paar einfachen Schritten zu installieren war. Anschließend wurde die Deinstallation umgekehrt.
So funktioniert Windows Installer nicht. Anstatt ein Programm auszuführen, das einfach installiert und ausgeführt werden soll, prüft es den Status Ihres Systems, untersucht dann den Status der Datenbank, die das Installationsprogramm des Programms ist, und führt dann eine Reihe überkomplizierter Berechnungen zum Abgleich der beiden aus.
Anstatt ein Installationsskript auszuführen, wird anscheinend das Problem eines reisenden Händlers gelöst. Deshalb läuft es so langsam. Oder zumindest ist das mein Eindruck.
Ich füge hinzu, dass das Windows-Installationsprogramm alle Informationen in der Registrierung speichert, die nicht die schnellste Datenbank der Welt ist.
Es ist wahrscheinlich schneller als das, was `dpkg` für seine Paketdatenbank verwendet (obwohl dpkg zwar nicht alles * darin speichert):` / var / lib / dpkg / status ist eine flache Textdatei, die jedes einzelne Paket auflistet das war einmal installiert und wurde seitdem nicht mehr entfernt - und ich bin mir nicht mal sicher, ob die gelöschten immer weggelassen werden.
SamB vor 13 Jahren
3
"dpkg" lügt mich nicht mit Fortschrittsbalken an, die für zwei Minuten "Verbleibende Zeit: 0 Sekunden" sagen ...
LawrenceC vor 10 Jahren
3
19
A Dwarf
Windows Installer hat in der Tat den Ruf, langsam zu sein. Es gibt ein paar Dinge, die dazu beitragen, und ich werde sie unten ansprechen. Aber letztendlich sollte man sich fragen, ob eine, zwei oder drei Minuten wirklich eine Streitfrage bei der Installation und Deinstallation von Software sind. Ich brauche mehr Zeit als das Durchblättern von Fernsehsendern :)
Die Registry Dies ist der Täter Nummer eins. Windows Installer verwendet die Registrierung für seine Vorgänge intensiv. Wenn Ihr System ausgereift ist, wenn Sie Anwendungen installieren und deinstallieren und die Registrierung an Größe gewinnt oder fragmentiert wird, wird MSI langsamer. Dieselbe Anwendung wird bei einer ursprünglichen Windows-Installation viel schneller installiert und deinstalliert als bei einem ausgereiften System. Die Lösung besteht darin, die Registrierung sauber und defragmentiert zu halten.
Verwenden Sie für die Registry-Reinigung eines der vielen verfügbaren Tools. Aber für die Registry-Defragmentierung kann ich nicht genug NTREGOPT für die Optimierung der internen Struktur und PageDefrag für die Defragmentierung physischer Dateien empfehlen .
Der Grund, warum MSI-Vorgänge in der Registrierung möglicherweise zu langsam werden, hat mit der Verwendung von MSI zu tun. Windows Installer verwendet die Registrierung, um zu verfolgen, welche Produkte welche Komponenten an welchem Speicherort installiert haben. Die ursprünglichen Installations-GUIDs werden im komprimierten Format verwendet. Informationen zu Installationen auf jeder Maschine finden Sie unter HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Installer\UserData\S-1-5-18, während Benutzerdaten HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Installer\UserData\auf der Unterseite und auf einem Schlüssel neben der Benutzer-SID angezeigt werden.
Beide Schlüssel können ziemlich groß sein und enthalten zahlreiche Unterschlüssel und Werte. Sie steuern Produkte, Komponenten und KeyPaths jeder installierten Anwendung. Alle diese Informationen müssen zur korrekten Deinstallation gelesen und verarbeitet werden. Das Registrierungsformat listet die Schlüssel jedoch in alphabetischer Reihenfolge auf, wodurch binäre Suchen möglich sind. Aber die Werte sind nicht. Sie werden bei ihrer Erstellung gespeichert, daher muss ein linearer Suchvorgang ausgeführt werden. Was die Algorithmusleistung verlangsamt.
Alles in allem ist MSI eine ziemlich vollständige und genaue Methode für die Installation und Deinstallation von Software. Es leidet jedoch an seiner Registrierungsabhängigkeit. Das System ist hervorragend. Es ist die Windows-Registrierung, die vor langer Zeit überarbeitet werden sollte :)
Weitergehende Informationen: Eine ausführliche Analyse der Aktivitäten von MSI während jeder Installations- oder Deinstallationsprozedur finden Sie in diesem Artikel, in dem erläutert wird, wie Sie MSI-Debug einrichten. Oder, für weniger, aber immer noch wertvolle Informationen, dieses eine, wie die Protokollierung zu aktivieren.
Soweit ich weiß, verwendet MSI Transaktionen für alles, was es tut, sodass es immer einen ordnungsgemäßen Rollback ausführen kann, wenn eine Operation fehlschlägt. Dies trägt wahrscheinlich auch nicht zur Geschwindigkeit bei, ist aber für die Datenintegrität unabdingbar. (Ich habe aufgehört zu zählen, wie oft ich bereinigen musste, nachdem ein NSIS-Installationsprogramm fehlgeschlagen ist -.-)
Joey vor 15 Jahren
4
Im Moment installiere ich OpenOffice und es ist schon fast eine Stunde vergangen;)
Quiark vor 14 Jahren
0
Sehr informativ. Ich für meinen Anschein bekomme in meinen msi-Protokollen häufig Fehler (Wiederherstellungspunkt kann nicht erstellt werden) (möglicherweise Wiederherstellungspunkt-Zitat erreicht?), Sodass die Erstellung von Wiederherstellungspunkten nicht die Möglichkeit bietet, meine Installationszeiten zu behindern. Unabhängig davon sind meine Installationszeiten immer noch langsam, und wenn die Wertsuche so langsam ist wie Sie sagen, gibt es keinen Grund für Microsoft, eine zusätzliche Implementierung für zusätzliche Blatt- / Knoteninformationen in der Binärspezifikation des Registers bereitzustellen Ergänzung der binären Suche.
chaz vor 11 Jahren
0
> Aber letztendlich sollte man sich fragen, ob eine, zwei oder drei Minuten wirklich eine Streitfrage bei der Installation und Deinstallation von Software sind. Ja.
Alexei Averchenko vor 11 Jahren
0
6
Stein Åsmul
Das Windows-Installationsprogramm bietet viele Vorteile für die Unternehmensbereitstellung . Einige davon habe ich hier beschrieben: https://serverfault.com/a/274609/20599
Ein Großteil der Langsamkeit einer Windows Installer-Sitzung beruht auf den Rollback-Funktionen . Zunächst wird vor der Installation oder Deinstallation ein Wiederherstellungspunkt erstellt (vorausgesetzt, die Systemwiederherstellung wurde nicht deaktiviert). Dann wird es wieder hergestellt alle betroffenen Dateien während der Deinstallation und der Installation gesichert, um sicherzustellen, dass das System im Fehlerfall in den ursprünglichen Zustand werden kann.
Ein weiterer Faktor ist, dass alle Komponenten in der MSI in der Registrierung registriert werden . Dies ist mit einem gewissen Aufwand verbunden .
Für kompilierte MSI-Dateien wird auch etwas Zeit benötigt, um die Installationsdateien zu extrahieren .
Windows Installer werden aus verschiedenen Gründen häufig verwendet - Betriebssystemintegration, Sicherheitsrichtlinien, unbeaufsichtigte Installationen und vieles mehr.
Der häufigste Grund, den ich mir vorstellen kann, sind unbeaufsichtigte Installationen und Netzwerkverteilungen. Große Unternehmen können Anwendungen problemlos verteilen, indem sie die .MSI-Datei auf einem Netzlaufwerk speichern und dann einfach eine Batchdatei (oder eine Verteilungs-Assistentenanwendung) auf einem Remote-Computer aufrufen, um den Installationsvorgang zu automatisieren.