- MSCO.csproj is SDK-style now (net35 via Microsoft.NETFramework.ReferenceAssemblies): builds with "dotnet build -c Release" on Windows and macOS; game DLL folder via MSC_MANAGED / -p:MscManaged (default: the game folder). Output verified identical in structure (references, types, methods, resources) to the old project. - release.ps1 works with Windows PowerShell 5.1 and PowerShell 7: secrets in DPAPI files on Windows, in the macOS keychain on a Mac (file with chmod 600 on Linux); cross-platform RSA/password input; release target calls pwsh on non-Windows - RELEASING.md: how to release and how to set up the Mac Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
3.5 KiB
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
- Version erhöhen: Mod in
MSCO.cs(ModVersion), Launcher inMSCO.Launcher.csproj(<Version>) – und den Abschnitt## <Version>in der jeweiligenCHANGELOG.md(wird zum Changelog auf der Website/im Launcher). - Bauen:
- Mod: im Ordner
MSCO→dotnet build -c Release - Launcher: im Ordner
MSCO.Launcher→dotnet publish -c Release
- Mod: im Ordner
- 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. - Code committen und pushen.
Einrichten auf Windows
Läuft schon (Token und Schlüssel liegen in %USERPROFILE%\.msco). Neuer PC:
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)
- Werkzeuge: .NET 10 SDK und PowerShell 7:
brew install --cask dotnet-sdk powershell - Repositories klonen (
MSCO,MSCO-Launchervon git.mbm.wtf). - NAS verbinden (Finder → Gehe zu → Mit Server verbinden →
smb://mbmnas/mrmaho) – erscheint unter/Volumes/mrmaho. - Spiel-DLLs zum Kompilieren der Mod (UnityEngine, Assembly-CSharp, PlayMaker, cInput) liegen unter
MSCOModBackupData/Managedauf dem NAS. Am besten einmal lokal kopieren und den Ordner merken:mkdir -p ~/MSC-Managed && cp /Volumes/mrmaho/MSCOModBackupData/Managed/*.dll ~/MSC-Managed/ echo 'export MSC_MANAGED="$HOME/MSC-Managed"' >> ~/.zshrc && source ~/.zshrc - Token und Schlüssel in den Schlüsselbund:
pwsh MSCO/release.ps1 -SaveToken pwsh MSCO/release.ps1 -ImportSigningKey /Volumes/mrmaho/MSCOModBackupData/msco-signing-key-backup.txt - 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).