Warum dauert die Deinstallation von Windows-Installationsprogrammen (MSI-Dateien) so viel länger als bei anderen Installationsprogrammen?

31

Seit den Tagen von Windows XP haben Windows Installer (MSI-Dateien), einschließlich InstallShield-Installer (bei denen es sich nur um einen Bootstrap für MSI handelt), etwa fünfmal länger gebraucht, um eine Anwendung zu deinstallieren, als andere Installer. Das gleiche gilt normalerweise auch für die Installation.

Warum dauert die Installation immer noch so lange und warum wird MSI immer noch für die Installation verwendet? Beispielsweise:

VLC deinstallieren - dauert ca. 5 Sekunden.
XYZ deinstallieren - Startet "Vorbereiten zum Entfernen ...", gefolgt von einer Verzögerung von 15 Sekunden.

Alles, was es tut, ist das Entfernen von Dateien und das Bereinigen der Registrierung (einschließlich COM-Registrierungen). Warum dauert es dann so lange?

Chris S
quelle
Ich möchte nur darauf hinweisen, dass dies nur dann zutrifft, wenn Sie (1) die Systemwiederherstellungs-Checkpoint-Funktion deaktivieren und (2) es sich um ein gigantisches Installationsprogramm handelt (das nicht nur für Windows Installer gilt - ich habe viele langsame Inno-Installationsprogramme gesehen, einfach weil sie riesig sind). Ich habe Windows-Installer in (buchstäblich) wenigen Sekunden installieren und entfernen lassen. (Zum Beispiel wird Bootvis in 3 Sekunden auf meinem System installiert. Es wird in der gleichen Zeitspanne deinstalliert. Und nein, mein System ist auch nicht besonders schnell.) Der Unterschied besteht darin, dass Windows Installer viel mehr Funktionen bietet, also größere Programme benutze es öfter.
Mehrdad
@Mehrdad Meinten Sie (1) Systemwiederherstellung aktivieren?
Chris S
In der Tat ja, Tippfehler.
Mehrdad
2
Ich bin hierher gekommen, weil die MSI-Deinstallation ewig gedauert hat ... und der Grund dafür war, dass sich das Popup Do you want to allow the following program from an unknown publisher to make changes to this computer?im Hintergrund versteckt hatte.
Nicolas Raoul
Sehen Sie diese Antwort für technische Spezifikationen zu beschleunigen MSI - Installationen: superuser.com/a/296534/11906
Stein Åsmul

Antworten:

32

Das Windows-Installationsprogramm erstellt zunächst systematisch einen Systemwiederherstellungspunkt, was sehr langsam ist.

Auch aus dem Artikel mit dem Titel "Windows Installer sucks" , ein Auszug:

Früher bestand die Installation aus einem Programm, das einige einfache Schritte ausführte, um Ihre Software zu installieren, und anschließend bei der Deinstallation die umgekehrte Reihenfolge einnahm.

So funktioniert Windows Installer nicht. Anstatt ein Programm auszuführen, um es einfach zu installieren und ausführen zu lassen, überprüft es den Status Ihres Systems, dann den Status der Datenbank, die das Programm installiert, und führt dann eine Reihe überkomplizierter Berechnungen durch, um die beiden zu vereinbaren.

Anstatt ein Installationsskript auszuführen, geht es anscheinend darum, ein Problem mit reisenden Verkäufern zu lösen. Deshalb läuft es so langsam. Zumindest ist das mein Eindruck.

Ich füge hinzu, dass der Windows-Installer alle Informationen in der Registrierung speichert, die nicht die schnellste Datenbank der Welt ist.

Harrymc
quelle
3
Es ist wahrscheinlich schneller als das, was dpkgfür die Paketdatenbank verwendet wird (obwohl dpkg zugegebenermaßen nicht alles darin speichert ): Es /var/lib/dpkg/statusist eine flache Textdatei, die jedes einzelne Paket auflistet, das einmal installiert wurde und seitdem nicht gelöscht wurde - und ich bin mir nicht mal sicher, dass es immer die gelöschten weglässt.
SamB
3
dpkgLügt mich nicht mit Fortschrittsbalken an, die zwei Minuten lang "Verbleibende Zeit: 0 Sekunden" anzeigen ...
LawrenceC
20

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 ein Streitpunkt bei der Installation und Deinstallation von Software sind. Ich nehme mir mehr Zeit als das Durchblättern von Fernsehsendern :)

Das Register
Dies ist der Täter Nummer eins. Windows Installer nutzt die Registrierung intensiv für seine Vorgänge. Wenn Ihr System ausgereift ist, Sie Anwendungen installieren und deinstallieren und die Registrierung größer oder fragmentierter 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 zur Reinigung der Registrierung eines der vielen Tools, die es gibt. Für die Defragmentierung der Registrierung kann ich jedoch nicht genug NTREGOPT für die interne Hive-Optimierung und PageDefrag für die Defragmentierung physischer Dateien empfehlen .

