赞助登录提交

← 全部工具

Sparkle appcast 检查器

粘贴你的应用从 SUFeedURL 读取的 appcast。它只在本页读取,不会获取或发送任何内容。

Sparkle appcast 检查器

试试示例:

功能

Sparkle 是大多数在 Mac App Store 之外销售的 Mac 应用所使用的更新框架。你的应用会读取一个很小的 RSS 文件,也就是 appcast,其中每个 <item> 就是一个版本。这个工具会读取你粘贴的 appcast,并对照 Sparkle 自己的发布文档检查每个版本:有没有 Sparkle 可以比较的版本号,下载地址是否为 https 且带有大小和 EdDSA 签名,有没有最低 macOS 版本和日期。它还能发现会让整个更新源失效的错误,比如缺少 Sparkle 命名空间,或下载地址里出现单独的 &。

一个好的版本是什么样的

<item>
  <title>Version 2.1</title>
  <pubDate>Sat, 07 Nov 2026 09:30:00 +0000</pubDate>
  <sparkle:version>210</sparkle:version>
  <sparkle:shortVersionString>2.1</sparkle:shortVersionString>
  <sparkle:minimumSystemVersion>14.0.0</sparkle:minimumSystemVersion>
  <enclosure url="https://yourapp.com/YourApp-2.1.zip" length="8412337"
    type="application/octet-stream" sparkle:edSignature="..."/>
</item>

顶部的 <rss> 标签需要 xmlns:sparkle="http://www.andymatuschak.org/xml-namespaces/sparkle"。Sparkle 的 generate_appcast 工具会替你写好其中大部分,包括签名和 length。

每种结果的含义

标记含义
修复Sparkle 读不了这个更新源、没法比较这个版本,或者不会安装它。
外观能用,但这个版本可能会推给运行不了的 Mac,或者缺少 Sparkle 文档要求的内容。
正常按 Sparkle 文档描述的方式设置。
注意值得了解的设置,比如渠道或关键更新。

来源:Sparkle,发布更新、Sparkle 文档和 Sparkle,EdDSA 迁移,均于 2026年11月8日阅读。

运作方式

这是在本页运行的几条简单文本规则。它不会下载你的更新,所以无法检查签名是否与你的密钥匹配,也无法检查 length 是否与文件一致:这两项由 Sparkle 在安装时检查。它也不会获取你的更新源,所以请粘贴文本,而不是地址。sparkle:hardwareRequirements 要求用户手里已有的应用副本带有 Sparkle 2.9 或更高版本,更早的副本会忽略它。你粘贴的内容不会被保存或发送。

问题

什么是 Sparkle appcast?

放在你服务器上的一个 RSS 文件,列出你的 Mac 应用的各个版本。应用里的 Sparkle 会从 Info.plist 里的 SUFeedURL 读取它,并提示比已安装版本更新的任何版本。

每个 Sparkle 更新都需要 EdDSA 签名吗?

Sparkle 的文档说你必须给更新签名,而 generate_appcast 会替你签名。Info.plist 里有 SUPublicEDKey 的应用会在安装任何东西之前检查签名。

怎样避免更新被推给运行不了的 Mac?

在版本里添加 sparkle:minimumSystemVersion,写成三段,例如 14.0.0。从 Sparkle 2.9 开始,对只能在 Apple silicon 上运行的构建,还可以添加值为 arm64 的 sparkle:hardwareRequirements。

Sparkle 比较的是哪个版本号?

sparkle:version,会与用户手里应用的 CFBundleVersion 比较。sparkle:shortVersionString 只是给人看的。

我粘贴的内容会被发送到别处吗?

不会。文本只在本页读取,不会被获取、发送或保存。

相关内容