NythyCleaner
← 博客

如何在 Mac 上检查应用更新 — 所有来源一站式搞定

9 分钟阅读
#应用-更新#macos#homebrew#sparkle#维护#开发者

如何在 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.dockerdocker)
  • VS Code (com.microsoft.VSCodevisual-studio-code)
  • Google Chrome (com.google.Chromegoogle-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 auditpip-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 和您的开发者依赖项 — 然后让您无需离开应用即可根据结果采取行动。

无论您是只想知道应用是否最新的普通用户,还是管理数十个跨项目软件包的开发者,应用更新扫描器都能为您提供一个清晰的视图,显示所有需要关注的内容。