Molti degli utilizzatori di Firefox o di Thunderbird hanno a che fare quotidianamente con postazioni aziendali, tipicamente blindate o per lo meno molto limitate in quanto utilizzate con account non amministrativi. Difficile in queste condizioni contattare il proprio supporto IT, a meno che i software Mozilla non vengano riconosciuti come aziendali, e quindi si possa chiedere assistenza per un aggiornamento automatico.
Per questo motivo noi di Mozilla Italia scegliamo di rilasciare versioni ZIP dei software in concomitanza con ogni nuova versione del browser o del client di posta. Sulla nostra pagina download potrete sempre trovare un collegamento diretto ai file ZIP ospitati su Sourceforge, che vi permetteranno così di avere l’ultima versione del software desiderato senza la necessità di passare dal setup.
Release2Zip è un’idea nata da Sandro ‘gialloporpora‘ per cercare di automatizzare l’operazione di pacchettizzazione del software, tipicamente eseguita a mano dal sottoscritto o da un collega in quanto molto semplice e veloce. Il piccolo progetto ha visto poi me intervenire per alcuni miglioramenti e correzione negli script che vi descriverò in questo articolo e che sono disponibili sulla pagina ufficiale su mozillaitalia.github.io/r2z.
Vi spiego di cosa si tratta!
Come realizzare il pacchetto ZIP partendo dall’installer
La procedura si basa su Mozilla Firefox ma rimane la stessa identica sia per Thunderbird che per Seamonkey, vi basterà semplicemente avere 7-Zip installato sulla vostra macchina.
Una volta scaricata l’ultima versione disponibile dal nostro sito web o da “getfirefox.com” vi basterà fare clic sul file con il tasto destro quindi scegliere 7-Zip / Apri. Tutti i file contenuti all’interno della cartella “core32” costituiscono la versione scaricata del programma, facendo partire Firefox.exe questo si aprirà creando (a meno che non esista già) la cartella del profilo e vi permetterà di iniziare a navigare sul web con l’ultima versione del software!
Questo è il semplice metodo attraverso il quale vi forniamo archivi sempre aggiornati.
Automatizzare l’operazione
Automatizzare l’operazione vuol dire tradurre quanto appena detto in poche righe in codice che faccia –con un semplice doppio clic– tutto il lavoro sporco, consegnandovi come risultato il file ZIP contenente il nuovo software, senza aspettare una nostra pubblicazione.
I server utilizzati per effettuare il download del software sono quelli di Mozilla, i primi quindi a rendere disponibile l’ultima versione dei propri prodotti, non c’è modo di sbagliarsi né tanto meno di arrivare secondi! Il resto è puro codice, ve lo ripropongo qui prendendo ad esempio quello che si occupa di pacchettizzare Firefox (fx2zip.bat):
@echo off set app=Firefox set lowerapp=firefox cls echo Mozilla Italia Release2Zip Suite echo %app%2Zip 0.3 echo Scarica e crea il pacchetto ZIP per l'ultima versione di %app% echo Applicazione rilasciata as-is, per info consultare http://mozillaitalia.github.io/r2z echo --- echo; REM inizio set useragent="MozillaItalia-Downloader/1.0" REM Acquisizione della configurazione dal file config.txt FOR /F "delims=== tokens=1,2" %%i in (config.txt) do set %%i=%%j REM Se vengono specificati il secondo e terzo parametro da commandline vengono sovrascritte le impostazioni del file di configurazione REM relative al tipo di archivio e al livello di compressione if "%2" neq "" set archivetype=%2 if "%3" neq "" set level=%3 if "%1"=="" goto noparams :normal: set ver=%1 set url=http://pv-mirror02.mozilla.org/pub/mozilla.org/%lowerapp%/releases/%ver%/win32/%lang%/%app%%%20Setup%%20%ver%.exe goto buildarchive REM Gestione del mancato download del file da parte di wget :wgeterror: echo; echo ATTENZIONE echo Si e' verificato un errore cercando di scaricare il file echo Riprova piu' tardi o contatta gli sviluppatori se il problema persiste echo; goto end :noparams: set url=http://releases.mozilla.org/pub/mozilla.org/%lowerapp%/releases/latest/win32/%lang%/ wget -U %useragent% %url% -O temptemp.html if %errorlevel% neq 0 goto wgeterror ssed -n -e "/<a href=.*.exe[^.]/{s/.*<a href=.(.*.exe)[^>]*>[^0-9]*([0-9.]*).exe</a>.*/1;2/;p}" temptemp.html > temptemp.txt for /F "delims=; tokens=1,2" %%i in (temptemp.txt) do ( set url=%url%%%i set ver=%%j ) del temptemp.txt del temptemp.html :buildarchive: wget -U %useragent% %url% -O temptemp.exe if %errorlevel% neq 0 goto wgeterror set output=%lowerapp%-%ver%-%lang%.win32.%archivetype% 7z x temptemp.exe core sleep 3 if exist %lowerapp% rd /S /Q %lowerappapp% ren core %lowerapp% if %includedict%==false goto createarchive if not exist dictionaries dwdict %lang% :packdict: md %app%dictionaries md %app%hyphenation copy dictionarieshyph* %app%hyphenation copy dictionaries* %app%dictionaries REM rd /s /q dictionaries if %includelauncher%==false goto createarchive set sed="s/#app#/%lowerapp%/" ssed -e %sed% launcherlauncher_prototype.bat > %app%launcher.bat xcopy /E launcher* %app% /exclude:exclude.txt :createarchive: 7z a -t%archivetype% "%output%" %lowerapp% %level% sleep 3 if exist %lowerapp% rd /S /Q %lowerapp% if exist %app% rd /S /Q %app% del temptemp.exe move "%output%" archive sleep 3 if exist core rd /S /Q core REM md5sum %output% > md5.txt echo; echo OK, verificare che il pacchetto sia correttamente funzionante. :end: echo.
Al meno esperto basti sapere che eseguendo il file con un doppio clic (come qualsiasi altro programma), partirà il download del software e la sua pacchettizzazione in file ZIP, come mostrato in questo video che ho catturato dal mio desktop:
A quello più smaliziato e a cui piace studiare il codice dedico giusto un paio di righe per far notare che lo script può prendere in ingresso più di un parametro, utile per indicare la versione di Firefox da scaricare, il tipo di archivio da creare (quale estensione utilizzare) e con quale compressione.
Nel caso in cui non si voglia specificare nessun parametro particolare, i valori di default prevedono che la versione da scaricare sia l’ultima disponibile (del ramo stabile), creando un file ZIP con compressione normale, per un totale di circa 20MB di occupazione disco nella maggior parte dei casi (e da diverse versioni a questa parte).
Non c’è possibilità di fare danni, nel caso in cui cancellaste un file necessario per il funzionamento del codice potrete sempre scaricare nuovamente l’archivio script dalla pagina ufficiale del progetto.
Sandro ha voluto arricchire ulteriormente il downloader dando la possibilità di includere nel pacchetto anche i file del dizionario, semplicemente modificando un file di configurazione che viene analizzato dallo script batch originale.
Questa e molte altre funzioni sono descritte all’interno del file Readme che entrambi modifichiamo ogni volta che mettiamo mano allo script aggiornando, modificando o togliendo funzionalità. Dalla pagina del progetto c’è un collegamento diretto al file readme più aggiornato, preso direttamente dalla cartella di sviluppo comune, impossibile non essere al nostro stesso passo! :-)
D&D: Download & Divertimento
Potete fare quello che volete, gli script sono stati realizzati per velocizzare quello che è il nostro pacchettizzare Firefox (e Thunderbird o Seamonkey), consentendovi così di scaricare un file ZIP sempre nuovo da Sourceforge. Abbiamo voluto condividere con voi questo codice affinché si possano aggiungere sempre nuove persone che in piena autonomia riescano a eseguire un lavoro pulito senza la necessità di cercare in Google il “HowTo” di turno. Avere l’ultima versione del software Mozilla senza la necessità di credenziali amministrative che lancino il setup è una delle richieste più comuni nel forum di supporto, almeno in passato.
Suggerimenti? Idee? Critiche? Potete dirci ciò che volete semplicemente lasciando un commento qui o se preferite sul nostro forum.
http://mozillaitalia.github.io/r2z
Buon divertimento :-)
Il progetto approda su GitHub! D’accordo con Sandro e dietro giusta proposta dei colleghi in Mozilla Italia, ho aperto un account attraverso il quale ho poi creato un nuovo repository che ospita ora r2z. Trovate tutti i codici sorgenti su github.com/mozillaitalia/r2z, ho anche provveduto ad aggiornare la pagina ufficiale del progetto con i nuovi riferimenti.
L'articolo potrebbe non essere aggiornato
Questo post è stato scritto più di 5 mesi fa, potrebbe non essere aggiornato. Per qualsiasi dubbio ti invito a lasciare un commento per chiedere ulteriori informazioni! :-)