Home | Chi sono | Contattami
 

Progr. lineare

Delphi
 
Componenti
  Database
 
Miei articoli

Windows

Miei articoli 

 

Ridurre la dimensione di Office 2003


Questa volta voglio esporre una tecnica che ho sviluppato per ottenere delle versioni personalizzate di Office 2003. In pratica spesso mi capita di dover installare solo una minima parte di Office 2003 (ad esempio solo Word ed Excel) così ho cominciato un pò a ragionare sul da farsi. Dunqueee ... durante il processo di installazione, il setup di Office 2003 copia i file necessari (in relazione al tipo di installazione che si vuole effettuare) nelle cartelle destinazione. Se si riuscisse in qualche modo a rilevare tutti i file che vengono copiati, allora potrei creare una versione del Cd di installazione che consiste solo dei file necessari al tipo specifico di installazione che voglio effettuare. Bene ... se diamo una occhiata al contenuto del cd di installazione di Office 2003 troviamo tanti file .cab. Questi file .cab contengono i file che verranno copiati durante la fase di installazione. La prima cosa da fare è quella di liberarsi di questo formato .cab ed ottenere un cd con tutti i file in chiaro distribuiti in cartelle sottocartelle. Questo obiettivo può essere facilmente raggiunto creando il cosidetto "punto di installazione amministrativo" ossia una cartella che contiene una versione non compressa (senza tutti quei .cab) del cd di installazione di Office 2003. Come creare un "Punto di installazione amministrativo"???? Semplicissimo: eseguire dalla linea di comando "Setup.exe /a". Si aprirà il processo di installazione di Office 2003 chiedendo una cartella di destinazione e quindi procedere (verrà chiesto il seriale del prodotto, etc...). Alla fine, nella cartella di destinazione specificata, avremo il Cd di Office 2003 tutto scompattato.

Il file più importante è PRO11.MSI: la linea di comando "msiexec /i PRO11.MSI" innesca il processo di installazione di Office 2003. Una caratteristica di tutti i pacchetti .msi è che si può creare un log notevolemente dettagliato tramite il parametro /l*v <filelog>. Se eseguo l'installazione di Office 2003 con la seguente linea di comando

msiexec /i <precorso_completo>PRO11.msi /l*v c:\office2003.txt

allora alla fine dell' installazione avrò il file C:\Office2003.txt con tantissimi dettagli sul processo di installazione. Apriamo tale file e cerchiamo informazioni (tra le tante presenti) relative alla copia di file. Analizzando il file ad un certo punto si può vedere una sequenza di informazioni relative alla copia di file; in particolare il formato di trascrizione è il seguente:

Source for file '<nome file da copiare>' is uncompressed, at '<nome cartella nel "Punto install. amministrativo">'.

Bene ... quindi a questo punto quello che dobbiamo fare è reperire tutte le righe con il formato sopra descritto ed avremo quindi l' elenco di tutti i file nel "punto di installazione amministrativo" che vengono copiati. Possiamo utilizzare le espressioni regolari e per questo possiamo fare riferimento all'articolo Espressioni regolari in Delphi dove viene descritta una tecnica per utilizzare le espressioni regolari in Delphi. Otteniamo quindi la seguente procedura:

 

procedure CopiaFileOffice(Punto_installazione_amministrativo, Destinazione, Log: string); //Punto_installazione_amministrativo: cartella del "Punto di installazione amministrativo //creato con "setup.exe /a" //Destinazione: cartella dove si vuole che vengano copiati i file del cd di installazione //di Office 2003 che ci interessano (risultato del parsing del file di log) //Log: file creato eseguendo l'installazione di Office 2003 tramite la linea di comando //"msiexec /i \PRO11.MSI /l*v " var i, j: integer; FileStream: TFileStream; InputStr, InputFile: string; RegExp1: RegExp; MatchCollection1: MatchCollection; Match1: Match; SubMatches1: ISubMatches; Src, Dst: string; inStr: string; begin // InputFile := Log; FileStream := TFileStream.Create(InputFile, fmOpenRead); SetLength(InputStr, FileStream.Size); FileStream.Read(InputStr[1], FileStream.Size); InStr := WideCharToString(pWideChar(InputStr)); RegExp1 := CoRegExp.Create; with RegExp1 do begin Pattern := 'Source for file\s' + '''' + '(.*)' + '''' + '\sis\suncompressed,\sat\s' + '''' + StringReplace(Punto_installazione_amministrativo, '\', '\\', [rfReplaceAll]) + '(.*)' + '''' + '.'; IgnoreCase := True; Global := True; MatchCollection1 := Execute(InStr) as MatchCollection; end; for i := 0 to MatchCollection1.Count - 1 do begin Match1 := MatchCollection1.Item[i] as Match; SubMatches1 := Match1.SubMatches as SubMatches; Src := Punto_installazione_amministrativo + VarToStr(SubMatches1.Item[1]) + VarToStr(SubMatches1.Item[0]); Dst := Destinazione + VarToStr(SubMatches1.Item[1]) + VarToStr(SubMatches1.Item[0]); Form1.Memo1.Lines.Add(Src + ' --> ' + Dst); if not DirectoryExists(Destinazione + VarToStr(SubMatches1.Item[1])) then ForceDirectories(Destinazione + VarToStr(SubMatches1.Item[1])); CopyFile(pChar(Src), pChar(Dst), False); end; RegExp1 := nil; FileStream.Free; end;

 

In pratica eseguiamo l'installazione di Office 2003 con la linea di comando

msiexec /i <percorso_completo>\PRO11.MSI /l*v c:\office2003.txt

Nelle varie maschere del wizard di installazione selezioniamo ciò che vogliamo installare (ad esempio solo Word ed Excel). Alla fine avremo il file c:\office2003.txt. Eseguiamo a questo punto la procedura sopra ed otterremo nella cartella destinazione un sottoinsieme del cd di Office 2003 comprensivo dei soli file necessari per realizzare l'installazione che abbiamo appena effettuato. L'unica cosa che rimane da fare è copiare nella cartella destinazione anche il file PRO11.MSI.

A questo punto, visto che abbiamo ottenuto quello che volevamo, andiamo oltre e vediamo di automatizzare il tutto (rendere l'installazione "unattended"). Dobbiamo creare una "trasformata": partendo dalla pagina di "Office 2003 Resource Kit"

http://office.microsoft.com/en-us/FX011511471033.aspx

nella colonna di sinistra ci sono i 2 link ai downloads

"Downloads": http://www.microsoft.com/office/orkarchive/2003ddl.htm : downloads ralativi alla versione in Inglese

"Localized Downloads": http://www.microsoft.com/office/orkarchive/2003locddl.htm : downloads relativi alle versioni non in Inglese (categorizzati per lingua)

Tra i downloads c'è quello relativo ad "Office 2003 Editions Resource Kit" (ork.exe). Si tratta di un insieme di strumenti che passa sotto il nome di "Office 2003 Resource Kit toolset". Bene scarichiamo ork.exe e lanciamolo:optiamo per una installazione completa ed alla fine avremo un nuovo gruppo di link all'interno del gruppo di link relativo ad Office 2003. Tra questi lanciamo (facciamo riferimento alla versione in Inglese) "Custom Installation wizard"
Nella seconda maschera viene chiesto di specificare il file .msi da cui si vuole create la trasformata (file .mst). Bisogna selezionare il file PRO11.msi contenuto nel  "Punto di installazione amministrativo". Nella terza maschera lasciare selezionata la voce che indica di creare un nuovo file .mst. Nella quarta maschera viene chiesto di scegliere cartella di destinazione e nome per il file .mst ("trasformata") che stiamo andando a creare: se ad esempio vogliamo installare Word ed Excel e basta possiamo chiamarlo Word_Excel.mst. A questo punto possiamo andare avanti (i vari passaggi sono tutti sufficientemente autoesplicativi); quando ci verrà chiesto di definire i componenti da installare andremo a selezionare i componenti nella stessa maniera in cui li abbiamo selezionati precedentemente per eseguire l'installazione. Successivamente c'è la possibilità di definire già la chiave di attivazione e di accettare le condizioni di licenza: in questa maniera l'installazione potrà avvenire in maniera totalemente unattended (senza bisogno di inserire il codice di attivazione, etc...). Una volta arrivati alla fine, viene restituita la linea di comando da utilizzare per effettuare l'installazione personalizzata utilizzando la "trasformata" appena creata

setup.exe TRANSFORMS=<percorso completo>\<trasformata.MST> /qb-

Bene, noi copiamo la "trasformata" (.mst) appena creata nella cartella destinazione a fianco di PRO11.MSI e della sottocartella FILES: a questo punto con la linea di comando

msiexec /i <percorso_completo>\PRO11.MSI TRANSFORMS=<percorso_completo>\<trasformata.MST> /qb

possiamo eseguire una installazione totalmente automatizzata.

Ok, a questo punto possiamo fare un passo ulteriore creando un eseguibile autoestraente con WinRAR:

selezioniamo il contenuto della cartella destinazione ->
pulsante destro ->
"aggiungi ad un archivio" ->
nella maschera iniziale: Metodo di compressione = "Migliore", "Crea un archivio autoestraente", "Crea un archivio solido"
Tab "Avanzati" ->
click su "Modulo autoestraente" ->
Tab "Generale": nella casella "Esegui dopo l' estrazione": msiexec /i PRO11.msi TRANSFORMS=trasformata.mst /qb
Tab "Modalità": check su "Estrai i file in una cartella temporanea"

benee... a questo punto abbiamo un eseguibile che, una volta lanciato, esegue in automatico l'installazione personalizzata di Office 2003

Sorgente


 


 

 

 

 

 
 
Your Ad Here