WeKan macOS 自动更新方案全景参考:手动与自动安装/更新平台选型指南
WeKan macOS 自动更新方案全景参考手动与自动安装/更新平台选型指南【免费下载链接】wekanThe Open Source kanban, built with Meteor. GitHub issues/PRs are only for FLOSS Developers, not for support, support is at https://wekan.fi/commercial-support/ . PR source translation to imports/i18n/data/en.i18n.json, other translations at https://app.transifex.com/wekan/wekan项目地址: https://gitcode.com/GitHub_Trending/we/wekan本文是 WeKan 项目内部为开发者编写的 macOS 安装与更新平台全景技术参考以 Linux Snap 的自动刷新auto-refresh为参照系系统梳理 macOS 上每一种可行的应用安装与更新方式并将其划分为手动更新与自动更新两大类。由于 WeKan 桌面端是 Electron 应用本文同时覆盖应用内嵌更新器Sparkle、Squirrel.Mac、electron-updater与商店/MDM 托管机制最终目标是帮助开发者选出一条适合WeKan 桌面应用在 Mac 上自动更新的落地路径。读完本文你将掌握 macOS 各更新通道的机制、优缺点与适用场景并明确 WeKanElectron在 Mac 上实现类 Snap 自动更新的推荐技术栈与前提条件。背景为什么需要这样一份 macOS 更新选型参考WeKan 桌面应用基于 Electron 构建Linux 上官方已经通过 Snap 渠道snapd默认自动刷新获得了类似商店驱动、事务性、增量更新的体验而 macOS 与 Windows 一样没有与 Snap 对等的、第一方可直接复用的事务性商店驱动增量自动刷新机制面向任意应用的自动更新需要由开发者自行组合方案。文档 docs/Design/Autoupdate/README.md 按操作系统逐一列举了各平台的安装与更新通道其中 macOS 一页即本文主题文档 Mac.md给出了最接近 Snap 的几个选项Mac App StoreMAS商店托管的后台自动更新但应用需沙箱化且经过审核Sparkle 框架非 MAS 分发自更新的事实标准Electron 内置的autoUpdater基于 Squirrel.Mac面向 Electron 应用的内嵌更新器。除此之外其余通道要么是包管理器要么是 MDM/托管软件栈要么就是手动的拖拽安装。一、手动更新平台Manual update platforms手动更新指由用户或管理员显式获取并应用每个新版本系统本身没有任何后台刷新机制。下表是 Mac.md 中列出的全部手动更新平台平台是什么 / 更新步骤维护者格式许可.dmg/.app拖拽安装挂载磁盘镜像把.app拖到/Applications。更新即重新下载并替换无任何内建更新机制应用作者.dmg、.appn/a.pkg安装器Apple 的Installer.app/installer(8)扁平包。更新 运行一个新的.pkg支持前后置脚本但无自更新应用作者Apple 格式.pkgn/aHomebrew Homebrew CaskmacOS 事实上的包管理器。brew upgradeformulae/brew upgrade --caskGUI 应用。默认手动但可通过 Homebrew Autoupdate 自动化见下文HomebrewOSSformulae、.app/.pkg/.dmgcasksBSD-2OSSMacPortsports 树包管理器。sudo port selfupdate sudo port upgrade outdated。仅手动无后台服务MacPortsOSS源码/二进制 portsBSD-3OSSNix / nix-darwin声明式包/系统管理器。更新 提升 inputs 后执行darwin-rebuild switch。可复现手动应用NixOS 社区OSSNix storeMITOSSmas-cliMac App Store 的命令行客户端。mas outdated/mas upgrade——在终端手动触发 MAS 更新mas-cliOSSMAS 应用MITOSSnpm globalnpm i -gnpm update -g——仅限 CLI 工具不适用于 GUI 应用无自动更新npm / GitHubnpm tarballMITOSS手动通道的核心规律更新等价于重新获取并重新应用新版本。对于.dmg/.app就是重下替换对于.pkg就是再跑一次安装器对于包管理器就是再执行一次升级命令。这类通道胜在简单直接但无法带来 Snap 式的无人值守体验。二、自动更新平台Automatic update platforms类 Snap自动更新通道在后台、启动时、按计划或由商店托管完成刷新用户无需重新下载任何东西。原文档将其细分为四类下面逐一展开。2.1 商店 / 系统托管最接近 Snap平台自动更新机制维护者格式许可Mac App StoreMASApp Store 客户端在后台静默下载并安装新版本系统设置 → 通用 → 软件更新 / App Store →自动更新。这是 macOS 上最接近 Snap 商店驱动自动刷新的方案但要求应用沙箱化、公证notarization并通过 App ReviewApple.pkg/.appMAS receipt专有Setapp订阅制应用商店常驻客户端在后台自动更新目录内应用。macOS及 iOS上真正的 Snap 式托管更新体验但属于需要被准入的精选商业目录MacPaw客户端托管专有订阅制MAS 是免费获得商店托管自动更新的选项但代价是沙箱 entitlements、审核流程以及对 WeKan 这类服务端配套桌面应用而言整体收益不高Setapp 则是体验最接近 Snap 的商业托管目录但需通过其商业准入。2.2 应用内嵌自更新器最适合 WeKan 这类 Electron 应用这是原文档重点推荐的类别因为它与 Electron 桌面应用的匹配度最高平台自动更新机制维护者格式许可Sparkle非 MAS macOS 应用的事实标准自更新器。应用内嵌该框架并指向一个appcastRSS/XMLSparkle 按计划/启动时检查展示发行说明下载支持delta 增量更新校验EdDSAEd25519签名退出时安装Sparkle 项目OSS经 appcast 分发的.dmg/.zip/.pkgMITOSSSquirrel.MacElectron 内置autoUpdater在 macOS 上背后的更新器。读取 JSON feed后台下载.zip重启时安装。要求应用已代码签名且已公证Squirrel 项目OSS.zip JSON feedMITOSSElectronautoUpdater内置在 macOS 上封装 Squirrel.Mac。需要一个更新服务器/feed后台下载重启时安装OpenJS / ElectronSquirrel feedMITOSSelectron-updaterelectron-builder最常见的 Electron 自动更新器。macOS 上从 feedGitHub Releases、通用 HTTPS、S3 等拉取已签名公证的.zip与latest-mac.yml后台下载退出时安装。底层使用 Squirrel.Macelectron-userlandOSS.zip/.dmglatest-mac.ymlMITOSSupdate.electronjs.org面向发布到公共GitHub Releases的开源Electron 应用提供的免费托管更新服务器提供 Squirrel.Mac feed。在 macOS 上强制要求代码签名Electron 项目Squirrel feedMITOSSHazel / Nuts / Nucleus自托管更新服务器提供 Squirrel/electron-updater feedGitHub Releases 代理或静态托管。跨平台Mac Win但年代较早2018–2021Vercel / GitBook / AtlassianOSSSquirrel feedMIT/ApacheOSSGoogle Keystone基于 launchd 的后台更新器是 Google Chrome 在 macOS 上的更新引擎Google Omaha 的 Mac 对应物。静默、常驻不可作为库分发复用——仅作完整性记录不推荐Google经 Keystone 的.pkg专有macOS 上针对 Electron 的关键坑在 macOS 上autoUpdater/ Squirrel.Mac只有在应用完成 Developer ID 代码签名且经过公证后才生效——未签名的构建无法自更新。因此任何自动更新计划都必须把 Apple Developer 账号$99/年、签名与公证纳入预算。这一约束同样在 docs/Design/Autoupdate/OS/Windows.md 的姊妹篇中体现跨平台统一建议使用 electron-updater 签名 feed。2.3 处于自动模式的包管理器平台自动更新机制维护者许可Homebrew Autoupdate一个 tap安装launchd任务按间隔执行brew updatebrew upgrade含--cask——把 Homebrew 变成 Snap 式后台刷新DomT4OSSBSD-2OSSmas launchd / cron通过脚本按计划执行mas upgrade自动应用 Mac App Store 更新社区MITOSS这两种方案本质都是用系统调度器把手动命令变成定时任务实现成本低适合个人或小团队把日常升级自动化。2.4 托管 / MDM管理员驱动的自动部署与打补丁这是 macOS 上最像 Snap 的整机群自动更新形态对应 Windows 生态的 Intune/SCCM/PDQ平台自动更新机制维护者许可Munki开源托管软件系统客户端轮询仓库catalogs/manifests并在后台自动安装/升级包。这是 macOS 上最接近 Snap 的开源、可自托管体验Greg Neagle / 社区Apache-2.0OSSAutoPkg把应用最新版本自动下载并打包进 recipes喂给 Munki/Jamf使下游自动更新保持最新AutoPkg 社区OSSApache-2.0OSSInstallomatorShell 脚本查找、下载并安装 700 应用的最新版本通常由 MDM 触发以保持应用修补Installomator 社区OSSMITOSSJamf Pro / Jamf Now领先的 Apple MDM策略按计划在整机群自动部署并修补应用Jamf商业专有付费KandjiApple MDM其 Auto Apps 精选目录会在后台自动更新被管理的应用Kandji商业专有付费MosyleApple MDM提供自动化应用部署/修补含自助服务Mosyle商业专有付费Addigy云 Apple MDM提供计划性的软件/补丁策略Addigy商业专有付费Fleet基于 osquery 的开源设备管理支持跨 macOS 机群的软件部署与更新FleetOSS 付费MIT 核心OSS 付费Microsoft IntunemacOS云 MDM为已登记的 Mac 分配 macOS 应用.pkg/.dmg/VPP/Store并推送更新Microsoft专有订阅制softwareupdate/ DDMApple 内置 CLIsoftwareupdate与声明式设备管理Declarative Device Management按计划强制OS更新——管辖的是 macOS 本身而非你的应用背景信息Apple随 macOS 提供三、一览对比表原文档用一张总表把所有平台按是否手动/自动、自动机制、是否适用于 Electron进行横向对比这里完整保留平台手动自动自动机制适用于 Electron 应用.dmg/.app拖拽安装✓—无仅打包.pkg安装器✓—无仅外壳Homebrew Cask✓经 Autoupdatelaunchdbrew upgrade分发caskMacPorts✓—设计上仅手动分发Nix / nix-darwin✓—声明式应用分发mas-cli✓经 launchd计划执行mas upgradeMAS 应用npm global✓—无仅 CLI 工具Mac App Store✓✓商店客户端后台✓沙箱化、审核Setapp—✓客户端代理后台✓精选目录Sparkle—✓appcast 轮询 增量退出时安装原生 / 非 ElectronSquirrel.Mac—✓JSON feed后台 zip重启时安装✓ 内置electron-updater—✓latest-mac.ymlfeed退出时安装✓ 推荐update.electronjs.org / Hazel / Nuts / Nucleus—✓更新 feed 服务器✓feed 后端Google Keystone—✓launchd 后台代理✗不可复用Homebrew Autoupdate—✓launchd 计划✓若以 cask 分发Munki—✓客户端轮询仓库后台安装✓以 pkg 形式——类 Snap 机群AutoPkg / Installomator—✓recipe/脚本喂给 MDM✓以 pkg 形式Jamf / Kandji / Mosyle / Addigy / Fleet / Intune—✓MDM 推送 / 计划✓以 pkg/VPP 形式softwareupdate/ DDM—✓OS 更新计划仅 OSn/a四、对 WeKanMac 上的 Electron 应用意味着什么原文档在末尾给出了面向 WeKan 的落地结论结合 Autoupdate 目录索引 的Bottom line for WeKan与 Linux.md 的 Snap 参考可以归纳出以下决策路径推荐的自更新路径electron-builder electron-updater发布已代码签名 已公证的.ziplatest-mac.yml托管在静态 HTTPS feed 或GitHub Releases上。这与 Windows 路径使用同一套工具链参见 Windows.md支持后台下载、退出时安装是单应用场景下最接近 Snap 自动刷新的方案。在 macOS 上签名与公证是强制前提。零基础设施的替代方案update.electronjs.org update-electron-app。由于 WeKan 是托管在公共 GitHub 上的开源项目可直接利用该免费托管 feed底层仍是 Squirrel.Mac但依然需要签名。商店选项Mac App Store可免费获得商店托管的自动更新但 Electron MAS 组合比较痛苦沙箱 entitlements、审核对于服务端配套类桌面应用通常不值得投入。项目在 docs/Platforms/Propietary/OS/Mac/README.md 中也明确把如何做出 macOS App Store 版 WeKan列为 TODO且记录了维护者购买 Apple Developer 访问权限99 欧元/年进行签名探索的历程印证了这一成本与复杂度。覆盖面最广的被动触达方式发布 Homebrew Cask用户执行brew upgrade --cask或选择接入Homebrew Autoupdate获得后台刷新。托管机群Munki开源、可自托管、最像 Snap或商业 Apple MDMJamf / Kandji / Mosyle / Addigy / Intune通常由AutoPkg/Installomator持续喂新版本以保持最新。WeKan 服务器在 Mac 上通常通过 Docker 或源码方式运行具体安装步骤见 Mac 平台文档因此服务器的更新是拉取新镜像或重新构建不在这套桌面更新框架的讨论范围内——这与 Linux 上服务器走 Docker、桌面走 Snap的结论保持一致。五、关联文档导航原文档See also部分指向的姊妹篇与平台资料均已转换为仓库根目录相对路径Windows 平台的等价参考Windows.mdLinux Snap 自动刷新与多架构 snap 构建约束Snap-Core.mdmacOS 安装文档Docker 部署、M1 开发、bundle 运行Mac 平台文档全平台安装/更新通道总索引含 Linux/BSD/企业 Unix/移动端等Autoupdate 目录Linux 侧 Snap 自动更新与 AppImage/Flatpak 方案Linux.md总结macOS 上没有开箱即用的 Snap 等价物但对 WeKan 这类 Electron 桌面应用而言electron-builder electron-updater 签名公证的 feed是成本与体验最均衡的单应用自动更新方案若追求零基础设施可选用 update.electronjs.org若要覆盖整机群则走向 Munki 或商业 MDM 栈。无论选择哪条路Developer ID 签名 公证都是 macOS 自动更新不可绕过的前提。【免费下载链接】wekanThe Open Source kanban, built with Meteor. GitHub issues/PRs are only for FLOSS Developers, not for support, support is at https://wekan.fi/commercial-support/ . PR source translation to imports/i18n/data/en.i18n.json, other translations at https://app.transifex.com/wekan/wekan项目地址: https://gitcode.com/GitHub_Trending/we/wekan创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考