# 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:** Bei jedem Start fragt der Launcher, ob ein neues Update (Launcher oder Mod) installiert werden soll; dazu neueste Mod-Version vor jedem Spielstart (abschaltbar). 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 -p:BsoRelease=true # bauen + als Gitea-Release veroeffentlichen .\release.ps1 -Product launcher -Version 0.3.2 -File publish\BSO-Launcher.exe # oder von Hand ``` Updates kommen aus den **Gitea-Releases** auf git.mbm.wtf (Mod: `MrMaho/BSO-Mod`, Launcher: `MrMaho/BSO-Launcher`, beide öffentlich). Jedes Release hat die Datei und `bso-release.json` (Version, SHA-256, Signatur). Ist Gitea nicht erreichbar, fragt der Launcher die Website; mit `-dev` umgekehrt. ## 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 `new-release-key.ps1` legt einmalig den Schlüssel an (RSA 3072, privater Teil DPAPI-verschlüsselt unter `%APPDATA%\BSO\release-key.dpapi`) und trägt den öffentlichen Teil in `Services\ReleaseSignature.cs` ein. `release.ps1` (in BSO-Mod und BSO-Launcher) signiert damit `BSO-RELEASE|produkt|version|sha256` und legt das Gitea-Release an – braucht `BSO_GITEA_TOKEN` (Gitea: Einstellungen → Anwendungen → Token mit *repository: Lesen und Schreiben*), gern als Windows-Benutzervariable. **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 | `\Bin_High_Win64\dinput8.dll` und `BSO\` |