Zum Hauptinhalt springen

Eine neue Version veröffentlichen

Die Anwendung wird per ClickOnce installiert und über eine auf Netlify gehostete Seite verteilt: https://dokumentengesamtliste.netlify.app/.

Normalfall: alles in einem Rutsch​

cd Z:\VWBS\VWGCBS_Dokumentengesamtliste_2026
.\deploy.ps1

Das Skript:

  1. zählt ApplicationRevision in der .csproj automatisch um 1 hoch (dauerhaft gespeichert),
  2. baut das Projekt im Release-Modus,
  3. veröffentlicht per ClickOnce (msbuild /t:publish) nach netlify-site,
  4. räumt eine überflüssige lose .exe-Kopie weg und prüft, ob index.html, _headers und handbuch\index.html noch vorhanden sind,
  5. lädt netlify-site per netlify deploy --prod hoch.
Handbuch bleibt unangetastet

Dateien unter netlify-site\handbuch\ werden von keinem dieser Schritte angefasst oder überschrieben — das Handbuch wird unabhängig davon veröffentlicht, siehe Handbuch pflegen.

Nur bauen, ohne Netlify-Upload​

Um netlify-site\ erst lokal zu prüfen, bevor sie öffentlich wird:

.\deploy.ps1 -OhneNetlifyDeploy

Wichtig: nicht über den UNC-Pfad ausführen​

npx/die Netlify-CLI kommen mit UNC-Pfaden (\\nas9482c0\...) als Arbeitsverzeichnis nicht zurecht. Das Skript deshalb immer über das gemappte Laufwerk aufrufen — von Z:\VWBS\VWGCBS_Dokumentengesamtliste_2026, nicht von \\nas9482c0\Visual Studio\VWBS\....

Node.js / Netlify-CLI​

Node.js LTS ist auf dem Entwicklungsrechner installiert (winget install OpenJS.NodeJS.LTS). Die Netlify-CLI selbst wird nicht global installiert, sondern bei jedem Aufruf per npx netlify-cli automatisch (und versioniert) geladen.

Erstmalige Anmeldung auf einem neuen Rechner​

cd Z:\VWBS\VWGCBS_Dokumentengesamtliste_2026
npx netlify-cli login # öffnet den Browser zur Anmeldung
npx netlify-cli link --id f3d1036a-54c1-4aea-9ebf-1c7449c106f9

link erzeugt einen lokalen .netlify\-Ordner mit der Verknüpfung zur Seite — diesen Ordner nicht committen/versionieren, falls das Projekt je unter Versionskontrolle kommt.

Netlify-Site-Einstellungen​

Der Netlify-Account „Mehlhorn" hat standardmäßig team-weiten Zugriffsschutz aktiviert (sso_login auf jeder neuen Site automatisch true) — jeder Seitenaufruf würde dann eine Netlify-Anmeldung verlangen, was für eine öffentliche Installationsseite für Kollegen nicht funktioniert. Für die Site dokumentengesamtliste ist das bereits deaktiviert:

npx netlify-cli api updateSite --data "{\"site_id\":\"f3d1036a-54c1-4aea-9ebf-1c7449c106f9\",\"body\":{\"sso_login\":false}}"

Zeigt die Seite nach einer Netlify-Team-Änderung plötzlich wieder 401 zurück, ist das vermutlich die Ursache — obigen Befehl erneut ausführen, oder in den Netlify-Projekteinstellungen unter „Sharing / Visitor access" manuell auf öffentlich stellen.

Testen auf einem Testrechner​

  1. Falls die App bereits von Datenträger/Netzlaufwerk installiert wurde: diese alte Installation zuerst über „Einstellungen → Apps" bzw. „Programme und Features" deinstallieren. ClickOnce behandelt eine Installation „von Datenträger" und eine Installation „aus dem Web" als unabhängige Bereitstellungen — eine Web-Installation ersetzt eine vorhandene Datenträger-Installation nicht automatisch.

  2. Browser öffnen: https://dokumentengesamtliste.netlify.app/
  3. „Installieren" klicken → setup.exe herunterladen und ausführen.
  4. Bei der SmartScreen-Warnung „Weitere Informationen" → „Trotzdem ausführen".
  5. Nach der Installation: App starten, „Hilfe → Info" öffnen und die erwartete Versionsnummer prüfen.
  6. Update-Test: .\deploy.ps1 erneut laufen lassen (Version zählt automatisch hoch), App neu starten — ClickOnce prüft laut Konfiguration (UpdateMode=Foreground) vor jedem Start automatisch auf eine neue Version und installiert sie ggf. vor dem eigentlichen Start.

Offene Punkte​

  • netlify-site\ ist aktuell nicht versioniert (kein Git-Repository für dieses Projekt) — bei Bedarf einrichten, damit index.html, handbuch\ und _headers ebenfalls eine Historie haben.
  • Sobald ein echtes Code-Signing-Zertifikat vorliegt: Abschnitt in Lizenz und Zertifikat abarbeiten und den SmartScreen-Hinweis auf der Startseite entfernen/kürzen.