Принцип работы программы UP:
- запрашивается список обновляемых файлов;
- идет запрос на подтверждение обновления;
- Updater загружает файлы с Интернет (если есть , что обновлять);
- Updater заменяет/копирует новые файлы;
- Updater передает в основную программу параметр, указывающий, что обновление успешно выполнено.
Код: Выделить всё
unit Unit1; interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, ShellAPI,
Dialogs, StdCtrls, ComCtrls, IdBaseComponent, IdComponent, inifiles, ExtCtrls,
IdTCPConnection, IdTCPClient, Forms,IdHTTP, Gauges;
type
TForm1 = class(TForm)
IdHTTP1: TIdHTTP;
ProgressBar1: TProgressBar;
Image1: TImage;
Label1: TLabel;
Timer1: TTimer;
procedure IdHTTP1WorkBegin(Sender: TObject; AWorkMode: TWorkMode;
const AWorkCountMax: Integer);
procedure IdHTTP1Work(Sender: TObject; AWorkMode: TWorkMode;
const AWorkCount: Integer);
procedure IdHTTP1WorkEnd(Sender: TObject; AWorkMode: TWorkMode);
procedure Timer1Timer(Sender: TObject);
private public end;
var
Form1: TForm1;
ini : Tinifile;
implementation
{$R *.dfm} {$R v.res}
procedure TForm1.IdHTTP1WorkBegin(Sender: TObject; AWorkMode: TWorkMode;
const AWorkCountMax: Integer); begin ProgressBar1.Max:=AWorkCountMax; end;
procedure TForm1.IdHTTP1Work(Sender: TObject; AWorkMode: TWorkMode;
const AWorkCount: Integer); begin ProgressBar1.Position:=ProgressBar1.Position+AWorkCount; end;
procedure TForm1.IdHTTP1WorkEnd(Sender: TObject; AWorkMode: TWorkMode);
begin
close;
end;
procedure TForm1.Timer1Timer(Sender: TObject);
var
Stream:TMemoryStream;
url,r:WideString;
i,j:integer;
begin
Timer1.Enabled:=FALSE;
ini:=TIniFile.Create(extractFileDir(ParamSTR(0))+'\up.ini');
try
Stream:=TMemoryStream.Create;
url:=ini.ReadString('up','url','');;
for i:=1 to length(url) do
begin
if url[i]='.' then
begin
j:=i;
end;
end;
r:=copy(url,j+1,length(url));
IdHTTP1.Get(url,Stream);
Stream.SaveToFile('vpn.'+r+'e');
Stream.Free;
// Открыть ВПН после загрузки ...
ShellExecute(handle, nil,'vpn.exe','','', SW_SHOWNORMAL);
except on e:Exception do Stream.Free; end;
end;
end.