Beim Start installiert sich ein neuer Launcher sofort selbst (Fortschrittsfenster, Neustart), neue BSO-Versionen kommen nach dem Anmelden - beides abschaltbar. Einstellungen: Nach Updates suchen / Installieren und neu starten. Updates wieder nur von der Website; dotnet publish laedt hoch (release.ps1). Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
74 lines
4.2 KiB
Markdown
74 lines
4.2 KiB
Markdown
# BSO Launcher
|
||
|
||
Launcher für **BSO – Bus Simulator Online** (Multiplayer-Mod für Bus-Simulator 2012), aufgebaut wie der MSCO Launcher:
|
||
WinForms-Fenster mit WebView2, die Oberfläche (`ui\`) ist in der .exe eingebettet.
|
||
|
||
- Mod: [BSO-Mod](https://git.mbm.wtf/MrMaho/BSO-Mod)
|
||
- Lobby-Server (ohne Portfreigabe): [BSO-Relay](https://git.mbm.wtf/MrMaho/BSO-Relay)
|
||
- Website, Konten, Freunde, Lobbys, Releases: [BSO-Website](https://git.mbm.wtf/MrMaho/BSO-Website)
|
||
|
||
## Features
|
||
|
||
- **Setup-Assistent:** Die heruntergeladene `BSO-Launcher-Setup.exe` (dieselbe signierte Datei wie der Launcher) fragt nach
|
||
Sprache, Ordner (Standard `%LocalAppData%\Programs\BSO Launcher`, nur Ordner ohne Admin-Rechte) und Verknüpfungen
|
||
(Desktop, Startmenü), installiert mit Fortschrittsanzeige und trägt sich unter *Einstellungen → Apps* ein. Ist dieselbe
|
||
oder eine neuere Version installiert, bietet es Starten an. `--portable` startet ohne Installation.
|
||
- **BSO-Konto:** Registrieren und Anmelden bei der BSO-Website. Die Anmeldung bleibt 30 Tage (Token DPAPI-verschlüsselt).
|
||
Der Kontoname ist der Name im Spiel.
|
||
- **Auto-Update (wie MSCO):** Beim Start installiert sich ein neuer Launcher sofort selbst und startet neu; neue Mod-
|
||
Versionen kommen beim Start und vor jedem Spielstart (beides abschaltbar). Einstellungen: *Nach Updates suchen*.
|
||
Downloads sind fortsetzbar, SHA-256-geprüft und müssen mit dem **BSO-Release-Schlüssel signiert** sein.
|
||
- **Prüft alles:** Spielordner (alle Steam-Bibliotheken), BSO-Version, .NET 10 Runtime (braucht die Mod).
|
||
- **Freunde & Lobby:** Freunde per Benutzername hinzufügen (online-Anzeige), Lobby erstellen, einladen - SPIELEN des Erstellers startet den Lobby-Server.
|
||
Der Server läuft im BSO-Relay – niemand hostet, niemand braucht eine Portfreigabe.
|
||
- **SPIELEN:** holt ein Spiel-Ticket (in der Lobby: für deren Server) und die Relay-Adresse, schreibt beides in
|
||
`BSO.json`, startet Bus-Simulator 2012 über Steam und verbindet automatisch.
|
||
- **Mod herunterladen** holt jederzeit die neueste Mod.
|
||
- Neuigkeiten (Changelogs), Einstellungen, Deinstallieren.
|
||
|
||
## Bauen und veröffentlichen
|
||
|
||
```powershell
|
||
dotnet publish -c Release -o publish # bauen - und die neue Version gleich auf https://bso.mbm.wtf laden
|
||
```
|
||
|
||
Wie bei MSCO: `dotnet publish` ruft `release.ps1` auf – signiert die .exe und lädt sie mit Changelog (Abschnitt
|
||
`## <Version>` aus `CHANGELOG.md`) auf die Website. Gibt es die Version schon, passiert nichts; also Version in der
|
||
`.csproj` erhöhen und bauen. `BSO_NO_RELEASE=1` baut nur. Der Launcher holt seine Updates von der Website.
|
||
|
||
## Gegen die lokale Test-Website (`-dev`)
|
||
|
||
```powershell
|
||
BSO-Launcher.exe -dev # nimmt http://localhost:5080 statt https://bso.mbm.wtf
|
||
```
|
||
|
||
- `-dev` bleibt beim Selbst-Installieren und beim Selbst-Update erhalten; die installierte Kopie startet man genauso:
|
||
`"%LocalAppData%\Programs\BSO Launcher\BSO-Launcher.exe" -dev`.
|
||
- Eigene Anmeldung (`settings.dev.json`) – Test- und echtes Konto kommen sich nicht in die Quere.
|
||
- Gelbes **DEV**-Schild in der Titelleiste, im Fenstertitel und unter dem Anmelden-Formular steht die Adresse.
|
||
- Beliebiger anderer Server: Umgebungsvariable `BSO_LAUNCHER_API` (geht vor `-dev`).
|
||
|
||
Lokale Website starten: im BSO-Website-Repo `dotnet run --urls http://localhost:5080`.
|
||
|
||
## Release-Schlüssel
|
||
|
||
Geheimnisse liegen DPAPI-verschlüsselt unter `%USERPROFILE%\.bso\` (wie `.msco` bei MSCO):
|
||
|
||
| | Datei | Einrichten |
|
||
|---|---|---|
|
||
| Release-Token (`RELEASE_TOKEN` der Website) | `release-token.dpapi` | `release.ps1 -SaveToken` (oder `BSO_RELEASE_TOKEN`) |
|
||
| Signier-Schlüssel (RSA 3072) | `release-signing-key.dpapi` | `release.ps1 -ImportSigningKey <sicherung>` |
|
||
|
||
Sicherung: `release.ps1 -ExportSigningKey <datei>` (AES-256, eigenes Passwort). Ein ganz neues Paar nur im Notfall:
|
||
`new-release-key.ps1` (trägt den öffentlichen Teil in `Services\ReleaseSignature.cs` ein).
|
||
|
||
**Den Schlüssel sichern:** Mit einem neuen Schlüssel erkennen bereits verteilte Launcher keine Updates mehr.
|
||
|
||
## Daten
|
||
|
||
| Was | Wo |
|
||
|---|---|
|
||
| Einstellungen, Anmeldung | `%LocalAppData%\BSO Launcher\settings.json` |
|
||
| Protokoll | `%LocalAppData%\BSO Launcher\launcher.log` |
|
||
| Mod | `<Spielordner>\Bin_High_Win64\dinput8.dll` und `BSO\` |
|