Un Wizard per l’installazione del software

Dopo aver concluso la stesura di un programma e terminata la fase di debug quello che otteniamo non risulta essere direttamente commerciabile. Infatti, il frutto del nostro lavoro può essere un’applicazione, per esempio un driver per ambiente windows, o un’insieme di files che risultano di difficile utilizzo per un utente finale alle prese, per esempio, con un’eventuale installazione sul proprio computer.

Introduzione

Per dare un'impronta commerciale al nostro progetto dobbiamo confezionarlo, cioè impacchettarlo in maniera professionale per distribuirlo. In questo senso Inno Setup fa proprio a caso nostro: Inno Setup è infatti uno strumento che permette di rendere il nostro programma, sia esso un applicativo o un driver auto-installante per ambiente windows e, non trascurabile, ha il pregio di essere completamente libero (a questo riguardo è opportuno consultare la licenza d’uso).

CARATTERISTICHE PRINCIPALI

Inno Setup è un tool completamente libero e può  essere  utilizzato  anche  per  applicazioni commerciali. Supporta tutte  le versioni di windows e non richiede un particolare service pack. Sommariamente ricordiamo che:

  • Oltre alla possibilità di permettere la suddivisione  della  vostra  applicazione  su  diversi dischi (cosa però ormai non più interessante), Inno Setup consente la creazione di un unico eseguibile di installazione;
  • Supporta l’opzione uninstall, per disinstallare la vostra applicazione dal PC;
  • Inno Setup consente la possibilità, nella procedura di installazione, di modificare e/o aggiungere parametri al registro di windows e al file System.ini;
  • Supporta, diversi linguaggi di installazione;
  • Inno Setup permette la creazione di procedure protette di installazione consentendo l’inserimento di una password per condurre installazioni in forma criptata;
  • Supporta diversi formati di file compressi.

Per generare il file di installazione è necessario scrivere un apposito script, che viene successivamente compilato per produrre il file da installare: Setup.exe. Lo script ha una estensione “.iss” ed è composto da una serie di istruzioni sotto varie sezioni (heading) racchiuse in parentesi quadre. Questi heading non compaiono nello script secondo un ordine alfabetico ma secondo l’ordine con cui vengono utilizzate. Certamente  non  tutte  le  sezioni  previste  da Inno Setup devono essere presenti, ma non possono mancare in ogni script  gli heading “Setup e Files”.

UN  SEMPLICE ESEMPIO

Il listato 1 mostra uno script perfettamente funzionante che si prefigge di installare sul personal computer il cross-compilatore per PowerPC.

[Setup]
AppName=Embedded Toolkit PowerPC (ETK)
AppVerName=powerpc version 0.9
DefaultDirName={pf}\powerpc
DefaultGroupName=Embedded Toolkit PPC
AlwaysCreateUninstallIcon=yes
UninstallLogMode=overwrite
WizardImageFile=dinosaur.bmp
LicenseFile=license.txt

