Sparkle + GitHub Releases 集成指南
一、一次性初始化配置
1. 生成密钥对
./bin/generate_keys
- 公钥 → 填入
Info.plist的SUPublicEDKey - 私钥 → 自动保存在 macOS Keychain,妥善保管,切勿泄露
2. 配置 Info.plist
| Key | Type | Value |
|---|---|---|
SUFeedURL | String | https://github.com/<用户名>/<仓库名>/releases/latest/download/appcast.xml |
SUPublicEDKey | String | 上一步生成的公钥 |
二、每次发版流程
第 1 步:打包应用
ditto -c -k --sequesterRsrc --keepParent MyApp.app MyApp.zip
第 2 步:生成并签名 appcast.xml
将 MyApp.zip 放入一个独立文件夹,然后运行:
./bin/generate_appcast /path/to/updates/folder
执行后该文件夹内会自动生成 appcast.xml。
第 3 步:修改 appcast.xml 中的下载地址
将 <enclosure> 中的 url 改为 GitHub Releases 的真实下载地址:
<enclosure url="https://github.com/<用户名>/<仓库名>/releases/download/v2.0/MyApp.zip" sparkle:edSignature="xxx..." length="1623481" type="application/octet-stream" />
第 4 步:在 GitHub 创建新 Release
- 进入仓库 → Releases → Draft a new release
- 创建 tag,例如
v2.0 - 上传附件:
MyApp.zip+appcast.xml - 发布 Release
三、注意事项
- 每次发版必须同时上传最新的
appcast.xml,否则 Sparkle 无法检测到新版本 SUFeedURL使用latest/download/路径,一次配置永久有效,无需每次修改- 私钥丢失将无法签名新版本更新,请务必备份
相关文章
SwiftUI 自定义 Liquid Glass 分段控件:首次挂载动画异常与稳定实现
--- tags: - SwiftUI - macOS - Liquid-Glass - Animation - Debugging --- #SwiftUI #macOS #Liquid-Glass #Animation #Debugging SwiftUI 自定义 Liquid Glass 分段控件:首次挂载动画异常与稳定实现
在 macOS 原生应用中实现 OIDC 登录:从协议到落地
最近我在一个 macOS 桌面应用里从零实现了完整的 OIDC 登录:Authorization Code + PKCE、系统浏览器授权、Keychain 持久化、token 惰性刷新与轮换、userinfo 用户资料——全程没有引入任何第三方认证库,只用 Apple 平台自带的组件。本文把这段实现整理成一份通用的工程指南:协议背景、设计决策及其理由、端到端流程、踩过的构建系统与调试陷阱,以及一份可以直接照着做的检查清单。
DMT Summary
Raspberry: 客户端Swift + 前端 -> 全栈,26Fall NYU MSCS,AI Coding 探索中,爱好iOS开发。如果你对开发(尤其是比较冷门的iOS相关领域),以及留学美国等等感兴趣,欢迎和我一起交流技术、实习、黑客松相关、升学以及未来在美生活等等。联系WeChat: ms2855190178