从服务器上的/update下面down了要更新的文件到本机的/update,
但从服务器上的/update down下来的文件要分别放到/src,/bin....等很多目录下.一个再线更新程序.
怎么实现这些文件copy智能copy,
需要一个比较快捷的办法,
但从服务器上的/update down下来的文件要分别放到/src,/bin....等很多目录下.一个再线更新程序.
怎么实现这些文件copy智能copy,
需要一个比较快捷的办法,
解决方案 »
- 窑洞也塌方了?
- 使用ReadDirectoryChanges读取指定目录下文件变化的问题[急]
- 用wininet函数向服务器发送post请求的问题
- 欢迎各位大虾来讨论组件编写的问题,分不够另开帖加分,我有5000多可用分
- 请问怎么取得GroupBox里面的控件
- COM问题
- 100分:哪里有的delphi 书下载(delphi 6 developer's guide、Mastering delphi、delphi unshealed)
- delphi listview如何打印呢?谢谢
- 本人的RXLib2.75包,在Delphi6中Install,總是報告VclUtils.pas中有錯,誰有
- 'Nimda' 病毒
- 土问一个,怎样调用windows api
- 问 :::::::::
方法2.在服务器上建一个文本文件,对所有需要更新文件指出在客户端的安装目录及文件名.然后在客户端根据donw来的文本文件进行COPY操作.
如果这样完全可以把程序做成压缩包,放到web上让他们下.您的方法2正是我打算做的.如果没有更好的办法,我就按这个来做了.
下载更新过的版本到临时文件夹(具体你应该事先有个文档对路径做好安排)
启动update程序
主程序退出
update.exe copy files
shell main.exe
update.close
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;
我要算法而已,不要程序.