Página 1 de 1

Re: Mi Script para BSPlayer

Publicado: 12 Nov 2009, 07:40
por avechuche
Antes que tire todo a la mier......... quiero que vean este scrip para que ver que falla ... porque en XP 32 bits anda perfecto. En windows 7 64 bits andubo una vez y no anbudo mas!! y no se porque .. a ver q puede estar mal ..

Código: Seleccionar todo


#NoTrayIcon

$versionNueva = "Version 2.50.1017" ;Versión disponible para instalar ...

$nombre = "IcyCool"

$serial = "2992A28687A90445B3E1CF4D067C127D179FB1B0E3C0"

If @OSArch="x64" Then

    If FileExists(@HomeDrive&"\Archivos de programa (x86)\Webteh\BSplayerPro\changes.txt") Then

        $file = FileOpen(@HomeDrive&"\Archivos de programa (x86)\Webteh\BSplayerPro\changes.txt", 0) ;Abre archivo en forma de lectura ...

        $line = FileReadLine($file, 1) ;Lee la primera linea de $file (Version x.xx.xxxx)

        FileClose($file)

            If $line < $versionNueva Then

                Instalacion()

            EndIf   ;Cierra If $line < $versionNueva Then ...

    Else

        Instalacion()

    EndIf   ;Cierra If FileExists(@HomeDrive&".......... .txt") Then ...

    MsgBox(4096, "Copyright", "Compilado por @vechuche", 3)





Else ; Instalación para Windows x86





    If FileExists(@HomeDrive&"\Archivos de programa\Webteh\BSplayerPro\changes.txt") Then

        $file = FileOpen(@HomeDrive&"\Archivos de programa\Webteh\BSplayerPro\changes.txt", 0) ;Abre archivo en forma de lectura ...

        $line = FileReadLine($file, 1) ;Lee la primera linea de $file (Version x.xx.xxxx)

        FileClose($file)

            If $line < $versionNueva Then

                Instalacion()

            EndIf   ;Cierra If $line < $versionNueva Then ...

    Else

        Instalacion()

    EndIf   ;Cierra If FileExists(@HomeDrive&".......... .txt") Then ...

EndIf   ;Cierra If @OSArch="X64" Then

MsgBox(4096, "Copyright", "Compilado por @vechuche", 3)

Exit







