2023年11月26日发(作者:)
Delphi实现软件⾃动升级的功能
Delphi 实现软件⾃动升级的功能
原理简单,在FTP上维护⼀个⽂件,⾥⾯记录着要更新⽂件的版本号,本地也有⼀个⽂件,每次启动更
新程序时,先从FTP上下载⽂件到本地名字为Update_,然后⽐较这两个⽂件,如果新的版本号⼤于旧的,
或者新的⽂件在就ini中没有,这些就表⽰要更新的⽂件,然后逐⼀下载。
本程序名字为AutoUpdate,你⽣成这个exe,然后和主程序⼀起打包,创建桌⾯快捷⽅式时,指向AutoUpdate,⽽不是主
程序。
在本地还有⼀个ini⽂件,⽐如叫吧,⾥⾯内容是
[coninfo]
main=
param={app}2 -y
main=:是主程序名称,和升级程序在同⼀⽬录
param={app}2 -y :这是命令⾏参数,app为当前路径,在程序中替换掉,传递给主程序(如果需要的话)
的内容格式如下
[root]
办事处查询.txt=20100519
[dbcard]
2=20100519
FTP⽤户密码.txt=20100519
[root]代表根⽬录,后⾯的[dbcard]代表⼦⽬录,依次类推
unit Main;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, IdHTTP, IdBaseComponent, IdComponent, IdTCPConnection,
IdTCPClient, IdFTP, ComCtrls, ExtCtrls,IniFiles,ShellAPI, jpeg;
type
TfrmMain = class(TForm)
IdFTP1: TIdFTP;
IdHTTP1: TIdHTTP;
ProgressBar1: TProgressBar;
GroupBox1: TGroupBox;
ld_host: TLabeledEdit;
ld_username: TLabeledEdit;
procedure CheckUpdateList;
function ConnectFTP:Boolean;
procedure DownLoadFile;
procedure LoadIni;
procedure SaveIni;
public
{ Public declarations }
end;
var
frmMain: TfrmMain;
implementation
uses
omFile(FExePath + 'update_');
itempath := '';
//下⾯开始⽐较两个list,如果newFile的版本号⼤于oldFile的版本号或者oldFile中没有的都表⽰要更新的
for i := 0 to - 1 do
begin
itemstr := s[i];
if itemstr = '' then Continue;
if itemstr[1] = '[' then
begin
itempath := Copy(itemstr,2,Length(itemstr)-2);
//如果是根⽬录
if itempath = 'root' then
itempath := '/';
Continue;
end;
itemstr := [i];
index := fName(itemstr);
Dir(path);
ForceDirectories(FExePath+path);
s1 := list_[i].Caption;
s2 := FExePath+path+'/'+list_[i].Caption;
(s1,s2,True);
end
else


发布评论