Modulo para ACTUALIZACION
Publicado: Sab Abr 07, 2012 5:40 am
Gusto de saludarlos.
Tomando de la pregunta de Marcelo Coelho Silva, acerca de Ftp, hice una
rutina para actualizar mis aplicaciones via Ftp.
Marcelo Coelho Silva puso la forma de como conectarse al servidor Ftp y asi
pude entender como hacerlo.
Gracias Marcelo Coelho Silva por compartir.
Este es el codigo
Lo puse en un formulario y lo ejecuto desde un boton.
METHOD ACEPTARClick( oSender ) CLASS ACTUALIZAR
Local
Archivo_ftp:={},Fecha_Archivo_local:=Array(1),Fecha_Archivo_ Ftp,archivos_ftp:={}
Local cuenta,extension
Adir(".ADVENTAS.EXE",,,Fecha_Archivo_local) /// ESTO ES DONDE TENGO MI
APLICACION Y DEL CUAL TOMO LA FECHA DEL ARCHIVO
With Object Tftp():New() /// CREO EL METODO DEL TFTP
Waiton("Buscando actualizaciones") /// MANDO UN MENSAJE CON EL SISTEMA
DE MENSAJES DE Bingen.
:cPassword := 'password'
:cUser := 'usuario'
:lPassive := .t.
:Open()
:Connect('www.mihostin.com')
Fecha_Archivo_Ftp=:directory("/actualizaciones/ADVENTAS.exe ") ///AQUI
OBTENGO LA FECHA DEL ARCHIVO DEL FTP (ACTUALIZACIONES ES MI CARPETA Y
ADVENTAS.EXE EL ARCHIVO DE MI APL.
If Fecha_Archivo_local[1]>=Fecha_Archivo_Ftp[1,3] /// VALIDO LA FECHA DEL
ARCHIVO LOCAL Y LA FECHA DEL ARCHIVO QUE ESTA EN EL SERVIDOR FTP
WaitOff()
Msginfo("No hay actualizaciones disponibles")
REturn .t.
Endif
If Fecha_Archivo_local[1]<Fecha_Archivo_Ftp[1,3] /// VUELVO A VALIDAR LA
FECHA DEL ARCHIVO LOCAL Y LA FECHA DEL ARCHIVO QUE ESTA EN EL SERVIDOR FTP
WaitOff()
IF MsgYesNo("Existe una nueva versión disponible, ¿desea
descargarla?" )=.f.
Return .t.
Else
Archivo_ftp=:directory("/actualizaciones") ///OBTENGO TODOS
LOS ARCHIVOS QUE ESTAN ALMACENADOS EN ACTUALIZACIONES DEL SERVIDOR FTP
Waiton("Realizando actualizaciones")
For cuenta=3 to len(Archivo_ftp ) /// ESPECIFICO
QUE A PARTIR DE 3 EMPIEZE A DARME LOS ARCHIVOS (CON LAS PRUEBAS QUE HICE EL
SERVIDOR FTP ME REGRESA 5 ARCHIVOS Y YO SOLO TENGO ALMACENADO 3
Extension=substr(Archivo_ftp[cuenta,1],len(Archivo_ftp[cuent a,1])-2,3)
///OBTENGO LA EXTENSION DEL ARCHIVO DEL FTP
If upper(Extension)="FR3" //// SI ES ARCHIVO
DE REPORTE (FASTREPORT)
delete
file(".REPORTES"+Archivo_ftp[cuenta,1] ) ///ELIMINO EL ARCHIVO LOCAL
:GetFile("/actualizaciones/"+Archivo_ftp[cuenta,1],
".reportes"+Archivo_ftp[cuenta,1]) DESCARGO EL ARCHIVO DEL FTP A LOCAL
Loop
Endif
If upper(Extension)="EXE" /// SI ES EL ARCHIVO
DE MI APLICACION
delete file(".ADVENTAS.EXE")
///ELIMINO EL ARCHIVO DE MI APLICACION
:GetFile("/actualizaciones/"+Archivo_ftp[cuenta,1],
"c:adventas"+Archivo_ftp[cuenta,1]) DESCARGO EL ARCHIVO DEL FTP A LOCAL
Loop
Endif
* Msginfo("Nombre: "+Archivo_ftp[cuenta,1]+"
Fecha: "+dtoc(Archivo_ftp[cuenta,3])+" Tamaño:
"+Str(Archivo_ftp[cuenta,2])+" Hora:"+Archivo_ftp[cuenta,4],"DATOS DEL
ARCHIVO" )
Next
WaitOff()
Msginfo("Actualizaciones realizadas con exito")
Endif
Endif
End With
RETURN Nil
Espero y les sirva y si lo pueden mejorar con barra de progreso o algo mas,
pues ahi compartanlo.
La union hace la fuerza.
Dios les bendiga.
Tomando de la pregunta de Marcelo Coelho Silva, acerca de Ftp, hice una
rutina para actualizar mis aplicaciones via Ftp.
Marcelo Coelho Silva puso la forma de como conectarse al servidor Ftp y asi
pude entender como hacerlo.
Gracias Marcelo Coelho Silva por compartir.
Este es el codigo
Lo puse en un formulario y lo ejecuto desde un boton.
METHOD ACEPTARClick( oSender ) CLASS ACTUALIZAR
Local
Archivo_ftp:={},Fecha_Archivo_local:=Array(1),Fecha_Archivo_ Ftp,archivos_ftp:={}
Local cuenta,extension
Adir(".ADVENTAS.EXE",,,Fecha_Archivo_local) /// ESTO ES DONDE TENGO MI
APLICACION Y DEL CUAL TOMO LA FECHA DEL ARCHIVO
With Object Tftp():New() /// CREO EL METODO DEL TFTP
Waiton("Buscando actualizaciones") /// MANDO UN MENSAJE CON EL SISTEMA
DE MENSAJES DE Bingen.
:cPassword := 'password'
:cUser := 'usuario'
:lPassive := .t.
:Open()
:Connect('www.mihostin.com')
Fecha_Archivo_Ftp=:directory("/actualizaciones/ADVENTAS.exe ") ///AQUI
OBTENGO LA FECHA DEL ARCHIVO DEL FTP (ACTUALIZACIONES ES MI CARPETA Y
ADVENTAS.EXE EL ARCHIVO DE MI APL.
If Fecha_Archivo_local[1]>=Fecha_Archivo_Ftp[1,3] /// VALIDO LA FECHA DEL
ARCHIVO LOCAL Y LA FECHA DEL ARCHIVO QUE ESTA EN EL SERVIDOR FTP
WaitOff()
Msginfo("No hay actualizaciones disponibles")
REturn .t.
Endif
If Fecha_Archivo_local[1]<Fecha_Archivo_Ftp[1,3] /// VUELVO A VALIDAR LA
FECHA DEL ARCHIVO LOCAL Y LA FECHA DEL ARCHIVO QUE ESTA EN EL SERVIDOR FTP
WaitOff()
IF MsgYesNo("Existe una nueva versión disponible, ¿desea
descargarla?" )=.f.
Return .t.
Else
Archivo_ftp=:directory("/actualizaciones") ///OBTENGO TODOS
LOS ARCHIVOS QUE ESTAN ALMACENADOS EN ACTUALIZACIONES DEL SERVIDOR FTP
Waiton("Realizando actualizaciones")
For cuenta=3 to len(Archivo_ftp ) /// ESPECIFICO
QUE A PARTIR DE 3 EMPIEZE A DARME LOS ARCHIVOS (CON LAS PRUEBAS QUE HICE EL
SERVIDOR FTP ME REGRESA 5 ARCHIVOS Y YO SOLO TENGO ALMACENADO 3
Extension=substr(Archivo_ftp[cuenta,1],len(Archivo_ftp[cuent a,1])-2,3)
///OBTENGO LA EXTENSION DEL ARCHIVO DEL FTP
If upper(Extension)="FR3" //// SI ES ARCHIVO
DE REPORTE (FASTREPORT)
delete
file(".REPORTES"+Archivo_ftp[cuenta,1] ) ///ELIMINO EL ARCHIVO LOCAL
:GetFile("/actualizaciones/"+Archivo_ftp[cuenta,1],
".reportes"+Archivo_ftp[cuenta,1]) DESCARGO EL ARCHIVO DEL FTP A LOCAL
Loop
Endif
If upper(Extension)="EXE" /// SI ES EL ARCHIVO
DE MI APLICACION
delete file(".ADVENTAS.EXE")
///ELIMINO EL ARCHIVO DE MI APLICACION
:GetFile("/actualizaciones/"+Archivo_ftp[cuenta,1],
"c:adventas"+Archivo_ftp[cuenta,1]) DESCARGO EL ARCHIVO DEL FTP A LOCAL
Loop
Endif
* Msginfo("Nombre: "+Archivo_ftp[cuenta,1]+"
Fecha: "+dtoc(Archivo_ftp[cuenta,3])+" Tamaño:
"+Str(Archivo_ftp[cuenta,2])+" Hora:"+Archivo_ftp[cuenta,4],"DATOS DEL
ARCHIVO" )
Next
WaitOff()
Msginfo("Actualizaciones realizadas con exito")
Endif
Endif
End With
RETURN Nil
Espero y les sirva y si lo pueden mejorar con barra de progreso o algo mas,
pues ahi compartanlo.
La union hace la fuerza.
Dios les bendiga.