Come creare un installer per Windows
Tutti i linguaggi più usati per scrivere avventure non generano file eseguibili (che sarebbero utilizzabili su di una sola famiglia di sistemi operativi), ma bensì generano degli story file che devono essere caricati su di un interprete, e sono quindi indipendenti dal sistema operativo. Tutto questo è ottimo per la portabilità e in generale per l’utente esperto, ma può risultare complicato per il giocatore occasionale.
Questa guida vuole spiegare come realizzare un programma che una volta lanciato installi su di un qualsiasi computer (con sistema operativo Windows) una vostra avventura (in formato Glulx o Z-Code) con tanto di voci nel menù Start, icona sul desktop e uninstaller.
L’installer realizzato seguendo questa guida è destinato ai sistemi operativi Windows (2000, XP, Vista e 7), ma dovrebbe essere eseguibile, tramite Wine o Crossover, anche su sistemi operativi Linux o Mac OsX.
Cosa serve
Anzitutto dovete scaricare il programma NSIS, un creatore di installer potente, flessibile, leggero e open source. Potete scaricarlo da SourceForge (home page ufficiale) o da IfItalia, lanciarlo e scegliere l’opzione per l’installazione completa (full).
Poi vi servirà anche l’ultima versione di Gargoyle (interprete multiformato dalle pregevoli doti tipografiche) per Windows. Vi consigliamo di non scaricare l’installer, ma l’archivio dei file binari; lo potete trovare su Google Code (home page ufficiale) o su IfItalia. Estraete l’archivio in una cartella di vostra scelta.
Infine avete bisogno di questo template di script per NSIS, di un editor di testi (andrebbe bene anche Notepad, ma esistono moltissimi editor gratuiti e molto più avanzati) e di un programma qualsiasi per realizzare immagini in formato bitmap e che possa salvare icone in formato .ico (ad esempio Gimp)
Preparazione
Dovete avere nella stessa cartella (che può essere anche la cartella dove tenete normalmente il gioco, anche se rischiate di avere troppi file):
- il file della vostra avventura in formato Z-Code (.z5, .z8, .zblorb) o Glulx (.ulx, .blb, .gblorb)
- una copia del file template.nsi, rinominata come volete ma sempre con la stessa estensione
- un’immagine in formato bitmap (.bmp), di dimensioni 164 x 314 pixel, che apparirà a sinistra durante l’installazione
- un’icona di windows, chiamata ad esempio icon.ico, di dimensioni 48 x 48 pixel, che verrà usata sia per l’installer che per il gioco
- un file di configurazione di Gargoyle per la vostra avventura, che quindi si chiamerà come il gioco, ma con estensione .ini
- un manualetto in formato .pdf o .html (a titolo d’esempio)
Modifica dello script
NSIS è un programma estremamente versatile, e viene normalmente controllato da un file di script (il vostro file .nsi), la cui sintassi può risultare abbastanza complicata. Per questo motivo partirete da un template generico e lo modificherete secondo le vostre esigenze. Per far ciò aprite con un editor di testi (notepad, o possibilmente qualcosa di meglio) il vostro file .nsi.
Individuate le seguenti righe (da 8 a 15):
!define MUI_ABORTWARNING !define MUI_ICON “icon.ico” !define MUI_WELCOMEPAGE_TITLE “Installazione di $(^Name)” !define MUI_WELCOMEFINISHPAGE_BITMAP “inst_image.bmp” !define MUI_WELCOMEPAGE_TEXT “$(^Name)\r\n\r\nUn’avventura interattiva\r\ndi Autore, 2010.\r\n\r\n$_CLICK” !insertmacro MUI_PAGE_WELCOME !define MUI_STARTMENUPAGE_DEFAULTFOLDER “CartellaMenuAvvio”
Sostutuite a inst_image.bmp
il nome della vostra immagine bitmap, e modificate la stringa Un’avventura interattiva\r\ndi Autore, 2010.
a vostro piacere; la sequenza \r\n
indica il ritorno a capo. Poi sostituite a CartellaMenuAvvio
il nome della cartella che verrà creata nel menù Start.
Passate alle righe da 25 a 30:
Name “Avventura” OutFile “Avventura_Setup.exe” InstallDir “$PROGRAMFILES\Directory” ShowInstDetails show ShowUnInstDetails show BrandingText “Avventura”
Sostituite ad Avventura
il nome del vostro gioco (entrambe le volte), e ad Avventura_Setup
il nome che avrà l’installer una volta creato. Poi sostituite a Directory
il nome della cartella, sotto Programmi, dove verrà installata di default la vostra avventura.
La sezione successiva (righe da 32 a 43) contiene l’elenco dei file che verranno installati:
Section -Files SetOutPath “$INSTDIR\” File “avventura.gblorb” File “avventura.ini” File “manuale.pdf” File “icon.ico” File “pathgargoyle\*.dll” File “pathgargoyle\glulxe.exe” File “pathgargoyle\frotz.exe” File “pathgargoyle\gnu general public license.txt” FILE “pathgargoyle\luxi license.txt” SectionEnd
Sostituite ad avventura.gblorb
il nome del file (z-code o glulx) della vostra avventura, a avventura.ini
il nome del file di configurazione di Gargoyle e a manuale.pdf
il nome del file del manualetto di istruzioni. Poi, nelle 5 righe successive, sostituite a pathgargoyle
il path (assoluto o relativo) della cartella dove avete installato Gargoyle (ad esempio ..\bin\gargoyle
).
Potete aggiungere anche altri file (ad esempio un file contenente la licenza), o addirittura toglierne alcuni, come la configurazione di Gargoyle o il manuale.
La prossima sezione (righe da 45 a 53), un po’ più delicata, si occupa di creare le voci del menù Start e l’icona sul desktop:
Section -Icons !insertmacro MUI_STARTMENU_WRITE_BEGIN Application CreateDirectory “$SMPROGRAMS\$STARTMENU_FOLDER” CreateShortCut “$SMPROGRAMS\$STARTMENU_FOLDER\Avventura.lnk” “$INSTDIR\glulxe.exe” ‘ “$INSTDIR\avventura.gblorb” ’ “$INSTDIR\icon.ico” CreateShortCut “$SMPROGRAMS\$STARTMENU_FOLDER\Manuale di Avventura.lnk” “$INSTDIR\manuale.pdf” CreateShortCut “$SMPROGRAMS\$STARTMENU_FOLDER\Disinstalla Avventura.lnk” “$INSTDIR\uninstall.exe” CreateShortCut “$DESKTOP\Avventura.lnk” “$INSTDIR\glulxe.exe” ‘ “$INSTDIR\avventura.gblorb” ’ $INSTDIR\icon.ico” !insertmacro MUI_STARTMENU_WRITE_END SectionEnd
Sostituite la parola Avventura
(nei due Avventura.lnk
, in Manuale di Avventura.lnk
e in Disinstalla Avventura.lnk
) con il nome del vostro gioco. Di nuovo sostituite ad avventura.blorb
il nome del file della vostra avventura (due volte); se la vostra avventura è in formato Z-code dovete anche sostituire glulxe.exe
con frotz.exe
(di nuovo due volte). Sostituite a manuale.pdf
il nome del file del manualetto (se nella sezione precedente l’avete tolto, eliminate l’intera riga CreateShortCut “$SMPROGRAMS\$STARTMENU_FOLDER\Manuale di Avventura.lnk” “$INSTDIR\manuale.pdf”
).
Le prossime due sezioni che dovrete modificare, e che si occupano della disinstallazione, sono particolarmente delicate. Prendete le righe da 55 a 59: Section -PostInstall
WriteRegStr HKLM “Software\Microsoft\Windows\CurrentVersion\Uninstall\ID_Avventura” “DisplayName” “Avventura (rimozione)” WriteRegStr HKLM “Software\Microsoft\Windows\CurrentVersion\Uninstall\ID_Avventura” “UninstallString” ‘ “$INSTDIR\uninstall.exe” ’ WriteUninstaller “$INSTDIR\uninstall.exe”
SectionEnd
Sostituite a ID_Avventura
, in entrambe le righe, una stringa che identifichi in modo univoco il vostro gioco: il nome del gioco può essere sufficiente se è abbastanza particolare, oppure le vostre iniziali seguite dal nome del gioco (ad es. PL_VillaMorgana). Se avete due o più versioni diverse del gioco (ad esempio in Inglese e in Italiano, o solo testo e con grafica), queste devono essere identificate da stringhe distinte.
Al posto di Avventura (rimozione)
scrivete il nome del vostro gioco (lasciando o togliendo (rimozione), a vostro gusto).
Infine prendiamo l’ultima sezione, le righe da 74 a 84:
Section Uninstall !insertmacro MUI_STARTMENU_GETFOLDER Application $MUI_TEMP Delete “$SMPROGRAMS\$MUI_TEMP\Avventura.lnk” Delete “$SMPROGRAMS\$MUI_TEMP\Manuale di Avventura.lnk” Delete “$SMPROGRAMS\$MUI_TEMP\Disinstalla Avventura.lnk” RMDir “$SMPROGRAMS\$MUI_TEMP\” RMDir “$SMPROGRAMS\$MUI_TEMP\..\” Delete “$DESKTOP\Avventura.lnk” RMDir /r “$INSTDIR” DeleteRegKey HKLM “Software\Microsoft\Windows\CurrentVersion\Uninstall\ID_Avventura” SectionEnd
Sostituite il nome del vostro gioco alla parola Avventura
nei due Avventura.lnk
, in Manuale di Avventura.lnk
e in Disinstalla Avventura.lnk
. Sostituite a ID_Avventura
la stringa che identifica il vostro gioco (stabilita nella sezione precedente).
Salvate il file e uscite dall’editor.
Ultimi passi
Clickate con il tasto destro sul vostro file .nsi e scegliete la voce Compile NSIS Script. Attendete qualche decina di secondi mentre NSIS elabora il vostro script e crea l’eseguibile. Il vostro file (il nome lo avete scelto nello script) dovrebbe apparire nella cartella.
A questo punto eseguitelo, installate la vostra avventura e controllate che funzioni tutto (compreso l’uninstaller).
Se è tutto a posto, potete pubblicare l’installer per windows della vostra avventura. Ricordate però che non tutti usano Windows, e che i giocatori più smaliziati preferiscono usare il loro interprete; pubblicate anche una distribuzione tradizionale dello story file (magari in uno zip assieme con il manuale).
Avanzate: installer in Inglese
La riga 22 dello script è
!insertmacro MUI_LANGUAGE “Italian”
Basta sostituire “English” a “Italian” e, ovviamente, scrivere in Inglese le varie frasi che si incontrano in tutto lo script e che devono essere visualizzate durante l’installazione o la disinstallazione.
Avanzate: Aggiungere nuove voci di Menù
I comandi CreateShortcut
servono a creare voci di menù e icone sul desktop, e potete aggiungerne quanti volete. Inoltre, come già detto, potete aggiungere altre voci all’elenco dei file da installare.
Ad esempio, immaginiamo di voler permettere al giocatore di scegliere, oltre alla versione con grafica (che è già a posto), anche la versione solo testo della nostra avventura. Quindi nella sezione -Files
aggiungiamo la riga
File “nomefile.zblorb”
dove nomefile.zblorb
è il nome del file in formato Z-Code.
Nella sezione -Icons
aggiungiamo le seguenti righe:
CreateShortCut “$SMPROGRAMS\$STARTMENU_FOLDER\Avventura (solo testo).lnk” “$INSTDIR\frotz.exe” ‘ “$INSTDIR\nomefile.zblorb” ’ $INSTDIR\icon.ico” CreateShortCut “$DESKTOP\Avventura (solo testo).lnk” “$INSTDIR\frotz.exe” ‘ “$INSTDIR\nomefile.zblorb” ’ $INSTDIR\icon.ico”
ovviamente modificate in accordo con il resto dello script.
E infine nella sezione Uninstall
aggiungiamo le righe (adattate):
Delete “$SMPROGRAMS\$MUI_TEMP\Avventura (solo testo).lnk” Delete “$DESKTOP\Avventura (solo testo).lnk”
prima del comando DeleteRegKey
.
Salvate, compilate e provate.
Avanzate: Usare un interprete diverso
Se preferite usare un interprete diverso da Gargoyle, potete farlo. Scaricate l’interprete di vostra scelta in una cartella e sostituite, nella sezione -Files
, le righe:
File “pathgargoyle\*.dll” File “pathgargoyle\glulxe.exe” File “pathgargoyle\frotz.exe” File “pathgargoyle\gnu general public license.txt” FILE “pathgargoyle\luxi license.txt”
con un elenco dei file necessari (in genere tutti tranne gli esempi) del vostro interprete, ovviamente con il loro percorso assoluto o relativo. Potete usare caratteri speciali come *
(ad esempio *.dll
indica tutti i file con estensione .dll).
Poi nella sezione -Icons
modificate, se necessario, i vari comandi CreateShortCut
sostituendo a glulxe.exe
o frotz.exe
il comando d’avvio del vostro interprete.
Salvate, compilate e provate.