3 回答
TA贡献1798条经验 获得超7个赞
建议程序本身和控制程序升级的程序分开,也就是2个exe。
同时服务端发布一个清单列表,里面包含构成当前运行exe的各个组成部分的字节数及其MD5,以及版本,这样控制升级的exe可以通过检测清单列表里的内容来判定哪些部分需要更新(单独更新哪些dll还是程序整体)。程序启动的时候保证更新的程序同时也是启动的,其他的逻辑由控制程序来控制,当程序退出后不再锁定工作目录,更新程序完成更新。
更新程序如果本身也是有可能升级的,这种情况如果也有很大可能会出现,则可以在服务端也设置一个配置接口,在需要更新时,用浏览器跳转进行数据更新程序整体的安装包。
这样的话,假设程序本身为A, 负责更新的程序为update,角色关系如下
A的更新由update负责,update的跟新由浏览器下载负责
TA贡献1810条经验 获得超5个赞
专门准备一个简单的updater的程序(可以用参数调整配置就好)
启动的时候(或者不定期)把updater打开,如果没有更新就自己退出
如果有更新就关掉主程序(当然需要用户确认),开始升级,完成后重新打开主程序,然后自己悄悄退出
TA贡献1802条经验 获得超4个赞
在你的程序入口,先查看本地update目录有没有update的文件,如果有就先update那些dll,之后在load程序的dll,然后程序启动。程序启动后要有个update进程负责检查有么有update,如果有就负责下载update,下载完成后,提醒用户有update,用户选择update就重新启动程序。
这样只需要一个exe就可以了,不过这个exe不能被update,所以这个exe里面只能包含最精简的逻辑
添加回答
举报