Add transactional installer and harden runtime operations

This commit is contained in:
2026-08-11 11:35:11 +02:00
parent e8df6042d2
commit a74528e5c6
41 changed files with 3010 additions and 119 deletions
+13 -4
View File
@@ -21,10 +21,12 @@ WinForms tool for controlled Microsoft BizTalk Server 2020 platform operations d
- Dry-run mode enabled by default
- WMI access through `root\MicrosoftBizTalkServer`
- Startup check for administrator rights
- Detailed operation logging in the GUI and daily rolling log files next to the executable
- Detailed operation logging in the GUI and daily rolling log files under ProgramData
- Environment status indicator based on host instance state
- Clear and Close actions in the main toolbar
- No compile-time dependency on BizTalk ExplorerOM assemblies
- Transactional Windows installer/updater with SHA-256 payload validation and rollback
- WMI-free runtime self-test plus automated regression test executable
## Safe Usage
@@ -39,7 +41,9 @@ WinForms tool for controlled Microsoft BizTalk Server 2020 platform operations d
The environment indicator shows `Started`, `Stopped`, `Partial` or `Unknown` from the most recent snapshot. `Clear` removes the visible status and operation log grids; it does not delete files.
The application checks administrator rights during startup. If it is not elevated, it shows an error message and exits because BizTalk WMI operations require an elevated administrator process.
The application requests administrator rights through its UAC manifest and checks them again during startup. Only one GUI instance can run per Windows session.
Before a real shutdown or restore, the exact fresh plan is saved and a second dialog shows its executable step count, target server and plan path. Restore is rejected when the snapshot server does not match the selected target (short name and FQDN of the same host are accepted).
## Operation Order
@@ -64,9 +68,9 @@ Orchestrations that were `Bound` are deliberately left unchanged during restore
- `shutdown-after.json`, `restore-after.json`
- `diff.json`, `diff.csv`, `diff.html`
- Snapshot sidecars: `*.csv`, `*.hosts.csv`, `*.html`
- Runtime logs next to the executable: `BizTalkPlatformManagementTool-yyyy-MM-dd.log`
- Runtime logs under `%ProgramData%\BizTalkPlatformManagementTool\Logs`
Log files are retained for the current day plus the previous four days. Older `BizTalkPlatformManagementTool-*.log` files are removed on startup.
Log files are retained for the current day plus the previous four days. Older `BizTalkPlatformManagementTool-*.log` files are removed on startup. If ProgramData is unexpectedly unavailable, logging falls back to the executable directory.
## Troubleshooting
@@ -74,14 +78,19 @@ The Operation Log shows the WMI class, key property, key value and method for re
Snapshot and plan JSON files are written as UTF-8 without BOM. Loading is tolerant of existing files that contain a UTF-8 BOM or a visible BOM marker from previous encoding conversions.
JSON snapshots and plans are written through a same-directory temporary file and atomic replacement. Snapshot comparison keys artifacts by application plus name, preventing collisions between equal artifact names in different applications. CSV fields that could be interpreted as spreadsheet formulas are neutralized.
## Build
Open `BizTalkPlatformManagementTool.sln` in Visual Studio on Windows with the .NET Framework 4.6.1 Developer Pack installed, then build the `Release|Any CPU` configuration.
The app targets .NET Framework 4.6.1 for compatibility with customer environments that do not have newer .NET Framework developer packs installed.
Use `scripts\test-release.cmd` for the build and regression suite and `scripts\package-release.cmd` for the tested installer ZIP, Certutil-compatible Base64 TXT and SHA-256 file. See [Installation](Installation.md) for decoding and update/rollback details.
## Documentation
- [Installation](Installation.md)
- [Dokumentation](Dokumentation.md)
- [Installer stability analysis](docs/Installer-Stabilitaetsanalyse-2026-08-11.md)
- [References](REFERENCES.md)