Hardware e software > Programmazione e scripting

[GUIDA] Automatizzare un installer con Autoit

(1/11) > >>

Mr.X:
Salve,
con questo post vorrei cercare di spiegare in linea di massima come poter automatizzare l'installazione di un programma, nel caso presente proveremo ad automatizzare ProgDvb6 a 64 bit (http://update-progdvb.com/prerelease/ProgDVB6.85.3c.x64.exe).
Andiamo per gradi...
Installiamo Autoit e Scite4Autoit3 se ancora non lo abbiamo fatto; scarichiamo inoltre ProgDvb6 a 64 bit.
Creiamo una nuova cartella, per esempio sul desktop, e nominiamola, per esempio "progdvb".
Nella cartella "progdvb" mettiamoci l'installer del programma che, per comodità, avremo rinominato "ProgDVB6_x64.exe"
Creiamo nella cartella "progdvb" un file nuovo di script: con il tasto destro clicchiamo "Nuovo" --> "Autoit v3 Script"
Adesso clicchiamo con il destro su "Nuovo AutoIt v3 Script.au3" e dal menu scegliamo (e clicchiamo) "Edit Script"
Si aprirà l'editor Scite, avremo le prime righe generiche comprese fra "#cs" e "#ce" che se vogliamo possiamo editare, oppure lasciarle come sono; ma ciò che a noi interessa è editare lo script vero e proprio, dalla riga 12 in poi subito dopo
--- Codice: ---; Script Start - Add your code below here
--- Termina codice ---
Dunque, le righe che seguono possono essere valide per tutti gli script di automazione, cioè per automatizzare altri installer:

--- Codice: ---#RequireAdmin ; essenziale se lo script deve girare anche sotto Vista o Seven i quali richiedono l'UAC
BlockInput(1) ; blocco ON di tastiera e mouse, importante nelle automazioni per evitare che l'utente prema i tasti in concomitanza con lo script, in caso di
; problemi usa la combinazione di tasti Alt X per uscire
Opt("WinTitleMatchMode", 4) ; metodo che viene utilizzato per abbinare i titoli della finestra durante le operazioni di ricerca
AutoItSetOption("MouseCoordMode", 0) ; metodo che usa il click del mouse con le coordinate relative alla finestra attiva
HotKeySet("!x", "HotExit") ; combinazione di tasti Alt X per uscire
Func HotExit() ; funzione per la hotkey
Exit
EndFunc   ;==>HotExit
--- Termina codice ---
Adesso lo script dovrà far eseguire l'installer che si trova nello stesso percorso:

--- Codice: ---$progdvb6_installer = FileGetShortName(@ScriptDir & "\ProgDVB6_x64.exe") ; FileGetShortName mi serve per ottenere il percorso breve 8.3 del file
; da eseguire (premi F1 per info) all'occorrenza edita questa riga oppure rinomina il file....
Run($progdvb6_installer) ; esegui il file.....
--- Termina codice ---
Da qui in poi dobbiamo automatizzare le finestre dell'installer... adesso abbiamo necessità di utilizzare il Autoit Window Info tool che è compreso in Autoit.
Si è deciso di iniziare l'automazione con:

--- Codice: ---If WinWait("[title:ProgDVB x64 Setup; class:#32770]", "", 10) Then
......
......
......
Else
Exit
EndIf
--- Termina codice ---
che tradotto significa questo:
se la finestra di titolo "ProgDVB x64 Setup" e classe "#32770" viene intercettata in un tempo di 10 secondi allora prosegui con l'automazione, altrimenti esci dallo script.
Eseguiamo il "ProgDVB6_x64.exe" e cerchiamo di rifare gli stessi passi fatti nel video seguente:



Abbiamo finito, o quasi, ricordiamoci di inserire:

--- Codice: ---FileDelete(@DesktopCommonDir & "\ProgDVB 6.lnk") ; rimuove scorciatoia al programma sul desktop di all user
FileDelete(@DesktopDir & "\ProgDVB 6.lnk") ; rimuove scorciatoia al programma sul desktop di current user
--- Termina codice ---

se vogliamo rimuovere le scorciatoie sul desktop e poi ricordiamoci di ridare i comandi all'utente:
--- Codice: ---BlockInput(0) ; blocco OFF di tastiera e mouse
--- Termina codice ---
Come ultima riga possiamo inserire
--- Codice: ---Exit
--- Termina codice ---
anche se lo script, al termine, uscirebbe comunque.
Ecco quindi come risulterà lo script completo:


--- Codice: ---#cs ----------------------------------------------------------------------------

