Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Internet
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 03-02-2011
verito_83mdq verito_83mdq is offline
Miembro
NULL
 
Registrado: nov 2010
Posts: 118
Poder: 14
verito_83mdq Va por buen camino
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!!
Responder Con Cita
  #2  
Antiguo 04-02-2011
Avatar de duilioisola
[duilioisola] duilioisola is offline
Miembro Premium
 
Registrado: ago 2007
Ubicación: Barcelona, España
Posts: 1.734
Poder: 20
duilioisola Es un diamante en brutoduilioisola Es un diamante en brutoduilioisola Es un diamante en bruto
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
Responder Con Cita
  #3  
Antiguo 04-02-2011
verito_83mdq verito_83mdq is offline
Miembro
NULL
 
Registrado: nov 2010
Posts: 118
Poder: 14
verito_83mdq Va por buen camino
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
Responder Con Cita
  #4  
Antiguo 04-02-2011
Avatar de duilioisola
[duilioisola] duilioisola is offline
Miembro Premium
 
Registrado: ago 2007
Ubicación: Barcelona, España
Posts: 1.734
Poder: 20
duilioisola Es un diamante en brutoduilioisola Es un diamante en brutoduilioisola Es un diamante en bruto
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.

Última edición por duilioisola fecha: 04-02-2011 a las 13:32:54.
Responder Con Cita
  #5  
Antiguo 04-02-2011
Avatar de duilioisola
[duilioisola] duilioisola is offline
Miembro Premium
 
Registrado: ago 2007
Ubicación: Barcelona, España
Posts: 1.734
Poder: 20
duilioisola Es un diamante en brutoduilioisola Es un diamante en brutoduilioisola Es un diamante en bruto
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.
Responder Con Cita
  #6  
Antiguo 04-02-2011
Avatar de duilioisola
[duilioisola] duilioisola is offline
Miembro Premium
 
Registrado: ago 2007
Ubicación: Barcelona, España
Posts: 1.734
Poder: 20
duilioisola Es un diamante en brutoduilioisola Es un diamante en brutoduilioisola Es un diamante en bruto
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.
Responder Con Cita
  #7  
Antiguo 04-02-2011
verito_83mdq verito_83mdq is offline
Miembro
NULL
 
Registrado: nov 2010
Posts: 118
Poder: 14
verito_83mdq Va por buen camino
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!!
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Dudas con mi aplicacion rufo Varios 2 28-06-2010 19:09:00
Dudas sobre aplicación para PDA pepon386 .NET 1 18-02-2007 12:40:28
problema con actulizar dbgrid emenchi34 Conexión con bases de datos 1 20-12-2006 22:53:02
actulizar aplicacion Cosgaya Varios 6 17-11-2005 20:46:38
Actulizar 2 Bases de datos con la misma Transaccion FlacoNet Firebird e Interbase 1 23-07-2004 10:36:56


La franja horaria es GMT +2. Ahora son las 09:56:27.


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
Copyright 1996-2007 Club Delphi