本文作者:icy

(AutoUpdateLib-1.0) 自动更新程序-Delphi-demo

icy 2021-05-17 529 抢沙发
(AutoUpdateLib-1.0) 自动更新程序-Delphi-demo摘要: 自动更新程序-Delphi-demo给一个…做的一个自动更新的玩意儿。内使用的咯,golang做的后台C++写的库Delphi写的客户端。。真的是吃饱饭了。。。。。客户端暂...

自动更新程序-Delphi-demo

给一个…做的一个自动更新的玩意儿。
内使用的咯,

golang做的后台
C++写的库
Delphi写的客户端。。
真的是吃饱饭了。。。。。

客户端暂时 只支持 windows平台(好像也没有必要windows以外的) Windows7/Windows10 上使用

Delphi 简单的demo 如下

program ZeligAU;

{$APPTYPE CONSOLE}

{$R *.res}

uses
  XSJson,
  ice.Common,
   (*
      这边主要用到 json 解析 和 格式化文件大小什么的
      可以下载 http://ice.zelig.cn/file/download?id=18 只支持 10.4 (谢谢不然请自己找替代...)
   *)
  System.SysUtils,
  Zelig.AutoUpdate in '..\Unit\Zelig.AutoUpdate.pas';
(*---------------------------------------------------------------------------*)
const
PConfig = '{"logger":{"enable": true,"log_file":"autpupdate.log","max_size":10000},"update_check":"http://ice.zelig.cn/file/check_version?id=16&version=0.9","tempfile_path":".\\temp\\","unzip_path":".\\","version":1.101,"kill_processes":["qq.exe"]}';

(*---------------------------------------------------------------------------*)

begin
  try
    { TODO -oUser -cConsole Main : Insert code here }

    with TZeligAutoUpdate.Create do
    begin
      OpenConfig(PCOnfig);
      OnCheckUpdate:= function(const HTTP_STATUS: Cardinal; const JSON: string): TCheckUpdateResult
      begin
        var JO: ISuperObject:= SO(JSON);
        Result.Next:= JO.I['state'] = 0 ;
        if Result.Next then
        begin
          Result.Next:= JO.O['data'].B['update'];
          FillChar(Result.URL,Length(result.URL),#0) ;
          if Result.Next then
          Strcat(Result.URL,PAnsiChar(AnsiString(JO.O['data'].S['url'])));
        end
        else system.Writeln(Jo.S['msg']);
      end;

      OnError:= procedure(const  ECODE: TAD_ERROR_CODE; const Msg: string)
      begin
        System.Writeln('Error: ' + Msg);
      end;

      OnUnzipExtractFile:= procedure(const FileName: string)
      begin
        System.Writeln(FileName);
      end;

      OnDownloadProgressor:= procedure(const dnow,dtotal,unow,utotal,speed: Double )
      begin
         system.Writeln(Format('文件大小: %S, 已下载: %s, 下载速度: %s',[FormatSize(dtotal),
         FormatSize(utotal),
         FormatSize(speed)]))
      end;

      Auto;

      Free;
    end;

    readln;
  except
    on E: Exception do
      Writeln(E.ClassName, ': ', E.Message);
  end;
end.

更新管理页面比较丑。。。不擅长 哈哈哈

客户端演示 可以直接拉取代码 或者在下面网盘下载压缩包

gitee https://gitee.com/Icy2010/Zelig.AutoUpdate.git

网盘下载(Zelig.AutoUpdate.zip) http://ct.icy6.com/f/18943335-496275361-457292

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏

阅读
分享

发表评论

快捷回复:

评论列表 (暂无评论,529人围观)参与讨论

还没有评论,来说两句吧...