关闭

系统在线更新的代码

888人阅读 评论(0) 收藏 举报

大概是这样的。没测。。

呵呵。。 http的传输还是比较好的

 

 

procedure checkupdate;
var
  ustream:tmemorystream;
  verstr:string;
  oldname,newname:pchar;
  oldsize,newsize:dword;
begin
  ustream :=tmemorystream.Create ;
  try
    //get new version infomation
    verstr:=frmclient.HTTPC.Get('/jfgl/version.ini');
    if (verstr<>'') and ((strtointdef(fetch(verstr,'.'),1)>1) or (strtointdef(fetch(verstr,'.'),0)>1) or (strtointdef(fetch(verstr,'.'),1)>0) or (strtointdef(fetch(verstr,'.'),1)>0)) then
    try
      //get new exe file and rename to filename.tmp
      frmclient.httpc.Get('/jfgl/client.exe',ustream);
      ustream.SaveToFile(ChangeFileExt(application.ExeName,'.tmp'));
      //replace exe file until last boot because it is now running
      //if you have better method please tell me,thank's
      getmem(oldname,max_path);
      fillchar(oldname[0],max_path-1,0);
      getshortpathname(pchar(application.exename),oldname,oldsize);
      getmem(newname,max_path);
      fillchar(newname[0],max_path-1,0);
      getshortpathname(pchar(ChangeFileExt(application.ExeName,'.tmp')),newname,newsize);
      movefileex(newname,oldname,MOVEFILE_DELAY_UNTIL_REBOOT or MOVEFILE_REPLACE_EXISTING);
    except
    end;
  except
    //
  end;
  freeandnil(ustream);
end;

0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:79975次
    • 积分:1026
    • 等级:
    • 排名:千里之外
    • 原创:16篇
    • 转载:34篇
    • 译文:0篇
    • 评论:18条
    最新评论