Skip to content

应用类型与策略对照

应用类型容器分类迁移策略锁定保护说明
原生 macOS 应用(无自更新)standaloneAppmacOS Stub Portal如 Safari、Finder
Sparkle 自更新应用standaloneAppmacOS Stub Portal如部分独立开发者应用
Electron 应用(无 app-update.ymlstandaloneAppmacOS Stub Portal如 VS Code
Electron 应用(有 app-update.ymlstandaloneAppmacOS Stub Portal如 Slack、Discord
Electron + Sparkle 混合应用standaloneAppmacOS Stub Portal两个标志独立检测,同时成立
自定义更新器应用(Chrome、Edge)standaloneAppmacOS Stub Portal通过 LaunchServicesKSProductID 等识别
iOS 应用(Mac 版)standaloneAppiOS Stub Portal图标从 WrappedBundle 提取,不签名
Mac App Store 应用standaloneAppmacOS Stub PortalSIP 保护,无法重签名
单应用容器目录singleAppContainerWhole App Symlink目录内仅 1 个 .app,整体符号链接
应用套件目录(如 Office)appSuiteFolderWhole App Symlink视内部应用而定目录内 2+ 个 .app,整体符号链接
.app 路径Whole App Symlink扩展名不为 .app 的路径

⚠️ 关于锁定保护

当应用被标记为需要锁定(needsLock = true)时,AppPorts 在迁移完成后对外部存储上的应用执行 chflags -R uchg,设置不可变标志。这会阻止自更新程序删除或修改外部副本,但也意味着应用无法自行更新。用户需要在 AppPorts 中手动解锁后才能进行更新。

💡 自定义更新器应用为何不锁定

Chrome、Edge 等使用自定义更新器的应用不会被锁定。这类应用的更新程序通常会将新版本下载并安装到本地内部存储,受到 macOS Stub Portal 的链接隔离特性,因此不会破坏外部存储上的应用文件。

当 AppPorts 检测到本地内部存储上的应用版本高于外部存储上的版本时,会自动为该应用打上「待迁移」标签,提示用户需要重新迁移以同步最新版本。

最近更新