Jump to content


Photo

¿Sistema de actualización online en delphi para actualizar aplicación?


  • Please log in to reply
7 replies to this topic

#1 Master23

Master23

    Advanced Member

  • Miembro Platino
  • PipPipPip
  • 230 posts
  • LocationSanto Domingo

Posted 28 July 2010 - 08:42 PM

Qué métodos puedo usar para actualizar una versión anterior de un software vía internet,espero su ayuda gracias de antemano.
  • 0

#2 cadetill

cadetill

    Advanced Member

  • Moderadores
  • PipPipPip
  • 994 posts
  • LocationEspaña

Posted 29 July 2010 - 04:21 AM

Buenas,

Lo que yo hacía era colocar en un servidor FTP la nueva versión junto a un documento de texto que contenía el número de la versión ahí depositada.

Por otro lado, en el PC no ejecutaba nunca la aplicación directamente, sino una aplicación lanzadera la cual no tenía ventanas, simplemente se conectaba al servidor FTP, se bajaba el ficherito de texto (de ahí lo de un fichero de texto, para que la descarga fuera casi instantánea), comprobaba la versión y, en caso de que fuera más nueva la de internet, la descargaba (preguntando o no, ya es a gustos), la instalaba y arrancaba la aplicación.

Si no había conexión a internet o el usuario no quería actualizar, simplemente arrancaba la aplicación.

Nos leemos

  • 0

#3 seoane

seoane

    Advanced Member

  • Administrador
  • 1259 posts
  • LocationEspaña

Posted 29 July 2010 - 04:44 AM

Puedes echarle un vistazo a esto:
http://delphi.jmrds.com/?q=node/46

Es un poco difícil de configurar, pero por lo menos te dará una idea de como hacerlo
  • 0

#4 Wilson

Wilson

    Advanced Member

  • Moderadores
  • PipPipPip
  • 2137 posts

Posted 29 July 2010 - 06:03 AM

Muy buen aporte Maestro.

Gracias
  • 0

#5 elarys

elarys

    Newbie

  • Miembros
  • Pip
  • 9 posts

Posted 04 June 2013 - 10:44 AM

Con respecto al link de seaone, agradecido. Lo adapte perfectamente a mi aplicacion, ahora para que el usuario tenga una idea de lo que el programa esta haciendo, quisiera agregarle una barra de progreso. Le agregue un boton actualizar, donde cree el md5, y me baja perfectamente el archivo desde el servidor, como el archivo que deseo actualizar pesa aprox. 25 megas, estoy viendo adaptarle una barra de progreso pero no doy en el clavo.
  • 0

#6 Rolphy Reyes

Rolphy Reyes

    Advanced Member

  • Moderadores
  • PipPipPip
  • 2092 posts
  • LocationRepública Dominicana

Posted 04 June 2013 - 08:43 PM

Saludos.

No tengo la solución a tu problema pero si puedo ofrecerte una alternativa.
  • 0

#7 elarys

elarys

    Newbie

  • Miembros
  • Pip
  • 9 posts

Posted 04 June 2013 - 09:41 PM

Esta es la funcion bajar, donde quiero añadir una barra de progreso para que el usuario vea que el archivo se esta bajando e ir mostrandole el porcentaje que lleva. Pero no se por donde encararla. Tengo el codigo de ejemplo de una barra de progreso donde un archivo se copia de un lugar a otro y ahi se calcula el tamaño origen y destino de lo que se va copiando. En esta funcion seria algo parecido solo que el origen es un archivo de internet.



delphi
  1. function Bajar(Url: String; Archivo: String): Boolean;
  2. var
  3.   hFile: THandle;
  4.   hNet: HInternet;
  5.   hUrl: HInternet;
  6.   Buffer: array[0..10240] of Char;
  7.   BytesRead: DWord;
  8.   BytesWritten: DWord;
  9. begin
  10.   Result := False;
  11.   hFile := CreateFile(PChar(Archivo), GENERIC_WRITE, 0, nil, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, 0);
  12.   if (hFile <> INVALID_HANDLE_VALUE) then
  13.   begin
  14.     hNet := InternetOpen('actualizar', INTERNET_OPEN_TYPE_PRECONFIG, nil, nil, 0);
  15.     if (hNet <> nil) then
  16.     begin
  17.       hUrl := InternetOpenUrl(hNet, PChar(Url), nil, 0, INTERNET_FLAG_RELOAD, 0);
  18.       if (hUrl <> nil) then
  19.       begin
  20.         while (InternetReadFile(hUrl, @Buffer, SizeOf(Buffer), BytesRead)) do
  21.         begin
  22.           Application.ProcessMessages;
  23.           if (BytesRead = 0) then
  24.           begin
  25.             Result := True;
  26.             Break;
  27.           end;
  28.           if (not WriteFile(hFile, Buffer, BytesRead, BytesWritten, nil)) then
  29.             Break;
  30.           if (BytesRead <> BytesWritten) then
  31.             Break;
  32.         end;
  33.         InternetCloseHandle(hUrl);
  34.       end;
  35.       InternetCloseHandle(hNet);
  36.     end;
  37.     CloseHandle(hFile);
  38.   end;
  39. end;


  • 0

#8 santiago14

santiago14

    Advanced Member

  • Miembros
  • PipPipPip
  • 334 posts
  • LocationCerrillos - Salta - Argentina

Posted 05 June 2013 - 05:13 AM

Esto me interesa...
Voy a analizar bien lo que se planteó aquí. Tengo varios sistemas con este problemita de la actualización constante.

Santiago.
  • 0




IP.Board spam blocked by CleanTalk.