El Script desaparece antes de llegar al final

Pregunta Sin Miedo no te cortes cualquier cosa para empezar - Autoit se comienza facilmente.Para Ordenes o Comandos sueltos. Ver nota como preguntar.
Responder
frankhack1
Mensajes: 3
Registrado: 13 Abr 2010, 01:16

El Script desaparece antes de llegar al final

Mensaje por frankhack1 »

Hola amigos!
Estoy haciendo una instalacion desatendida del Lavasoft Ad-Aware Anniversary 2010 Pro 8.2 y todo bien, pero el problema es que el script desaparece antes de llegar a la pantalla final de la instalacion, la que tiene un boton que dice "Finalizar", bueno, no hay manera! el icono del script desaparece de la barra de tareas en la penultima ventana de instalacion... os dejo el codigo:

Código: Seleccionar todo

Opt("WinWaitDelay", 100)
Opt("WinTitleMatchMode", 4)
Opt("WinDetectHiddenText", 1)

; Comenzando la Instalacion
Run("Ad-AwareInstaller.exe")

; 1ra Ventana
If Not WinActive("Seleccionar idioma de configuración") Then WinActivate("Seleccionar idioma de configuración")
WinWaitActive("Seleccionar idioma de configuración")
ControlClick("Seleccionar idioma de configuración", "", "&Aceptar")

; 2da Ventana
If Not WinActive("Ad-Aware - InstallAware Wizard") Then WinActivate("Ad-Aware - InstallAware Wizard")
WinWaitActive("Ad-Aware - InstallAware Wizard")
ControlClick("Ad-Aware - InstallAware Wizard", "", "&Siguiente >")

; 3ra Ventana
If Not WinActive("Ad-Aware - InstallAware Wizard", "Contrato de licencia") Then WinActivate("Ad-Aware - InstallAware Wizard", "Contrato de licencia")
WinWaitActive("Ad-Aware - InstallAware Wizard", "Contrato de licencia")
Send("!a")
Send("!g")
ControlClick("Ad-Aware - InstallAware Wizard", "", "Siguiente >")

;*****Esta es la ultima ventana donde interviene el script antes de que comenze la instalacion del Ad-Aware con la tipica barra de progreso*****
; 4ta Ventana
If Not WinActive("Ad-Aware - InstallAware Wizard") Then WinActivate("Ad-Aware - InstallAware Wizard")
WinWaitActive("Ad-Aware - InstallAware Wizard")
Sleep(2000)
Send("!i")

;*****Aqui podriamos decir que es cuando esta ocurriendo la instalacion del Ad-Aware, pongo esta linea nada mas como comentario, ya que aqui no hay nada que hacer mas que esperar que termine la instalacion y salga la ventana final que es la siguiente*****

;*****Esta es la ventana final de instalacion y el script a esta altura ya ha desaparecido en la 4ta Ventana, como veis, intente con un 'Sleep(2000)' en varios lados pero no funciono*****
; 5ta Ventana
Sleep(2000)
If Not WinActive("Ad-Aware - InstallAware Wizard") Then WinActivate("Ad-Aware - InstallAware Wizard")
Sleep(2000)
WinWaitActive("Ad-Aware - InstallAware Wizard")
ControlCommand("Ad-Aware - InstallAware Wizard", "&Reiniciar y ejecutar Ad-Aware", "TRzCheckBox1", "Uncheck", "")
Sleep(2000)
ControlClick("Ad-Aware - InstallAware Wizard", "", "&Finalizar")
Saludos!
Última edición por frankhack1 el 13 Abr 2010, 03:10, editado 2 veces en total.
Avatar de Usuario
BasicOs
Site Admin
Mensajes: 2085
Registrado: 21 Nov 2006, 19:24
Ubicación: El Internet - (Canarias, España)
Contactar:

Re: El Script desaparece antes de llegar al final

Mensaje por BasicOs »

Tienes alguna linea que no es lógica como la que pones dos veces winactivate(). :smt018 :smt018 Ya que es una ejecución y te dá el resultado de la ejecución, seguro que puede ser un if not winActive() then winactivate() mucho mejor. :smt030 :smt030
Yo probaría a rehacer de cero esa ultima parte con uno de los macrorecorders, o bien puedes poner msgboxs o informaciones de debug para ver que existen o están activas las ventanas que se usan en esta parte. :smt027
Puedes también, esta ultima parte borrarla completament y rehacerla de nuevo con otra estrategia o con otras ordenes.
Salu22:)
frankhack1
Mensajes: 3
Registrado: 13 Abr 2010, 01:16

Re: El Script desaparece antes de llegar al final

Mensaje por frankhack1 »

BasicOs escribió:Tienes alguna linea que no es lógica como la que pones dos veces winactivate(). :smt018 :smt018 Ya que es una ejecución y te dá el resultado de la ejecución, seguro que puede ser un if not winActive() then winactivate() mucho mejor. :smt030 :smt030
Yo probaría a rehacer de cero esa ultima parte con uno de los macrorecorders, o bien puedes poner msgboxs o informaciones de debug para ver que existen o están activas las ventanas que se usan en esta parte. :smt027
Puedes también, esta ultima parte borrarla completament y rehacerla de nuevo con otra estrategia o con otras ordenes.
Salu22:)
Hola amigo! Primero que nada! Muchas gracias por tu respuesta!
He tomado en consideracion lo del "WinActivate" y lo he cambiado a la manera que me has comentado en este post...
Te comento una cosa sobre esa ultima parte... Si la corto y la pego en un script nuevo, la guardo y la ejecuto si que funciona, es decir esto:

Código: Seleccionar todo

; 5ta Ventana
Sleep(2000)
If Not WinActive("Ad-Aware - InstallAware Wizard") Then WinActivate("Ad-Aware - InstallAware Wizard")
Sleep(2000)
WinWaitActive("Ad-Aware - InstallAware Wizard")
ControlCommand("Ad-Aware - InstallAware Wizard", "&Reiniciar y ejecutar Ad-Aware", "TRzCheckBox1", "Uncheck", "")
Sleep(2000)
ControlClick("Ad-Aware - InstallAware Wizard", "", "&Finalizar")
Al parecer hay algo que corta la continuidad del script entre la 4ta Ventana y la 5ta Ventana, ya que por si sola e independiente de lo demas si que funciona... A que se puede deber? El AutoIt Windows Info solo muestra el "Ad-Aware - InstallAware Wizard" que es el nombre de la ventana pero ningun subtitulo ni como texto oculto... :smt011
Avatar de Usuario
BasicOs
Site Admin
Mensajes: 2085
Registrado: 21 Nov 2006, 19:24
Ubicación: El Internet - (Canarias, España)
Contactar:

Re: El Script desaparece antes de llegar al final

Mensaje por BasicOs »

No tendría mucho sentido, ya que es secuencial, puedes probar a ir añadiendole trozos anteriores hasta que el segundo escript iguale al primero...
Lo único que cambia son los Opt:

Código: Seleccionar todo

Opt("WinWaitDelay", 100)
Opt("WinTitleMatchMode", 4)
Opt("WinDetectHiddenText", 1)
Pero si me apuras mucho como es un lenguaje secuencial en este caso puedes llamar desde el final del ultimo script al siguiente con un run() o Shellexecute(), o bien guardando dentro de una Func /EndFunc el trozo final.. aunque lo ideal es que esté en un solo programa.
Salu22:)
Responder