MSI-Installer
Ein Windows-Installer-Paket, das den SQL Server Health Monitor bereitstellt und als
Windows-Dienst registriert. Erstellt mit WiX v5; die Quellen
liegen in installer/ (Package.wxs und build.ps1).
Das MSI bauen
Voraussetzungen auf dem Buildrechner:
- .NET-9-SDK
- WiX-v5-Kommandozeile:
dotnet tool install --global wix - WiX-UI-Erweiterung (für den Installationsassistenten):
wix extension add -g WixToolset.UI.wixext
cd installer
./build.ps1 # -> installer/SqlServerHealthMonitor-1.0.0.0.msi
./build.ps1 -Version 1.2.0.0 -Manufacturer "Contoso Ltd"
./build.ps1 -SelfContained # .NET-Laufzeit mitliefern (größeres MSI, keine Laufzeit-Voraussetzung)
build.ps1 führt dotnet publish aus (win-x64, standardmäßig laufzeitabhängig) und legt
das Ergebnis in installer/publish ab, danach läuft wix build. Der Standardbuild setzt
die ASP.NET Core 9 Runtime auf dem Zielrechner voraus; mit -SelfContained wird sie
mitgeliefert.
Erhöhen Sie
-Versionbei jeder Auslieferung. DerUpgradeCodeinPackage.wxsist fest und darf sich nie ändern — er ist es, der ein neueres MSI eine ältere Installation an Ort und Stelle aktualisieren lässt.
Was installiert wird
- Dateien nach
C:\Program Files\SQL Server Health Monitor\. - Ein Windows-Dienst
SqlServerHealthMonitor(„SQL Server Health Monitor“), Starttyp Automatisch, ausgeführt als LocalSystem. - Der Dienst wird während der Installation nicht gestartet — eine frische Installation hat noch keine Verbindungszeichenfolge und würde an der Startprüfung für den Produktivbetrieb scheitern. Erst konfigurieren, dann starten.
Konfiguration bei der Installation (Port und Verbindungszeichenfolge)
Interaktive Installation: Ein Doppelklick auf das MSI startet den Assistenten
(Willkommen → Lizenz → Installationsordner → Dienstkonfiguration → Bestätigen →
Fertigstellen). Die Seite Dienstkonfiguration enthält Felder für den HTTPS-Port und die
Verbindungszeichenfolge zur Datenbank. Ersetzen Sie installer/license.rtf vor der
Auslieferung durch Ihre eigenen Lizenzbedingungen.
Unbeaufsichtigte Installation: Dieselben zwei Einstellungen lassen sich als
MSI-Eigenschaften übergeben. Der Installer schreibt sie als Maschinen-Umgebungsvariablen,
die ASP.NET Core zusätzlich zu appsettings.json liest — Sie müssen also keine Datei
bearbeiten:
| Eigenschaft | Setzt Umgebungsvariable | Standard |
|---|---|---|
HTTPSPORT |
SecuritySettings__HttpsPort |
8443 |
SQLCONNECTIONSTRING |
ConnectionStrings__DefaultConnection |
(nicht gesetzt — vor dem Start des Dienstes erforderlich) |
msiexec /i SqlServerHealthMonitor-1.0.1.0.msi `
HTTPSPORT=9443 `
SQLCONNECTIONSTRING="Server=db;Database=SQLSpa;User Id=svc;Password=…;TrustServerCertificate=true" `
/qn /norestart
Die Variable für die Verbindungszeichenfolge wird nur angelegt, wenn Sie einen nicht leeren
Wert übergeben; beide werden bei der Deinstallation wieder entfernt. Sicherheitshinweis:
Eine Maschinen-Umgebungsvariable ist für lokale Administratoren und Prozesse lesbar — für ein
SQL-Kennwort ist ein Domänen-Dienstkonto mit integrierter Sicherheit (kein Kennwort in der
Zeichenfolge) dem Übergeben von SQLCONNECTIONSTRING vorzuziehen.
Erstkonfiguration
# 1. Verbindung zur Überwachungsdatenbank einrichten (entweder die Konfiguration bearbeiten ...)
notepad "C:\Program Files\SQL Server Health Monitor\appsettings.json"
# ... und ConnectionStrings:DefaultConnection setzen
# ... oder als Maschinen-Umgebungsvariable übergeben (bevorzugt — keine Geheimnisse auf der Platte):
[Environment]::SetEnvironmentVariable("ConnectionStrings__DefaultConnection",
"Server=db;Database=SQLSpa;User Id=svc;Password=…;TrustServerCertificate=true", "Machine")
# 2. (Empfohlen) den Dienst unter einem Domänenkonto mit integrierter Sicherheit ausführen:
sc.exe config "SqlServerHealthMonitor" obj= "DOMAIN\monitor-svc" password= "…"
# 3. Starten
sc.exe start "SqlServerHealthMonitor"
Standardmäßig lauscht der Dienst auf https://localhost:8443 (beim ersten Start wird ein
selbstsigniertes Zertifikat erzeugt — wie Sie es ersetzen, steht in deployment.md). Das
erste Administratorkonto wird beim Erststart angelegt und die Zugangsdaten in
INITIAL_ADMIN_PASSWORD.txt im Installationsordner hinterlegt; siehe deployment.md →
Initial admin account.
Unbeaufsichtigt installieren und deinstallieren
msiexec /i SqlServerHealthMonitor-1.0.0.0.msi /qn /norestart
msiexec /x SqlServerHealthMonitor-1.0.0.0.msi /qn # Deinstallation
Aktualisierungen
Führen Sie ein MSI mit höherer Version aus; die Major-Upgrade-Logik hält den Dienst an,
ersetzt die Dateien und registriert den Dienst neu. appsettings.json bleibt erhalten
(als „nie überschreiben“ gekennzeichnet), die Verbindungszeichenfolge des Betreibers
übersteht die Aktualisierung also. Starten Sie den Dienst danach wieder von Hand —
Aktualisierungen starten ihn nicht automatisch.
Was bei der Deinstallation nicht entfernt wird
- Die DataProtection-Schlüssel (standardmäßig unter
%LOCALAPPDATA%\SqlServerHealthMonitor\…des Dienstkontos) — der Schlüsselbund des Frameworks für Anmelde-Cookies und das selbstsignierte Zertifikat. Sie zu behalten erspart Ihren Benutzern lediglich eine erneute Anmeldung. - Die Überwachungsdatenbank — sie liegt außerhalb.
- Änderungen des Betreibers an
appsettings.jsonkönnen zurückbleiben. Löschen Sie den Installationsordner von Hand, wenn Sie einen sauberen Stand wollen.