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.
).
potrà essere eliminato).
memorizzandolo, anch’esso, nella medesima cartella.
.
Tale cartella dovrà ospitare tutti i file che si vuole vengano inseriti nell’archivio compresso autoestraente (eseguibili, file batch, librerie, file .VBS,…).
, è 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.
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).
.
Ovviamente il nostro è solo un esempio: nella cartella bin
andranno inseriti tutti i file che dovranno comporre l’eseguibile autoestraente.
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.
, 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.