Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Internet (https://www.clubdelphi.com/foros/forumdisplay.php?f=3)
-   -   Dudas para actulizar aplicacion.. (https://www.clubdelphi.com/foros/showthread.php?t=72216)

verito_83mdq 03-02-2011 19:23:11

Dudas para actulizar aplicacion..
 
Hola a todos!!! Estoy tratando de que la aplicación se pueda actualizar vía Internet. He leído muchos hilos sobre este tema, pero tengo algunas dudas.
Lo quiero implementar mediante la comparación de los archivos hash Md5

Las dudas que tengo son:

La suma md5 la tengo que hacer del .exe una vez que esta instalado o del instalador??

Porque yo pensaba hacer lo siguiente subo al ftp el instalador con su md5, entonces lanzo una aplicación intermediaria la cual descarga el md5 y la compara con la que esta en la carpeta, si no coinciden descarga el instalador. El problema es que si descargo el md5 en la misma carpeta me lo sobrescribe tendría que descargarlo en la carpeta .temp y despues hacer la comparacion.

La otra duda es si la suma md5 tiene que estar en un .txt o con extensión .md5.

Bueno estuve leyendo mucho pero hay cosas que no se, si alguien que hizo algo similar me puede dar una mano, lo voy a agradecer.

Saludos!!

duilioisola 04-02-2011 09:07:01

Yo creo que la forma más sencilla es que tu programa tenga dentro una variable que se llame VERSION.
Podría ser un string del tipo '009-023' (Version 9.23)
Luego buscas en el FTP un archivo cuyo nombre sea mayor que el numero de la versión.
Código:

BuscarArchivoMayorVesrion(VERSION : string);
begin
  AbrirFTP;
  ObtenerListaDeArchivos; 
  while (not ListaDeArchivos.EOF)
  begin
      if (ListaDeArchivos.Nombre > 'Aplicacion'+'_'+Version+'.zip') then
      begin
        Descargar('Aplicacion'+'_'+Version+'.zip');
        Instalar('Aplicacion'+'_'+Version+'.zip');
        Reiniciar;
      end;
  end;
end;

En el FTP tendrías los archivos:
  • Aplicacion_009-056.zip
  • Aplicacion_010-001.zip
  • Aplicacion_010-037.zip
  • Aplicacion_011-001.zip

verito_83mdq 04-02-2011 13:13:20

Hola duilioisola!! Gracias por de responder!! Lo de la versión esta bueno, pero tengo ganas de hacerlo con la comparación de los hash (capricho:)), de todas formas es similar, en vez de comparar la versión se compara los hash.

Se puede entrar al ftp y leer el archivo sin descargarlo?? Osea entro al ftp leo el txt que tiene el valor del hash y si no es igual al que esta en el disco lo baja. Se podra??

Y la otra duda cuando bajo el programa para actualizar, tiene que ser el ejecutable que crea delphi o el que creo con el instalador?

Muchas gracias!!!! Saludos!!!!!!!!!1

duilioisola 04-02-2011 13:27:34

El problema que veo con el hash es que no sabes si es una versión anterior o posterior.
Imagina que tienes la versión 1 y en el servidor tienes la versión 2 y la 3.

Si tu estás en la 1 y quieres pasar a la 3 puede que tengas que descargar la 2, que hará los cambios necesarios y luego la 3 que hará los cambios teniendo en cuenta que la versión anterior es la 2.
Varsion 1 Tabla_Cliente = Codigo, Nombre, Direcion;
Version 2 Tabla_Cliente Agrega CodigoPostal
Version 3 Tabla_Cliente Modifica CodigoPostal
Si pasas de la 1 a la 3, la modificación fallará porque no tienes creado el campo CodigoPostal.

Otra cosa es los que significa el HASH. Es un código de verificación.
Imagina que para verificar una lista de números los sumas y utilizas esto como HASH
1, 2, 3, 4, 10 (el último numero es el HASH = 10)
Si luego lees y te llega la lista
1, 2, 3, 9, 10 sumas los números y te da 15. Es distinto de 10, por lo tanto hay un error y no puedes tomar la lista de números como válida

Lo que normalmente se hace es dejar el archivo y a su lado un archivo de texto con el hash dentro.
Lo que haces es descargar el archivo, calcular su HASH y compararlo con lo que hay en el archivo de texto. Si son iguales, tienes archivos válidos, de lo contrario está corrupto.

duilioisola 04-02-2011 13:31:23

Ten en cuenta que el hash del archivo será un texto un poco largo y no te indicará el orden de versiones...
Supongo que utilizaras el HASH como nombre del archivo...

AMFJRRMEMCO3M3245M56.EXE (Version 3)
DFHSLUVJNERI12MFKT64JT.EXE (Version 1)
ZXMDJ345NNu5M5J43KD3M.EXE (Version 2)

Cita:

Se puede entrar al ftp y leer el archivo sin descargarlo?
Si. FTP tiene el comando ls quie es como hacer un dir en DOS.

duilioisola 04-02-2011 13:34:16

Cita:

tiene que ser el ejecutable que crea delphi o el que creo con el instalador?
Eso depende enteramente de ti...
Si el instalador tiene que instalar cosas y registrar cosas y crear cosas, deberás utilizar el instalador.
Si tu programa solo es el exe, con descargarlo y reemplazar el anterior ya es suficiente.

verito_83mdq 04-02-2011 13:51:21

Gracias duilioisola!! Son un genio! Te entendí perfectamente el porque es mejor la verificación por versiones. Voy a tratar de hacerlos de las dos maneras, estoy aprendiendo es un trabajo para la facultad.

Lo que no entendí bien fue la ultima parte lo de md5, creo que esto es lo que me quisistes decirr.

Tengo un .txt dentro de el esta la suma Md5 del .exe viejo que esta instalado en el disco rigido

Se inicia el programa, se conecta al ftp en el cual esta el .exe nuevo con su .txt con su suma Md5.

Se comparan ambas sumas que están dentro del .txt si estas no coinciden bajo el .exe nuevo con la suma nueva, y cuando esta en el disco comparo nuevamente el .txt que baje con la suma del .exe nuevo.

Osea por mas que lo haga por versiones la comparación del md5 hay que hacerla siempre por si llega corrupta no?

Gracias!!


La franja horaria es GMT +2. Ahora son las 08:05:13.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi