请问怎么样可以做软件在线更新的功能? 我想让我的软件做成可以有在线更新的功能 这样当我的软件有新的版本出来的时候用户那边检测到就可以在线更新了 请问怎么做呢? 有高手知道吗 懂得请赐教 小弟这里感谢了!!! 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 转用:用 Delphi 实现软件的在线升级 用过一般的杀毒软件,都知道,启动程序时,常会问,网上已经有新版本的,是否升级之类的提示,现在越来越多的软件都支持在线升级,你是否也想实现这个功能?本文就如何实现在线升级,讲述一下如何通过HTTP检测是否需要下载升级版本,下载并升级。 实现步骤: 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[i],fmShareDenyNone);FileDateTime:=FileDateToDateTime(FileGetDate(iFileHandle)); //取得文件时间FileClose(iFileHandle);//是否要下载文件if FileDateTime〈strtodatetime(Appini.ReadString(files[i],’datetime’,’1900-1-1’)) 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[i];HTTPFiles.Get(url); 把下载后的文件复制到原程序,并备份出一份for i:=0 to files.Count-1 do //备份文件begin//备份一份文件出来copyfile(pchar(g_path+files[i]),pchar(g_path+files[i]+’.bak’),false);end;for i:=0 to files.Count-1 do //从update复制新文件begincopyfile(pchar(g_path+’update\’+files[i]),pchar(g_path+files[i]),false);end; Class TRzSizePanel not found fastreport2和3哪个版本好一些?fastreport能打印非常复杂的stringgrid吗?大家探讨一下 一条记录中字段间的最小值sql语句怎样写? 文件位置居然与盘符无关? 请高人解答(100分) 请问Table的Table.BeforePost如何用 怎么取到系统及其使用的浏览器版本和安装的插件 关于一个协议中有多种编码方式内容在里面,晕了不知怎样一并合在一起并发送过去 msg Error 谁来帮我找BUG? 数据更新出现错误,怎么办? 如何知道SQL事务是提交或是回滚了? 如何读写文本文件!
用 Delphi 实现软件的在线升级
用过一般的杀毒软件,都知道,启动程序时,常会问,网上已经有新版本的,是否升级之类的提示,现在越来越多的软件都支持在线升级,你是否也想实现这个功能?本文就如何实现在线升级,讲述一下如何通过HTTP检测是否需要下载升级版本,下载并升级。 实现步骤: 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;
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[i],fmShareDenyNone);
FileDateTime:=FileDateToDateTime(FileGetDate(iFileHandle)); //取得文件时间
FileClose(iFileHandle);
//是否要下载文件
if FileDateTime〈strtodatetime(Appini.ReadString(files[i],’datetime’,’1900-1-1’)) 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[i];
HTTPFiles.Get(url); 把下载后的文件复制到原程序,并备份出一份for i:=0 to files.Count-1 do //备份文件
begin
//备份一份文件出来
copyfile(pchar(g_path+files[i]),pchar(g_path+files[i]+’.bak’),false);
end;
for i:=0 to files.Count-1 do //从update复制新文件
begin
copyfile(pchar(g_path+’update\’+files[i]),pchar(g_path+files[i]),false);
end;