客戶端如何通過Internet更新自己的程序? 程序的最新版本在一服務器,客戶端是通過Internet連接到服務器的,如何編寫客戶端更新程序? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 在網上找找自動更新的例子.www.2ccc.com有的 用Indy控件實現了,但是要有FTP服務器. 实现步骤: 1、网站提供升级信息。 2、使用HTTP从网站下载升级信息。 3、确定是否进行升级 4、升级程序 下面我们定义一下升级信息: [文件名1] datetime=时间 [文件名2] datetime=时间 存为HTML文件,如定义一个update.htm [programe1.exe] datetime=2003-07-06 [programe1.hlp] datetime=2003-07-06 这里只是简单的判断一下文件的时间,如果时间比需要升级的文件时间小的,表示要下载新版本升级它。当然要做到十全十美,这是判断是不合理的,这里只作个简单的介绍。 写个fuction,判断是否有新的版本要升级function ExistNewfile&:boolean;var i,iFileHandle:integer;FileDateTime:TDateTime;AppIni:TiniFile;g_path:string;url:string;files:TStrings;beginresult:=false;url:=’http://yousoft.hi.com.cn/update.htm/’; //要升级的服务器g_path:=ExtractFilePath(application.ExeName); //升级程序的路径if copy(g_path,length(g_path),1)<>’\’ then g_path:=g_path+’\’;if copy(url,length(url),1)<>’/’ then url:=url+’/’;//下载升级信息文件tryHTTPFiles.InputFileMode := true;HTTPFiles.OutputFileMode := FALSE;HTTPFiles.ReportLevel := Status_Basic;HTTPFiles.Body:=g_path+’update/update.ini’; //下载后保存到程序的update目录下HTTPFiles.Get(url);exceptresult:=false; //取得升级信息出错!,不用再继续exit;end;tryfiles:=TStringlist.Create; //有哪些文件?AppIni := TIniFile.Create(g_path+’\update\update.ini’);AppIni.ReadSections(files);for i:=0 to files.Count-1 dotryiFileHandle :=FileOpen(g_path+files,fmShareDenyNone);FileDateTime:=FileDateToDateTime(FileGetDate(iFileHandle)); //取得文件时间FileClose(iFileHandle);//是否要下载文件if FileDateTime,’DATETIME’,’1900-1-1’))&NBSP;THENbeginresult:=true;break;end;exceptend;finallyAppIni.free;files.Free;end;end; 取得files后文件下载!httpfiles为TNMHTTPHTTPFiles.InputFileMode := true;HTTPFiles.OutputFileMode := FALSE;HTTPFiles.ReportLevel := Status_Basic;HTTPFiles.Body:=g_path+’update/’+files;HTTPFiles.Get(url); 把下载后的文件复制到原程序,并备份出一份for i:=0 to files.Count-1 do //备份文件begin//备份一份文件出来copyfile(pchar(g_path+files),pchar(g_path+files+’.bak’),false);end;for i:=0 to files.Count-1 do //从update复制新文件begincopyfile(pchar(g_path+’update\’+files),pchar(g_path+files),false);end; TO: jackie168(三箭齐发)----------------------問題是客戶沒有HTTP服務器.有一固定IP的數據庫服務器,不知如何才能下載上面的文件. Delphi.ktop 怎么打不开了呀 这到底是什么问题啊 delphi7中使用sql语句的提问 帮我介绍几本初学delphi的书籍吧!谢谢大家!!! 能不能告诉我delphi7.0的注册码 为什么在DLL中使用pchar(s)出错? 请问高手:怎么用Installshield Express3.5制作数据库安装程序? 关于动态生成组件的问题 能不能用TPrinter打印DBGrid的内容啊???? 分布数据库的问题,请教高手(分不多,全部家当) 共聊IT创业群17676054,这个群让大家说出IT人创业的看法,谈谈程序过后我们应该做什么??? 如何将bmp位图存入到xml文件里?
www.2ccc.com有的
2、使用HTTP从网站下载升级信息。
3、确定是否进行升级
4、升级程序 下面我们定义一下升级信息: [文件名1]
datetime=时间
[文件名2]
datetime=时间
存为HTML文件,如定义一个update.htm
[programe1.exe]
datetime=2003-07-06
[programe1.hlp]
datetime=2003-07-06 这里只是简单的判断一下文件的时间,如果时间比需要升级的文件时间小的,表示要下载新版本升级它。当然要做到十全十美,这是判断是不合理的,这里只作个简单的介绍。 写个fuction,判断是否有新的版本要升级function ExistNewfile&:boolean;
var i,iFileHandle:integer;
FileDateTime:TDateTime;
AppIni:TiniFile;
g_path:string;
url:string;
files:TStrings;
begin
result:=false;
url:=’http://yousoft.hi.com.cn/update.htm/’; //要升级的服务器
g_path:=ExtractFilePath(application.ExeName); //升级程序的路径
if copy(g_path,length(g_path),1)<>’\’ then g_path:=g_path+’\’;
if copy(url,length(url),1)<>’/’ then url:=url+’/’;//下载升级信息文件
try
HTTPFiles.InputFileMode := true;
HTTPFiles.OutputFileMode := FALSE;
HTTPFiles.ReportLevel := Status_Basic;
HTTPFiles.Body:=g_path+’update/update.ini’; //下载后保存到程序的update目录下
HTTPFiles.Get(url);
except
result:=false; //取得升级信息出错!,不用再继续
exit;
end;
try
files:=TStringlist.Create; //有哪些文件?
AppIni := TIniFile.Create(g_path+’\update\update.ini’);
AppIni.ReadSections(files);
for i:=0 to files.Count-1 do
try
iFileHandle :=FileOpen(g_path+files,fmShareDenyNone);
FileDateTime:=FileDateToDateTime(FileGetDate(iFileHandle)); //取得文件时间
FileClose(iFileHandle);
//是否要下载文件
if FileDateTime,’DATETIME’,’1900-1-1’))&NBSP;THEN
begin
result:=true;
break;
end;
except
end;
finally
AppIni.free;
files.Free;
end;
end; 取得files后文件下载!httpfiles为TNMHTTPHTTPFiles.InputFileMode := true;
HTTPFiles.OutputFileMode := FALSE;
HTTPFiles.ReportLevel := Status_Basic;
HTTPFiles.Body:=g_path+’update/’+files;
HTTPFiles.Get(url); 把下载后的文件复制到原程序,并备份出一份for i:=0 to files.Count-1 do //备份文件
begin
//备份一份文件出来
copyfile(pchar(g_path+files),pchar(g_path+files+’.bak’),false);
end;
for i:=0 to files.Count-1 do //从update复制新文件
begin
copyfile(pchar(g_path+’update\’+files),pchar(g_path+files),false);
end;
----------------------
問題是客戶沒有HTTP服務器.有一固定IP的數據庫服務器,不知如何才能下載上面的文件.