您好,欢迎来到[编程问答]网站首页   源码下载   电子书籍   软件下载   专题
当前位置:首页 >> 编程问答 >> Delphi >> Delphi中如何替换运行之中的文件实现程序的自动更新

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

来源:网络整理     时间:2016/8/25 6:00:00     关键词:

关于网友提出的“ Delphi中如何替换运行之中的文件实现程序的自动更新”问题疑问,本网通过在网上对“ Delphi中如何替换运行之中的文件实现程序的自动更新”有关的相关答案进行了整理,供用户进行参考,详细问题解答如下:

问题: Delphi中如何替换运行之中的文件实现程序的自动更新
描述:

各位朋友:
    最近在开发一个自动更新的程序,其主要原理是:当主程序启动后,其软件升级子模块自动从网上下载主程序(.exe)和与之相关的DLL等文件到本机的一个临时目录。然后在比较正运行的主程序和DLL等文件与临时目录中的文件是否需要替。如果需要,用临时目录中的文件替换原有文件。
  其中我已经实现了下载、比较等功能。但是如何替换正在运行中的主程序和DLL文件时却遇到了技术困难。为了解决这个难点我设计了一个方案即:利用Windows API 中的MoveFileWithProgressW来实现。但是,我发现在用Delphi开发的主程序中能实现更新,但是用PB开发的文件却出了“文件访问拒绝”或“有其它进程使用,不能移动”错误。
  特向各位朋友寻求技术支持:
1、MoveFileWithProgressW在Delphi中的详细用法
2、各位是否有更佳的方法来实现自动升级


解决方案1:

可以参考某些杀毒软件,下载一个升级包,下载完自动运行升级包,升级包运行的时候把主程序关掉,更新就是了。本人做过一个,可以两年一般都问题都能解决。有需要给参考一下。QQ:37084189

解决方案2:

最近在开发一个自动更新的程序,其主要原理是:当主程序启动后,其软件升级子模块自动从网上下载主程序(.exe)和与之相关的DLL等文件到本机的一个临时目录。然后在比较正运行的主程序和DLL等文件与临时目录中的文件是否需要替。如果需要,用临时目录中的文件替换原有文件。
===========
这样做下载量是不是太大.一般先下载一个更新说明文件(带有更新文件名和版本号,文本或者XML),在本地比较之后再决定下载什么文件,然后才是替换.
替换一般的东西,可以关闭正在运行的程序,然后复制过去.如果是24*7的程序,就需要更复杂的方式,一下子也说不清楚了.

解决方案3:

主进程启动后,自动启动UPDATE.EXE,
UPDATE.EXE负责下载更新文件,关闭主程序,更新文件。
UPDATE.EXE的行为应根据从服务器下载的更新脚本执行,这样就可以在其他项目中重用。

解决方案4:

替换本身,我一般是使用另外一个进程,关闭当前进程,更新后,重新启动进程
替换运行中的本身还没试过!


以上介绍了“ Delphi中如何替换运行之中的文件实现程序的自动更新”的问题解答,希望对有需要的网友有所帮助。
本文网址链接:http://www.codes51.com/itwd/3585023.html

相关图片

相关文章