网页网页分享

Delphi:下载升级文件的方法,采用HTTPS协议

2025-06-08约 1 分钟0 次阅读技术分享

😀 在windows的应用开发中,文件升级是必须要有的。在升级中需要自动下载升级文件。这里采用线程的方式下载升级文件到指定的文件夹中。

1.创建线程,方便主程序调用

delphi
unit DownloadThread;

interface
uses
  System.Classes, System.Net.HttpClient, System.Net.URLClient, System.Net.HttpClientComponent;
type
  TDownloadThread = class(TThread)
  private
    FURL: string;
    FSavePath: string;
    FOnComplete: TNotifyEvent;
    procedure DoComplete;
  protected
    procedure Execute; override;
  public
    constructor Create(const AURL, ASavePath: string; AOnComplete: TNotifyEvent);
    property OnComplete: TNotifyEvent read FOnComplete write FOnComplete;
  end;
implementation
{ TDownloadThread }
constructor TDownloadThread.Create(const AURL, ASavePath: string; AOnComplete: TNotifyEvent);
begin
  inherited Create(False);
  FURL := AURL;
  FSavePath := ASavePath;
  FOnComplete := AOnComplete;
end;
procedure TDownloadThread.DoComplete;
begin
  if Assigned(FOnComplete) then
    FOnComplete(Self);
end;
procedure TDownloadThread.Execute;
var
  HttpClient: THTTPClient;
  FileStream: TFileStream;
  Response: IHTTPResponse;
begin
  try
    HttpClient := THTTPClient.Create;
    try
      FileStream := TFileStream.Create(FSavePath, fmCreate);
      try
        Response := HttpClient.Get(FURL);
        if Response.StatusCode = 200 then
        begin
          FileStream.CopyFrom(Response.ContentStream, Response.ContentStream.Size);
        end;
      finally
        FileStream.Free;
      end;
    finally
      HttpClient.Free;
    end;
  except
  end;
  Synchronize(DoComplete);
end;
end.

2.在主界面进行调用即可,代码如下:

delphi
    URL:='https://xxxxxx.com/ShareFolderProject.exe' ;
    DestFilePath:=IncludeTrailingPathDelimiter(exeDir+'tmp') + 'setup.exe';

    DownloadThread := TDownloadThread.Create( URL,DestFilePath, DownloadComplete);

回调函数:

delphi
procedure TMainForm.DownloadComplete(Sender: TObject);
begin
  ShowMessage('文件下载完成!');
end;

这样就可以自动下载升级文件了。

相关文章

OpenClaw中进程卡死处理方式

OpenClaw中进程卡死处理方式

😀 有些时候openclaw一直没反应,原因是进程卡死,需要处理 1.kill进程 在日志中,可以看到当前进程,所以可以通过以下命令: 如果没有kill命令,可以尝试: 2.查看进程是否正常kill 如果没有任何输出,则表示已经清理了进程…

2026-03-160#openclaw
Docker镜像重新构建、部署

Docker镜像重新构建、部署

😀 Docker的新知识 :重新构建、部署。下载了一个 镜像,向在docker中部署,发现不是中文,根据需要,重新生成镜像、构建和部署 1.下载镜像: 镜像:kasmweb/ubuntu-noble-desktop:1.17.0-roll…

2026-03-150#Docker#openclaw

留言

邮箱不会公开,留言经审核后显示。

邮箱不会公开。所有留言经审核后显示。

还没有留言,来做第一个吧。