Qué métodos puedo usar para actualizar una versión anterior de un software vía internet,espero su ayuda gracias de antemano.
![Photo](http://delphiaccess.com/foros/uploads/profile/photo-13015.png?_r=0)
¿Sistema de actualización online en delphi para actualizar aplicación?
Started by
Master23
, Jul 28 2010 08:42 PM
7 replies to this topic
#1
Posted 28 July 2010 - 08:42 PM
#2
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
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
#3
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
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
#4
Posted 29 July 2010 - 06:03 AM
Muy buen aporte Maestro.
Gracias
Gracias
#5
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.
#6
Posted 04 June 2013 - 08:43 PM
#7
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
function Bajar(Url: String; Archivo: String): Boolean; var hFile: THandle; hNet: HInternet; hUrl: HInternet; Buffer: array[0..10240] of Char; BytesRead: DWord; BytesWritten: DWord; begin Result := False; hFile := CreateFile(PChar(Archivo), GENERIC_WRITE, 0, nil, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, 0); if (hFile <> INVALID_HANDLE_VALUE) then begin hNet := InternetOpen('actualizar', INTERNET_OPEN_TYPE_PRECONFIG, nil, nil, 0); if (hNet <> nil) then begin hUrl := InternetOpenUrl(hNet, PChar(Url), nil, 0, INTERNET_FLAG_RELOAD, 0); if (hUrl <> nil) then begin while (InternetReadFile(hUrl, @Buffer, SizeOf(Buffer), BytesRead)) do begin Application.ProcessMessages; if (BytesRead = 0) then begin Result := True; Break; end; if (not WriteFile(hFile, Buffer, BytesRead, BytesWritten, nil)) then Break; if (BytesRead <> BytesWritten) then Break; end; InternetCloseHandle(hUrl); end; InternetCloseHandle(hNet); end; CloseHandle(hFile); end; end;
#8
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.
Voy a analizar bien lo que se planteó aquí. Tengo varios sistemas con este problemita de la actualización constante.
Santiago.