Files
BizTalkPlatformManagementTool/docs/Installer-Stabilitaetsanalyse-2026-08-11.md
T

4.7 KiB

Installer-Stabilitätsanalyse vom 11.08.2026

Ausgangslage

Vor Version 2.1.0 enthielt das Repository keinen Installer für die C#-Anwendung. Die Datei release/BizTalkPlatformManagementTool.ps1 ist eine ältere PowerShell-Implementierung des Tools und kein Installationsprogramm. Frühere release/*.zip.txt waren Base64-Quellpakete ohne Update-, Abnahme- oder Rollbacklogik.

Implementierte Sicherheitsgrenzen

  • Vollständiges internes Payload-Manifest mit Dateipfad, Länge und SHA-256.
  • Ablehnung fehlender, veränderter, doppelter, zusätzlicher oder aus dem Payload-Verzeichnis ausbrechender Pfade.
  • Keine Mutation vor vollständig bestandenem Manifest- und Staging-Self-Test.
  • Update nur bei geschlossener produktiver Toolinstanz.
  • Staging und Backup als eindeutige Geschwister des Installationsverzeichnisses auf demselben Volume.
  • Acht begrenzte Move-Versuche mit 250, 500, 1.000, 2.000, 3.000, 5.000 und 8.000 ms Backoff zwischen den Versuchen.
  • SHA-256-verifizierter Kopierfallback für eine Neuinstallation ohne Ziel oder für eine Update-Aktivierung nach vollständig atomar gesicherter Vorversion; niemals als In-place-Update.
  • Zweiter Self-Test nach Aktivierung und vor Windows-Registrierung.
  • Automatisches Datei- und Registrierungsrollback bei Fehlern.
  • Dauerhaftes phasenbezogenes Installerlog unter ProgramData.
  • Temp-Fallback, falls das primäre Installerlog nicht angelegt werden kann.
  • Stabile Fehlercodes, vollständige Self-Test-Ausgaben, Exception-Ketten, HRESULTs und einzeln protokollierte Rollbackschritte.
  • Explizite Unterscheidung zwischen Fehlern vor der ersten Mutation und tatsächlich ausgeführtem Rollback.
  • Rücklesende Verifikation von Verknüpfungen, Uninstaller und zentralen Registrywerten.
  • Deinstallation über Windows-Uninstall-Eintrag; Diagnoseprotokolle bleiben erhalten.
  • Äußere ZIP-Prüfsumme und Certutil-kompatible Base64-TXT für kontrollierte Übertragung.

Lokal verifiziert

  • Release-Build aller Projekte mit Mono MSBuild.
  • Neunundzwanzig Regressionstests einschließlich manipulierter/zusätzlicher/ausbrechender Payload-Pfade, Staging-Abbruch ohne Mutation, transienter Move-Erholung, verifiziertem Neuinstallations- und Updatefallback, begrenztem Updateabbruch, erzwungenem Fehler des zweiten Self-Tests mit Wiederherstellung der Vorversion, Deinstallation über ein Quarantäneverzeichnis, Diagnosekontext, Log-Fallback und Fehlerisolierung der UI-Ausgabe.
  • WMI-freier Self-Test der produktiven EXE.
  • Erstellung des Installationsordners, ZIPs, Base64-TXTs und der SHA-256-Datei.
  • Rückdekodierung der Base64-TXT und Bytevergleich mit dem ZIP.
  • Erneute Prüfung des internen Manifests nach der Paketierung.

Zweite Prüfung nach den Deployment-Erfahrungen des Schwesterprojekts

Die erneute Prüfung orientierte sich an den dokumentierten Schwierigkeiten aus biztalk-checkmk-pulse. Zwei Erkenntnisse wurden bewusst übertragen:

  1. Ein Fehler vor der ersten Änderung darf nicht als erfolgreicher Rollback beschrieben werden. Der Installer meldet daher eindeutig, dass kein Rollback erforderlich war und protokolliert mutation_started=false.
  2. Technische Installationsfähigkeit und fachlicher Laufzeitzustand sind getrennte Abnahmen. Der WMI-freie Self-Test entscheidet über Aktivierung/Rollback; BizTalk-WMI, Berechtigungen und ein möglicher Unknown-Zustand werden erst danach mit Diagnose und Dry-run bewertet.

Zusätzlich wurden die Informationen erfasst, die bei einem schwer reproduzierbaren Windows-Deployment typischerweise fehlen: genaue Setup-/Dateiversionen und Hashes, vollständiges stdout/stderr, dezimaler und hexadezimaler Exitcode, Timeout-/Kill-Ergebnis, Identität/Elevation, Exception-Kette/HRESULT/Stacktrace und jeder Rollbackschritt. Der Self-Test wartet nach einem Timeout höchstens weitere fünf Sekunden auf Prozessende und Ausgabekanäle; ein nicht beendbarer Prozess kann das Setup somit nicht unbegrenzt blockieren.

Noch auf Windows/BizTalk zu validieren

Die lokale Linux-/Mono-Verifikation kann folgende Windows-spezifische Punkte nicht abschließend beweisen:

  1. UAC-Anforderung beider EXE-Dateien auf Windows Server 2019/2022.
  2. Startmenü- und optionale Desktop-Verknüpfung über Windows Script Host.
  3. 64-Bit-Uninstall-Eintrag und Aufruf über Apps & Features.
  4. Updateblockade bei laufender installierter GUI.
  5. Reales Rollback bei nicht durch den neuen Retry/Fallback aufgelösten Dateisperren oder Registryfehlern.
  6. ProgramData-Fehler und Temp-Log-Fallback unter realen Windows-ACLs.
  7. Diagnose und Laufzeitoperationen gegen root\MicrosoftBizTalkServer auf BizTalk Server 2020.

Bis diese Punkte repräsentativ geprüft sind, ist der Installer lokal automatisiert gehärtet, aber noch nicht als vollständig produktionsvalidiert auf Windows/BizTalk zu bezeichnen.