Vor einigen Jahren bin ich auf das “WiX”-Projekt (WiX = Windows Installer XML) von Rob Mensching aufmerksam geworden. Dabei handelt es sich um ein Open Source Projekt von Microsoft (sogar das erste!), mithilfe dessen man via XML-Beschreibung eine MSI Installationsdatenbasis erzeugen kann.
Nachdem ich zahlreiche Tutorials wie beispielsweise DAS WiX Tutorial von Gabor Tramontana durchgearbeitet habe, konnte ich erstmals brauchbare MSI-Dateien erzeugen. In meiner Abteilung habe ich das Projekt dann publik gemacht und mittlerweile setzen alle Produkte meiner Abteilung WiX zum Erzeugen von Installationspaketen ein.
Das Buch “WiX: A Developer’s Guide to Windows Installer XML” von Nick Ramirez habe ich als Vorbereitung auf einen Vortrag zu dem Thema durchgelesen. Meiner Meinung nach ist es sowohl für Einsteiger als auch für Fortgeschrittene gleichermaßen geeignet.
Das erste Kapitel “Getting Started” gibt einen kurzen Einblick in das WiX Toolset und erklärt grob die XML-Elemente und deren Bedeutung. Am Ende des ersten Kapitels ist man bereits in der Lage, einen Installer zu erstellen. Es werden alle dafür notwendigen Schritte erklärt.
Ab Kapitel zwei “Creating Files und Directories” geht’s dann wirklich in die Tiefe. Es wird erklärt, die Dateien und Verzeichnisse in Komponenten verpackt und in Features gruppiert werden. Zudem gibt es Kniffe, wie große Mengen an Dateien effizient in XML referenziert werden können – Stichwort “Heat” (Heat ist ein “Harvester Tool” aus dem WiX Toolset, das aus dem Dateisystem XML generiert).
Kapitel drei “Putting Properties and AppSearch to Work” erklärt erst einmal, was Properties sind – nämlich Variablen und wie diese befüllt und referenziert werden. In zweiten Teil wird das Thema AppSearch (also Suche nach Dateien, Verzeichnissen, RegistryKeys, installierten Komponenten, ..) detailliert und wie jeder Abschnitt ausführlich mit XML-Codebeispielen erklärt.
Startbedingungen sind Thema in Kapitel 4: “Improving Control with Launch Conditions”. Beispiel: Mein Programm installiert eine .NET Assembly. Hier wird gezeigt, wie ich prüfen kann, ob und welches .NET Framework auf dem Zielrechner installiert ist.
Ein wirklich komplexes Thema, die Installationsreihenfolge, ist Thema von Kapitel 5: “Understanding the Installation Sequence”. Dabei wird sowohl auf die UI-Sequenzen (nicht zu verwechseln mit Dialogen und Wizards) als auch auf die Execution Sequences eingegangen. Custom Actions, also das Ansprechen von externen DLLs, EXE-Dateien, das Ausführen von JScript und VBScript-Code, runden das Kapitel ab.
Kapitel 6, 7 und 8 drehen sich um das rudimentäre Erstellen von Benutzerschnittstellen, Dialogen usw. Dabei wird unter anderem auf vorgefertigte Dialog-Sequenzen als auch auf die einzelnen Controls eingegangen.
Schade, dass der Autor hier nützliche Tools verschweigt, mit denen man die UI deutlich komfortabler erstellen kann. Ich möchte hier ein Tool nennen: SharpDevelop von ic#Code. Es ist mit Abstand das beste Open Source-Tool für diese Aufgabe.
Kapitel 9 erklärt noch einmal alle Tools, sowie deren Benutzung auf der Kommandozeile. Das ist aber in der Regel unnötig, denn das Votive Projekt, das die Integration des Toolsets in Visual Studio mitbringt, ist für die meisten Fälle vollkommen ausreichend. Aber ok, schlecht ist es nicht.
Kapitel 10 “Accessing the Windows Registry” erklärt wie Registry Keys sowohl gesetzt als auch gelöscht werden können.
Lokalisierung ist Inhalt des Kapitels 12: “Localizing Your Installer”. Hier wird erklärt, wie ein Installationspaket mehrsprachig gemacht werden kann.
Kapitel 13 behandelt wieder ein ziemlich komplexes Thema: “Upgrading and Patching” – Welche Update-Typen gibt es? Was ist bei welchem Typ zu beachten?
Ein Kapitel, das ich vermisst habe, sind Bootstrapper. Beispiel: Eine Setup.exe, die die Voraussetzungen auf dem Zielsystem prüft und ggf. Software nachinstalliert. Visual Studio selbst bietet schon zahlreiche Bootstrapper-Pakete beispielsweise für das .NET Framework, die Visual C++ 20xx Runtimes, SQL Server, etc. an.
Alles in Allem bin ich aber zufrieden mit dem Buch. Es enthält viele Code-Schnipsel in XML-Form abgedruckt, sodass es sehr praxisnah die Thematik behandelt. Als Schulnote wurde ich eine 2 vergeben.
Wer sich allerdings mehr für Windows Installer im Allgemeinen interessiert, dem würde ich eher das Buch “Inside Windows Installer 4.5” von Andreas Kerl empfehlen. Ein Kapitel aus diesem Buch behandelt ebenfalls das Windows Installer XML Toolset.