[Files]
Source: “c:\cy\tl\H\bin\*.exe “; DestDir: “c:\cy\tl\H\bin” ; Flags: confirmoverwrite
Source: “c:\cy\tl\H\pe\bin\*.exe “; DestDir: “c:\cy\tl\H\pe\bin” ; Flags: confirmoverwrite
Source: “c:\cy\tl\H\pe\include\*.h “; DestDir: “c:\cy\tl\H\pe\include “ ;
Flags: confirmoverwrite
Source: “c:\cy\tl\H\pe\lib\ldscripts\*.* “; DestDir: “c:\cy\\tl\H\pe\lib\ldscripts “ ;
Flags: confirmoverwrite
Source: “c:\cy\bin\cy1.dll”; DestDir: “c:\cy\tl\H\bin” ; Flags: confirmoverwrite
Source: “c:\cy\bin\make.exe”; DestDir: “c:\cy\tl\H\bin” ; Flags: confirmoverwrite
Source: “c:\cy\tl\H\lib\*.*“; DestDir: “c:\cy\tl\H\lib “ ; Flags: confirmoverwrite
Source: “c:\cy\tl\H\lib\gcc-lib\pe\2.95.2\*.*“; DestDir: “c:\cy\tl\H\lib\gcc-lib\pe\2.95.2 “
Source: “c:\cy\tl\H\lib\gcc-lib\pe\2.95.2\ca\*.*“;
DestDir: “c:\cy\tl\H\lib\gcc-lib\pe\2.95.2\ca “
Source: “c:\cy\tl\H\lib\gcc-lib\pe\2.95.2\include\*.*“;
DestDir: “c:\cy\tl\H\lib\gcc-lib\pe\2.95.2\include “
Source: “c:\cy\tl\H\lib\gcc-lib\pe\2.95.2\lin\*.*“;
DestDir: “c:\cy\tl\H\lib\gcc-lib\pe\2.95.2\lin “ ; Flags: confirmoverwrite
Source: “c:\cy\tl\H\lib\gcc-lib\pe\2.95.2\le\*.*“;
DestDir: “c:\cy\tl\H\lib\gcc-lib\pe\2.95.2\le “
Source: “c:\cy\tl\H\lib\gcc-lib\pe\2.95.2\le\ca\*.*“;
DestDir: “c:\cy\tl\H\lib\gcc-lib\pe\2.95.2\le\ca “
Source: “c:\cy\tl\H\lib\gcc-lib\pe\2.95.2\nof\*.*“;
DestDir: “c:\cy\tl\H\lib\gcc-lib\pe\2.95.2\nof “
Source: “c:\cy\tl\H\lib\gcc-lib\pe\2.95.2\nof\ca\*.*“;
DestDir: “c:\cy\tl\H\lib\gcc-lib\pe\2.95.2\nof\ca “
Source: “c:\cy\tl\H\lib\gcc-lib\pe\2.95.2\nof\le\*.*“;
DestDir: “c:\cy\tl\H\lib\gcc-lib\pe\2.95.2\nof\le “
Source: “c:\cy\tl\H\lib\gcc-lib\pe\2.95.2\nof\le\ca\*.*“;
DestDir: “c:\cy\tl\H\lib\gcc-lib\pe\2.95.2\nof\le\ca “
Source: “c:\gnu\*.*“; DestDir: “c:\cy\gnu “
Source: “c:\inst_powerpc\flashYellow.bmp”; DestDir: “c:\cy\tl “
Source: “c:\inst_powerpc\setup.bat”; DestDir: “c:\cy\tl “
Source: “c:\gnu\gnu\*.*“;
DestDir: “c:\cy\gnu\gnu “
Source: “c:\gnu\gnu\gdb\*.*“;
DestDir: “c:\cy\gnu\gnu\gdb “
Source: “c:\gnu\gnu\gdb\icons\*.*“;
DestDir: “c:\cy\gnu\gnu\gdb\icons “
Source: “c:\gnu\gnu\make\*.*“;
DestDir: “c:\cy\gnu\gnu\make “
Source: “c:\gnu\gnu\toolkit\*.*“;
DestDir: “c:\cy\gnu\gnu\toolkit “
Source: “Readme.txt”; DestDir: “c:\cy” ; Flags: isreadme
Source: “Readme.txt”; DestDir: “c:\cy\work”
Listato 1

La sezione [Setup] sovrintende al controllo generale del programma e la maggior parte dei comandi previsti in questa sezione risultano opzionali. Alcuni comandi utilizzati sono riportati in tabella 1.

Tabella 1. I comandi usati nella sezione [setup] dello script

Tabella 1: i comandi usati nella sezione [setup] dello script

Nella sezione [Files] vengono identificati i files che devono essere copiati e in genere viene utilizzata la stessa notazione utilizzata sotto Dos. È possibile, mediante l’uso di particolari flag, controllare il processo di copia.

Ciascuna linea presente in questa sezione ha il seguente formato:

Source: “SourceFilespec”;
DestDir: “TargetFilspec”;
Flags: FlagParameters;
Attribs: AttributeParameters

La tabella 2 riporta sommariamente la descrizione di ogni campo.

Tabella 2. La descrizione dei campi presenti in ciascuna linea della sessione [File] dello script

Tabella 2: la descrizione dei campi presenti in ciascuna linea della sessione [File] dello script

Il campo flag prevede un insieme molto vasto di possibilità ed è possibile disporre di opzioni multiple separate da una virgola. È possibile utilizzare ad esempio il flag confirmo-verwrite, che abilita la richiesta di conferma per ogni eventuale tentativo di sostituzione di un file. Su tutte le possibili scelte vi rimando alla documentazione del prodotto. Un’ultima considerazione: dal listato 1 troviamo le seguenti istruzioni:

Source: “Readme.txt”; DestDir: “c:\cy” ; Flags: isreadme

Queste sono utili nel caso volessimo visualizzare, al  termine  della  procedura,  un  file  readme.txt. Nella procedura solo un file può essere isreadme.

CONCLUSIONE

Inno Setup è certamente un ottimo strumento per distribuire i propri prodotti attraverso la creazione di  wizard  di installazioni a costo zero.Tutta  la documentazione  è reperibile al sito www.jrsoftware.org, dove è anche possibile scaricare l’applicativo, per chi è interessato è anche possibile ottenere il sorgente completo, scritto in Delphi. Una volta scaricato e installato il prodotto, con l’ausilio della documentazione fornita, è relativamente facile costruirsi la propria installazione.

 

 

Scrivi un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *