MacUpdater 在 2026 年 1 月 1 日停止开发,作者说是财务原因、不是技术原因。我用了很久,一时找不到顺手的替代,索性自己写了一个。
这就是 Duo Updater,一个 macOS 菜单栏 app:扫描你已经装好的软件,找出有更新的,然后按每个 app 自己期望的方式去装。纯 Swift,没有遥测,没有我这边的服务器,MIT 开源。

顺着来,不硬来
大多数更新器会挑一条机制,把所有 app 都塞进去。这个不。它先看这个 app 本来是怎么更新的——有的自带更新功能,有的从 App Store 装,有的是用 Homebrew 装的——然后就走那条路。app 自己能更新好的,它交出去让人家自己来;有什么事它做不安全,就直说,而不是猜着来。
界面上尽量把话说清楚:每一行写明你要从哪个版本走到哪个版本,按钮上写的就是接下来真正会发生的事。Update 是装,Relaunch 表示新版本其实已经装好了、只是开着的那份还是旧的。绿点表示这个 app 正在运行,你点之前就知道会不会有东西被关掉重开。
安装这块有几条不肯让步的规矩:绝不强行关掉正在运行的 app——该弹的保存提示照弹,你可以取消,取消了它就不动;大版本升级会先提醒一声再问你,而不是一键装完才发现要重新买授权。装之前还会留一份备份,出问题能退回去。
更新日志

打开窗口能看到它扫到的全部软件,点谁就显示谁的更新说明。厂商写得还算规整的,会被拆开重新排版——版本号、日期、一条改动一个 bullet——读起来像一份说明,而不是塞一个网页进来。
顺带得到的东西:发布日志
它见过的每个版本都会记下来,久了就是一份「你在用的这些软件到底什么时候发版」的记录。

有意思的是它不肯声称的那部分。只有软件自己公布了发布时间,这个时间才算准。其他情况我们只知道「有个新版本」,不知道它具体什么时候出现的——诚实能说的只是「在上一次检查和这一次检查之间」。这种时间会显示成带 ≈ 的一段区间,区间越宽越说明这是估的,而不是编一个看起来很精确的谎。
底下那张热力图只用准确的那部分数据。所以在我这台机器上,它记下的 525 次发布里,只有 226 次参与了统计——剩下 299 次都是真实发生过的发布,但时间是估出来的,估出来的东西没资格参与「某人习惯什么时候发版」这种结论。
隐私
没有遥测,没有统计 SDK,也没有我这边的服务器。查一个 app 有没有新版本,请求就直接发给这个 app 的厂商,只带这次查询必需的东西——它自己的版本号。你自己填的东西(比如账号令牌)存在系统钥匙串里,不同步、不外传。
装好之后 macOS 会问几次权限。可以先都不给:看是不需要权限的,列表、版本检查、更新说明全都照常工作;等你真要它帮你装、帮你重开 app 的时候,再按提示给也来得及。
下载
github.com/jizhi0v0/duo-updater,Releases 里是已公证的构建,装好之后它会自己更新自己。喜欢命令行的话,同一套引擎也有个 duo 命令,能查、能装、能回滚。
系统要求 macOS 14+,仅限 Apple Silicon——这是个刻意的取舍:它手上那份下载地址表是按 Apple 芯片配的,硬要在 Intel 机器上跑,结果是装完提示成功、app 却打不开。与其这样,不如先不支持。