现在许多软件的在线更新都可以更新本身的程序,哪位能说说怎么实现?
提供思路也可以

解决方案 »

  1.   

    if not MoveFile(lpExistingFileName, lpNewFileName) then
      begin//如果源文件正在使用,就让它重新启动系统后生效
        MoveFileEx(lpExistingFileName, lpNewFileName,MOVEFILE_DELAY_UNTIL_REBOOT);
      end;
      

  2.   

    用com+,分布式,添加模块即可
      

  3.   

    你用两个文件阿,执行update.exe,作更新a.exe,然后执行a.exe,退出update.exe
      

  4.   

    我做过类似的,一个是 update.exe,另一个是 rename.exe。update.exe负责从 ftp server下载文件,并且都命名为 *.~exe 等带~的类型,完成后,shellexecute rename.exe并退出update.exe,rename.exe 负责把每一个 *.~* 文件rename,并覆盖。
      

  5.   

    http://www.fulgan.com/delphi/autoupdate_unit_for_delphi.htm
      

  6.   

    To: fei19790920(饭桶的马甲(抵制日货)) 你贴的函数,要在什么地方使用呢?为什么我用后没有效果?
      

  7.   

    我也想过这问题如果有两个文件,可以很容易的实现启动Update.exe,退出自己,然后Update负责下载和覆盖旧文件而一个文件,通过发消息或者带参的方式,假设为1.exe,1.exe下载更新后的版面,假设为2.exe运行新文件,2.exe /update1自己退出2.exe检查参数,在一定的延时后,检查1.exe是否在运行,如果没有把自己拷贝到1.exe,运行 1.exe /update2自己退出1.exe检查参数,在一定的延时后,检查2.exe是否在运行,如果没有则删除它更新结束:)
      

  8.   

    如果是Win2000及以上版本系统,可以让程序在下载完新版本之后把旧版本(正在执行的文件)的文件名更改为临时文件(并不影响旧程序的运行的),然后把新版本文件名改为旧版本文件名,最后退出旧版本程序,并启动新版本程序在98系统可以用楼上的方法