Der Grund, warum MSI-Vorgänge in der Registrierung langsam werden, hängt damit zusammen, wie MSI sie verwendet. Windows Installer verwendet die Registrierung, um zu verfolgen, welche Produkte welche Komponenten installiert haben und an welchem ​​Speicherort sie installiert wurden. Die ursprünglichen Installations-GUIDs werden im komprimierten Format verwendet. Informationen zu Installationen pro Computer finden Sie unter HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Installer\UserData\S-1-5-18, während Benutzerdaten auf einem Unter- HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Installer\UserData\und einem Schlüssel mit der Benutzer-SID angezeigt werden.

Beide Schlüssel können sehr groß sein und zahlreiche Unterschlüssel und Werte enthalten. Sie steuern Produkte, Komponenten und KeyPaths jeder installierten Anwendung. Alle diese Informationen müssen gelesen und verarbeitet werden, um eine ordnungsgemäße Deinstallation zu gewährleisten. Das Registrierungsformat listet jedoch die Schlüssel in alphabetischer Reihenfolge auf, sodass binäre Suchen möglich sind. Die Werte sind es aber nicht. Sie werden beim Erstellen gespeichert, sodass ein linearer Suchvorgang durchgeführt werden muss. Das verlangsamt die Leistung des Algorithmus.

Alles in allem ist MSI eine ziemlich vollständige und genaue Methode zur Installation und Deinstallation von Software. Es leidet jedoch unter seiner Registrierungsabhängigkeit. Das System ist hervorragend. Es ist die Windows-Registrierung, die vor langer Zeit überarbeitet werden sollte :)

Weiterführende Informationen:
In diesem Artikel wird erläutert, wie Sie MSI Debug einrichten, um eine eingehende Analyse der von MSI während der einzelnen Installations- oder Deinstallationsvorgänge ausgeführten Vorgänge zu erhalten . Oder, für weniger , aber immer noch wertvolle Informationen, diese ein , wie man activate Protokollierung.

Ein Zwerg
quelle
4
Soweit mir bekannt ist, verwendet MSI Transaktionen für alles, was es tut, so dass es immer ein korrektes Rollback durchführen kann, wenn ein Vorgang fehlschlägt. Dies trägt wahrscheinlich auch nicht zur Geschwindigkeit bei, ist jedoch für die Datenintegrität von wesentlicher Bedeutung. (Ich habe aufgehört zu zählen, wie oft ich aufräumen musste, nachdem ein NSIS-Installer fehlgeschlagen ist -.-)
Joey
Im Moment installiere ich OpenOffice und es ist schon fast eine Stunde
vergangen
Sehr informativ. Ich habe den Eindruck, dass ich in meinen MSI-Protokollen häufig die Fehlermeldung "Wiederherstellungspunkt kann nicht erstellt werden" bekomme (möglicherweise wurde das Anführungszeichen für einen Wiederherstellungspunkt erreicht?), Sodass die Erstellung von Wiederherstellungspunkten meine Installationszeiten nicht beeinträchtigt. Ungeachtet dessen sind meine Installationszeiten immer noch langwierig, und wenn die Wertsuche so langwierig ist, wie Sie sagen, gibt es vermutlich 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
> Letztendlich sollte man sich jedoch fragen, ob eine, zwei oder drei Minuten bei der Installation und Deinstallation von Software wirklich umstritten sind. Ja.
Alexei Averchenko
6

Windows Installer bietet viele große 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 ist auf die Rollback-Funktionen zurückzuführen . Zunächst wird vor der Installation oder Deinstallation ein Wiederherstellungspunkt erstellt (vorausgesetzt, die Systemwiederherstellung wurde nicht deaktiviert). Anschließend werden alle betroffenen Dateien sowohl während der Deinstallation als auch während der Installation gesichert, um sicherzustellen, dass das System im Fehlerfall in den ursprünglichen Zustand zurückversetzt 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 ist einige Zeit erforderlich, um die Installationsdateien zu extrahieren .

In dieser Antwort finden Sie technische Details zur Beschleunigung von MSI-Installationen .

Stein Åsmul
quelle
3

Windows Installer werden so häufig aus vielen Gründen 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 auf einfache Weise Anwendungen verteilen, indem sie die MSI-Datei auf einem Netzlaufwerk haben und dann einfach eine Batchdatei (oder eine Anwendung des Verteilungsassistenten) auf einem Remotecomputer aufrufen, um den Installationsprozess zu automatisieren.

Während andere Optionen außerhalb der MSI-Dateien vorhanden sind, gibt es einige einzigartige Funktionen, die sich in die meisten Windows-Versionen integrieren lassen , die viele andere Installationsprogramme nicht haben.

Und damit Sie wissen: InstallShield ist nicht immer ein Front-End für MSI-Dateien. Sie haben auch ihre eigene proprietäre Installationslösung.

Durchbruch
quelle
1
Die Frage war, warum MSI im Vergleich zu reinen EXE-Installationsprogrammen so lange braucht, um etwas zu tun.
Grawity
5
Aus der Frage ... "und warum benutzen die Leute immer noch MSI für die Installation?"
Durchbruch
@grawity: msi-installer können technisch gesehen auch in exes gepackt werden, aber das spaltet wahrscheinlich die haare.
music2myear