MSI

Windows Installer als sauberste Enterprise-Grundlage.

MSI ist standardisiert, gut logbar und stark in Detection, Reparatur und Deinstallation. Gerade deshalb sollte man seine Tabellen und Properties aktiv auslesen.

Erkennung

Dateiendung .msi, Tabellenstruktur, ProductCode und msiexec-Syntax. Die eigentliche Analyse beginnt aber erst beim Blick in Properties, Features und Launch Conditions.

Fehlercode-Scope

MSI hat einen grossen, dokumentierten Bereich an Windows-Installer-Rueckgabecodes. Fuer die Praxis sind nicht nur 1603 und 3010 relevant, sondern auch Quell-, Transform-, Patch- und Berechtigungsfehler.

Schalter

Wichtige MSI- und msiexec-Schalter

Bei MSI lohnt sich die Unterscheidung zwischen eigentlicher Aktion, UI-Verhalten, Logging, Neustartsteuerung und Zusatzdaten wie Transforms oder Properties.

GruppeSchalterEinsatz
Install/i paket.msiNormale Installation eines MSI-Pakets.
Uninstall/x paket.msi oder /x {PRODUCT-CODE}Deinstallation per Datei oder ProductCode.
Repair/f, /fa, /fvomusReparatur mit unterschiedlicher Tiefe, z. B. alle Dateien neu kopieren oder nur fehlende Dateien ersetzen.
Administrative Installation/a paket.msiAdmin-Image erzeugen, z. B. fuer Dateiextraktion oder Distribution.
Patch/p patch.mspMSP auf bestehende Installation anwenden.
Quiet UI/qn, /qb, /passiveVollstaendig still, reduzierte oder passive Anzeige.
Neustart/norestart, /forcerestart, REBOOT=ReallySuppressRestart-Verhalten steuern.
Logging/L*v c:\logs\app.logVerbose Logging fuer spaetere Analyse.
TransformsTRANSFORMS=custom.mstCustomizing ueber MST anwenden.
PropertiesPROPERTY=ValueOeffentliche MSI-Properties setzen, z. B. Installationspfade oder Features.
PowerShell
Start-Process msiexec.exe -ArgumentList '/i app.msi /qn /norestart /L*v c:\logs\app.log' -Wait -PassThru

ErrorCodes

Windows-Installer-Rueckgabecodes fuer die Praxis

Die folgende Tabelle deckt die ueblichen Windows-Installer-Rueckgabecodes ab, die bei msiexec-Aufrufen im Deployment sichtbar werden.

