Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Internet (https://www.clubdelphi.com/foros/forumdisplay.php?f=3)
-   -   ¿Algoritmo para hacer actualizaciones automáticas por internet ? (https://www.clubdelphi.com/foros/showthread.php?t=72866)

Master23 16-03-2011 04:50:46

¿Algoritmo para hacer actualizaciones automáticas por internet ?
 
Estoy realizando un software y quiero implementar actualizaciones automáticas,como muchos software que hay en el mercado por lo tanto tengo algunas cosas ya realizado , como la descarga de un nuevo exe , verificar si hay updates y luego realizar-las ,pero el problema viene, cómo cambio el viejo exe por el nuevo , espero puedan ayudarme. Si conocen alguna forma más eficiente con gusto les leeré muchas gracias de antemano, espero puedan ayudarme.

gatosoft 16-03-2011 05:37:12

el programa que verifica si hay actaulizaciones debe ser independiente al Exe o a cualquier otro programa que quieras cambiar...

cuando abras tu programa principal, llamas a la vez a tu programa "CheckForUpdate", el cual se encargará de cerrar el principal, reemplazar y volverlo a abrir, (si aplica)... y cerrarse cuado todo esto termine...

ya si quieres cambiar el propio..."CheckForUpdate", podrias inventarte swaping, entre la nueva y la vieja version... algo como:

Tu "CheckForUpdateActual" baja el "CheckForUpdateNew" en una carpeta temporal y lo ejecuta.

El "CheckForUpdateNew" cierra el "CheckForUpdateActual" y se autocopia en la ruta definitiva, para finalmente cerrarse. y si quieres abiri el nuevo programa... no se... son solo ideas...

farute 16-03-2011 09:03:56

Cita:

Empezado por gatosoft (Mensaje 393756)
el programa que verifica si hay actaulizaciones debe ser independiente al Exe o a cualquier otro programa que quieras cambiar...

no tiene por qué,
No se si es muy correcto hacerlo pero lo que se puede hacer es:
- renombrar el ejecutable que esta corriendo o el que quieras actualizar (no hay problema en hacerlo)
RenameFile(ExtractFileName(application.ExeName),'viejo.exe');
- descargar el nuevo exe en el mismo directorio con el mismo nombre que tiene el ejecutable que está corriendo
- cerrar la aplicacion y volver a abrirla con el nuevo ejecutable
Application.terminate;
ShellExecute(Application.Handle,'Open',pChar(Application.ExeName),PChar('No'),nil,SW_NORMAL);

y en el oncreate eliminar si existe el fichero que habiamos renombrado para que no moleste para una próxima actualización,
if FileExists('viejo.exe') then DeleteFile('viejo.exe');
O quizás prefieras guardarlo en algún lado por si falla la actualización, eso ya lo que tu veas

Master23 16-03-2011 15:17:31

Cita:

Empezado por farute (Mensaje 393765)
no tiene por qué,
No se si es muy correcto hacerlo pero lo que se puede hacer es:
- renombrar el ejecutable que esta corriendo o el que quieras actualizar (no hay problema en hacerlo)
RenameFile(ExtractFileName(application.ExeName),'viejo.exe');
- descargar el nuevo exe en el mismo directorio con el mismo nombre que tiene el ejecutable que está corriendo
- cerrar la aplicacion y volver a abrirla con el nuevo ejecutable
Application.terminate;
ShellExecute(Application.Handle,'Open',pChar(Application.ExeName),PChar('No'),nil,SW_NORMAL);

y en el oncreate eliminar si existe el fichero que habiamos renombrado para que no moleste para una próxima actualización,
if FileExists('viejo.exe') then DeleteFile('viejo.exe');
O quizás prefieras guardarlo en algún lado por si falla la actualización, eso ya lo que tu veas

Muchas gracias amigo , tu respuesta fue la más sencilla y lógica de aplicar, gracias de nuevo.


La franja horaria es GMT +2. Ahora son las 16:21:22.

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