MSIX & Microsoft Store

Betrifft den eigenständigen NovaSQL Query Analyser (src/QueryAnalysis.App). Der Monitor wird als MSI ausgeliefert und ist von alldem nicht betroffen — dafür siehe installer.md.

Das Paket bauen

pwsh installer/msix/build-msix.ps1 -Version 1.0.0.0

Erzeugt installer/SqlQueryAnalyzer-<Version>.msix (~67 MB) und lässt die unkomprimierte Nutzlast in installer/msix/publish/ zurück.

Eine Installation des Windows SDK ist nicht erforderlich. makeappx.exe und signtool.exe werden beim ersten Lauf aus dem NuGet-Paket Microsoft.Windows.SDK.BuildTools nach installer/msix/.tools/ geholt. So funktioniert der Build auf einem gewöhnlichen Entwicklungsrechner und in einer CI, ohne dass etwas mit Administratorrechten installiert werden muss.

Das Paket ist eigenständig: Ein Store-Paket darf sich nicht darauf verlassen, dass eine systemweite .NET-Laufzeit vorhanden ist. Daher die Größe — rund 156 MB Nutzlast, 67 MB komprimiert.

Versionsnummern

MSIX-Versionen bestehen aus vier Teilen, und der letzte Teil muss 0 sein — alles andere lehnt der Store ab. Das Skript prüft das vorab, statt Sie das erst beim Hochladen herausfinden zu lassen.

Bildmaterial

Sämtliche Kacheln in installer/msix/Assets/, das Anwendungssymbol src/QueryAnalysis.App/Assets/QueryAnalyzer.ico (Programmdatei, Taskleiste, Titelzeile) und die drei Store-Logos in docs/store/logos/ werden von installer/msix/make-assets.ps1 aus einem einzigen Ausgangsbild erzeugt: src/Logo/NovaSQL_Query_Analyser.png. Ein neues Logo bedeutet, diese Datei zu ersetzen und das Skript erneut laufen zu lassen — niemals eine Kachel von Hand bearbeiten. Die Ergebnisse liegen in der Versionsverwaltung, zum Bauen oder Paketieren braucht man also weder das Skript noch das Ausgangsbild.

powershell -File installer/msix/make-assets.ps1   # nach einer Logoänderung neu erzeugen

Was das Skript mit dem Ausgangsbild macht, damit ein Austausch weiterhin funktioniert:

  • Der weiße Hintergrund wird transparent, wobei Bildmarke und Schriftzug getrennt verarbeitet und anschließend zum vollständigen Logo zusammengesetzt werden. Das Manifest deklariert einen transparenten Kachelhintergrund, ein weißes Quadrat säße also auf einer dunklen Taskleiste — ein schlichtes Ausblenden höhlt aber auch die weißen Glanzlichter innerhalb der Bildmarke aus. Der Durchgang für die Bildmarke schützt daher alles, was der Hintergrund nicht durch eine Lücke von mehr als etwa 24 px erreichen kann; so bleiben Trennringe, Zylinderdeckel und Sternkern deckend. Beim Schriftzug ist es genau umgekehrt: Jede Punze ist ein geschlossenes Loch, das eine Füllung nie erreicht — schützt man sie, bleiben die Buchstaben als weiß gefüllte Umrisse stehen: auf Weiß lesbar, auf Dunkel ein Durcheinander. Sein Durchgang schützt deshalb nichts. Mit -MaskPath mask.png sehen Sie, was ein geschützter Durchgang ausblenden würde.
  • Kleine Größen zeigen nur die Bildmarke (44, 50, 71, 150 und die .ico); der Schriftzug erscheint auf der 310×310-Kachel, der breiten Kachel und dem Startbildschirm. Die Bildmarke wird als der Inhalt oberhalb des ersten leeren Querbands erkannt, ein neues Ausgangsbild braucht also denselben Aufbau: Marke oben, Text unten, dazwischen eine Lücke.
  • Der Schriftzug „QUERY ANALYSER“ ist dunkelgrau und auf dunklem Grund schwer zu lesen. Nur die großen Kacheln tragen ihn, und die zeigt Windows 11 kaum.

Der Satz ist vollständig genug, dass Paketierung und Zertifizierung nicht an einer fehlenden Größe scheitern.

Lokal testen

Für den Upload in den Store muss das Paket unsigniert bleiben — Microsoft signiert es. Um es auf dem eigenen Rechner zu installieren, brauchen Sie eine Signatur und ein vertrauenswürdiges Zertifikat:

pwsh installer/msix/build-msix.ps1 -Version 1.0.0.0 -Sign

Das Skript erzeugt ein selbstsigniertes Zertifikat, signiert das Paket und gibt die beiden Befehle aus, mit denen man ihm vertraut und es installiert. Dem Zertifikat zu vertrauen schreibt nach LocalMachine\TrustedPeople und erfordert daher eine erhöhte Eingabeaufforderung.

Eine schnellere Schleife ganz ohne Signatur — den veröffentlichten Ordner direkt registrieren (erfordert den Entwicklermodus):

Add-AppxPackage -Register installer\msix\publish\AppxManifest.xml
Get-AppxPackage 54076piwonka.NovaSQLQueryAnalyser
# starten:
Start-Process "shell:AppsFolder\$((Get-AppxPackage 54076piwonka.NovaSQLQueryAnalyser).PackageFamilyName)!QueryAnalyzer"
# aufräumen:
Remove-AppxPackage (Get-AppxPackage 54076piwonka.NovaSQLQueryAnalyser).PackageFullName