AutoIt Version: 3.3.8.1
Author:         MISTER X ®

Script Function:
ProgDVB 6 automazione dell'installer a 64 bit
installer utilizzato: "http://update-progdvb.com/prerelease/ProgDVB6.85.3c.x64.exe"
Credits:
gli amministratori e lo staff al completo di Eng2Ita

#ce ----------------------------------------------------------------------------

#RequireAdmin ; essenziale se lo script deve girare sotto Vista o Seven
BlockInput(1) ; blocco ON di tastiera e mouse, importante nelle automazioni per evitare che l'utente prema i tasti in concomitanza con lo script, in caso di
; problemi usa la combinazione di tasti Alt X per uscire
Opt("WinTitleMatchMode", 4) ; metodo che viene utilizzato per abbinare i titoli della finestra durante le operazioni di ricerca
AutoItSetOption("MouseCoordMode", 0) ; metodo che usa il click del mouse con le coordinate relative alla finestra attiva
HotKeySet("!x", "HotExit") ; combinazione di tasti Alt X per uscire
Func HotExit() ; funzione per la hotkey
Exit
EndFunc   ;==>HotExit
$progdvb6_installer = FileGetShortName(@ScriptDir & "\ProgDVB6_x64.exe") ; FileGetShortName mi serve per ottenere il percorso breve 8.3 del file
; da eseguire (premi F1 per info) all'occorrenza edita questa riga oppure rinomina il file....
Run($progdvb6_installer) ; esegui il file.....
;~ Adesso parte la vera AUTOMAZIONE.....
If WinWait("[title:ProgDVB x64 Setup; class:#32770]", "", 10) Then ; attende 10 secondi questa finestra,
;  se la finestra non appare allo scadere dei 10 secondi termina lo script
ControlClick("[title:ProgDVB x64 Setup; class:#32770]", "", "Button2") ; clicca il "Button2"
WinWait("ProgDVB x64 Setup ", "License Agreement")
ControlClick("ProgDVB x64 Setup ", "License Agreement", "Button2")
WinWait("ProgDVB x64 Setup ", "Choose Install Location") ;
ControlClick("ProgDVB x64 Setup ", "Choose Install Location", "Button2")
WinWait("ProgDVB x64 Setup", "Multi-user settings")
ControlClick("ProgDVB x64 Setup", "Multi-user settings", "Button2")
WinWait("ProgDVB x64 Setup", "Adjustment of a source of TV")
ControlClick("ProgDVB x64 Setup", "Adjustment of a source of TV", "Button2")
WinWait("ProgDVB x64 Setup", "Configuration")
Send("{DOWN 6}") ; bisogna simulare la pressione della freccia giù per 6 volte
;~ Send("{TAB 3}") ; per settare HID or Microsoft RC ; opzionale simula la pressione del tasto TAB per 3 volte
;~ Send("{DOWN}") ; per settare HID or Microsoft RC ; opzionale simula la pressione del tasto freccia giù per una volta
;~  per le righe precedenti: per rimuovere ";~" premi - sul tastierino numerico della tastiera.... ";~" serve per commentare la riga simile al REM del DOS
ControlClick("ProgDVB x64 Setup", "Configuration", "Button2")
    WinWait("ProgDVB x64 Setup", "ProgDVB initial configuration")
ControlClick("ProgDVB x64 Setup", "ProgDVB initial configuration", "Button2")
WinWait("ProgDVB x64 Setup", "Choose Components")
ControlClick("ProgDVB x64 Setup", "Choose Components", "Button2")
WinWait("ProgDVB x64 Setup ", "Completing the ProgDVB Setup Wizard")
ControlClick("ProgDVB x64 Setup ", "Completing the ProgDVB Setup Wizard", "Button2") ; abbiamo finito...
FileDelete(@DesktopCommonDir & "\ProgDVB 6.lnk") ; rimuove scorciatoia al programma sul desktop di all user
FileDelete(@DesktopDir & "\ProgDVB 6.lnk") ; rimuove scorciatoia al programma sul desktop di current user
Else
Exit
EndIf
BlockInput(0) ; blocco OFF di tastiera e mouse
Exit
--- Termina codice ---

Fantoman:
Ciao a tutti

grazie infinite per questa guida molto esaustiva e grazie anche al video finalmente ho capito come si deve usare l'autoit windows info. Purtroppo la mia poca conoscenza del linguaggio di programmazione si fà sentire anche se per fare semplici script non dovrebbe essere difficile, volevo comunque approfittare per chiedere se c'è una linea guida sui comandi e sul loro utilizzo, oppure dove si possa scaricare tali informazioni. Grazie ancora.