CodeBedeutungPraxis-Hinweis
0ErfolgInstallation oder Deinstallation erfolgreich abgeschlossen.
13Daten ungueltigMeist Parameter- oder Dateiproblem ausserhalb des eigentlichen Installers.
87Parameter ungueltigHaeufig fehlerhafte msiexec-Syntax.
120Funktion auf dieser Plattform nicht unterstuetztSelten, meist Umgebungsproblem.
1259BenutzerabbruchKann auch durch Wrapper oder UI-Interaktion entstehen.
1601Windows Installer Service nicht verfuegbarDienstproblem oder defekte Installer-Registrierung.
1602BenutzerabbruchNicht immer echter Klickabbruch, teils Folge eines Wrappers.
1603Fataler Fehler waehrend InstallationNur Sammelcode. Ursache steht im Log vor dem Abbruchpunkt.
1604Installation unterbrochenKann bei Suspend oder externem Stop auftreten.
1605Produkt nicht installiertTypisch bei Uninstall auf bereits entferntem Produkt.
1606Feature-Identifier unbekanntFehlerhafte Feature-Referenz.
1607Component-Identifier unbekanntHauefig Script- oder API-Bezug auf ungueltige Component.
1608Property unbekanntProperty-Referenz oder API-Aufruf falsch.
1609Handle in ungueltigem ZustandEher API-/Automationsfehler.
1610Konfigurationsdaten fehlerhaftInterne MSI-/Produktdaten beschaedigt.
1611Component qualifiziert nichtSelten, meist reparatur- oder API-bezogen.
1612Installationsquelle nicht verfuegbarQuelle verschoben, Share weg oder Cacheproblem.
1613Installationspaket nicht installierbarPakettyp, Plattform oder Zustand unpassend.
1614Produkt entferntOft Folge eines bereits deinstallierten Produkts.
1615SQL-Query-Syntax ungueltigMeist Custom Action oder interne Datenbankabfrage.
1616Record-Feld nicht vorhandenMSI-Datenstrukturproblem.
1617Device entferntSelten, Umgebung/Medium.
1618Andere Installation laeuft bereitsSehr haeufig im Deployment. Serielle Ausfuehrung oder Wartelogik noetig.
1619Installationspaket nicht oeffenbarDatei, Pfad, Berechtigung oder Download defekt.
1620Installationspaket nicht gueltigDefektes oder unvollstaendiges MSI.
1621UI-Service konnte nicht gestartet werdenKontext- oder Dienstproblem.
1622Logdatei konnte nicht geoeffnet werdenPfad, Berechtigung oder gesperrte Logdatei pruefen.
1623Sprachpaket nicht unterstuetztSprache/Transform/Package passt nicht.
1624Transform angewendet fehlgeschlagenMST defekt, unpassend oder nicht lesbar.
1625Installation durch Richtlinie untersagtPolicy oder GPO blockiert.
1626Funktion konnte nicht ausgefuehrt werdenUnspezifischer API-/Engine-Fehler.
1627Funktion fehlgeschlagen waehrend AusfuehrungCustom Action oder interne Engine-Logik.
1628Ungueltige TabellenstrukturMSI intern fehlerhaft.
1629Daten vom Datentyp nicht gueltigMSI-Datenbank oder API-Aufruf ungueltig.
1630Unbekannter DatentypSelten, meist Paketdefekt.
1631Windows Installer Service konnte nicht gestartet werdenDienststart scheitert.
1632Temp-Ordner nicht verfuegbar%TEMP%/%TMP% pruefen.
1633Paket fuer diese Plattform nicht unterstuetztx86/x64/ARM oder OS-Version unpassend.
1634Component nicht verwendetMeist interne MSI-Referenz.
1635Patch nicht oeffenbarMSP-Datei oder Pfad pruefen.
1636Patch nicht installierbarPatch passt nicht zum Produktzustand.
1637Patch bereits angewendetOft harmlos, je nach Betriebslogik bewerten.
1638Andere Produktversion bereits installiertUpgrade-Logik oder Versionskonflikt.
1639Ungueltige KommandozeilenargumenteSehr haeufig bei falsch gequoteten Properties oder Loggingparametern.
1640Nur im Interaktionskontext erlaubtSilent/System-Kontext passt nicht zur Aktion.
1641Erfolg, Neustart eingeleitetDeployment muss Neustart korrekt behandeln.
1642Upgrade-Patch nicht verarbeitbarPatch-/Baselineproblem.
1643Patch-Paket nicht erlaubtPolicy oder Paketstatus problematisch.
1644Transform nicht erlaubtPolicy oder Paketstatus problematisch.
1645Remote-Installation nicht erlaubtPolicy- oder Kontextfrage.
1646Entfernung vom Produkt nicht erlaubtPolicy oder Paketlogik blockiert.
1647Kein gueltiger ProductCodeTypisch bei falscher Uninstall-Referenz.
1648Transform-/Patch-Pfad nicht zugelassenPfad oder Policy pruefen.
1649System konnte Package-Digital-Signature nicht pruefenSignatur- oder Zertifikatsproblem.
1650Patch-Download fehlgeschlagenQuelle oder Netzwerkproblem.
1651Administrative Benutzerrechte erforderlichKontext passt nicht.
1652Temporate-Datei nicht erstellbarTemp-Pfad oder Berechtigung.
1653Windows Installer von Transaktionsmodus abgelehntSelten, meist komplexere Sequenz-/Systemfrage.
1654Rollback deaktiviert und Wiederherstellung nicht moeglichEngine-/Policy-Kontext pruefen.
3010Erfolg, Neustart erforderlichKein Hard Fail, aber betrieblich wichtig.
Die offizielle Microsoft-Liste ist noch groesser, weil zusaetzlich MsiExec- und API-Kontexte sowie interne Datenbankfehler beschrieben werden. Fuer Deployments sind die oben gelisteten Rueckgabecodes der praktisch relevante Kern.

Praktischer Artikel

Mit PowerShell und dem COM-Objekt WindowsInstaller.Installer lassen sich ProductCode, Versionen, Features und Tabellen strukturiert auslesen.

Artikel lesen

Was noch geht mit MSI, COM und PowerShell

Properties sind nur der Anfang. Auch Launch Conditions, Custom Actions, Features und Upgrade-Informationen lassen sich vor der Paketierung auswerten.

Mehr Moeglichkeiten ansehen

Kontrollierte Parameter-Tests

Install, Uninstall, Repair, Upgrade, Reboot-Verhalten und Log-Abgleich immer getrennt testen und dokumentieren.

UpgradeCode vs ProductCode

Beide Werte sind wichtig, aber sie dienen nicht demselben Zweck. Wer sie verwechselt, baut spaeter schnell unzuverlaessige Detection- oder Upgrade-Logik.

Artikel lesen