如何在 Mac 上检查应用更新 — 所有来源一站式搞定
如何在 Mac 上检查应用更新 — 所有来源一站式搞定
保持 Mac 应用更新对于安全性、性能和兼容性至关重要。但 macOS 没有一个统一的地方能显示所有应用的更新。App Store 管理自己的目录,Homebrew 通过终端管理 cask,基于 Sparkle 的应用独立检查,而 Electron 应用则依赖 GitHub 发布。这让你需要使用多种工具才能知道哪些应用需要更新。
本指南将解释 Mac 应用从何处获取更新,如何手动检查每个来源,以及 NythyCleaner 如何通过一次扫描将所有内容整合在一起 — 包括 npm、pip 和 Composer 依赖项等开发者软件包。
问题:macOS 上的更新碎片化
每个 Mac 应用都有不同的更新机制,具体取决于其安装和构建方式:
- App Store 应用 — 通过 Mac App Store(系统设置或 App Store 应用)更新。
- Homebrew cask — 通过终端中的
brew upgrade --cask更新。 - 基于 Sparkle 的应用 — 像 Firefox、VLC 或 Sketch 这样的应用包含 Sparkle 框架并检查自己的 RSS feed。
- Electron / GitHub 应用 — 像 VS Code、Discord 或 Notion 这样的应用检查 GitHub Releases 以获取新版本。
- 开发者软件包 — npm、pip、Composer、CocoaPods 和其他包管理器都有各自的
outdated命令。
大多数用户只检查其中一两个来源,导致数十个应用默默运行着过时的版本 — 有时还存在已知的安全漏洞。
方法 1:手动检查每个来源
App Store
打开 App Store → 更新 或前往 系统设置 → 通用 → 软件更新(针对 macOS 本身)。这仅涵盖通过 App Store 安装的应用。
Homebrew
如果您使用 Homebrew,请运行:
brew update
brew outdated --cask
这将列出有新版本可用的 cask。要升级一个:
brew upgrade --cask <app-name>
基于 Sparkle 的应用
大多数 Sparkle 应用在启动时会自动检查更新。您也可以从应用菜单中手动触发检查:应用名称 → 检查更新。目前没有从终端一次性检查所有 Sparkle 应用的集中方式。
Electron / GitHub 应用
对于在 App Store 之外分发的 Electron 应用,您需要访问每个应用的 GitHub 发布页面,并将版本号与您已安装的版本进行比较。这很繁琐,也很少有人这样做。
开发者软件包
每个包管理器都有自己的命令:
npm outdated # Node.js
pip list --outdated # Python
composer outdated # PHP
pod outdated # CocoaPods
brew outdated # Homebrew formulae
在多个项目中运行这些命令需要时间,而且您需要记住哪些项目使用了哪些管理器。
手动检查的问题
这种方法需要终端知识,分别检查五个或更多来源,并记住定期执行。大多数人根本不费心 — 这正是过时应用和易受攻击的依赖项积累的方式。
方法 2:使用 NythyCleaner 扫描所有内容
NythyCleaner 在系统维护部分包含一个应用更新扫描器,可以一次性检查所有更新来源。无需终端。
扫描工作原理
当您点击检查更新时,NythyCleaner 会按顺序执行六个检测阶段:
| 阶段 | 检查内容 | 方式 |
|---|---|---|
| Homebrew (已安装) | 通过 brew install --cask 安装的应用 | 读取 brew info --cask --installed --json 并按捆绑包名称匹配应用 |
| Sparkle | 带有内置 Sparkle 更新源的应用 | 从每个应用的 Info.plist 读取 SUFeedURL 并获取 RSS feed |
| Electron / GitHub | 带有 GitHub 仓库或 Squirrel 更新器的应用 | 查询 GitHub Releases API 以获取最新版本 |
| App Store | 来自 Mac App Store 的应用 | 检测 App Store 收据和版本信息 |
| Homebrew (查找) | 未通过 Homebrew 安装的应用 | 从应用名称推断可能的 cask 令牌并查询 Homebrew 以查找可用版本 |
| 开发者软件包 | npm, pip, Composer, CocoaPods 等 | 为每个检测到的项目运行相应的 outdated 命令 |
每个阶段都会实时报告进度,因此您可以看到当前正在扫描哪个来源。
扫描后您会看到什么
结果以清晰的列表形式呈现:
- 有可用更新 — 应用有新版本。显示在顶部,附带已安装和可用版本号。
- 最新版本 — 应用是最新版本。
- 需要检查 — 应用需要手动检查(例如,无法自动更新的开发包)。
- 未检测到更新来源 — NythyCleaner 未能找到此应用的任何更新机制。这些应用会单独列出,以便您知道哪些应用需要手动检查。
一键式 Homebrew 更新
对于由 Homebrew 管理的应用,NythyCleaner 会在列表中直接显示一个安装按钮。点击它会在后台运行 brew upgrade --cask <token> — 无需终端。完成后您会收到确认,并且该应用会从过时列表中消失。
NythyCleaner 使用智能匹配系统将您安装的应用与其 Homebrew cask 令牌关联起来。它处理以下棘手情况:
- Docker (
com.docker.docker→docker) - VS Code (
com.microsoft.VSCode→visual-studio-code) - Google Chrome (
com.google.Chrome→google-chrome)
超过 60 个常用应用具有硬编码映射,模糊匹配器通过将标准化应用名称、捆绑包名称和显示名称与 cask 元数据进行比较来处理其余部分。
Sparkle Feed 检测
许多流行的 Mac 应用 — 包括那些直接从开发者网站下载的应用 — 使用 Sparkle 框架进行更新。NythyCleaner 读取每个应用的 Info.plist 以查找 SUFeedURL,获取 RSS appcast,并将最新版本与已安装的版本进行比较。
这涵盖了以下应用:
- Sketch, Affinity Designer, Pixelmator Pro
- iTerm2, Transmit, BBEdit
- 许多独立 Mac 应用
Electron 和 GitHub 检测
对于基于 Electron 的应用和通过 GitHub 分发的应用,NythyCleaner 会查找:
- 应用捆绑包中嵌入的 GitHub 仓库 URL
- Squirrel 更新器框架(许多 Electron 应用使用)
然后它会查询 GitHub Releases API 以查找最新的版本标签,并将其与已安装的版本进行比较。
开发者软件包扫描
如果您是开发者,NythyCleaner 还会扫描您的项目,查找多个包管理器中过时的依赖项:
- npm / yarn / pnpm — Node.js 项目
- pip — Python 包
- Composer — PHP 项目
- CocoaPods — iOS/macOS 项目
- Homebrew formulae — 命令行工具
每个过时的软件包都会显示当前版本和最新版本。您可以单独更新软件包,或者使用全部更新来使整个项目保持最新。
安全审计
除了版本检查之外,NythyCleaner 还可以对您的开发者依赖项运行安全审计。这会扫描您已安装软件包中的已知漏洞 — 类似于 npm audit 或 pip-audit,但可以一次性跨所有检测到的项目和包管理器进行。
易受攻击的软件包会标有严重级别和可操作的描述,因此您确切知道哪些依赖项需要关注。
常见问题
NythyCleaner 会取代 Homebrew 或 App Store 吗?
不会。NythyCleaner 从这些来源读取信息 — 它不会取代它们。Homebrew 更新在后台通过 brew upgrade 执行。App Store 更新仍然通过 Mac App Store 进行。NythyCleaner 只是集中了视图,并使 Homebrew 更新实现一键操作。
我应该多久检查一次更新?
每周一次是个好习惯。NythyCleaner 会缓存扫描结果,因此在同一会话中重复检查是即时的。您可以随时使用刷新按钮强制进行全新扫描。
它会自动更新应用吗?
NythyCleaner 不会自动更新应用。每次更新都需要您的明确操作 — 要么点击 Homebrew 应用的安装按钮,要么被引导到其他来源的正确更新页面。这是有意为之:您始终掌握控制权。
如果一个应用没有更新来源怎么办?
没有可检测更新机制的应用会列在单独的“不支持”部分。这通常包括非常旧的应用、自定义企业工具或没有任何版本检查基础设施的应用。对于这些应用,您需要手动检查开发者的网站。
我可以一次性更新所有项目中的开发者软件包吗?
可以。NythyCleaner 会检测您机器上的项目,并允许您按项目或按管理器更新软件包。全部更新按钮会更新所选项目中所有过时的软件包。
扫描需要互联网访问吗?
是的。检查 Homebrew、Sparkle feed、GitHub 发布和 App Store 数据都需要互联网连接。开发者软件包检查也可能需要互联网进行注册表查找。
此功能包含在免费版本中吗?
扫描和查看结果是免费的。安装更新(Homebrew 一键更新、开发者软件包更新)需要专业版订阅。
结论
保持 Mac 上所有应用更新不应该需要五种不同的工具和一个终端。NythyCleaner 一次性扫描 Homebrew、Sparkle、GitHub、App Store 和您的开发者依赖项 — 然后让您无需离开应用即可根据结果采取行动。
无论您是只想知道应用是否最新的普通用户,还是管理数十个跨项目软件包的开发者,应用更新扫描器都能为您提供一个清晰的视图,显示所有需要关注的内容。