Subsections


5.3 Creare un installer Windows

Gli installer di eseguibili sono il formato naturale per le distribuzioni di binari in Windows. Mostrano una gradevole interfaccia utente e forniscono alcune informazioni circa la distribuzione del moduli che deve essere installata, prendendola dai metadata nello script di setup; lasciano all'utente la selezione di alcune opzioni e l'avvio e lo stop dell'installazione.

Siccome i metadata vengono presi dallo script di setup, creare installer per Windows è solitamente tanto facile quanto eseguire:

python setup.py bdist_wininst

o il comando bdist con l'opzione --formats:

python setup.py bdist --formats=wininst

Se si ha a disposizione una distribuzione di moduli puri (contenenti soltanto puri moduli e package Python), il risultante installer sarà una versione indipendente e avrà un nome simile a foo-1.0.win32.exe. Questi installer possono essere creati sia su piattaforme Unix che su quelle Mac OS.

Se si ha a disposizione una distribuzione non pura, le estensioni possono essere create solo su piattaforme Windows e saranno dipendenti dalla versione di Python. Il nome dell'installer riflette questo ed assume la forma di foo-1.0.win32-py2.0.exe. Si deve creare un installer separato per ogni versione Python che si vuole supportare.

L'installer cercherà di compilare i moduli puri in bytecode dopo l'installazione sul sistema di destinazione in modalità normale ed ottimizzata. Se non si vuole che questo accada, si può eseguire il comando bdist_wininst con una od entrambe le opzioni --no-target-compile e --no-target-optimize.

In modo predefinito l'installer mostrerà, una volta avviato, il gradevole logo ``Python Powered'' ma si può anche fornire il progrio logo, che deve essere un file Windows .bmp con l'opzione --bitmap.

L'installer mostrerà anche un grande titolo sullo sfondo della finestra quando viene eseguito, che verrà costruito dal nome della propria distribuzione ed il numero di versione. Questo può essere sostituito con altro testo usando l'opzione --title.

Il file installer verrà scritto nella ``directory di distribuzione'' -- normalmente dist/, ma è personalizzabile con l'opzione --dist-dir.


5.3.1 Lo script di post installazione

A partire da Python 2.3, uno script di post installazione può essere specificato con l'opzione --install-script. Il nome di base dello script deve essere specificato ed il nome dello script deve anche essere elencato nell'argomento degli script nella funzione di setup.

Questo script verrà eseguito durante la fase di installazione sul sistema di destinazione, dopo che tutti i file sono stati copiati, con argv[1] impostato a -install, e nuovamente durante la fase di disinstallazione, prima che i file siano rimossi con argv[1] impostato a -remove.

Lo script di installazione viene eseguito internamente all'installatore di windows, ogni output (sys.stdout, sys.stderr) viene rediretto in un buffer e verrà mostrato nell'ambiente grafico, GUI, dopo che lo script è terminato.

Alcune funzioni particolarmente utili in questo contesto sono disponibili come funzioni integrate aggiuntive nello script di installazione.

directory_created( path)
file_created( path)
Queste funzioni dovrebbero essere chiamate quando una directory o file viene creata dallo script post-install durante la fase di installazione. Si deve registrare path con l'uninstaller, in modo da rimuovere i file quando la distribuzione verrà disinstallata. Per sicurezza, le directory vengono rimosse solo se sono vuote.

get_special_folder_path( csidl_string)
Questa funzione può essere usata per recuperare la posizione delle directory speciali di Windows come il Menu di Avvio o il Desktop. Restituisce il percorso completo della directory. csidl_string deve essere una delle seguenti stringhe:

"CSIDL_APPDATA"

"CSIDL_COMMON_STARTMENU"
"CSIDL_STARTMENU"

"CSIDL_COMMON_DESKTOPDIRECTORY"
"CSIDL_DESKTOPDIRECTORY"

"CSIDL_COMMON_STARTUP"
"CSIDL_STARTUP"

"CSIDL_COMMON_PROGRAMS"
"CSIDL_PROGRAMS"

"CSIDL_FONTS"

Se la directory non può essere recuperata, viene sollevata l'eccezione OSError.

Quale directory è disponibile dipende dalla versione esatta di Windows e probabilmente anche dalla configurazione. Per i dettagli si faccia riferimento alla documentazione Microsoft per la funzione SHGetSpecialFolderPath().

create_shortcut( target, description, filename[, arguments[, workdir[, iconpath[, iconindex]]]])
Questa funzione crea uno shortcut. target è il percorso del programma che deve essere avviato dallo shortcut. description è la descrizione dello shortcut. filename è il titolo dello shortcut che l'utente vedrà. arguments specifica gli argomenti da riga di comando, se ce ne sono. workdir è la directory di lavoro del programma. iconpath è il file contenente l'icona per lo shortcut e iconindex è l'indice dell'icona nel file iconpath. Per ulteriori dettagli si consulti la documentazione Microsoft per l'interfaccia IShellLink.

Vedete Circa questo documento... per informazioni su modifiche e suggerimenti.