Исходник программы updater/downloader delphi

Исходники делфи, готовые программы/приложения и т.д.
Ответить
Аватара пользователя
glGizma
Site Admin
Сообщения: 218
Зарегистрирован: Ср сен 27, 2017 2:20 pm

Исходник программы updater/downloader delphi

Сообщение glGizma » Вс окт 03, 2021 2:51 pm

Исходник программы, предназначенной для обновления самой себя или компонентов программы через Интернет (используются компоненты Indy).

Принцип работы программы 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.
Вложения
download.rar
(260.7 КБ) 475 скачиваний
updater.png
updater.png (90.94 КБ) 12254 просмотра

Ответить