Página 1 de 1

Comprobar versión instalada

Publicado: 07 Nov 2009, 23:19
por avechuche
Bueno resulta que quiero hacer un script que me detecte que version instalada tengo de un programa X.

La version instalada de este programa se puede encontrar dentro de su carpeta en el archivo "changes.txt" en la primer linea.
Quiero leer esa linea y guardarla en alguna variable y que despues me compare ese numero, con uno que va a estar ya almacenado. Si el programa instalado es una version mayor o igual a la que intento instalar, bueno que no se instale, pero si la version que quiero instalar es mayor a la que esta instalada, que se instale. les paso algo del código.

Código: Seleccionar todo


$file = FileOpen("C:\Archivos de programa\xxxx\changes.txt", 0)

$versionInstalada = "xxxxxxxxxx"



If $file = -1 Then

    MsgBox(4096, "Error", "No se encontro el archivo", 1)

    Exit

EndIf



    $line = FileReadLine($file, 1)

    If $versionInstalada = $line Then

        MsgBox(0, "Atención", "Versiones iguales") ;este msg no estaria en la version terminada, lo puse para ver si anda.

    EndIf



FileClose($file)



 

Re: Comprobar versión instalada

Publicado: 07 Nov 2009, 23:29
por avechuche
Ya solucione el problema... resulta que en la primera lina del changes.txt dice "version xxxxx" me faltaba ponerle la palabra "version" para que compare .. ya esta,.. ahora ... hay alguna opcion para que solo me tome los numeros osea que lea "version xxx" pero que me almacene en una variable solo los numeros ... gracias!

EDITO: Hay alguna forma de que el autoit me saltee lineas?? osea estoy por la linea 14 y que salte a la 50 .. se puede??? Gracias!

Re: Comprobar versión instalada

Publicado: 08 Nov 2009, 00:42
por XPyro
Si estas seguro que el resultado es siempre Versión mas números usa la función StringReplace() para eliminar la palabra versión, ejemplo:

Código: Seleccionar todo

$numeros = StringReplace($line, "version ", "")

If $versionInstalada = $numeros Then

        MsgBox(0, "Atención", "Versiones iguales")

EndIf

Re: Comprobar versión instalada

Publicado: 08 Nov 2009, 04:55
por avechuche
Perfecto .. gracias ... y abra algo para el salto de linea?!

Re: Comprobar versión instalada

Publicado: 09 Nov 2009, 09:28
por Ximorro
¿Saltar líneas quieres decir al leerlas del archivo?

Pues si casi lo tienes... a FileReadLine le pasas como segundo parámetro el número de línea a leer:
$line = FileReadLine($file, 14) ;lee la línea 14
$otraline = FileReadLine($file, 50) ;a continuación lee la 50

La primera línea del archivo es la 1 (no la 0). Se puede acceder directamente a la última poniendo un -1.

Re: Comprobar versión instalada

Publicado: 10 Nov 2009, 07:23
por avechuche
No no me refiero a que el scrip en general ... por ejemplo yo llego a la linea 14 y quiero leer la 60, es para no copiar todo el codigo de nuevo, para no hacerlo tan largo ..

EDITO: A lo que me refiero es que quiero poner parte de mi codigo dentro de una Funcion (digo, es lo que se me ocurre), para llamarla cuando quiero y no tener que andar poniendo todo el código ... el tema es que no se como hacer la funcion.
El otro problema es que la funcion quiero que se ejecute cuando yo la llamo, no quiero que cuando el scrit llega a donde esta la funcion la ejecute sin que yo se lo diga, se entiende?

Re: Comprobar versión instalada

Publicado: 10 Nov 2009, 10:28
por Ximorro
Huuuum, o no te estoy entendiendo muy bien o te faltan conocimientos muy básicos sobre AutoIt (y programación en general).
Creo que te refieres a hacer funciones, es muy básico si no es eso perdona pero si no no entiendo qué quieres decir.

Las funciones son trozos de código con un nombre, las puedes ejecutar usando ese nombre desde cualquier otra parte del código del mismo programa (si incluyes otros archivos autoit con #include entonces también puedes llamar a sus funciones).

El código de una función NO SE EJECUTA si no la llamas (invocar, ejecutar) expresamente, así que el programa no "llega a donde está la función", como decías.

Forma de hacer una función:
Func nombrefuncion()
;el código
EndFunc

Los paréntesis son necesarios. En un programa puedes llamar a la función las veces que quieras, no hay que repetir el código, sólo el nombre:

Código: Seleccionar todo

$a = 0

MuestraMensaje()

$b = 1

MuestraMensaje()

$c = $a + $b



Func MuestraMensaje()

    MsgBox(0, "Estoy aquí", "Estoy ejecutando la función")

EndFunc
Si ejecutas eso verás que el mensaje sólo sale dos veces, las que lo llamas en el código principal, el programa se acaba después de la línea $c = $a + $b. Lo que está dentro de Func-EndFunc no lo ejecuta, sólo si lo invocas con el nombre.

Las funciones puedes ser llamadas dentro de otras funciones. Y lo normal es que les pases datos con los que trabajar, se llaman argumentos o parámetros y se especifican entre los paréntesis.

Bueno creo que ya tienes para empezar. Tendrás que mirarte la ayuda y si acaso hacer consultas más concretas, si tenemos que empezar explicando qué es una variable no acabaremos nunca...

Si el problema es el idioma creo que hay una versión anterior de la ayuda traducida, para las cosas básicas te va a servir perfectamente, te recomiendo encarecidamente que la uses. Lógicamente cuando profundices un poco encontrarás diferencias porque la versión actual habrá cambiado en algunas cosas, pero lo que es funciones, variables, matrices, bucles, condicionales, etc... son cosas básicas imprescindibles de aprender y que seguro siguen siendo iguales.

¡Feliz investigación!