软件自动升级框架设计

如何设计一个好的桌面软件更新框架?

现在软件目录是这样。

一堆DLL+一个EXE主程序

我目前更新设计是这样.
启动时候检查更新,如果需要更新,则下载文件到临时目录。但是如何覆盖? exe正在使用DLL。无法覆盖的。最好能保持只运行一次exe,要不然杀毒软件会提示正在调用可疑的exe。


开满天机
浏览 742回答 3
3回答

元芳怎么了

建议程序本身和控制程序升级的程序分开,也就是2个exe。同时服务端发布一个清单列表,里面包含构成当前运行exe的各个组成部分的字节数及其MD5,以及版本,这样控制升级的exe可以通过检测清单列表里的内容来判定哪些部分需要更新(单独更新哪些dll还是程序整体)。程序启动的时候保证更新的程序同时也是启动的,其他的逻辑由控制程序来控制,当程序退出后不再锁定工作目录,更新程序完成更新。更新程序如果本身也是有可能升级的,这种情况如果也有很大可能会出现,则可以在服务端也设置一个配置接口,在需要更新时,用浏览器跳转进行数据更新程序整体的安装包。这样的话,假设程序本身为A, 负责更新的程序为update,角色关系如下A的更新由update负责,update的跟新由浏览器下载负责

森栏

专门准备一个简单的updater的程序(可以用参数调整配置就好)启动的时候(或者不定期)把updater打开,如果没有更新就自己退出如果有更新就关掉主程序(当然需要用户确认),开始升级,完成后重新打开主程序,然后自己悄悄退出

慕虎7371278

在你的程序入口,先查看本地update目录有没有update的文件,如果有就先update那些dll,之后在load程序的dll,然后程序启动。程序启动后要有个update进程负责检查有么有update,如果有就负责下载update,下载完成后,提醒用户有update,用户选择update就重新启动程序。这样只需要一个exe就可以了,不过这个exe不能被update,所以这个exe里面只能包含最精简的逻辑
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java