Func Instalacion()

    Run("setup.exe /S")

    If WinWaitActive("Downloading...", "", 10) Then ; esta es la ventana que se abre cuando intenta descargar los codec`s

        Send("{ENTER}") ;Cancela la descarga de los codec y salta una advertencia de error

    EndIf ; Cierra If WinWaitActive("Downloading...", "", 10)

    If WinWaitActive("Error","", 2) Then; espera que aparesca la pantalla con el error

        Send("{ENTER}"); este enter permite salir de la pantalla anterior y asi termina la instalacion

    EndIf ;Cierra If WinWaitActive("Error","", 2)

    ProcessWaitClose("setup.exe")

    Run(@HomeDrive&"\Archivos de programa (x86)\Webteh\BSplayerPro\bsplayer.exe"); una vez instalado todo, hay que registrarlo, por eso ejecuto el programa

        If WinWaitActive("Registration info", "", 3) Then

            ControlCommand("Registration info", "", "", "EditPaste", $nombre)

            Sleep(200)

            Send("{TAB}")

            Sleep(200)

            ControlCommand("Registration info", "", "", "EditPaste", $serial)

            Sleep(200)

            Send("{TAB}")

            Sleep(500)

            Send("{ENTER}") ;Confirmar registro ...

            Sleep(500)

            WinWaitActive("Information")

            Sleep(250)

            ControlClick("Information", "", "Button1"); Confirmar reinicar Bsplayer para terminar el registro

            ProcessWait("bsplayer.exe")

            ProcessClose("bsplayer.exe")

            MsgBox(4096, "Copyright", "Compilado por @vechuche", 3)

            Exit

        Else

            ProcessClose("bsplayer.exe")

            MsgBox(4096, "Copyright", "Compilado por @vechuche", 3)

            Exit

        EndIf ; Cierra If WinWaitActive("Registration info", "", 3) Then y se termina la instalación

EndFunc



 

Bueno encontre el error... estuve documentando todo .. y resulta que el autoit no me toma el comando Run .. es rarisimo .. tengo todo perfecto ... documente todo y deje el if principal .... If @OSArch="x64" Then.... le puse un msg y entra lo mas bien... le fui agregando comandos y me tope con el run a lo ultimo y no anda .. opr eso no me lo instala, pasa de largo la funcion todo .. es raro ..

Re: Mi Script para BSPlayer

Publicado: 13 Nov 2009, 01:19
por Chefito
Seguro que entra donde esta el run??? Puedes mirar si entra con un msgbox o un consolewrite.
No pones el camino (path) del programa en el run??? Puede que por eso de fallo.
Piensa que también tienes otra opción cuando falla el run, y se trata de shellexecute.

Saludos.

Re: Mi Script para BSPlayer

Publicado: 13 Nov 2009, 01:59
por avechuche
definitivamente es el run porque ya lo probe y si entra, porque le puse varios msgbox para comprobar que entra .. en XP anda perfecto en Windows 7 64 bits anbudo una vez sola... formatie, se instalo .. desp lo desinstale porque no lo habia registrado, ejecute el scrip de nuevo y nada .. ni para atras :D ... nono nunca pongo el path en el run en ninguno de mis script (hablando de que el programa a ejecutar este en el mismo directorio que el scrip), si no si ... cuando ejecuto el bsplayer lo busco con un path distinto ...
voy a probar el shellexecute a ber que tal me va ... gracias!


EDITO: probe el shellexecute de la siguiente maneta

ShellExecute("setup.exe /S") me da error ... osea no me deja ponerle comandos para instalacion silenciosa... si yo le saco el /S la instalacion empieza...

Re: Mi Script para BSPlayer

Publicado: 13 Nov 2009, 02:23
por Chefito
Has mirado la ayuda?
Los parámetros de lo que quieres ejecutar se pasan en el segundo parámetro de la función.
ShellExecute ( "filename" [, "parameters" [, "workingdir" [, "verb" [, showflag]]]] )
Saludos.

Re: Mi Script para BSPlayer

Publicado: 13 Nov 2009, 02:36
por avechuche
Mil disculpas .. no lo lei como decia opcional ... ni lo lei ahora lo pruebo ...

EDITO: acabo de probar ....
1) ShellExecute("setup.exe") abre el instalador normalmente
2) ShellExecute("setup.exe", "S") abre el instalador normalmente, osea no lo hace desatendido
3) ShellExecute("setup.exe", "/S") abre el instalador normalmente
4) ShellExecute("setup.exe", /S) da error ....

5) voy a tirar todo a la mierda ja ....

Re: Mi Script para BSPlayer

Publicado: 16 Nov 2009, 10:16
por Ximorro
La opción buena debería ser la 3ª.
¿Cómo escribes el comando cuando lo ejecutas a mano desde una ventana DOS?

Una cosa, por reforzar, prueba a ponerle como path de trabajo el del ejecutable en el tercer argumento de ShellExecute.

Y no creo que sea, pero a ver si se está poniendo tonto con el "/S" y es que quiere un "/s", en minúscula. Sería el colmo pero nunca se sabe...

Re: Mi Script para BSPlayer

Publicado: 16 Nov 2009, 16:54
por Chefito
Sí, como dice Ximorro la solución es la 3º. Si no te va bien mal rollo.
Si que va a dar por saco el w7 64 bits!!! :smt005 .
Bueno bueno........las soluciones para ejecutar un archivo no acaban aquí :smt003 . Se me ocurren alguna más.
Por ejemplo, has pensado en hacerlo tu desatendido?? Ocultando la ventana de instalación e ir pulsando y marcando tu mismo con AutoIt (instrucciones que empiezan por Control....) hasta que se instale toda la aplicación.

Otra forma de ejecutar una aplicacion es con el comando de consola start. Pruebalo a ver que tal.
También puedes utilizar una librería.
Prueba este código:

Código: Seleccionar todo

$wShell=ObjCreate("WScript.Shell")

$WShell.Exec("c:\setup.exe /S")

 
O este:

Código: Seleccionar todo

$wShell=ObjCreate("WScript.Shell")

$WShell.Run("c:\setup.exe /S")

 
Por supuesto pon en vez de esto "c:\setup.exe /S", pon el path de donde tu tengas ubicado el archivo
Otra manera sería ejecutandolo de forma indirecta con vbscript a ver si tienes más suerte.
Y seguro que hay más formas :smt003 .

Saludos.
Saludos.

Re: Mi Script para BSPlayer

Publicado: 16 Nov 2009, 20:35
por avechuche
Gracias por la ayuda .. el Bsplayer desatendido lo vengo usando desde hace rato ... es "/S" con mayuscula ... el problema estaba en #RequireAdmin .... solo eso ja ... Gracias!