Página 1 de 1

El Script desaparece antes de llegar al final

Publicado: 13 Abr 2010, 01:25
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!

Re: El Script desaparece antes de llegar al final

Publicado: 13 Abr 2010, 01:33
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:)

Re: El Script desaparece antes de llegar al final

Publicado: 13 Abr 2010, 03:02
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

Re: El Script desaparece antes de llegar al final

Publicado: 13 Abr 2010, 03:35
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:)