20652 Letture

Come creare un file d'installazione autoestraente con 7zSD

7-Zip è il noto software per la compressione di file e cartelle distribuito come prodotto opensource, sotto licenza GNU LGPL (ved. questa pagina per maggiori informazioni sulla tipologia di licenza). Già a suo tempo (ved. questo nostro articolo) abbiamo illustrato nel dettaglio il funzionamento di 7-Zip spiegando come il software possa essere impiegato per creare archivi autoestraenti.

Non sono però in molti a conoscere 7zSD, un modulo non ufficiale in grado di consentire la generazione di veri e propri file d'installazione, liberamente personalizzabili in tutti i loro aspetti.
Si supponga di voler trasmettere ad un utente un eseguibile che, per il suo corretto funzionamento, richiede alcune librerie e, ad esempio, l'avvio di un file specifico o l'inserimento, nel registro di sistema di Windows, di certe informazioni. 7zSD consente di generare un archivio autoestraente unico, che comprenda tutti gli elementi necessari, e di eseguire tutte le operazioni necessarie prima dell'avvio del file.

Per generare un file d'installazione con 7zSD, innanzi tutto, è necessario scaricare questo file e memorizzarlo in una cartella di propria scelta, sul disco fisso. Il contenuto di tale file compresso (un unico file chiamato 7zsd.sfx) dovrà essere estratto nella medesima cartella ricorrendo alla versione di 7-Zip dotata d'interfaccia grafica (che dovrà risultare già installata sul sistema in uso; il programma è scaricabile gratuitamente da questa scheda).


Cliccando qui si dovrà quindi effettuare il download della versione di 7-Zip basata su riga di comando estraendo solamente il file denominato 7za.exe contenuto nell'archivio compresso memorizzandolo nella stessa directory ove si è precedentemente salvato il file 7zsd.sfx (l'archivio 7zsd_141_2100.7z potrà essere eliminato).

Facendo riferimento a questo link, si potrà poi scaricare UPX, un software opensource che usa un particolare algoritmo di compressione per ridurre le dimensioni dei file eseguibili. Dall'archivio compresso di UPX, si dovrà estrarre solamente il file upx.exe memorizzandolo, anch'esso, nella medesima cartella.

A questo punto, sempre all'interno della medesima directory, si dovrà provvedere a creare una sottocartella denominata bin.
Tale cartella dovrà ospitare tutti i file che si vuole vengano inseriti nell'archivio compresso autoestraente (eseguibili, file batch, librerie, file .VBS,...).

Utilizzando un software come Resource Hacker, prelevabile cliccando qui, è possibile modificare l'icona dell'eseguibile che si otterrà (contenente, a sua volta, tutti i file necessari per il corretto funzionamento dell'applicazione).
Per procedere, è sufficiente estrarre il contenuto dell'archivio ResHack.zip in una cartella di propria scelta quindi avviare ResHacker.exe.
Cliccando sul menù File, Open si dovrà scegliere il file 7zsd.sfx, fare doppio clic sul ramo Icon group, sul valore 101 quindi su 1049. Per modificare le icone correntemente utilizzate, è sufficiente farvi clic quindi ricorrere al comando Action, Replace icon. Se si volesse utilizzare una delle icone predefinite di Windows, è possibile digitare %SystemRoot%\system32\SHELL32.dll nella finestra di dialogo che apparirà cliccando sul pulsante Open file with new icon.

Il pulsante Replace, in basso a destra, permetterà di effettuare la sostituzione dell'icona.
Per rendere effettive le varie modifiche applicate, si dovrà cliccare sul menù File, Save. Nella medesima cartella si troverà il file 7zSD_original.sfx: si tratta della versione originale del file che potrà essere usata a mo´ di backup.

Nella stessa cartella ove si è memorizzato il file 7zsd.sfx, si dovrà poi creare un file denominato Config.txt incollando, al suo interno, le operazioni che dovranno essere automaticamente effettuate non appena l'utente cliccherà due volte sul file eseguibile autoestraente.

Proviamo ad inserire quanto segue:

;!@Install@!UTF-8!
InstallPath="%TEMP%\\TV_TEMP"
RunProgram="hidcon:%TEMP%\\TV_TEMP\\avvia.bat"
;!@InstallEnd@!


Il primo parametro (InstallPath) viene utilizzato per indicare la cartella ove i file contenuti nell'archivio (cartella bin) dovranno essere automaticamente estratti. Il secondo parametro, viene invece utilizzato per eseguire un file contenuto nella directory di destinazione.
L'elenco completo dei parametri utilizzabili nel file di configurazione di 7zSD è pubblicato a questo indirizzo.
Ricorrendo, ad esempio, a BeginPrompt ed ExtractPath si potranno eventualmente mostrare, rispettivamente, un messaggio informativo o gestire la cartella di destinazione impostabile manualmente dall'utente.
Nel nostro caso, abbiamo scelto di estrarre il contenuto del file compresso in una sottodirectory della cartella temporanea usata abitualmente da Windows. Nel file batch avvia.bat abbiamo inserito quanto segue:


CD %TEMP%\TV_TEMP
tv.vbs
CD %TEMP%
RD %TEMP%\TV_TEMP /q /s


Il file batch provvede a richiamare lo script tv.vbs il quale, a sua volta, si fa carico di effettuare il download della versione più aggiornata del software "TeamViewer QuickSupport" (per maggiori informazioni, suggeriamo di consultare questo articolo e questo approfondimento).

Sia il file avvia.bat che lo script tv.vbs (il cui contenuto è pubblicato a questo indirizzo) dovranno essere salvati nella sottocartella bin.
Ovviamente il nostro è solo un esempio: nella cartella bin andranno inseriti tutti i file che dovranno comporre l'eseguibile autoestraente.

E' tutto pronto. Nella stessa cartella ove risiede il file 7zsd.sfx, è necessario creare un file crea.cmd inserendo, al suo interno, quanto segue:

upx --ultra-brute 7zsd.sfx
cd Bin
..\7za a -mx=9 "..\app.7z" *
cd ..
copy /b 7zsd.sfx + Config.txt + app.7z nome_del_file_da_generare.exe
del app.7z


Al posto della stringa nome_del_file_da_generare deve essere indicato il nome che s'intende assegnare all'eseguibile autoestraente.

Da ultimo, facendo doppio clic sul file crea.cmd, l'eseguibile verrà automaticamente generato.
Nel nostro esempio, facendo doppio clic su di esso, verrà scaricata ed avviata automaticamente l'ultima versione di Teamviewer QuickSupport, un software per l'amministrazione remota del sistema sul quale il programma viene eseguito.


  1. Avatar
    grillo1939
    13/09/2011 18:39:37
    Ottimo articolo per i dilettanti come me, con la speranza di riuscire a mettere in pratica quanto scritto nell'articolo
Come creare un file d'installazione autoestraente con 7zSD - IlSoftware.it