Warum der Windows Installer für Nutzer und Entwickler wichtig bleibt

Wer noch zu DOS-Zeiten am PC Programme installiert hat, weiß den Win Installer zu schätzen. Doch es dauerte einige Zeit, bis Microsoft überhaupt die Notwendigkeit für ein eigenes Installationsformat erkannte. Sowohl Entwickler als auch User profitieren bis heute davon.

Windows Installer gibt es noch gar nicht so lange

Bei der Nutzung von PCs ist die grafische Benutzeroberfläche seit Windows 3.1 Standard. Mit all seinen Nachfolgern von Win 95 bis zum aktuellen Win 10 hat Microsoft zweifellos den Markt der Betriebssysteme erobert, sowohl weltweit als auch in Deutschland. Die größten Konkurrenten MacOS von Apple und das alternative PC-Betriebssystem Linux folgen weit abgeschlagen und können trotz einer Tendenz nach oben einfach nicht entscheidend aufholen. Ein paar Zahlen im Überblick (Quelle: Statistisches Bundesamt):

Marktanteile führender Betriebssysteme von 2009 bis 2018 (Auswahl):

für Deutschland:

  • 2009 – Windows: 95,68 %, Mac OS: 3,03 %, Linux: 1,01 %
  • 2013 – W: 90,4 %, M: 7,28 %,L: 2,24 %
  • 2015 – W: 87,34 %,M: 9,51 %,L: 2,64 %
  • 2018 – W: 81,72 %,M: 13,93 %,L: 3,18 %

weltweit:

  • 2009 – W: 95,42 %, M: 3,68 %, L: 0,64 %
  • 2013 – W: 90,96 %, M: 7,95 %, L: 0,88 %
  • 2015 – W: 88,19 %, M: 9,1 %, L: 1,46 %
  • 2018 – W: 82,68 %, M: 12,8 %, L: 1,43 %
Wer noch zu DOS-Zeiten am PC Programme installiert hat, weiß den Win Installer zu schätzen.
Wer noch zu DOS-Zeiten am PC Programme installiert hat, weiß den Win Installer zu schätzen.(#01)

Grundlagen für den Windows Installer

Trotz der Abweichungen nach unten kann man kaum von einer echten Konkurrenz für das Microsoft-Betriebssystem sprechen. Bei der Installation von Software kam es bei frühen Versionen jedoch immer wieder zu Ärgernissen.

Zum einen waren sie nicht sonderlich komfortabel für die User, zum anderen gab es keine festgelegten Standards, nach denen sich die Programme deinstallieren ließen. Fast jedes Programm hatte seine eigenen Methoden, einen einheitlichen Installer oder Uninstaller gab es zunächst nicht. Jeder Programmierer schien eine eigene Lösung zu verfolgen, so wie jede Software ihre eigene Box zum Verkauf bekam.

Ein Hauptproblem dabei war Datenmüll, der auch nach einer Deinstallation zurückblieb und die Festplatte (deren Speicherplatz damals noch sehr begrenzt war) sehr schnell an ihre Grenzen stoßen ließ. Manuelles Entfernen von Programmen war aufgrund der Einträge in der Registry selten problemlos möglich. Der Windows Installer, der zuerst Microsoft Installer hieß, sollte Abhilfe schaffen und ein komplexes Installationsformat für alle Typen von Anwendungen bieten, die unter der Windows-Plattform laufen sollten.

Folgerichtig heißt das Installationsformat der Pakete in der Regel MSI (Microsoft-Installer), die Dateiextensionen lauten:

  • msi
  • msm
  • msp
  • mst

Dateien namens .msm sind sogenannte Mergemodule, die nur im Zusammenhang mit einem MSI-Paket verwendbar sind und als Ergänzung von Installationspaketen dienen. Erzeugt werden die Pakete über Setup-Builder von Drittanbietern (wie dem bekannten InstallShield) oder über Visual Studio. Über die Dateiendung .msp werden in der Regel Patches ausgespielt und .mst befasst sich mit Änderungen an bestehenden MSI-Paketen (Windows Installer Transform).

Der eigentliche Installer ist einer der Windows-Dienste, der zur Ausführung der MSI-Pakete benötigt wird. Dabei verwaltet der Installer eine Installationsdatenbank, die alle Schritte für jede einzelne Anwendungsinstallation enthält, die sich auf dem Computer befindet. Dadurch wird eine vollständige Deinstallation (auch Windows Installer Cleanup genannt) ermöglicht, die so gut wie keine Datenreste zurücklässt.

Generell unterstützt Win Installer während der Installation den Rollback auf den vorherigen Zustand, falls eine Anwendung nicht vollständig installiert werden kann. Er ermöglicht ferner die Reparatur von Anwendungen, die durch fehlerhafte Updates, händische Eingriffe des Users, Systemfehler oder Wechselwirkungen mit anderen Installationen beschädigt wurden. Erstmals ausgerollt wurde der Installer in der Version 1.0 als Bestandteil von Windows ME und 2000. Für ältere Betriebssysteme (95/98/NT) kann er als Add-On integriert werden.

Was kann der Windows Installer im Einzelnen?

Die Installer-Pakete ermöglichen die Ausführung verschiedener Aktionen. Dazu zählen unter anderem:

  • Prüfung der Systemvoraussetzungen für die Installation
  • Prüfung auf eventuell bereits vorhandene ältere Versionen der Software
  • Ordnersuche
  • Erstellen von Verknüpfungen (z. B. auf dem Desktop oder im Startmenü)
  • Kopieren, Bewegen und Löschen von Dateien
  • Erzeugung, Veränderung und Entfernung von Registry-Einträgen
  • Installation der Runtime-Umgebung im .NET Framework
  • Installation von Treibern und Datenquellen
  • Modifizierung von Variablen

…und einiges mehr.

Eine einheitliche Laufzeitumgebung für Installationsroutinen für MS-Windows ist der Hauptzweck des Installers. Der Systemdienst kann die bereits erwähnten Paketdateien im MSI-Format und seine Abkömmlinge interpretieren, entpacken und natürlich auch ausführen. Dabei lassen sich die Installationsdateien generell mit unterschiedlichen Programmen editieren, da sie ein Tabellenformat enthalten, das leicht anzupassen ist.

Die Überwachung der verschiedenen Parameter wie bereits installierte Komponenten, alte Versionen oder fehlende Komponenten innerhalb des Installationspakets, ermöglicht die Reparaturfähigkeit. Fehlt etwas, kann der Installer versuchen, die entsprechenden Komponenten nachzuinstallieren.

Der User kann diese Vorgänge durch wiederholtes Auslösen des Setup-Prozesses auch erzwingen, etwa wenn Fehler bei einer Anwendung auftreten oder Änderungen am System zu Fehlfunktionen führen. Eine Reparatur ist ebenso möglich wie das saubere Deinstallieren der betreffenden Software.

Die Installer-Pakete ermöglichen die Ausführung verschiedener Aktionen.
Die Installer-Pakete ermöglichen die Ausführung verschiedener Aktionen.(#02)

Wie setzt man als Entwickler den Windows Installer ein?

Der Nutzen für den Endanwender ist klar – einfache Installation, Reparatur, Ergänzung oder Deinstallation von Software, ohne dass es zu Chaos im Betriebssystem kommt wie in früheren Zeiten. Für Entwickler von Software ist es aber ebenso wichtig, eine saubere Installationsroutine zur Verfügung zu haben, welche die Nutzung ihres Produkts erleichtert.

Allerdings hört man immer wieder aus Entwicklerkreisen, dass Projekte mit der letzten Zeile im Quelltext als abgeschlossen gelten und kaum ein Gedanke an den Installer verschwendet wird, nicht selten wird die Frage gestellt, wofür der Windows Installer überhaupt gut ist. Dabei sagen viele Profis, dass die saubere Installationsroutine ebenso zum Produkt gehört wie alles andere. Unterschätzt wird häufig der Faktor, dass ein Nutzer bei der Installation von Spielen und Anwendungssoftware einen guten Teil der Kontrolle an ein Programm abgibt.

Der Installer ermöglicht je nach Programmierung eine genaue benutzerdefinierte Konfiguration der benötigten Komponenten. Ein gutes Beispiel sind MS Office und Outlook. Sowohl bei Outlook als auch beim Office-Paket kann der User genau definieren, welche Programmbestandteile er benötigt. Wer zum Beispiel nur Texte mit Word schreiben will, kann eventuell auf Excel verzichten und umgekehrt. Das Schöne am Installer ist: Der Nutzer behält nicht nur die Kontrolle darüber, was installiert wird, sondern er kann die Installation bereinigen, ändern oder komplett vom System löschen, ohne dass es zu Problemen kommen sollte.

Der Konjunktiv ist leider angebracht, weil natürlich auch bei der Erstellung im Laufzeitmodul von Windows Installer Fehler gemacht werden. Daher sollten Entwickler das nicht im Vorbeigehen machen, sondern sich genau damit befassen. Das beginnt mit der Frage, wie der Installer programmiert werden soll – beziehungsweise mit welcher Software die MSI-Pakete erzeugt werden. Hierfür gibt es sowohl kommerzielle als auch Freeware-Lösungen, die entsprechende Editoren bereitstellen.

Kostenpflichtige MSI-Editoren (Auswahl):

  • InstallShield von Flexera Software
  • Advanced Installer von Caphyon
  • Wise Installer von Symantec
  • AKInstallerMSI von AKApplications
  • InstallAware von InstallAware Software

Außerdem können MSI-Pakete mit Visual Studio von Microsoft erstellt werden. Hierbei ist der Funktionsumfang jedoch im Vergleich zu den dezidierten Lösungen eingeschränkt.

Kostenlose MSI-Editoren (Auswahl):

  • Makemsi (auf Basis eigener Macro-Sprache)
  • WiX (auf Basis einer XML-Beschreibung)

Beide kostenlosen Lösungen können das jeweilige MSI-Paket über Textdateien erstellen. Seit Version 3.0 wird WiX von Microsoft auch im Visual Studio unterstützt. Ohne tiefere Kenntnisse von XML ist die Erstellung von Installationen über WiX allerdings nicht möglich.

Windows Installer mit XML erstellen: Eine kurze Einführung

Entwickler, die eine komplexe Anwendung erstellt haben, kennen das Problem, dass sie ihre Software bequem und sauber ausliefern müssen. Der Installer ist hierbei die ideale Lösung – die Programmierung der MSI-Pakete ist jedoch nicht einfach und bei Nutzung kostenpflichtiger Software auch mit finanziellem Aufwand verbunden. Versierte Programmierer, die sich mit XML auskennen, können zum kostenlosen WiX-Toolset greifen.

Wir können hier natürlich kein vollständiges Tutorial vorstellen, aber einen kurzen Abriss der Möglichkeiten wollen wir dennoch geben. Neben der kostenlosen Nutzung bietet WiX im Vergleich zu anderen Lösungen eine ungemein große Flexibilität zur Erstellung von Installationsroutinen. Außerdem lassen sich komplexe Prozeduren abbilden und benutzerdefinierte Aktionen einbauen. Kenntnisse in der XML-Syntax sind allerdings unentbehrlich.

Bei Nutzung von Visual Studio kann das WiX Toolset sehr einfach genutzt werden. Besonders komfortabel ist die Nutzung allerdings nicht, denn alle Schritte müssen vollständig per Hand in XML programmiert werden. Das sieht aber längst nicht jeder Entwickler als Nachteil.

Ein WiX-Projekt enthält verschiedene Elemente, die aufeinander aufbauen. Die wichtigsten Elemente sind:

  • Product-Element (enthält Package mit Attributen und Eigenschaften der Installationsdatei)
  • Feature-Element (zur Trennung funktionaler Unterscheidungen benutzerdefinierter Installationen)
  • Media-Element (Aufteilung der Installationsdateien auf mehrere Datenträger)
  • Directory-Elemente (Ordnerstruktur)
  • Component-Elemente (zur Strukturierung der eigentlichen Inhalte der Installation)
  • Shortcut-Element (zur Erzeugung von Verknüpfungen auf Desktop etc.)

Anmerkung: Das Media-Element wird heute nur noch selten zur Aufteilung der Installation auf verschiedene Datenträger verwendet, da die meisten Programme heutzutage per Download im Internet heruntergeladen und nicht mehr in einer Box verkauft werden. Trotzdem gibt es manchmal noch gute Gründe, Installationspakete auf mehrere Datenträger verteilen zu können.

Wenn Sie mehr über die Entwicklung von Paketen im Windows Installer erfahren und XML-Code-Beispiele studieren möchten, empfehlen wir einen Blick auf diese Seite, die ein sehr gutes Tutorial für die Grundlagen und Quelltext enthält.

Manchmal tauchen Probleme auf, die nicht am installierten Programm liegen, sondern am Windows Installer selbst.
Manchmal tauchen Probleme auf, die nicht am installierten Programm liegen, sondern am Windows Installer selbst.(#03)

Wenn nichts mehr geht: Windows Installer reparieren

Manchmal tauchen Probleme auf, die nicht am installierten Programm liegen, sondern am Windows Installer selbst. Das wirkt sich dann in der Regel nicht nur auf die jeweilige Software aus, sondern kann zur Folge haben, dass das Laufzeitmodul überhaupt nicht mehr gestartet werden kann – und somit keine neuen Installationen oder Änderungen bzw. Deinstallationen bereits vorhandener Software erfolgen kann.

Den Windows Installer reparieren oder bereinigen zu wollen, ist aber gar nicht so einfach – selbst Fachleute müssen dazu die richtigen Schritte kennen. Die gute Nachricht: Mit der richtigen Vorgehensweise kann auch ein Laie den Windows Installer reparieren.

Notwendig wird eine Reparatur in der Regel immer dann, wenn eine solche oder ähnliche Fehlermeldung beim Versuch der Installation einer Anwendung erscheint:

  • „Auf den Windows Installer Dienst konnte nicht zugegriffen werden. Dies kann auftreten, wenn Windows im abgesicherten Modus ausgeführt wird oder wenn der Windows Installer nicht korrekt installiert wurde.“

Das bedeutet: Kann das Betriebssystem (aus welchem Grund auch immer) nicht auf den Windows Installer zugreifen, ist eine Ausführung von Dateien mit den Endungen .msi, .msp etc. unmöglich.

Den Windows Installer im abgesicherten Modus starten

Bei Problemen mit dem Betriebssystem wird häufig der abgesicherte Modus genutzt, um diese zu beheben. Der Haken an der Sache: Dateien bzw. Programme zu installieren, funktioniert nur, wenn der Windows Installer Dienst automatisch gestartet wurde. Und genau das passiert im abgesicherten Modus häufig nicht.

Die typische Fehlermeldung hierzu lautet:

„Fehler 1084: The service cannot be started in safe mode“ – und verhindert die Deinstallation oder Neuinstallation von Software.

Um das Problem zu beheben, muss man die folgenden Schritte ausführen:

  • Starten Sie den Computer im abgesicherten Modus. Hierzu beim Hochfahren mehrfach die Taste F8 drücken, bis das Menü „Erweiterte Startoptionen“ angezeigt wird. Falls das nicht beim ersten Mal klappt, versuchen Sie es erneut.
  • Nach dem Start von Windows „CMD“ eingeben und „Enter“ drücken. Je nach Version muss man hierfür das Eingabefeld über „Start → Ausführen“ (XP) bzw. nur „Start“ (Vista/7,8) oder direkt das Suchfeld (Win10) nutzen. Alternativ kann man auch die Tastenkombination „Windows-Taste + R“ nutzen, um den Ausführen-Dialog zu öffnen.
  • Um den Windows Installer Dienst zu starten, muss der folgende Registry-Key modifiziert werden. Hierzu das Kommando in die Befehlszeile eingeben und dann „Enter“ drücken.
    EG ADD “HKLM\SYSTEM\CurrentControlSet\Control\SafeBoot\Minimal\MSIServer” /VE /T REG_SZ /F /D “Service
  • Als nächstes „net start msiserver“ eingeben und „Enter“ drücken. Der Windows Installer sollte jetzt gestartet werden und Programme können wie gewohnt über die Systemsteuerung oder direkt über eine .msi-Datei installiert oder den Uninstaller aufgerufen werden.
Ob einfacher User oder versierter Entwickler: Alle Beteiligten profitieren von der Nutzung des Installers.
Ob einfacher User oder versierter Entwickler: Alle Beteiligten profitieren von der Nutzung des Installers.(#04)

Fehlerbehebung durch Neuinstallation oder Neuregistrierung von Windows Installer

Ist die Installation des Installers selbst defekt, sollten Sie (nicht im abgesicherten Modus) folgende Lösungen ausprobieren.

  1. Windows Installer neu registrieren
    Die meisten Probleme lassen sich durch eine neue Registrierung beheben. Hierzu unter „Start/Ausführen“ bzw. im Suchfenster direkt „msiexec /unregister“ eingeben und einen Neustart ausführen. Nach diesem Neustart auf die gleiche Weise den Befehl „msiexec /regserver“ eingeben.
  2. Windows Installer neu installieren
    Falls die Neuregistrierung nicht ausreicht, kann man durch eine Umbenennung der mutmaßlich beschädigten Dateien den Windows Installer erneut aufspielen:
    Wieder den Befehl „CMD“ in Eingabeaufforderung bzw. Suchfeld eingeben und „Enter“ drücken

Folgende Zeilen eingeben, jeweils gefolgt von „Enter“:

  • attrib -r -s -h %Windir%\system32\dllcache
  • ren msi.dll msi.alt
  • ren msiexec.exe msiexec.alt
  • ren msihnd.dll msihnd.alt

Danach „exit“ eingeben und „Enter“ drücken, den Computer neu starten. Danach muss der Windows Installer aktualisiert werden – am besten lädt man sich zuvor die aktuelle Version herunter. Nach der Aktualisierung PC herunterfahren und erneut starten – jetzt sollte alles wieder wie gewohnt funktionieren.

Fazit: Es lohnt sich, dem Windows Installer Aufmerksamkeit zu schenken

Ob einfacher User oder versierter Entwickler: Alle Beteiligten profitieren von der Nutzung des Installers. Für den Anwender erleichtert es nicht nur die saubere Installation von Komponenten auf der Festplatte, er kann sie in der Regel auch nach den eigenen Anforderungen anpassen und auf nicht benötigte Programmteile verzichten. Anpassungen, Änderungen oder Deinstallationen sind später jederzeit möglich.

Für Entwickler gilt, dass eine fertiggestellte Software auch eine möglichst komfortable Installation beinhalten sollte. Welche Art der Programmierung man zur Erstellung von Laufzeitmodul und Paketen verwendet, ist dabei vor allem eine Geschmacks- und Kostenfrage. Die sehr flexible und kostenlose XML-Variante erfordert jedoch einiges an Geschick und Kenntnissen.


Bildnachweis:©Shutterstock-Titelbild: Gorodenkoff  -#01: ShotPrime Studio -#02: Gorodenkoff -#03: _Di Studio-#04: _Africa Studio