# Updates veröffentlichen (Mod & Launcher) Neue Versionen der Mod und des Launchers landen beim Bauen automatisch auf dem Keymaster (`release.ps1`). Jede Datei wird dabei mit dem privaten Release-Schlüssel **signiert** – der Launcher und das Setup installieren nur signierte Dateien. Dafür braucht der Rechner, auf dem gebaut wird, zwei Geheimnisse: | | Windows | macOS | |---|---|---| | Release-Token (Keymaster `RELEASE_TOKEN`) | `%USERPROFILE%\.msco\release-token.dpapi` (DPAPI) | Schlüsselbund: *MSCO release-token* | | Signier-Schlüssel (RSA-3072) | `%USERPROFILE%\.msco\release-signing-key.dpapi` (DPAPI) | Schlüsselbund: *MSCO release-signing-key* | Sicherung des Schlüssels: `\\mbmnas\mrmaho\MSCOModBackupData\msco-signing-key-backup.txt` (AES-256, eigenes Passwort – das Passwort **nicht** auf dem NAS speichern). ## Ablauf 1. Version erhöhen: Mod in `MSCO.cs` (`ModVersion`), Launcher in `MSCO.Launcher.csproj` (``) – und den Abschnitt `## ` in der jeweiligen `CHANGELOG.md` (wird zum Changelog auf der Website/im Launcher). 2. Bauen: - Mod: im Ordner `MSCO` → `dotnet build -c Release` - Launcher: im Ordner `MSCO.Launcher` → `dotnet publish -c Release` 3. Die Ausgabe zeigt `MSCO release: mod 2.x.y uploaded to https://msco.mbm.wtf`. Gibt es die Version schon, passiert nichts. `MSCO_NO_RELEASE=1` (Umgebungsvariable) baut, ohne hochzuladen. 4. Code committen und pushen. ## Einrichten auf Windows Läuft schon (Token und Schlüssel liegen in `%USERPROFILE%\.msco`). Neuer PC: ```powershell powershell -ExecutionPolicy Bypass -File MSCO\release.ps1 -SaveToken powershell -ExecutionPolicy Bypass -File MSCO\release.ps1 -ImportSigningKey \\mbmnas\mrmaho\MSCOModBackupData\msco-signing-key-backup.txt ``` > In einem PowerShell-Fenster **ohne** „Als Administrator ausführen“ – sonst sind Netzlaufwerke wie `Z:` nicht da > (der Pfad `\\mbmnas\mrmaho\…` geht in beiden). ## Einrichten auf dem Mac (nur bauen/veröffentlichen – das Spiel gibt es nur für Windows) 1. Werkzeuge: [.NET 10 SDK](https://dotnet.microsoft.com/download) und PowerShell 7: ```bash brew install --cask dotnet-sdk powershell ``` 2. Repositories klonen (`MSCO`, `MSCO-Launcher` von git.mbm.wtf). 3. NAS verbinden (Finder → *Gehe zu* → *Mit Server verbinden* → `smb://mbmnas/mrmaho`) – erscheint unter `/Volumes/mrmaho`. 4. Spiel-DLLs zum Kompilieren der Mod (UnityEngine, Assembly-CSharp, PlayMaker, cInput) liegen unter `MSCOModBackupData/Managed` auf dem NAS. Am besten einmal lokal kopieren und den Ordner merken: ```bash mkdir -p ~/MSC-Managed && cp /Volumes/mrmaho/MSCOModBackupData/Managed/*.dll ~/MSC-Managed/ echo 'export MSC_MANAGED="$HOME/MSC-Managed"' >> ~/.zshrc && source ~/.zshrc ``` 5. Token und Schlüssel in den Schlüsselbund: ```bash pwsh MSCO/release.ps1 -SaveToken pwsh MSCO/release.ps1 -ImportSigningKey /Volumes/mrmaho/MSCOModBackupData/msco-signing-key-backup.txt ``` 6. Danach wie oben: `dotnet build -c Release` (Mod) bzw. `dotnet publish -c Release` (Launcher). Nach einem Spiel-Update (neue `Assembly-CSharp.dll` usw.) die DLLs auf dem NAS bzw. in `~/MSC-Managed` erneuern. ## Neuer Schlüssel? Nur im Notfall (Schlüssel verloren): `release.ps1 -NewSigningKey` erzeugt ein neues Paar – dann muss der neue öffentliche Schlüssel in `MSCO.Launcher/Services/ReleaseSignature.cs` und `MSCO.Launcher/Setup/Install.cs`, und Spieler mit einem älteren Launcher müssen ihn einmal neu installieren (ihr Launcher lehnt die neuen Signaturen ab).