Nicht alle mögen Installer, also wollte ich doch gerne auch noch parallel zip-Dateien anbieten.
Zwei Dateien bedeutet doppelte Pflege, das ist recht nervig, aber zum Glück gibt es Abhilfe.
Erst habe ich geschaut, ob der Nullsoft-Installer wohl auch automatisch zip-Dateien erzeugen kann. Dazu hab ich aber erstmal nichts gefunden. Allerdings liegt bei mir auch der Spezialfall vor, dass das komplette Spiel samt Assets und Konfigurationsdateien in ein einzelnes Verzeichnis (mit Schreibrechten, für Savegames etc.) extrahiert wird. Das Spiel hat zwar intern schon Logik, um Dateien aus verschiedenen Data- und User- Verzeichnissen zu laden, aber die zeigen beide auf das selbe Verzeichnis. Weil Dinge, die simpel sind, seltener kaputt gehen.
Die Lösung war es dann, 7zip zu benutzen. Das kann ja fast alles öffnen, unter anderem auch NSIS Installer exe-Dateien. Und netterweise liegen dort alle Installerresourcen in einem separaten Unterordner. Also per Kommandozeile den Installer in ein temporäres Verzeichnis entpacken, das Installerunterverzeichnis löschen, und alles wieder neu in eine zip-Datei packen. Führte zumindest bei meinem Installer im obigen Spezialfall zu identischen Ergebnissen. Dank 5 Zeilen .bat Datei baue ich dann jetzt mit einem Klick identische Installer und zips:
Code: Alles auswählen
makensis installer.nsi
REM: Create the zip file from the installer
@RD /S /Q c:\tmp\installer
7z x "Water Breakout 1.2 Setup.exe" -oc:\tmp\installer
@RD /S /Q -oc:\tmp\installer "c:\tmp\installer\$PLUGINSDIR"
7z a "Water Breakout 1.2.zip" c:\tmp\installer\*
@RD /S /Q c:\tmp\installer
Ich hatte irgendwo anders schonmal geschrieben, dass es auch das Problem gibt, dass das bin-Verzeichnis auf meiner Festplatte nicht unbedingt identisch zu dem, was später in Installer landen soll ist. Teilweise, weil ich aus Bequemlichkeit ein paar Development-Dinge da liegen habe (ein schnelles Script, das irgendwas mit den Assets macht, z.B.), andererseits weil so Dinge wie Highscore und Config natürlich für die Installation frisch und neu sein sollen.
Das kann man aber im Installer-Scrip regeln: Statt der "config.json" wird dann halt die "config_fresh.json" geladen und im Installer in "config.json" umbenannt. So kann man dann idealerweise am Spiel rumbasteln und sobald man zufrieden ist einen Knopf drücken und hat die neue Version. Die ist davon zwar noch lange nicht auch auf meiner Webseite, aber das ist ein Thema für einen anderen Tag.