Foros del Web » Programación para mayores de 30 ;) » Programación General » Visual Basic clásico »

Como crear un Updater

Estas en el tema de Como crear un Updater en el foro de Visual Basic clásico en Foros del Web. Hola, quisiera saber como puedo hacer para que mi programa descargue varios archivos a la ves como un actualizador, leyendo desde mi servidor la lista ...
  #1 (permalink)  
Antiguo 20/01/2008, 15:26
Avatar de RAYONEGRO  
Fecha de Ingreso: enero-2008
Ubicación: Cumaná, Venezuela, Venezuela
Mensajes: 37
Antigüedad: 16 años, 3 meses
Puntos: 0
Como crear un Updater

Hola, quisiera saber como puedo hacer para que mi programa descargue varios archivos a la ves como un actualizador, leyendo desde mi servidor la lista de archivos a descargar e ir descargando uno por uno utilizando 2 progressbar (uno que muestre el progreso de un archivo por archivo y el otro que muestre el progreso de todas las descargas en total) y un label que muestre el status de la descarga por ejemplo (Descargando main.exe, Descargando Text.bmd, etc...) y que este guarde los archivos en el directorio que le indique el servidor.

y si alguien sabe como modificar el diseño del progressbar porfavor enseñadme :D, me seria de mucha ayuda..

gracias de antemano
salu2
  #2 (permalink)  
Antiguo 21/01/2008, 13:19
Avatar de RAYONEGRO  
Fecha de Ingreso: enero-2008
Ubicación: Cumaná, Venezuela, Venezuela
Mensajes: 37
Antigüedad: 16 años, 3 meses
Puntos: 0
Re: Como crear un Updater

Ayudenme Plzz
  #3 (permalink)  
Antiguo 21/01/2008, 17:27
Avatar de Kruzado  
Fecha de Ingreso: marzo-2007
Mensajes: 307
Antigüedad: 17 años, 2 meses
Puntos: 17
Re: Como crear un Updater

ya pelao,
crea un formulario en tu proyecto (obvio)

en el area de declaraciondes de variablesn pega esto :

Public o_Fso As New FileSystemObject
Public o_fso2 As New FileSystemObject
Public Archivo As File
Public archivo2 As File
Public percentvalue As Variant

declara las siguientes funciones como publicas

Function CopyFile(Src As String, Dst As String) As Single
pctbox.BackColor = vbWhite
Static Buf$
Dim BTest!, FSize! 'declare the needed variables
Dim Chunk%, F1%, F2%

Const BUFSIZE = 1024 'set the buffer size

If Len(Dir(Dst)) Then 'check to see if the destination file already exists
'Response = MsgBox(Dst + Chr(10) + Chr(10) + "Ya existe el fichero destino. ¿Quiere sustituirlo?", vbYesNo + vbQuestion) 'prompt the user with a message box
response = vbYes
If response = vbNo Then 'if the "No" button was clicked
Exit Function 'exit the procedure
Else 'otherwise
Kill Dst 'delete the already found file, and carryon with the code
End If
End If

'On Error GoTo FileCopyError 'incase of error goto this label
F1 = FreeFile 'returns file number available
Open Src For Binary As F1 'open the source file
F2 = FreeFile 'returns file number available
Open Dst For Binary As F2 'open the destination file

FSize = LOF(F1)
BTest = FSize - LOF(F2)

Do
If BTest < BUFSIZE Then
Chunk = BTest
Else
Chunk = BUFSIZE
End If

Buf = String(Chunk, " ")
Get F1, , Buf
Put F2, , Buf
BTest = FSize - LOF(F2)

'ProgressBar.Value = (100 - Int(100 * BTest / FSize)) 'advance the progress bar as the file is copied
percentvalue = (100 - Int(100 * BTest / FSize)) 'advance the progress bar as the file is copied
llenapic
Loop Until BTest = 0
Close F1 'closes the source file
Close F2 'closes the destination file
CopyFile = FSize
'Cancel.SetFocus
'ProgressBar.Value = 0 'returns the progress bar to zero
Exit Function 'exit the procedure

FileCopyError: 'file copy error label
MsgBox "Error en la copia!. Repítala, por favor..." 'display message box with error
Close F1 'closes the source file
Close F2 'closes the destination file
Exit Function 'exit the procedure

End Function

Public Sub llenapic()
'percentvalue = (cuenta * 100) / totalreg
pctbox.Line (0, 0)-((pctbox.Width * percentvalue) / 100, pctbox.Height), pctbox.ForeColor, BF
strPercent = Format$(Int(percentvalue)) & "%"
'strPercent = Format(percentvalue, "###") & "%"
intWidth = pctbox.TextWidth(strPercent)
intHeight = pctbox.TextHeight(strPercent)
intX = pctbox.Width / 2 - intWidth / 2
intY = pctbox.Height / 2 - intHeight / 2
pctbox.DrawMode = 13
pctbox.AutoRedraw = True
'pctbox.Line (intX, intY)-(intWidth, intHeight), pctbox.BackColor, BF
pctbox.CurrentX = intX
pctbox.CurrentY = intY

