¡Feedback de descarga! En esta parte vamos a crear el formulario con su ProgressBar que servirá de base para conocer como va la descarga (todo un detalle~!).
Problema #1: La class TAppUpdate se hará responsable de instanciar el formulario, esto incluye su liberación.
Problema #2: Se controlará los mensajes que se programen, para simplificar, manejaremos el evento de descarga (equiparando la "barrita de carga" con el porcentaje de la descarga).
Nota: Para el proceso de descarga usaremos funciones definidas por la casa, más de lo mismo, esto es a gusto del programador. (También podéis mirar la API de WinInet) http://msdn.microsoft.com/en-us/library/windows/desktop/aa383630(v=vs.85).aspx
Al grano.
Crearemos el formulario nada más instanciar la clase TAppUpdate, por lo que vamos a tener que declarar el constructor Create en las declaraciones públicas. A su vez, declararemos el destructor Destroy.
constructor TAppUpdate.Create;
begin
inherited;
Frm := TForm.Create(nil);
with Frm do begin
Name := 'Updater';
BorderStyle := bsNone;
Width := 380;
Height := 30;
Position := poScreenCenter;
Visible := True;
end;
Bar := TProgressBar.Create(Frm);
with Bar do begin
Name := 'Bar';
Parent := Frm;
Width := 380;
Height := 30;
Min := 0;
Max := 100;
Visible := True;
end;
end;
La variable 'Frm' y 'Bar' estarán declaradas en el apartado privado, pues es de uso interno. Las usaremos en el método destructor de clase.
destructor TAppUpdate.Destroy;
begin
Bar.Free;
Frm.Free;
inherited;
end;
¡Y con esto terminamos por completo las funciones públicas! Y ya para terminar este capítulo, veremos el procedimiento de CheckUpdate. En el cual, veremos ya el método de descarga vía web
function TAppUpdate.CheckUpdate: Boolean;
begin
with TDownloadURL.Create(nil) do begin
try
URL := Self.URL;
FileName := 'CheckUpdate.txt';
ExecuteTarget(nil);
except
Result := False;
Free;
Exit;
end;
Free;
end;
{ Procesamos el archivo.txt, que contendrá la información necesaria }
DeleteFile('CheckUpdate.txt');
end;
- Ey...
- ¿Dime?
- Pero esto que eeeeeeeeees!!!
Nada hamijos, en primer lugar, creamos 'on the fly' la descarga, pasando la URL donde encontraremos la información necesaria y el archivo de destino, en este caso ¡texto plano! al finalizar, deberemos procesar ese texto a gusto del consumidor :3 (Con la class TStringList y sus delimitadores lo tenemos tirado). En dicho procesamiento decidiremos si proseguimos y actualizamos o no (comparando versiones y tal).
La razón del bloque try-except: en caso de no estar conectado a la red, no queremos que nuestro programa se cuelgue y se pete de errores, ¿verdad?, pues majetes, una solución práctica es esa, en el mismo check de updates, si detectamos cualquier error, pues nada, cerramos todo el tinglado y dejamos que la aplicación corra como siempre.
Cualquier duda, aquí estoy.
Salu2
No hay comentarios:
Publicar un comentario