BAT:
Inizia con la documentazione in linea
http://www.autoitscript.com/autoit3/docs/

Fantoman:
Ciao a tutti

finalmente ho creato il mio primo script ( che funziona) non è elegante come i vostri ma la soddisfazione c'è tutta. Ho dovuto usare Macro Generator di Cmenu perche il AU3Record 3.3 mi crea un sacco di problemi. Inizialmente ho usato Autoit Windows info ma non ho fatto un buon lavoro (non funzionava) nonostante la tua ottima guida, spero nel futuro con la pratica di poter gestire meglio gli script per il momento è quello che mi basta perche li uso là dove i parametri silent no si trovano o si vuole creare una configurazione diversa in fase di installazione , da quella di default. Grazie ancora dell'aiuto e sicuramente ci sentiremo ancora, metto lo script che funziona cosi puoi dirmi dove sono i punti critici di tale script.


--- Codice: ---#Region ;**** Directives created by AutoIt3Wrapper_GUI ****
#AutoIt3Wrapper_Outfile=nuovo.exe
#EndRegion ;**** Directives created by AutoIt3Wrapper_GUI ****

;--- AutoIt Macro Generator V 0.21 beta ---
Opt("WinTitleMatchMode", 4)
Run("vuex6490.exe","")
WinWait("Sicurezza di Windows","")
ControlClick("Sicurezza di Windows","","Button1")
WinWait("Informazioni su VueScan","Customer Number : ")
ControlClick("Informazioni su VueScan","Customer Number : ","Button4")
WinWait("Suggerimento del giorno","Mostra suggerimenti in fase di")
ControlClick("Suggerimento del giorno","Mostra suggerimenti in fase di","Button3")
WinWait("VueScan 9 x64 (9.0.90)","")
WinClose("VueScan 9 x64 (9.0.90)")

;--- End ---
--- Termina codice ---

Mr.X:
Bene Fantoman, se ti trovi bene con Macro Generator usalo pure... cerca però quando hai tempo e voglia di farlo completamente a mano lo script: l'esercitazione è alla base di tutto; allora, gli ho dato un'occhiata e mancano un paio di cose:

--- Codice: ---#RequireAdmin
--- Termina codice ---
per OS con Vista  / Seven con UAC abilitato..... mi viene da pensare che tu lo abbia disabilitato questo UAC... e poi:
dal tuo script leggo
--- Codice: ---Run("vuex6490.exe","")
--- Termina codice ---
ma... il percorso sarebbe bene specificarlo sempre:
--- Codice: ---$VueScan_path = FileGetShortName(@ScriptDir & "\vuex6491.exe")
Run($VueScan_path)
--- Termina codice ---
(il nome del file eseguibile nel mio test è "vuex6491.exe")
ultima cosa: le ultime 2 righe:
--- Codice: ---WinWait("VueScan 9 x64 (9.0.90)","")
WinClose("VueScan 9 x64 (9.0.90)")
--- Termina codice ---
andrebbero bene se non avessi scaricato per provare l'ultima versione, la 9.1.05 quindi o si scrive
--- Codice: ---WinWait("VueScan 9 x64 (9.1.05)","")
WinClose("VueScan 9 x64 (9.1.05)")
--- Termina codice ---
oppure scriviamo questo:
--- Codice: ---WinWait("VueScan 9 x64","")
WinClose("VueScan 9 x64")
--- Termina codice ---
in tal modo molto probabilmente funzionerà pure con la versione successiva del programma.
Quindi riepiloghiamo:


--- Codice: ---#RequireAdmin
Opt("WinTitleMatchMode", 4)
$VueScan_path = FileGetShortName(@ScriptDir & "\vuex6491.exe")
Run($VueScan_path)
WinWait("Sicurezza di Windows", "")
ControlClick("Sicurezza di Windows", "", "Button1")
WinWait("Informazioni su VueScan", "Customer Number : ")
ControlClick("Informazioni su VueScan", "Customer Number : ", "Button4")
WinWait("Suggerimento del giorno", "Mostra suggerimenti in fase di")
ControlClick("Suggerimento del giorno", "Mostra suggerimenti in fase di", "Button3")
WinWait("VueScan 9 x64", "")
WinClose("VueScan 9 x64")
--- Termina codice ---

A parte queste puntualizzazioni non vedo problemi, continua così  :)
Ciao


Navigazione

[0] Indice dei post

[#] Pagina successiva

Vai alla versione completa