Damit wurde das Manifest geprüft und bestätigt, dass die Anwendung paketiert startet.

Wohin die Daten gehen — gemessen, nicht vermutet

Eine MSIX-Anwendung mit voller Vertrauensstellung schreibt in das echte %APPDATA%\Roaming\QueryAnalyzer\, nicht nach …\Packages\<PackageFamilyName>\LocalCache\Roaming\. Die AppData-Umleitung stammt aus dem alten Desktop App Converter und gilt für ein Paket vom Typ Windows.FullTrustApplication nicht.

Das wurde nachgemessen, denn die Intuition sagt das Gegenteil: Datenbank löschen, den paketierten Build starten — die neue Datei erscheint wieder im echten Roaming-Ordner.

Zwei Folgen, die man kennen sollte:

  • Der paketierte und der gewöhnliche Build teilen sich eine Datenbank. Ein Benutzer kann zwischen beiden wechseln, ohne Verbindungsprofile oder Verlauf zu verlieren.
  • Die Deinstallation entfernt diese Daten nicht. Für den Benutzer erfreulich, es bleibt aber ein Ordner zurück.

Die Anwendung nennt ihren Speicherort und die Installationsart selbst unter Datenspeicher… in der Statusleiste — man muss dieses Dokument dafür also nicht lesen.

Checkliste für die Einreichung

Die Registrierung ist seit 2026 sowohl für Einzelpersonen als auch für Unternehmen kostenlos (zuvor 19 bzw. 99 US-Dollar). Der Verkauf über die Handelsplattform von Microsoft kostet eine Provision; wer für eine Nicht-Spiele-Anwendung seine eigene Abwicklung nutzt, behält 100 %. Prüfen Sie die aktuellen Sätze vor der Preisgestaltung im Partner Center — die veröffentlichten Zahlen unterscheiden sich je nach Zugangsweg.

Vor dem Hochladen:

  1. Die Identität ist die, die Partner Center vergeben hat — reservierter Name NovaSQL Query Analyser, Store-ID 9N7C6C5BB8RK, Eintrag https://apps.microsoft.com/detail/9N7C6C5BB8RK. Die folgenden drei Angaben müssen zeichengenau dazu passen, sonst wird der Upload abgelehnt:

    Wo Wert
    Package/Identity/Name (Manifestvorlage) 54076piwonka.NovaSQLQueryAnalyser
    Package/Identity/Publisher (-Publisher) CN=83C65A29-5AA0-4851-A520-6663B04A6E98
    Package/Properties/PublisherDisplayName (-PublisherName) piwonka

    Das Herausgeberpaar ist die Voreinstellung des Skripts, ein einfacher Build ist also bereits korrekt; die GUID ist eine Identität, kein Geheimnis. Der Paketfamilienname lautet 54076piwonka.NovaSQLQueryAnalyser_0fsdk9qvhk84j — das meldet Get-AppxPackage, und darauf baut der Startbefehl oben auf.

    Programmdatei, MSIX-Dateiname und der Datenordner %APPDATA%\QueryAnalyzer\ behalten die alte Schreibweise mit Absicht: Den Datenordner umzubenennen würde jede vorhandene Profildatenbank abhängen.

  2. Das unsignierte Paket hochladen. Reichen Sie keinen -Sign-Build ein.

  3. Eine URL zur Datenschutzerklärung ist Pflicht. Die Anwendung verbindet sich mit Datenbankservern, die der Benutzer benennt, und speichert deren Verbindungszeichenfolgen lokal. Das gehört erwähnt.

  4. Fragebogen zur Altersfreigabe.

  5. Screenshots ergänzen. Fünf je Sprachfassung unter docs/store/screenshots/{de,en}/, aufgenommen mit docs/store/capture-window.ps1. In der Reihenfolge der Dateinamen hochladen — die Bewertungskarte zuerst macht den Rest erst lesbar. Siehe docs/store/README.md.

Fähigkeiten

Das Manifest deklariert ausschließlich internetClient und runFullTrust. Die Anwendung öffnet ausgehende TDS-Verbindungen zu Instanzen, die der Benutzer benennt; sie lauscht nicht und rührt keine Benutzerbibliotheken an. Diese Liste kurz zu halten macht die Zertifizierung unkompliziert — jede zusätzliche Fähigkeit lädt zu Rückfragen in der Prüfung ein.

Bekannte Grenzen

  • Nur x64. Es wird kein ARM64-Paket gebaut. Dafür bräuchte es einen zweiten Veröffentlichungslauf und ein Bündel (.msixbundle); am Code scheitert es nicht.
  • Der Analyzer hat keine eigene Lizenzprüfung, anders als der Monitor. Für den Vertrieb über den Store ist das in Ordnung — Microsoft regelt die Berechtigung. Für jeden anderen Weg nicht.
  • Für Geschäftskunden bleibt das MSI der Hauptweg. In Unternehmensumgebungen ist der Store häufig per Richtlinie gesperrt, und genau diese Benutzer sind die Zielgruppe. Betrachten Sie den Store als zusätzliche Reichweite für einzelne DBAs und Beratende, nicht als Ersatz.