Delphi中如何替换运行之中的文件实现程序的自动更新(200分)

  • 主题发起人 主题发起人 qqxk8199
  • 开始时间 开始时间
Q

qqxk8199

Unregistered / Unconfirmed
GUEST, unregistred user!
各位朋友:<br> &nbsp; &nbsp;最近在开发一个自动更新的程序,其主要原理是:当主程序启动后,其软件升级子模块自动从网上下载主程序(.exe)和与之相关的DLL等文件到本机的一个临时目录。然后在比较正运行的主程序和DLL等文件与临时目录中的文件是否需要替。如果需要,用临时目录中的文件替换原有文件。<br>  其中我已经实现了下载、比较等功能。但是如何替换正在运行中的主程序和DLL文件时却遇到了技术困难。为了解决这个难点我设计了一个方案即:利用Windows API 中的MoveFileWithProgressW来实现。但是,我发现在用Delphi开发的主程序中能实现更新,但是用PB开发的文件却出了“文件访问拒绝”或“有其它进程使用,不能移动”错误。<br>  特向各位朋友寻求技术支持:<br>1、MoveFileWithProgressW在Delphi中的详细用法<br>2、各位是否有更佳的方法来实现自动升级
 
为什么不关了主程序,换完了后再加载不行吗/<br><br>如果主程序不大的说,可以在每次程序运行的时候就PAN断是不下载更新.<br><br>要不就下载完了,提示下次运行主程序里,自动更新.QQ原来升级的时候也是这么做的.
 
应该先关掉主程序的进程 然后替换再运行主程序完成更新 就象瑞星杀毒一样 你可以注意到他的更新就是这样
 
在软件启动前就先检查文件的版本号与服务器的版本号,如果高于现在版本提示升级.如果在程序运行时升级,就必然要关闭在从新载入的.除非你的每一个模块都是dll,不需要更新主程序,主程序就是动态的调用dll.
 
多人接受答案了。
 
后退
顶部