崩溃了,求救!!!!

bylgood 2010-06-24 10:32:43
一个更新程序,40多台电脑里面只有几台总是更新不了的,代码大体如下:
constructor TAutoUpdate.Create(ServerUpdatePath :string);
begin
Path_Remote := ServerUpdatePath;
Path_Target := ExtractFilePath(Application.ExeName);
FList := TStringList.Create;
FList.CommaText := 'Connect.ini lic PMain.exe';
end;


//下面这个函数出了什么问题?有几台电脑每次都没有复制文件到本地,而且返回的值为FALSE,检查权限方面又没发现有什么异常
function TAutoUpdate.UpdateFiles :boolean;
var
i :integer;
SourceFile, LocalFile, ExeName :string;
begin
Result := false;
ExeName := ExtractFileName(Application.ExeName);
for i:=0 to FList.count-1 do
begin
if FList.Strings[i]<> ExeName then
continue;
SourceFile := Path_Remote +FList.Strings[i];
LocalFile := Path_Target +FList.Strings[i];
if not FileExists(SourceFile) then
exit;
if not FileExists(LocalFile) then
exit;
if GetBuildInfo(SourceFile)=GetBuildInfo(LocalFile) then //该处函数单独认证过没问题,主要用于比较版本
exit;
//将远程文件复制到本地
CopyFile(Pchar(SourceFile), Pchar(Path_Target +'~'+FList.Strings[i]), false);
Result := True;
end;
end;
...全文
168 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
bylgood 2010-07-05
  • 打赏
  • 举报
回复
谢谢关注!已经用了版本控制和时间检测一起的方式,并写了跟踪程序,但是尚未去更新,到时更新找到原因后,会告诉大家的。
fengemail8 2010-07-05
  • 打赏
  • 举报
回复
关闭后可以设置停留几秒,
fengemail8 2010-07-05
  • 打赏
  • 举报
回复
更新时需要判断程序 是否已完全关闭!
king0bear 2010-07-01
  • 打赏
  • 举报
回复
提供个思路。把要更新的程序放到数据库里面去。
更新的时候从数据库里面读取。消灭防火墙等弊端。
nkym0626 2010-07-01
  • 打赏
  • 举报
回复
我帮你顶起来
xjwy 2010-07-01
  • 打赏
  • 举报
回复
应该用版本控制
wliaoc 2010-07-01
  • 打赏
  • 举报
回复
把杀毒、防火墙(包括xp跟杀毒软件的)都关了再试试,还有ip设置看看是否没问题
bylgood 2010-06-24
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 sanguomi 的回复:]
写输出日志
[/Quote]

晕死,又不能现场调试,很不方便,上一次更新时写了个跟踪工具过去,但只跟踪了部分,copy之前都是正确的,跟踪程序里面的ExeName采用了固定值,所以也没分析出具体结果。我在考虑是不是ExtractFileName、 FList.Strings[i]<> ExeName 、CopyFile之一有问题?
sanguomi 2010-06-24
  • 打赏
  • 举报
回复
写输出日志
老之 2010-06-24
  • 打赏
  • 举报
回复
可能是防火墙设置的问题

16,748

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 语言基础/算法/系统设计
社区管理员
  • 语言基础/算法/系统设计社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