权限
macOS 会请求哪些权限,每一项能换来什么,以及拒绝之后你会失去什么。
macOS 会在第一次需要某项权限时才请求它,而其中一项它从来不会主动请求。查看你的应用不需要这里的任何一项权限——清单、版本检查和发布说明,在全部拒绝的情况下也照常工作。下面说明的是每项权限能换来什么、对你的哪些应用有影响,以及不授予它要付出什么代价。“完全磁盘访问权限”和“自动化”两节的内容,是在 macOS 27 上、用一个什么权限都没被授予过的应用测得的。
完全磁盘访问权限——只为 TestFlight 测试版和 CotEditor
macOS 从不主动请求这项权限:你需要自己在系统设置 → 隐私与安全性 → 完全磁盘访问权限中把 DuoUpdater 加进去。因为应用使用稳定的身份签名,这次授权会在之后的每一次更新中保留下来。它只在你有以下两种情况之一时才有意义:
- 从 TestFlight 安装的测试版。 DuoUpdater 会从 TestFlight 自己的记录中读取它提供给你的版本。没有这项权限,测试版仍然能被识别,但那一行显示的会是问号,而不是最新版本。
- CotEditor。 它把自己的更新渠道设置保存在沙盒容器内部。没有这项权限,即使你把 CotEditor 设成了接收预发布版,它也只会按正式版检查更新;不过你正在运行的预发布版本本身仍然能从版本号被识别出来。
DuoUpdater 查看的其他一切都不需要这项权限。Fork、TablePlus、OrbStack、IINA、Tailscale、CleanShot 等它认识的应用的发布渠道、你的 App Store 商店地区,以及 Application Support 下的文件,全都不需要它就能读取。
没有完全磁盘访问权限,DuoUpdater 根本不会去尝试这两种读取——每次尝试都会被拒绝,而在 macOS 27 上,一次被拒绝的 TestFlight 读取会弹出一条“数据访问被阻止”的通知。如果你确实有 TestFlight 测试版或 CotEditor,打开菜单时会说明这项权限的用途以及在哪里授予:只会出现一次,除非之后又出现了另一个同类应用,那时会再提示一次。欢迎窗口和设置 → 诊断始终会显示这项权限是否已被授予,并附有一个按钮,可以直接打开系统设置里对应的位置。点按 TestFlight 那一行上的问号,会说明它为什么在那里;如果原因正是权限缺失,也会提供同样的按钮。稳定版的 CotEditor 会在名字旁边显示一个小锁图标,作用相同。
App 管理——安装任何东西都需要它
替换 /Applications 中由其他安装器放进去的应用,需要这项权限把关,而 macOS 没有提供可以提前请求它的 API,所以第一次安装会触发系统弹窗。拒绝它,检测依然照常工作;只是安装会失败,DuoUpdater 会替你打开对应的设置项。
通知——完全可选
在启动时请求,只用于告诉你发现了更新,以及显示程序坞角标数字。请注意角标专门需要打开“标记”(Badges)这个开关,光打开提醒是不够的——如果“标记”关闭,角标数字会被悄悄丢弃,即使通知照常出现。
后台助理——用于 App Store 更新
App Store 更新通过一个后台项目运行,macOS 会要求你在登录项与扩展中批准一次。没有这项权限,App Store 更新会失败,DuoUpdater 会告诉你在哪里打开它。
辅助功能——默认不需要
如果你在“设置”里把 App Store 安装方式切换到图形界面路线,就会用到它;另外也用于在软件包更新后关闭“安装器”窗口;没有这项权限,那个窗口会一直开着,等你自己关闭。默认的 App Store 路线使用完整下载,不需要任何额外权限。
自动化——不会请求
更新后退出并重新打开应用,不需要请求这项权限。