Sparkle
Sparkle
套件是最常见的 Mac App 检查更新方案
本章介绍如何安装并使用 Sparkle
1. 加入 Sparkle
套件
首先在 Xcode 专案加入 Sparkle
套件
File > Add Package Dependencies...
https://github.com/sparkle-project/Sparkle.git
2. 建立 Sparkle Update Object
在专案内加入 Sparkle Updater
的程式码:
import SwiftUIimport Sparklestruct UpdaterView: View { var updater = SPUStandardUpdaterController(startingUpdater: true, updaterDelegate: nil, userDriverDelegate: nil).updater var body: some View { Button("检查更新") { updater.checkForUpdates() } .buttonStyle(.borderedProminent) }}
其他详细写法请参考:Sparkle Programmatic Setup
3. 产出 EdDSA (ed25519) 签证
先下载 Sparkle
最新版本
Sparkle
或是Sparkle-for-Swift-Package-Manager
都可以
将下载下来的 Sparkle
内以下三个档案複製到 /bin
底下:
./bin/generate_keys
./bin/sign_update
./bin/generate_appcast
$ mv ./bin/generate_keys Users/${user}/.local/bin/generate_keys$ mv ./bin/sign_update Users/${user}/.local/bin/sign_update$ mv ./bin/generate_appcast Users/${user}/.local/bin/generate_appcast
之后再任意位置下产 EdDSA 的指令:
$ generate_keys
会产出类似下方的签证:
<key>SUPublicEDKey</key> <string>pfIShU4dEXqPd5ObYNfDBiQWcXozk7estwzTnF9BamQ=</string>
接下来在你的 Xcode 专案的 Info.plist
内加上以下几个参数:
刚刚你产出的 EdDSA
SUFeedURLString填入 appcast.xml 上传的 URL (步骤五会解释)
如果没有
Info.plist
,可以到专案 Targets 内的Info
加上数值
其他参数及说明请参考:Sparkle Customization
4. 发布 App
首先在 Xcode Targets 设定 Identity Bundle Version 及 Build
Sparkle 使用
Bundle Version
来判断 APP 是否是新版本
把 .entitlements
档案的 App Sandbox 设定成 NO
接下来要发布 Mac App
Xcode:Product > Archive
Archive:Distribute app > Direct Distribution> Distribute
1. 等候 Status
变为 Ready to distribute
2. 按下 Export Notarized App
输出 App
输出到 Xcode 专案的资料夹内
Xcode 专案资料夹就是专案
.xcodeproj
存在的资料夹
接着将 App 压缩成 zip 档,并加上版本号后缀
5. 建立 appcast.xml
appcast.xml
是Sparkle
用来辨认 App 版本的档案所有的更新资讯,包含版本、更新内容,都需要写在
appcast.xml
内
首先在 Xcode 专案的资料夹内,执行以下指令:
$ generate_appcast -o appcast.xml .
Xcode 专案资料夹就是专案
.xcodeproj
存在的资料夹