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?
quelle
Do you want to allow the following program from an unknown publisher to make changes to this computer?
im Hintergrund versteckt hatte.Antworten:
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:
Ich füge hinzu, dass der Windows-Installer alle Informationen in der Registrierung speichert, die nicht die schnellste Datenbank der Welt ist.
quelle
dpkg
für die Paketdatenbank verwendet wird (obwohl dpkg zugegebenermaßen nicht alles darin speichert ): Es/var/lib/dpkg/status
ist 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.dpkg
Lügt mich nicht mit Fortschrittsbalken an, die zwei Minuten lang "Verbleibende Zeit: 0 Sekunden" anzeigen ...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.
quelle
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 .
quelle
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.
quelle