• 请不要在回答技术问题时复制粘贴 AI 生成的内容
JasonTsang
V2EX  ›  程序员

桌面软件 自动更新方案

  •  
  •   JasonTsang · Oct 16, 2018 · 6507 views
    This topic created in 2944 days ago, the information mentioned may be changed or developed.

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

    有些什么技术要点?

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

    谢谢各位大神。。。

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

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

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

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

    windows 的话 msys2 了解一下,用户加上 msys2 源,导入公钥,然后各种麻烦的问题都由包管理器处理了。
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   2175 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 69ms · UTC 03:00 · PVG 11:00 · LAX 19:00 · JFK 22:00
    ♥ Do have faith in what you're doing.