SuperAPI AI 工具集

macos-auto-update

通用与其它

查看项目

更新于 10-15 21:41

技能介绍

用途:为 Mac App Store 之外的原生 macOS 应用接入 Sparkle 自动更新框架。实现分四部分:SPM 依赖、UpdaterManager.swift、Info.plist 键、UI 集成。

主要能力:在 Xcode 中通过 File > Add Package Dependencies 添加 https://github.com/sparkle-project/Sparkle,版本规则选用从 2.0.0 起的 Up to Next Major Version;若使用 Package.swift 则写 .package(url: "https://github.com/sparkle-project/Sparkle", from: "2.0.0")。UpdaterManager 为单例,封装 SPUStandardUpdaterController,提前创建、发布 canCheckForUpdates 供 UI 绑定、暴露 automaticallyChecksForUpdates 开关,并在 DEBUG 构建中跳过全部更新逻辑;对仅菜单栏应用会在显示更新窗口前临时切换到 .regular 激活策略。

配置:Info.plist 需添加 SUFeedURL、SUPublicEDKey、SUEnableInstallerLauncherService。使用 EdDSA(Ed25519)签名,可用构建后 DerivedData 中的 generate_keys 生成密钥对,公钥写入 SUPublicEDKey,私钥保存在 Keychain 供 sign_update 发布时使用。

接入方式:AppDelegate 在 applicationDidFinishLaunching 调用 updaterManager.start(),并需提前引用单例以确保控制器在启动完成前创建;设置面板或菜单栏用 Toggle 与 Button 调用 checkForUpdates(),并以 canCheckForUpdates 控制禁用状态。

appcast:在仓库根创建 appcast.xml 并用 GitHub raw 或静态托管,URL 须与 SUFeedURL 一致;每个 item 含 sparkle:version(构建号)、sparkle:shortVersionString(营销版本)、sparkle:minimumSystemVersion、enclosure 的 edSignature 与 length。

限制:启用 Hardened Runtime 无需额外 Sparkle 专属授权;未提供具体收费、价格或平台支持范围等信息。