Eine der verwirrendsten Situationen bei der Bereitstellung von Unternehmenssoftware tritt auf, wenn eine Anwendung zwar erfolgreich installiert wurde, die Bereitstellungsplattform den Vorgang jedoch als fehlgeschlagen meldet.
Die Anwendung ist auf dem Gerät vorhanden, die Erkennungsregel bestätigt die Installation, und der Benutzer kann sie problemlos starten. Aus jeder praktischen Perspektive war die Bereitstellung erfolgreich. Dennoch zeigen Microsoft Intune, Configuration Manager oder eine andere Bereitstellungslösung weiterhin den Status „fehlgeschlagen“ an.
In vielen Fällen liegt das Problem nicht beim Paket selbst.
Das ist der Exit-Code des Installationsprogramms.
Installationsprogramm-Exit-Codes verstehen
Jedes Installationsprogramm gibt nach Abschluss der Ausführung einen Exit-Code zurück. Bereitstellungslösungen nutzen diese Rückgabecodes, um festzustellen, ob die Installation erfolgreich war, einen Neustart erfordert oder fehlgeschlagen ist.
Die gängigsten Exit-Codes sind jedem Ingenieur der Paketierung bekannt:
- 0 – Die Installation wurde erfolgreich abgeschlossen.
- 3010 – Die Installation wurde erfolgreich abgeschlossen, es ist jedoch ein Neustart erforderlich.
Diese Codes werden von den Bereitstellungsplattformen erkannt und ohne zusätzliche Konfiguration korrekt verarbeitet.
Allerdings hält sich nicht jeder Installateur an diese Konventionen.
Die Herausforderung bei benutzerdefinierten Exit-Codes
Softwareanbieter können ihre eigenen Exit-Codes frei festlegen.
Anstatt den Wert 0 zurückzugeben, kann ein Installationsprogramm einen herstellerspezifischen Wert zurückgeben, obwohl die Installation erfolgreich abgeschlossen wurde. Bei diesem Installationsprogramm stellt der Exit-Code kein Fehler, sondern ein erwartetes Ergebnis dar.
Die Bereitstellungsplattform hat jedoch keine Möglichkeit, dies zu erkennen.
Sofern nicht ausdrücklich anders konfiguriert, wird jeder unbekannte Exit-Code ungleich Null in der Regel als fehlgeschlagene Installation gewertet.
Dies führt zu einer irreführenden Situation. Für Administratoren bedeutet dies oft unnötige Fehlerbehebung, wiederholte Bereitstellungsversuche und Zeitaufwand für die Untersuchung eines Problems, das gar nicht existiert.
Wie wir mit benutzerdefinierten Exit-Codes umgehen
Die Behandlung von Beendigungscodes des Installationsprogramms ist ein wichtiger Bestandteil der Anwendungspaketierung.
Bevor wir ein Paket fertigstellen, überprüfen wir, wie sich das Installationsprogramm verhält und welche Exit-Codes es zurückgibt. Dazu gehören die Durchsicht der Dokumentation des Anbieters, die Überprüfung der Installationsprotokolle und die Bestätigung des tatsächlichen Installationsergebnisses, anstatt uns ausschließlich auf den Bereitstellungsstatus zu verlassen.
Bei der Verwendung von PSAppDeployToolkit v4 sind die gängigsten Vorgehensweisen -SuccessExitCodes und -IgnoreExitCodes.
Wenn ein Installationsprogramm einen herstellerspezifischen Exit-Code zurückgibt, der als erfolgreiches Installationsergebnis verifiziert wurde, kann dieser explizit zur Liste der akzeptierten Erfolgscodes hinzugefügt werden:
Start-ADTProcess -FilePath "$($adtSession.DirFiles)\Setup.exe" -ArgumentList "/S" -SuccessExitCodes 1,2Dadurch wird das PSAppDeployToolkit angewiesen, die Exit-Codes 1 und 2 als erfolgreiche Prozessergebnisse zu behandeln, anstatt sie als Fehler zu melden.
PSAppDeployToolkit unterstützt außerdem den Parameter „ -IgnoreExitCodes “. Im Gegensatz zu „ -SuccessExitCodes “ ermöglicht er es, nicht nur bestimmte Exit-Codes, sondern durch die Verwendung eines Sternchens (*) auch alle Exit-Codes zu ignorieren:
Start-ADTProcess -FilePath "$($adtSession.DirFiles)\Setup.exe" -ArgumentList "/S" -IgnoreExitCodes '*'Dies verhindert, dass ein beliebiger Beendigungscode des Installationsprogramms den Wrapper zum Absturz bringt, und sollte daher mit Vorsicht verwendet werden.
Überprüfen Sie benutzerdefinierte Exit-Codes stets anhand von Tests und der Dokumentation des Anbieters, bevor Sie sie als erfolgreich werten oder ignorieren. Da sich jeder Installer anders verhält, können Annahmen leicht zu falschen Ergebnissen bei der Bereitstellung führen.
Eine genaue Berichterstattung ist Teil einer erfolgreichen Paketierung
Ein Bereitstellungspaket sollte mehr leisten, als eine Anwendung im Hintergrund zu installieren. Es sollte außerdem das Installationsergebnis korrekt an die Bereitstellungsplattform übermitteln.
Der korrekte Umgang mit benutzerdefinierten Exit-Codes verhindert falsche Fehlermeldungen bei der Bereitstellung, verbessert die Genauigkeit der Berichterstellung und reduziert unnötigen Aufwand bei der Fehlerbehebung für IT-Administratoren. Außerdem wird dadurch sichergestellt, dass die Bereitstellungs-Dashboards den tatsächlichen Zustand der Umgebung widerspiegeln, sodass sich die Teams auf echte Installationsprobleme konzentrieren können, anstatt irreführende Bereitstellungsergebnisse zu untersuchen.
Manchmal liegt der Unterschied zwischen einer erfolgreichen Bereitstellung und einem gemeldeten Fehler nicht in der Installation selbst.
Das hängt einfach davon ab, wie der Exit-Code des Installationsprogramms interpretiert wird.
Author
Liudmyla Boldak
