Mozilla Italia Release2Zip: crea la distribuzione ZIP dei prodotti Mozilla in autonomia

Gioxx  —  18/04/2012 — 6 Comments

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 Sandrogialloporpora‘ 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 mozilla.gfsolone.com/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://noads.it/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://noads.it/r2z

Buon divertimento :-)

AGGIORNAMENTO 23/05/2012
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/gioxx/r2z, ho anche provveduto ad aggiornare la pagina ufficiale del progetto con i nuovi riferimenti.
ATTENZIONE: 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! :)

  • Giuliano

    sm2zip non funziona.
    Si ottiene questo errore:

    ——————————————————————————-
    Mozilla Italia Release2Zip Suite SeaMonkey2Zip 0.1S
    Scarica e crea il pacchetto ZIP per l’ultima versione di eaMonkey
    Applicazione rilasciata as-is, per info consultare http://portami.li/r2z
    ——————————————————————————-

    Spiacente non viene supportato l’uso senza argomenti, si deve passare almeno il numero di versione

  • Mi iscrivo anche io ai commenti

  • @ Giuliano:
    prova a leggere nel file readme le specifiche da passare, l’errore è abbastanza esplicativo ;-)

    @ gialloporpora:
    ottima idea!

  • Dumy

    Scusate ho lo stesso problema di Giuliano…mi aiutate x favore?

  • @ Dumy:
    vale quanto detto nel mio precedente intervento ;)

  • Spammer

    Molto utile, considerando anche che escono nuove versioni di firefox ogni 3 per 2 (forse anche troppe) …