Erkennung
Dateiendung .msi, Tabellenstruktur, ProductCode und msiexec-Syntax. Die eigentliche Analyse beginnt aber erst beim Blick in Properties, Features und Launch Conditions.
MSI
MSI ist standardisiert, gut logbar und stark in Detection, Reparatur und Deinstallation. Gerade deshalb sollte man seine Tabellen und Properties aktiv auslesen.
Dateiendung .msi, Tabellenstruktur, ProductCode und msiexec-Syntax. Die eigentliche Analyse beginnt aber erst beim Blick in Properties, Features und Launch Conditions.
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
Bei MSI lohnt sich die Unterscheidung zwischen eigentlicher Aktion, UI-Verhalten, Logging, Neustartsteuerung und Zusatzdaten wie Transforms oder Properties.
| Gruppe | Schalter | Einsatz |
|---|---|---|
| Install | /i paket.msi | Normale Installation eines MSI-Pakets. |
| Uninstall | /x paket.msi oder /x {PRODUCT-CODE} | Deinstallation per Datei oder ProductCode. |
| Repair | /f, /fa, /fvomus | Reparatur mit unterschiedlicher Tiefe, z. B. alle Dateien neu kopieren oder nur fehlende Dateien ersetzen. |
| Administrative Installation | /a paket.msi | Admin-Image erzeugen, z. B. fuer Dateiextraktion oder Distribution. |
| Patch | /p patch.msp | MSP auf bestehende Installation anwenden. |
| Quiet UI | /qn, /qb, /passive | Vollstaendig still, reduzierte oder passive Anzeige. |
| Neustart | /norestart, /forcerestart, REBOOT=ReallySuppress | Restart-Verhalten steuern. |
| Logging | /L*v c:\logs\app.log | Verbose Logging fuer spaetere Analyse. |
| Transforms | TRANSFORMS=custom.mst | Customizing ueber MST anwenden. |
| Properties | PROPERTY=Value | Oeffentliche MSI-Properties setzen, z. B. Installationspfade oder Features. |
Start-Process msiexec.exe -ArgumentList '/i app.msi /qn /norestart /L*v c:\logs\app.log' -Wait -PassThru
ErrorCodes
Die folgende Tabelle deckt die ueblichen Windows-Installer-Rueckgabecodes ab, die bei msiexec-Aufrufen im Deployment sichtbar werden.
| Code | Bedeutung | Praxis-Hinweis |
|---|---|---|
0 | Erfolg | Installation oder Deinstallation erfolgreich abgeschlossen. |
13 | Daten ungueltig | Meist Parameter- oder Dateiproblem ausserhalb des eigentlichen Installers. |
87 | Parameter ungueltig | Haeufig fehlerhafte msiexec-Syntax. |
120 | Funktion auf dieser Plattform nicht unterstuetzt | Selten, meist Umgebungsproblem. |
1259 | Benutzerabbruch | Kann auch durch Wrapper oder UI-Interaktion entstehen. |
1601 | Windows Installer Service nicht verfuegbar | Dienstproblem oder defekte Installer-Registrierung. |
1602 | Benutzerabbruch | Nicht immer echter Klickabbruch, teils Folge eines Wrappers. |
1603 | Fataler Fehler waehrend Installation | Nur Sammelcode. Ursache steht im Log vor dem Abbruchpunkt. |
1604 | Installation unterbrochen | Kann bei Suspend oder externem Stop auftreten. |
1605 | Produkt nicht installiert | Typisch bei Uninstall auf bereits entferntem Produkt. |
1606 | Feature-Identifier unbekannt | Fehlerhafte Feature-Referenz. |
1607 | Component-Identifier unbekannt | Hauefig Script- oder API-Bezug auf ungueltige Component. |
1608 | Property unbekannt | Property-Referenz oder API-Aufruf falsch. |
1609 | Handle in ungueltigem Zustand | Eher API-/Automationsfehler. |
1610 | Konfigurationsdaten fehlerhaft | Interne MSI-/Produktdaten beschaedigt. |
1611 | Component qualifiziert nicht | Selten, meist reparatur- oder API-bezogen. |
1612 | Installationsquelle nicht verfuegbar | Quelle verschoben, Share weg oder Cacheproblem. |
1613 | Installationspaket nicht installierbar | Pakettyp, Plattform oder Zustand unpassend. |
1614 | Produkt entfernt | Oft Folge eines bereits deinstallierten Produkts. |
1615 | SQL-Query-Syntax ungueltig | Meist Custom Action oder interne Datenbankabfrage. |
1616 | Record-Feld nicht vorhanden | MSI-Datenstrukturproblem. |
1617 | Device entfernt | Selten, Umgebung/Medium. |
1618 | Andere Installation laeuft bereits | Sehr haeufig im Deployment. Serielle Ausfuehrung oder Wartelogik noetig. |
1619 | Installationspaket nicht oeffenbar | Datei, Pfad, Berechtigung oder Download defekt. |
1620 | Installationspaket nicht gueltig | Defektes oder unvollstaendiges MSI. |
1621 | UI-Service konnte nicht gestartet werden | Kontext- oder Dienstproblem. |
1622 | Logdatei konnte nicht geoeffnet werden | Pfad, Berechtigung oder gesperrte Logdatei pruefen. |
1623 | Sprachpaket nicht unterstuetzt | Sprache/Transform/Package passt nicht. |
1624 | Transform angewendet fehlgeschlagen | MST defekt, unpassend oder nicht lesbar. |
1625 | Installation durch Richtlinie untersagt | Policy oder GPO blockiert. |
1626 | Funktion konnte nicht ausgefuehrt werden | Unspezifischer API-/Engine-Fehler. |
1627 | Funktion fehlgeschlagen waehrend Ausfuehrung | Custom Action oder interne Engine-Logik. |
1628 | Ungueltige Tabellenstruktur | MSI intern fehlerhaft. |
1629 | Daten vom Datentyp nicht gueltig | MSI-Datenbank oder API-Aufruf ungueltig. |
1630 | Unbekannter Datentyp | Selten, meist Paketdefekt. |
1631 | Windows Installer Service konnte nicht gestartet werden | Dienststart scheitert. |
1632 | Temp-Ordner nicht verfuegbar | %TEMP%/%TMP% pruefen. |
1633 | Paket fuer diese Plattform nicht unterstuetzt | x86/x64/ARM oder OS-Version unpassend. |
1634 | Component nicht verwendet | Meist interne MSI-Referenz. |
1635 | Patch nicht oeffenbar | MSP-Datei oder Pfad pruefen. |
1636 | Patch nicht installierbar | Patch passt nicht zum Produktzustand. |
1637 | Patch bereits angewendet | Oft harmlos, je nach Betriebslogik bewerten. |
1638 | Andere Produktversion bereits installiert | Upgrade-Logik oder Versionskonflikt. |
1639 | Ungueltige Kommandozeilenargumente | Sehr haeufig bei falsch gequoteten Properties oder Loggingparametern. |
1640 | Nur im Interaktionskontext erlaubt | Silent/System-Kontext passt nicht zur Aktion. |
1641 | Erfolg, Neustart eingeleitet | Deployment muss Neustart korrekt behandeln. |
1642 | Upgrade-Patch nicht verarbeitbar | Patch-/Baselineproblem. |
1643 | Patch-Paket nicht erlaubt | Policy oder Paketstatus problematisch. |
1644 | Transform nicht erlaubt | Policy oder Paketstatus problematisch. |
1645 | Remote-Installation nicht erlaubt | Policy- oder Kontextfrage. |
1646 | Entfernung vom Produkt nicht erlaubt | Policy oder Paketlogik blockiert. |
1647 | Kein gueltiger ProductCode | Typisch bei falscher Uninstall-Referenz. |
1648 | Transform-/Patch-Pfad nicht zugelassen | Pfad oder Policy pruefen. |
1649 | System konnte Package-Digital-Signature nicht pruefen | Signatur- oder Zertifikatsproblem. |
1650 | Patch-Download fehlgeschlagen | Quelle oder Netzwerkproblem. |
1651 | Administrative Benutzerrechte erforderlich | Kontext passt nicht. |
1652 | Temporate-Datei nicht erstellbar | Temp-Pfad oder Berechtigung. |
1653 | Windows Installer von Transaktionsmodus abgelehnt | Selten, meist komplexere Sequenz-/Systemfrage. |
1654 | Rollback deaktiviert und Wiederherstellung nicht moeglich | Engine-/Policy-Kontext pruefen. |
3010 | Erfolg, Neustart erforderlich | Kein Hard Fail, aber betrieblich wichtig. |
Mit PowerShell und dem COM-Objekt WindowsInstaller.Installer lassen sich ProductCode, Versionen, Features und Tabellen strukturiert auslesen.
Artikel lesenProperties sind nur der Anfang. Auch Launch Conditions, Custom Actions, Features und Upgrade-Informationen lassen sich vor der Paketierung auswerten.
Mehr Moeglichkeiten ansehenInstall, Uninstall, Repair, Upgrade, Reboot-Verhalten und Log-Abgleich immer getrennt testen und dokumentieren.
Beide Werte sind wichtig, aber sie dienen nicht demselben Zweck. Wer sie verwechselt, baut spaeter schnell unzuverlaessige Detection- oder Upgrade-Logik.
Artikel lesen