docs: Desktop-App — Update in der App (Handbücher, CI-Secrets, CHANGELOG)
Tessera CI/CD / Lint & Type Check (push) Successful in 48s
Tessera CI/CD / Tests (push) Successful in 1m8s
Tessera CI/CD / Desktop-Pakete bauen (push) Successful in 7m56s
Tessera CI/CD / Build & Publish Images (push) Successful in 3m12s

- Anwenderhandbuch: Menüeintrag "Update installieren", Ablauf per Klick
  unter Windows/Linux, Fehlerfall, https-Bedingung, einmaliger Wechsel für
  Clients bis 1.2.0
- Betriebshandbuch Kap. 10: Signierschlüssel (Secrets, Ablage, Sicherung,
  Verlust), Kontrollzeile /desktop/update, Manifest-Felder, zwei Fehlerbilder
- Entwicklungshandbuch: lokal `tauri build --no-sign`, Hinweise zu tauri dev
- ci-cd-setup.md: die zwei neuen Secrets, Bau-Schritte signieren,
  Fehlerbild "no private key"
- CHANGELOG: eine Zeile unter Unveröffentlicht → Neu

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-09-17 15:36:58 +02:00
parent 7004b5b020
commit 7479cb485f
5 changed files with 125 additions and 16 deletions
+19 -3
View File
@@ -140,15 +140,31 @@ Version setzen und Linux-Paket bauen:
```bash
sh .gitea/scripts/desktop-version.sh
pnpm --filter @tessera/desktop exec tauri build --bundles appimage
pnpm --filter @tessera/desktop exec tauri build --bundles appimage --no-sign
```
`desktop-version.sh` schreibt die Version des letzten Freigabe-Tags in
`tauri.conf.json`/`Cargo.toml` — die im Repository eingecheckten Versionsdateien
sind nur eine Basislinie, nicht die tatsächliche Freigabeversion. Das fertige
Paket liegt danach unter
`apps/desktop/src-tauri/target/release/bundle/appimage/`. Um es wie die
API es ausliefern würde einzusammeln:
`apps/desktop/src-tauri/target/release/bundle/appimage/`.
**`--no-sign` ist lokal Pflicht.** Seit der Update-Funktion in der App
verlangt `tauri build` den Signierschlüssel (Umgebungsvariable
`TAURI_SIGNING_PRIVATE_KEY`), weil `bundle.createUpdaterArtifacts` und der
öffentliche Schlüssel `plugins.updater.pubkey` in `tauri.conf.json` gesetzt
sind — ohne Schlüssel bricht der Bau mit „A public key has been found, but no
private key" ab. Mit `--no-sign` entsteht keine `.sig`-Datei;
`desktop-collect.sh` warnt dann nur (Kanal `dev`) und lässt das Feld
`signature` weg, und die API antwortet auf `GET /desktop/update` mit `204`.
Der In-App-Update-Weg lässt sich lokal also nur mit dem echten Schlüssel
durchspielen (Betriebshandbuch, Kapitel 10). Zwei Hinweise für `tauri dev`:
Dort läuft die App ohne AppImage — den Update-Download (`download_and_install`)
nie auslösen, er würde die Binary in `target/` überschreiben; die
Versionsprüfung selbst ist im Debug-Bau auch gegen `http://localhost`
erlaubt (das Plugin warnt nur, der Release-Bau lehnt `http` ab).
Um das Paket so einzusammeln, wie die API es ausliefern würde:
```bash
sh .gitea/scripts/desktop-collect.sh --require linux