'pctbox.Print strPercent
'pctbox.Line (0, 0)-(percentvalue, pctbox.Height), pctbox.ForeColor, BF
Debug.Print Format(percentvalue, "0000000000.00")
'llenapic
pctbox.Refresh
'reproc.Refresh

End Sub

ahora crea un boton y un picturebox (para usarlo como un progressbar), al picturebox ponle el nombre de pctbox

y por ultimo pega el siguiente codigo en tu boton

'Variable de tipo FileSystemObject y File

Dim o_Fso As New FileSystemObject
Dim Archivo As File
' Lee las propiedades del archivo mediante GetFile
Set Archivo = o_Fso.GetFile("c:\petricio\petricio.exe")
Set archivo2 = o_fso2.GetFile("petricio.exe")

'Visualiza el resultado: Creación ,acceso y modificado etc..'
If Archivo.DateLastModified <> archivo2.DateLastModified Then
xx = CopyFile("tuarchivo.exe", "c:\ruta\tuarchivo.exe")
End If
' Elimina las variables de objeto
Set Archivo = Nothing
Set o_Fso = Nothing

que hace? copia un archivo llamado tuarchivo.exe en turuta\tuarchivo.exe, en teoria la copia la hace cuando la fecha de ultima modiicacion no es la misma en los dos archivos, pero a mi me copia siempre...

para eso utiliza la funcion copyfile y dentro de ese copyfile, hace un llamado a la funcion llenapic, que es donde el picturebox cambia de color para hacerlas como un picturebox, esto lo puedes hacer para todos los archivos que necesites

a meterle mano y rmperse el coco para ke puedas mejrar esta custion (que a proposito lo encontre en internet, no lo hice yo!!!!)
  #4 (permalink)  
Antiguo 22/01/2008, 21:53
Avatar de RAYONEGRO  
Fecha de Ingreso: enero-2008
Ubicación: Cumaná, Venezuela, Venezuela
Mensajes: 37
Antigüedad: 16 años, 3 meses
Puntos: 0
Re: Como crear un Updater

disculpa pero el codigo no me fue efectivo ;(, porfavor alguien quien me ayude plzzz!!!

Última edición por RAYONEGRO; 23/01/2008 a las 22:41
  #5 (permalink)  
Antiguo 24/01/2008, 14:07
Avatar de Kruzado  
Fecha de Ingreso: marzo-2007
Mensajes: 307
Antigüedad: 17 años, 2 meses
Puntos: 17
Re: Como crear un Updater

ke problema tuvo?
  #6 (permalink)  
Antiguo 24/01/2008, 20:01
Avatar de RAYONEGRO  
Fecha de Ingreso: enero-2008
Ubicación: Cumaná, Venezuela, Venezuela
Mensajes: 37
Antigüedad: 16 años, 3 meses
Puntos: 0
Re: Como crear un Updater

ps al intentar escribir el .EXE no me dejaba, la foto del error es esta:

  #7 (permalink)  
Antiguo 25/01/2008, 08:59
Avatar de Kruzado  
Fecha de Ingreso: marzo-2007
Mensajes: 307
Antigüedad: 17 años, 2 meses
Puntos: 17
Re: Como crear un Updater

sorry, mne falto algo....

activa lo sig:

menu/proyecto/referencia

marca la opcion Microsoft Scripting Runtime
  #8 (permalink)  
Antiguo 25/01/2008, 15:02
Avatar de RAYONEGRO  
Fecha de Ingreso: enero-2008
Ubicación: Cumaná, Venezuela, Venezuela
Mensajes: 37
Antigüedad: 16 años, 3 meses
Puntos: 0
Re: Como crear un Updater

mmm, disculpa amigo, el programa lo pude escribir bien en el .EXE gracias a lo que me dijistes y ahora me doy cuenta cuando intento hacer una prueba descargando un archivo, el programa crea el archivo en la ruta que le indico pero del resto no hace mas nada, el programa queda en 0 bytes, actualizo y todavia sigue igual.

ademas, la idea no era que descargara un solo archivo, sino varios archivos dependiendo de lo que le indique el servidor, en este caso: http://www.mydomain.com/updates/updates.ini
Cita:
[files]
file01=http://http://www.mydomain.com/updates/myfile1.exe
file02=http://http://www.mydomain.com/updates/myfile2.exe
[ruta]
ruta01=myfile1.exe
ruta02=ruta\myfile2.exe
[importantfile](que descargue este archivo cada ves que se habra el programa en la ruta que le indico)
impfile=myfile3.exe
[importantruta]
impruta=ruta\ruta2\myfile3.exe
gracias por responder, de verdad agradezco tu ayuda
  #9 (permalink)  
Antiguo 30/01/2008, 14:32
Avatar de RAYONEGRO  
Fecha de Ingreso: enero-2008
Ubicación: Cumaná, Venezuela, Venezuela
Mensajes: 37
Antigüedad: 16 años, 3 meses
Puntos: 0
Re: Como crear un Updater

plzz, alguien que responda mi pregunta!!. es urgente plzz
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 19:58.