@mangerlahn 是 macOS 上知名写作工具 Ulysses 的开发者,他的 side project 是一款名为 "Latest" 的开源 App。
Latest 要解决的问题是:把 Mac 上的 App 更新统一在一起,一键更新全部。
最近它发布了 0.10 版本。这个版本最大的特点是支持了 Homebrew Cask,因此进入了大家的视野。
但如果我们打开它 GitHub 上的 Open Issue 页,或者下载一下用一用。就会发现它还远不是那么回事。
但是我已经很早没有操心过 App 更新的事了。很早我就有一套方法能做到持续保持系统内 App 为最新版,并且也可以刻意排除不想随时更新的 App。这方法非常简单。
第一步:控制源头
首先,更新 App 的难题来自于 App 的来源不同。有的是 App Store,有的是 App 的官网。App Store 的问题不大,我们可以一键更新。
主要问题在于分别从各个 App 官网下载 App 时的问题。你不打开这个 App 你都不知道这个 App 要更新。结果你打开做事做个开头,啪给你弹一个更新提示,烦得不行。
所以控制源头,就是把各个网页下载的 App 都归于一处。归于哪?只有 Homebrew。
事实上,不管是 Latest.app 还是另一款付费工具 MacUpdater,本质上都是给 Homebrew 套壳。
所以,如果想要“一键更新”,就要通过 Homebrew 来下载和更新 App。这分三步:
- 下载 Homebrew;
- 用 Homebrew 下载 App;
- 用 Homebrew 更新 App。
前两步不是本文重点,而且非常简单,资料丰富。本站尊贵会员一定可以轻松解决这个问题。如果解决不了,Slack 私聊我给你解决。
这里突出介绍一下第三步,用 Homebrew 更新 App。
一般来说,大家熟悉的 Homebrew 一键更新所有 App 的命令是:brew upgrade。但是如果你只用这个命令,你会发现哪怕你更新完所有 App,你再打开某个 App 它可能还是要让你更新。
所以如果想在 Homebrew 里更新后所有 App 里都不再有任何更新提示,我们应该用 brew upgrade --greedy 这个命令。
stackoverflow 里有一个高赞回答比较专业地解释了这个机制:
brew upgrade 不会更新没有版本控制信息 ( version :latest) 的 casks 或具有内置升级机制 ( auto_updates true) 的应用程序。要重新安装这些 casks(如果可以升级,则升级它们)。
另,追加 ChatGPT 老师解释如下:
- brew upgrade: 这个命令会升级所有已安装的软件包到最新版本,但它仅限于那些已经发布了新版本的包。这意味着它只会升级那些有明确新版本号的包。例如,如果你安装了版本 1.0 的软件包,

