Hola:
Quiero añadir una funcionalidad a mis programas que permitan autoactualizarse via internet. Esto es, añadir una opción de menú para que el programa se conecte a un servidor web, y si hay alguna versión posterior del programa que se actualice. Tengo claro que lo primero es establecer una conexión via FTP con el sitio web, luego descargar el programa, pero no se como hacer el cambio de un ejecutable por otro.
Me gustaría saber si alguien ha hecho algo así.
Saludos,
programa autoactualizable
- José Luis Sánchez
- Posts: 484
- Joined: Thu Oct 13, 2005 9:23 am
- Location: Novelda - Alicante - España
- Contact:
- Antonio Linares
- Site Admin
- Posts: 37481
- Joined: Thu Oct 06, 2005 5:47 pm
- Location: Spain
- Contact:
Re: programa autoactualizable
Yo lo que hago usar la clase TURL incluida con xHarbour, funciona estupendamente para este tipo de casos:José Luis Sánchez wrote:Hola:
Quiero añadir una funcionalidad a mis programas que permitan autoactualizarse via internet. Esto es, añadir una opción de menú para que el programa se conecte a un servidor web, y si hay alguna versión posterior del programa que se actualice. Tengo claro que lo primero es establecer una conexión via FTP con el sitio web, luego descargar el programa, pero no se como hacer el cambio de un ejecutable por otro.
Me gustaría saber si alguien ha hecho algo así.
Saludos,
Esta es la mecanica:
1) descargo de internet un fichero .INI que tengo puesto en la web, ese fichero .INI contiene en una de las entradas la ultima version del software:
oUrl := tURL():New("http://www.google.d2g.com/curver.inil" )
oClient := tIPClient():New( oUrl )
IF oClient:Open( oUrl )
oClient:ReadToFile( cIniFile2 )
oClient:Close()
ENDIF
Esto se puede hacer nada mas comenzar el programa.
2) Se comparan las versiones del programa, y si hay una version nueva, puedes volver a utilizar la clase TURL para descargarla via http, o bien utilizar un FTP para descargar, en mi caso lo hago via FTP con el componente Funcky FTP
3) Yo aconsejo que el programa "descargador" sea un EXE independiente de tu programa principal el cual puedes ejecutar con algo como esto:
IF MsgYesNO("hay una nueva version disponbile del programa, desea actualizar ?)
WINEXEC("decarga.exe")
ENDIF
4) Dentro de Descarga.EXE sigue el proceso que indica Antonio para "matar" el progrma original antes de descargar la actualizacion.
Saludos
R.F.
R.F.
- José Luis Sánchez
- Posts: 484
- Joined: Thu Oct 13, 2005 9:23 am
- Location: Novelda - Alicante - España
- Contact: