Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

macOS 系统更新开关

一个可逆的 macOS AppleScript 小工具,用于关闭系统更新检查与推送、清理已有更新角标,并锁定“软件更新”设置入口。需要时可在同一应用内恢复。

Warning

停留在旧版 macOS 会错过后续安全补丁。本工具的“关闭并隐藏”还会关闭关键安全更新和系统数据文件更新。使用前请确认你愿意承担这项安全风险,并保留可靠备份。

适用范围

  • 已在 macOS Sonoma 14.8.8 实机验证。
  • 需要管理员账户。
  • 适合明确要求停留在当前系统版本的个人 Mac。
  • 不建议用于公司、学校或其他已由 MDM 管理的 Mac。
  • macOS Ventura/Sequoia 可能可用,但未做完整实机验证。

它会做什么

点击“关闭并隐藏”后,工具会:

  1. 关闭 macOS 自动检查和自动下载。
  2. 关闭 macOS 自动安装、关键安全更新与系统数据文件更新。
  3. 禁用当前用户的 SoftwareUpdateNotificationManager 通知组件。
  4. 通过可移除描述文件锁定“软件更新”页面,并禁止更新通知。
  5. 把 macOS 14 的 AttentionPrefBundleIDs 设为正确的空字典,清除普通更新角标。
  6. 如果系统已经生成 com.apple.SoftwareUpdateServices.followup,会先备份 CoreFollowUp 数据库,然后只删除这一条软件更新跟进提醒。

工具不会修改 SIP、系统只读卷、softwareupdated 系统文件、hosts 或防火墙,也不会连接任何第三方服务。

下载与安装

方式一:使用 Release 中的应用

  1. 在仓库的 Releases 页面下载 SystemUpdateToggle.app.zip
  2. 解压后把 系统更新开关.app 拖入“应用程序”文件夹,它便会出现在启动台。
  3. 首次打开时请右键应用并选择“打开”。
  4. 如果 Gatekeeper 仍阻止,前往“系统设置 → 隐私与安全性”,点击“仍要打开”。

本项目的 Release 使用本地临时签名,没有 Apple Developer ID 公证。如不信任预编译应用,请使用下面的源码构建方式。

方式二:从源码构建

git clone https://github.com/txk996/macos-update-toggle.git
cd macos-update-toggle
./scripts/build.sh

生成文件位于:

dist/系统更新开关.app
dist/SystemUpdateToggle.app.zip

构建只使用 macOS 自带的 osacompilecodesignPlistBuddyditto

关闭并隐藏系统更新

  1. 打开“系统更新开关”。
  2. 选择“关闭并隐藏”。
  3. 输入 macOS 管理员密码。密码由 macOS 系统授权窗口处理,工具不会读取或保存它。
  4. 如果出现“允许控制 Finder”,请选择允许。该权限只用来备份受保护的本地 CoreFollowUp 数据库,并精确清理已有的软件更新提醒。
  5. 第一次使用时,工具会打开 SystemUpdateHidden.mobileconfig
  6. 在“系统设置”中找到已下载的“系统更新完全隐藏”描述文件,检查内容后手动安装。
  7. 安装完成后再运行一次应用,选择“关闭并隐藏”。

预期结果:

  • 系统设置顶部不再显示“有软件更新可用”。
  • 应用图标不再显示更新红色角标。
  • “通用 → 软件更新”会变灰,并显示“这些设置受描述文件控制”。这是正常状态。

恢复系统更新

  1. 打开“系统更新开关”。
  2. 选择“开启推送”。
  3. 输入管理员密码。
  4. 如果描述文件未能自动移除,请在“系统设置”的描述文件页面手动删除“系统更新完全隐藏”。

恢复后,工具会重新开启更新检查与通知,但仍保持“不自动下载、不自动安装 macOS”;关键安全更新与系统数据文件更新会恢复。

数据与隐私

  • 工具没有网络请求、统计、自动更新或第三方依赖。

  • 清理顶部提醒前,原数据库会备份到:

    ~/Library/Application Support/系统更新开关/Backups/
    
  • SQL 删除条件固定为 uuid='com.apple.SoftwareUpdateServices.followup',不会删除 Apple ID、iCloud、双重认证或其他 CoreFollowUp 记录。

  • .gitignore 明确排除 *.db*.bak*.db-wal*.db-shm,防止本机备份误上传到 GitHub。

完全卸载

  1. 先在应用内选择“开启推送”。
  2. 确认“系统更新完全隐藏”描述文件已删除。
  3. 删除 系统更新开关.app
  4. 如不再需要还原备份,可自行删除上述 Backups 文件夹。

常见问题

顶部的“有软件更新可用”仍然存在

它不是普通角标,而是 CoreFollowUp 生成的独立侧边栏项。请在“系统设置 → 隐私与安全性 → 自动化”中允许“系统更新开关”控制 Finder,然后再点一次“关闭并隐藏”。

为什么“软件更新”还在“通用”里,只是变灰?

macOS 14 会保留这个系统项目的占位,但禁止打开它。“变灰 + 受描述文件控制”就是隐藏配置已生效的表现。

需要关机或重启吗?

通常不需要。工具会关闭并重新加载相关界面缓存。如果系统受保护进程仍保留旧状态,注销或正常重启一次即可。

会阻止 App Store 应用更新吗?

工具针对 macOS 软件更新检查、通知和设置页面。描述文件的 DisableSoftwareUpdateNotifications 会禁止软件更新通知,但不是用来卸载 App Store 或阻止你手动更新应用。

技术细节

涉及的主要配置项:

  • /Library/Preferences/com.apple.SoftwareUpdate
  • gui/<uid>/com.apple.SoftwareUpdateNotificationManager
  • com.apple.systempreferences 描述文件载荷
  • com.apple.appstore 描述文件载荷
  • ~/Library/CoreFollowUp/items.db 中唯一的软件更新跟进记录

描述文件标识符为:

com.codex.system-update-toggle

参与贡献

欢迎提交 issue 或 pull request。如果报告兼容性问题,请附上 macOS 大版本和小版本,但请勿上传 CoreFollowUp/items.db、系统日志全文或其他可能包含账户信息的文件。

许可证

MIT

About

可逆地关闭、隐藏并恢复 macOS 系统更新提示与设置入口

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages