venerdì 11 giugno 2010

Rendere automatica l’installazione di LogMeIn Free

Questo che è scritto qui dentro non è facile, non è userfriendly, nessuno ti aiuterà, e quindi non è per te.
Tutto quello che sta qua sotto si riesce a fare perchè è l'installer e il software che ora ( "per ora" ) lo permettono.
Non sono funzioni supportate e tanto meno permesse dalla casa produttrice.
Il tutto è diviso in 2 passaggi, modificare l'installer originale, e poi crearsene uno nuovo.



Prima parte: Modifica installer originale
Scarica!
1) Instedit e installalo.
Serve per modificare l'installer originale di LogMeIn.
2) logmein.msi ( ovviamente l'ultima versione di LogMeIn )
3) Fai subito una copia di backup di quest'ultimo.
4) Apri poi uno dei 2 MSI con Instedit.
5) Vai nella tabella InstallExecuteSequence
- Cambia la condizione dell'azione GetDeployInfo ( PS: questa forse è già cosi negli ultimi installer ufficiali )
da: UILevel=2 AND UPGRADEPRODUCT<>1 AND InstallMode<>"Remove"
a: UPGRADEPRODUCT<>1 AND InstallMode<>"Remove"
- Cambia poi le condizioni di CreateUserSetProperty e CreateUser
da: CANCREATEUSER AND PASSWORDSOK="true" AND VersionNT AND REMOVE<>"ALL"
a: VersionNT AND REMOVE<>"ALL"
- Aggiungi poi le seguenti azioni:
azione: GetLMIRegistrationCookie condizione: NOT Installed sequenza: 3710
azione: LMIGetLicense condizione: NOT Installed sequenza: 3730
azione: LMIGetLicenseForProfile condizione: NOT Installed sequenza: 3720
6) Vai nella tabella Property cambia il valore di LicenseType
da: 5
a: 1
Sempre in questa tabella aggiungere le proprietà e i valori: ( i valori devi conoscergli e sceglierli tu! )
- Proprietà: USERPASSWORD Valore: pass_pcfuturo ( Questa è la password che userai per accedere al computer che installerà questo pacchetto )
- Proprietà: USERVERIFYPWD Valore: pass_pcfuturo ( come sopra )
- Proprietà: USEREMAIL Valore: email@email.com ( Questa è l'email con cui sei registrato/a sul servizio LogMeIn )
- Proprietà: USERWEBPASSWORD Valore: passlogmein ( Questa è la tua password )
Ultima cosa sempre in questa zona del file:
- cancellate la proprietà DEPLOYID ( nel caso non fosse già presente ... tanto meglio )
Salva il tutto ( Save, NON Save as... ) e se vuoi fare una prima prova, esegui l'installer con questa riga di comando:
LogMeIn.msi /quiet
( bada bene che per fare le ultime prove, anzi per fare TUTTE le prove è meglio disinstallarlo ogni volta! )
Seconda parte: Creare nuove installazioni
( devi scegliere )
Possibilità 1
Installazione per "buone intenzioni" con Inno Setup Compiler, un installer "visibile" ...
Scarica e installa Inno Setup QuickStart Pack: Click! ( Serve per creare il nuovo installer che eseguirà lo script scritto sotto )
( Installa anche tutti i pacchetti proposti! )
- Apri Inno Setup Compiler e incolla questo codice:
#define _AppName "LogMeIn Modificato"
#define _AppVer "4.00.734" ; ( o quella che volete voi )
#define _AppPublisher "LogMeIn"
#define _AppUrl "http://www.logmein.com"
#define _AppSetup "LogMeIn"
[Setup]
AppName ={#_AppName}
AppVerName ={#_AppName} {#_AppVer}
AppPublisher ={#_AppPublisher}
AppPublisherURL ={#_AppUrl}
AppSupportURL ={#_AppUrl}
AppUpdatesURL ={#_AppUrl}
OutputDir =.
OutputBaseFilename={#_AppSetup}
Compression =lzma
SolidCompression =yes
AppVersion ={#_AppVer}
VersionInfoCompany ={#_AppPublisher}
VersionInfoCopyright ={#_AppPublisher}
VersionInfoTextVersion ={#_AppVer}
VersionInfoVersion ={#_AppVer}
CreateAppDir =no
CreateUninstallRegKey =no
UpdateUninstallLogAppName =no
DisableDirPage =yes
DisableReadyMemo =yes
DisableProgramGroupPage =yes
DisableReadyPage =yes
Uninstallable=false
ShowLanguageDialog=no
WizardImageStretch=false
;La lingua ora è impostata in inglese, farai te poi i tuoi pastrocchi.
[Languages]
Name: english; MessagesFile: compiler:Default.isl
;Qui devi indicare dove trova il file MSI di LogMeIn ( quello che hai modificato prima ). Qui è impostato per trovarsi nello stesso posto di dove si trova lo script che andrai ad eseguire.
[Files]
;Bada bene che il nome del file qui sotto deve essere sempre lo stesso!
Source: LogMeIn.msi; DestDir: {tmp}; Flags: deleteafterinstall
;Questo è un esempio di come inserire un altro file che vorresti magari avviare prima dell'installazione.
;Source: altro.exe; DestDir: {tmp}; Flags: deleteafterinstall
[Run]
;Questa riga ( ora disattivata ) è solo un esempio per mostrare come aggiungere qualche altra applicazione da avviare prima dell'installazione di LogMeIn in modo NON-NASCOSTO
;Filename: {tmp}\\altro.exe; StatusMsg: Installazione e configurazione di LogMeIn! Attendi ...; Flags: shellexec
;Questa riga qui sotto, avvia l'eseguibile modificato dell'installer originale di LogMeIn, è fondamentale, non ha senso toglierla.
Filename: {tmp}\\LogMeIn.msi; Parameters: /quiet; StatusMsg: Installazione e configurazione di LogMeIn! Attendi ...; Flags: waituntilterminated shellexec
;Con queste 2 righe sotto ( ora disattivate ), rendono avvio del servizio LogMeIn manuale e non più automatico. Al prossimo avvio di Windows sarà quindi disabilitato.
;Filename: sc.exe; Parameters: config LogMeIn start= demand; StatusMsg: Installazione e configurazione di LogMeIn! Attendi ...; Flags: runhidden; WorkingDir: {sys}
;Filename: sc.exe; Parameters: config LMIMaint start= demand; StatusMsg: Installazione e configurazione di LogMeIn! Attendi ...; Flags: runhidden; WorkingDir: {sys}
;Con questa riga disattivi l'avvio dell'interfaccia ( GUI ) al prossimo avvio. ( l'interfaccia da sola NON è il programma )
Filename: reg.exe; Parameters: "delete HKLM\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run /v ""LogMeIn GUI"" /f"; StatusMsg: Installazione e configurazione di LogMeIn! Attendi ...; Flags: runhidden; WorkingDir: {sys} 
;Questa parte qui sotto, serve nel caso tu voglia proprio nascondere tutto ... anche la trayicon dopo l'installazione ( che se attivi la riga sotto apparirà solo per 1/2 secondi )
Filename: taskkill.exe Parameters: /F /IM LogMeInSystray.exe; Installazione e configurazione di LogMeIn! Attendi ...; Flags: runhidden; WorkingDir: {sys}

Se tutto va bene ora puoi compilare l'installer.
Prima però di avviare poi il tuo nuovo giocattolino, devi essere ben certo/a di aver cancellato LogMeIn ( devi essere ben sicuro/a che il registro sia pulito e non ci siano file sparsi )

Possibilità 2
Altro metodo con AutoIt
Questo metodo ti porterà a creare un piccolo eseguibile, che appunto farà alcune operazioni senza mostrare proprio nulla all'utente.

Scaricate l'ultima versione di AutoIT da qui: Click!
Dopo averlo installato avvia SciTE Script Editor e incollaci la parte di codice indicata sotto.
;Per funzionare lo script e/o l'exe creato deve trovarsi nella stessa cartella con il "LogMeIn.msi"
;Questa riga serve giusto per non far vedere l'icona che altrimenti lo script AutoIt mostrerebbe ...
#NoTrayIcon
;Questa riga ( ora disattivata ) è solo un esempio per mostrare come aggiungere qualche altra applicazione da avviare prima dell'installazione di LogMeIn in modo NON-NASCOSTO
;Run ( @ComSpec & " /c " & "altro.exe", @WorkingDir )
;Questa riga qui sotto, avvia l'eseguibile modificato dell'installer originale di LogMeIn, è fondamentale, non ha senso toglierla.
RunWait ( @ComSpec & " /c " & "LogMeIn.msi /quiet", @WorkingDir, @SW_HIDE )
;Con queste 2 righe sotto ( ora disattivate ), rendono avvio del servizio LogMeIn manuale e non più automatico. Al prossimo avvio di Windows sarà quindi disabilitato.
;Run ( @ComSpec & " /c " & "sc.exe config LogMeIn start= demand" , @SystemDir ,@SW_HIDE )
;Run ( @ComSpec & " /c " & "sc.exe config LMIMaint start= demand" , @SystemDir ,@SW_HIDE )
;Con questa riga disattivi l'avvio dell'interfaccia ( GUI ) al prossimo avvio. ( l'interfaccia da sola NON è il programma )
Run ( @ComSpec & " /c " & "reg.exe delete HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Run /v ""LogMeIn GUI"" /f", @SystemDir ,@SW_HIDE )
;Questa parte qui sotto, serve nel caso tu voglia proprio nascondere tutto ... anche la trayicon dopo l'installazione ( che apparirà solo per pochi secondi )
Run ( @ComSpec & " /c " & "taskkill.exe /F /IM LogMeInSystray.exe" , @SystemDir, @SW_HIDE )

Compila lo script e otterrai un nuovo file EXE, chiamalo LogMeIn.exe per comodità.
Avrete ora quindi 2 file:
- LogMeIn.msi ( installer originale modificato )
- LogMeIn.exe ( script trasformato in eseguibile )
Cosa puoi fare ora? Un esempio:
1) Apri WinRAR
2) Selezionali per fare un archivio con entrambi
3) Scegli BEST come compressione e indica che vuoi creare un archivio SFX ( autoestraente )
4) Clicca sulla barra Advanced e poi su SFX Options
5) Imposta nello spazio Run after extraction: LogMeIn.exe
6) Vai nella barra Modes e imposta Unpack to temporary folder, in Silent mode metti Hide all e in Overwrite mode metti Overwrite all files
7) In Text and icon puoi anche sceglere di dare un icona più accattivante al tuo futuro eseguibile. Dovrai cliccare su Load SFX icon from file.
8) Fatto tutto questo, clicca sempre OK fino ad avviare la creazione dell'archivio autoestraente.
Se sei abbastanza sveglio saprai cosa avrai creato :D
Il tocco finale: ( utile per nascondere giusto ad un occhio inesperto che il file sia un RAR autoestraibile )
1) Scarica UPX: Click! ( scarica la Win32 console version )
2) Metti il tuo exe finale risultate da tutto quel che hai fatto prima e l'upx.exe nella stessa cartella.
3) Esegui questo comando: upx.exe -9 logmein.exe ( do per scontato che sia quello il nome del tuo file finale dopo la parte WinRAR ... )

Naturalmente se hai capito cosa si è fatto, saprai che puoi usare anche altri installer al posto di Inno o AutoIt, libertà tua.