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),仅供参考

相关新闻

量化高频交易 FPGA 还是 GPU:三组实测+三年 TCO 账本

量化高频交易 FPGA 还是 GPU:三组实测+三年 TCO 账本

量化高频交易 FPGA 还是 GPU:三组实测三年 TCO 账本 【免费下载链接】gs-quant Python toolkit for quantitative finance 项目地址: https://gitcode.com/GitHub_Trending/gs/gs-quant 在高频交易里,延迟就是盈亏:比对手快 1 微秒可能…

2026/9/14 20:06:52 阅读更多 →
ClaudeCode Insights:智能代码分析与个性化编程助手

ClaudeCode Insights:智能代码分析与个性化编程助手

1. ClaudeCode Insights命令概述ClaudeCode的Insights命令是一项革命性的代码分析功能,它能够深入理解开发者的编程习惯、思维模式和代码质量,提供超越传统静态分析工具的智能建议。这个功能的核心在于其独特的上下文感知能力,能够结合项目历…

2026/9/14 20:06:56 阅读更多 →
Bitwarden Server 邮件模板体系全解析:MJML 源模板与 Handlebars 渲染的双层邮件生成管线

Bitwarden Server 邮件模板体系全解析:MJML 源模板与 Handlebars 渲染的双层邮件生成管线

Bitwarden Server 邮件模板体系全解析:MJML 源模板与 Handlebars 渲染的双层邮件生成管线 【免费下载链接】server Bitwarden infrastructure/backend (API, database, Docker, etc). 项目地址: https://gitcode.com/GitHub_Trending/ser/server 本篇指南围绕…

2026/9/13 18:26:35 阅读更多 →

最新新闻

上帝视角技术全解析:无人机航拍与三维实景建模实战

上帝视角技术全解析:无人机航拍与三维实景建模实战

1. 概念解析:什么是“上帝视角”,为什么它让人着迷 1.1 从地图App到航拍大片,这个词到底在说什么 我第一次被“gods-eye-view”这个概念触动,是在用地图App的卫星图层看老家的屋顶时——那个瞬间,我熟悉的街道、河流、…

2026/9/14 21:03:34 阅读更多 →
Flink高级之CEP深度剖析:Pattern API、NFA引擎与风控实战

Flink高级之CEP深度剖析:Pattern API、NFA引擎与风控实战

摘要:连续 N 次登录失败、下单后 10 分钟未支付、大额转账后小额试探——这类"事件序列模式"需求,手写状态机维护成本极高,Flink CEP 用声明式 Pattern API 一键解决。这篇文章拆透 CEP:定位与场景边界、四大语法族&…

2026/9/14 21:03:34 阅读更多 →
Dify vs Astron:AI Agent低代码平台选型实战对比

Dify vs Astron:AI Agent低代码平台选型实战对比

1. 先搞清楚两个平台各自是什么定位 做AI Agent落地的这几年,我前后接触过的低代码/可视化Agent平台至少有十几个,从纯开源的到厂商闭源的都有。这次拿Dify和Astron(讯飞星辰Agent)放在一起对比,是因为它们代表了当下最…

2026/9/14 21:03:34 阅读更多 →
红外车辆行人检测实战:YOLOv5训练与Qt界面部署全解析

红外车辆行人检测实战:YOLOv5训练与Qt界面部署全解析

简介:针对红外图像对比度低、目标辨识难的问题,这份基于YOLOv5与PyTorch的完整工程,覆盖从数据集标注、模型训练到界面部署全流程,适合初学者系统学习,也适合工程师快速搭建红外车辆与行人检测原型。资源内含在几千张红…

2026/9/14 21:03:34 阅读更多 →
Kubernetes中CORS跨域问题的解决方案与实践

Kubernetes中CORS跨域问题的解决方案与实践

1. 项目背景与问题定位mcp-server-chart作为一款基于Kubernetes的中间件配置管理工具,其跨域问题在实际部署中频繁出现。当Web应用前端与后端API服务部署在不同域名或端口时,浏览器安全策略会阻止跨域请求,导致接口调用失败。典型的错误提示包…

2026/9/14 21:03:34 阅读更多 →
Tauri+iDevice真机调试:跨平台Web兼容性验证新方案

Tauri+iDevice真机调试:跨平台Web兼容性验证新方案

1. 项目概述:一个被误读的工具名,背后是跨平台桌面应用开发的新路径“iloader”这个词最近在开发者社区里频繁出现,但很多人一搜就懵——它既不是苹果官方工具,也不是某个知名开源库的主项目名,更不是某款流行App的代号…

2026/9/14 21:02:33 阅读更多 →

日新闻

AI音乐侵权案中的测试工程与版权保护技术

AI音乐侵权案中的测试工程与版权保护技术

1. 项目概述:当测试工程师遇上AI音乐侵权案去年夏天,我作为技术顾问参与了一起特殊的著作权纠纷案——某音乐平台AI作曲功能被指控批量侵权。这起案件的特殊性在于:原告方并非传统音乐人,而是一家拥有百万级曲库的数字音乐发行商&…

2026/9/14 0:00:26 阅读更多 →
嵌入式面试I2C与SPI深度解析:从协议到量产调试

嵌入式面试I2C与SPI深度解析:从协议到量产调试

1. 这份“高频知识点洞察”到底是什么,又为什么值得你花时间细读? 如果你最近在刷嵌入式开发岗位的招聘JD,或者正坐在工位上改第7版简历,又或者刚被面试官一句“讲讲I2C和SPI的区别”问得手心冒汗——那你不是一个人。过去两年我带…

2026/9/14 0:00:26 阅读更多 →
51单片机开环控制磁阻传感器的硬件匹配与代码实现

51单片机开环控制磁阻传感器的硬件匹配与代码实现

简介:本资源是一份面向嵌入式初学者与单片机课程实践者的51单片机开关磁阻电机(SRM)开环控制教学方案,聚焦磁阻位置检测、固定时序驱动与基础状态可视化。资源包含1个C语言主程序文件(zhuang600.c)实现电机…

2026/9/14 0:00:26 阅读更多 →

周新闻

AI SDK Harness 依赖更新指南:掌握 harness 包 SDK 依赖的升级、桥接同步与一致性校验

AI SDK Harness 依赖更新指南:掌握 harness 包 SDK 依赖的升级、桥接同步与一致性校验

AI SDK Harness 依赖更新指南:掌握 harness 包 SDK 依赖的升级、桥接同步与一致性校验 【免费下载链接】ai The AI Toolkit for TypeScript. From the creators of Next.js, the AI SDK is a free open-source library for building AI-powered applications and ag…

2026/9/14 5:45:49 阅读更多 →
Refine v5 Ant Design NumberField 组件实战:基于 Intl 的本地化数字格式化

Refine v5 Ant Design NumberField 组件实战:基于 Intl 的本地化数字格式化

Refine v5 Ant Design NumberField 组件实战:基于 Intl 的本地化数字格式化 【免费下载链接】refine A React Framework for building internal tools, admin panels, dashboards & B2B apps with unmatched flexibility. 项目地址: https://gitcode.com/GitH…

2026/9/14 0:52:26 阅读更多 →
Flutter应用改名全指南:从Android到iOS的配置与工具实践

Flutter应用改名全指南:从Android到iOS的配置与工具实践

刚接一个外包项目时,甲方要求把工程里临时用的应用名改成正式产品名。我本来觉得“改名”这种小事,打开配置文件改一行不就完了?结果真动手才发现,Flutter项目里“应用名称”根本不是一处配置,而是一整套散落在 Androi…

2026/9/14 0:06:41 阅读更多 →

月新闻

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能分类:[AI/大模型]细分主题:AI 增强型 CI/CD 流水线自动化与 GitOps 实践:Agent 工作流、工具调用与任务拆解:从原型到生产的验收清单很多团队在尝试用大…

2026/9/14 17:35:10 阅读更多 →
容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场

容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场

容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场分类:[工程技术]细分主题:Kubernetes 生产环境运维与排障实战:可复制的项目复盘模板与决策记录大部分团队的事故复盘报告,最后都变成了躺在 Confluence 或钉…

2026/9/14 16:59:29 阅读更多 →
容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步

容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步

容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步分类:[工程技术]细分主题:Docker 容器化技术与镜像安全管理:核心链路的逐步实现与关键代码取舍面对一个积累了五六年历史包袱的单体架构应用(包含 Web 接口、后台…

2026/9/14 5:45:14 阅读更多 →