Was macht Windows Installer eigentlich selbst und warum sehe ich nie eine MSI ohne Tools von Drittanbietern?

7

Also habe ich eine Reihe von Werkzeugen benutzt, um msi-Installer für meine Sachen zu erstellen, einschließlich Dinge wie WiX und ein paar der vielen GUI's herum.

Aber eine Sache, die ich nie wirklich ausgearbeitet habe, ist die Frage, welche Rolle Windows Installer selbst tatsächlich spielt und wo diese Tools starten und enden? Was genau ist das MSI technisch und warum ist es niemand (ich konnte nicht einmal Informationen finden, wie es in der Theorie getan werden könnte, wie wenn es tatsächlich nur eine Art DLL-Ding ist, das eine einfache Schnittstelle implementiert ) Erstellen Sie selbst eine MSI, ohne eines dieser Werkzeuge zu benutzen, um es für sie zu machen?

    
Fire Lancer 14.03.2012, 20:05
quelle

3 Antworten

16

Vor einigen Jahren habe ich mir selbst die Fragen gestellt wie "Was ist MSI-Datei?", "Wie kann man sie erstellen oder entschlüsseln?", "Warum sieht die MSI-Datenbankstruktur so seltsam aus?". Also habe ich für mich auf die Fragen geantwortet. Wenn Sie ein Interesse haben, kann ich das Wissen mit Ihnen teilen.

Über die Geschichte. Die Windows Installer-Technologie wurde während der Entwicklung von Office 2000-Setup vom Microsoft Office-Installationsteam eingeführt. Zuvor war das Setup von Office 97 STF basiert. Die STF-Datei besteht aus zwei Tabellen: eine mit allgemeinen Informationen, die mit der Tabelle Eigenschaften von MSI verglichen werden können, und eine andere Tabelle, die die Reihenfolge der Ausführung verschiedener Installationsschritte beschreibt. Drei Hauptstartmodi wurden unterstützt: Installation (Administrative Installation ist Sub-Modus), Entfernen und Behalten. Office Software wurde immer komplexer und Microsoft wollte die Setups stabiler machen. Weitere Informationen finden Sie hier .

Die letzten Jahre des 20. Jahrhunderts waren die COM- und COM + -Zeit bei Microsoft. Das Format der WinWord-Dokumente war COM-Strukturierter Speicher auch. Daher wurde das Format der MSI-Datei auch als strukturierter Speicher gewählt. Im Allgemeinen wollte man nur , um einige separate Informationen wie Tabellen in einer Datei zu speichern . Es ist wichtig, dass einige Tabellen während der Installation geändert werden. Man sollte also sicher sein, dass die gesamte MSI-Datei bei einer fehlgeschlagenen Installation nicht beschädigt wird. Der strukturierte Speicher bot minimale Unterstützung für den Fall, so dass das Format seit der Zeit verwendet wird. Die geänderten MSI-Dateien werden im Ordner %SystemRoot%\Installer gespeichert.

Wenn Sie die MSI-Datei in Bezug auf das Orca-Tool öffnen und alle Tabellen in den Dateien exportieren, haben Sie genau den gleichen Informationssatz wie in MSI. Sie können die Textkacheln ändern und dann die Dateien zurück importieren. Wenn Sie eine leere MSI-Datei erhalten und die Tabellen importieren, erstellen Sie ein neues Windows Installer-Setup.

Windows SDK enthält eine Liste von Skripten, die Sie im Ordner C:\Program Files\Microsoft SDKs\Windows\v7.1\Samples\sysmgmt\msi\scripts finden. Sie können die Skripts verwenden, um leere MSI zu erstellen und die Tabellen in MSI zu importieren. Sie können also die Skripte anstelle von WiX verwenden. Der WiX verwendet das XML-Format, wodurch die eingegebenen Informationen als idt-Dateien (von Orca exportierte Tabellen) lesbarer und einfacher zu pflegen sind.

Zum besseren Verständnis habe ich vor einigen Jahren einige kleine Hilfsprogramme geschrieben, die die leeren MSI-Dateien ohne Windows Installer-API erstellen und die COM-strukturierte Speicher-API verwendet haben. Außerdem habe ich ein Dienstprogramm erstellt, das vollständige Informationen aus MSI-Dateien auf der unteren Ebene dekodiert (auch ohne Verwendung der Windows Installer-API). Ich bin mir also sicher, dass MSI-Dateien wirklich nicht mehr so ​​sind, wie ich oben beschrieben habe.

Ich sehe, dass Sie C / C ++ - Entwickler sind. Wenn es für Sie interessant wäre, können Sie mit dem C-Programm spielen, das leere MSI erstellt.

%Vor%

Der Code des Programms, der MSI ausgibt, ist länger und ich sehe nicht, dass es wirklich für Sie benötigt wird.

Das Dienstprogramm, das die Windows Installer-API verwendet und eine leere MSI erstellt, ist unten aufgeführt. Es erstellt mehr vollgültige MSI im Sinne der MSI-Validierung:

%Vor%     
Oleg 16.03.2012, 09:59
quelle
6

MSI's sind Datenbankdateien. Sie haben Tabellen mit Anweisungen, die der Microsoft Installer interpretiert und die Dateien enthält, die in das Dateisystem kopiert werden.

Sie können diese Dateien manuell mit dem Orca bearbeiten Werkzeug von Microsoft.

    
Nathan Rice 14.03.2012 20:11
quelle
2

Vielleicht möchten Sie hier beginnen:

Windows Installer

>

Windows Installer ist ein Microsoft Windows Platform-Dienst und das zugehörige SDK. Das SDK enthält Tools wie Orca zum Bearbeiten von MSI-Datenbanken. Der Plattformdienst stellt eine Spezifikation für die Datenbank und eine Win32- und COM-Automatisierungsschnittstelle für die Interaktion mit der Datenbank bereit. Das Windows Installer-Team wurde nicht aufgefordert, Vollversion-Authoring-Tools zu erstellen. Stattdessen wurden die Autorenwerkzeuge größtenteils der Industrie überlassen, indem sie Anwendungen auf der Grundlage dieser API- und Datenbankspezifikationen erstellten. Mein Verständnis war, dass dies ein Ölzweig zu mehreren Unternehmen wie InstallShield und Wise war, die bereits ihre eigenen Rahmen für Autoreninstallationen hatten und ein Versuch war, die Technologie zu konsolidieren, ohne diese Unternehmen zu verprellen.

Seitdem hat Microsoft das Windows Installer XML-Open-Source-Projekt veröffentlicht, das ein eigenes Authoring-Tool ist. Außerdem hatte das Visual Studio-Team Setup- und Bereitstellungsprojekte (die in der nächsten Version von Visual Studio nicht mehr zur Verfügung standen).

    
Christopher Painter 14.03.2012 22:44
quelle

Tags und Links