桌面软件 自动更新方案

2018-10-16 02:44:09 +08:00
 JasonTsang

我看到很多桌面软件 都是自动更新,请问一下,整个流程是怎么样的呢?

有些什么技术要点?

能说说现在最常用的软件升级方案 的思路么??

谢谢各位大神。。。

5168 次点击
所在节点    程序员
12 条回复
warlue
2018-10-16 04:38:13 +08:00
启动检查服务器上版本,有更新就自动下载静默安装。。
xuanbg
2018-10-16 08:44:07 +08:00
自动更新很简单的
1、读取本地文件版本号
2、读取服务端文件版本号
3、比较版本,如果本地低于服务端,就下载该文件替换本地文件,如果文件替换失败,将本地文件改名,然后保存文件
4、升级完成
vx2018
2018-10-16 09:21:34 +08:00
@xuanbg 3 也可以下载最新安装程序, 安装程序启动时通知主程序退出, 然后安装
gamexg
2018-10-16 09:33:18 +08:00
还见过服务器下发所有文件 hash 值,客户端计算比较,发现不一致的就下载替换...
tilv37
2018-10-16 10:12:04 +08:00
写个专用的升级工具,然后随主程序启动,检查服务端版本信息,比对,然后下载更新
JasonTsang
2018-10-16 11:36:55 +08:00
@xuanbg 这个流程我知道,我是想知道,怎么比对文件的差异,替换这些我应该还是懂的

因为一次修改后  可能会修改很多文件 和 删除某些文件
lancerliu
2018-10-16 11:47:41 +08:00
多种方案,比如:1.服务器端有需要更新的文件列表 2.服务器端下发所有文件的 hash
imn1
2018-10-16 12:04:32 +08:00
你想全自动,需要装在用户目录,不然会触发权限
xujinkai
2018-10-16 12:18:58 +08:00
如果仅限 win10 的话 传到应用商店 微软帮你更新
qecxp
2018-10-16 12:41:11 +08:00
自动更新方案实现起来其实很复杂。

1.windows vista 之后有更多的权限控制,比如 C:\Program Files 软件安装目录,通常是没有权限替换文件的。如果要升级替换,可能会弹出 UAC 提示用户,而用户可能点了不允许你替换文件,导致升级失败。如果把程序安装在低权限目录,是可以替换文件的而不会弹 UAC 提示用户。
2.如果程序有多个模块,你升级了 A 模块,如果 A 模块与其他模块有依赖关系,需要充分测试。假如升级的版本很多,模块很多,这种依赖关系指数增长,存在很多风险。
3.你升级的时候是不是需要当前运行的程序退出?假如你升级到一半用户又运行程序,有不可预知的问题。假如你的程序退出了,那谁来启动你的升级程序进行升级呢,是否再写一个后台服务来升级?
4.需要考虑升级失败回滚机制
jinhan13789991
2018-10-16 13:46:40 +08:00
下载好新的安装包,提示安装~,点击就打开安装程序~
iwtbauh
2018-10-16 18:44:41 +08:00
丢给包管理器解决

不要重复发明轮子
不要重复发明轮子
不要重复发明轮子

windows 的话 msys2 了解一下,用户加上 msys2 源,导入公钥,然后各种麻烦的问题都由包管理器处理了。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/497954

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX