我看到很多桌面软件 都是自动更新,请问一下,整个流程是怎么样的呢?
有些什么技术要点?
能说说现在最常用的软件升级方案 的思路么??
谢谢各位大神。。。
1
warlue 2018-10-16 04:38:13 +08:00 via iPhone
启动检查服务器上版本,有更新就自动下载静默安装。。
|
2
xuanbg 2018-10-16 08:44:07 +08:00
自动更新很简单的
1、读取本地文件版本号 2、读取服务端文件版本号 3、比较版本,如果本地低于服务端,就下载该文件替换本地文件,如果文件替换失败,将本地文件改名,然后保存文件 4、升级完成 |
4
gamexg 2018-10-16 09:33:18 +08:00 1
还见过服务器下发所有文件 hash 值,客户端计算比较,发现不一致的就下载替换...
|
5
tilv37 2018-10-16 10:12:04 +08:00 1
写个专用的升级工具,然后随主程序启动,检查服务端版本信息,比对,然后下载更新
|
6
JasonTsang OP |
7
lancerliu 2018-10-16 11:47:41 +08:00
多种方案,比如:1.服务器端有需要更新的文件列表 2.服务器端下发所有文件的 hash
|
8
imn1 2018-10-16 12:04:32 +08:00
你想全自动,需要装在用户目录,不然会触发权限
|
9
xujinkai 2018-10-16 12:18:58 +08:00 via Android
如果仅限 win10 的话 传到应用商店 微软帮你更新
|
10
qecxp 2018-10-16 12:41:11 +08:00 2
自动更新方案实现起来其实很复杂。
1.windows vista 之后有更多的权限控制,比如 C:\Program Files 软件安装目录,通常是没有权限替换文件的。如果要升级替换,可能会弹出 UAC 提示用户,而用户可能点了不允许你替换文件,导致升级失败。如果把程序安装在低权限目录,是可以替换文件的而不会弹 UAC 提示用户。 2.如果程序有多个模块,你升级了 A 模块,如果 A 模块与其他模块有依赖关系,需要充分测试。假如升级的版本很多,模块很多,这种依赖关系指数增长,存在很多风险。 3.你升级的时候是不是需要当前运行的程序退出?假如你升级到一半用户又运行程序,有不可预知的问题。假如你的程序退出了,那谁来启动你的升级程序进行升级呢,是否再写一个后台服务来升级? 4.需要考虑升级失败回滚机制 |
11
jinhan13789991 2018-10-16 13:46:40 +08:00
下载好新的安装包,提示安装~,点击就打开安装程序~
|
12
iwtbauh 2018-10-16 18:44:41 +08:00 via Android
丢给包管理器解决
不要重复发明轮子 不要重复发明轮子 不要重复发明轮子 windows 的话 msys2 了解一下,用户加上 msys2 源,导入公钥,然后各种麻烦的问题都由包管理器处理了。 |