要点速览
- 把 App 拖到废纸篓只会移除 App 本身,它的设置、缓存和数据仍留在“资源库”文件夹中,往往比 App 本身大得多。
- 如果 App 自带卸载程序(例如 Adobe、Microsoft 和 Docker 的 App),请优先使用:它还会移除辅助程序、登录项和后台服务。
- 残留文件位于 ~/Library/Application Support、Caches、Containers、Group Containers 和 Preferences 等文件夹中,通常以 App 名称或其 Bundle ID 命名。
- 只移除明确属于已卸载 App 的残留文件,把它们移到废纸篓而不是直接删除,并且绝不要碰 Apple 自己的文件夹。
- 要修复运行异常的 App,往往不必卸载;重置它的偏好设置或使用其内置的重置功能就够了。
如何卸载 Mac App 及其残留文件
- 退出 App 并寻找卸载程序. 退出 App。查看它在“应用程序”中的文件夹、它的菜单和官网是否提供“卸载”选项;如果有,就使用它。
- 记下 App 的 Bundle ID. 趁 App 还在“应用程序”中,在“终端”中运行 osascript -e 'id of app "Example"',得到类似 com.example.App 的名称。残留文件通常以它命名。
- 将 App 移到废纸篓. 在访达中打开“应用程序”,把 App 拖到废纸篓,或者选中它后按下 Command-Delete。如有要求,请输入管理员密码。
- 在“资源库”中查找残留文件. 在访达中按下 Command-Shift-G,前往 ~/Library,在 Application Support、Caches、Containers、Group Containers、Preferences、Saved Application State、HTTPStorages、WebKit 和 LaunchAgents 中查找这个名称。
- 检查系统级位置和登录项. 检查 /Library/LaunchAgents、/Library/LaunchDaemons 和 /Library/PrivilegedHelperTools,并在“系统设置”›“通用”›“登录项与扩展”中关闭这个 App 的条目。
- 确认无误后再清倒废纸篓. 先使用替代的 App,或打开几个文稿试试。一切正常后,再清倒废纸篓以释放空间。
把 App 拖到废纸篓会移除 App,但不会移除它创建的数据。设置、缓存、下载的内容和后台辅助程序都会留在“资源库”文件夹中,有时占用的空间比 App 本身还多。要彻底卸载:如果 App 自带卸载程序,就使用它;否则先把 App 移到废纸篓,再移除明确属于它的残留文件。
第一步:App 本身
来自 Mac App Store 的 App。在访达中打开“应用程序”,把 App 拖到废纸篓,或者选中它后按下 Command-Delete。在 macOS Sequoia 及更早版本中,你也可以打开启动台,按住 Option 键直到图标开始晃动,然后点按删除按钮。macOS Tahoe 用新的“App”界面取代了启动台,而它不提供这个操作,所以请使用访达。
自带卸载程序的 App。Apple 的在 Mac 上删除或卸载 App建议先检查有没有卸载程序,因为它还会移除登录项、扩展以及储存在其他位置的数据。常见的例子:
- Adobe 的 App:从 Creative Cloud 桌面 App 中卸载。
- Microsoft 365:按照卸载 Mac 版 Office操作。其中包括移除 Group Containers 中的
UBF8T346G9.*文件夹;请先备份 Outlook 数据。 - Docker Desktop:在控制面板中选取 Troubleshoot › Uninstall,或者运行
/Applications/Docker.app/Contents/MacOS/uninstall,然后把 App 移到废纸篓。这会删除你的容器、镜像和卷。参见 Docker 的说明。 - 安全工具、VPN、驱动程序和音频插件通常会安装系统扩展;请始终使用厂商提供的卸载程序。
其他所有 App。记下它的 Bundle ID(见下文),退出 App,然后把它拖到废纸篓。在处理完残留文件之前,先不要清倒废纸篓。
你也可以在系统设置 › 通用 › 储存空间中删除 App:点按“应用程序”旁边的信息按钮,选择一个 App,然后点按“删除”。
残留文件在哪里
App 会把数据存放在固定的位置,通常是以 App 名称(“Slack”)或其 Bundle ID(“com.tinyspeck.slackmacgap”)命名的文件夹。要查找 App 的 Bundle ID,请趁 App 还在“应用程序”中时运行以下命令(它只读取信息):
osascript -e 'id of app "Example"'
| 位置 | 存放的内容 | 卸载后要移除吗? |
|---|---|---|
~/Library/Application Support/<App> |
数据库、下载内容、插件,往往是最大的部分 | 要,如果你不想保留这些数据 |
~/Library/Caches/<bundle ID> |
可重建的缓存 | 要 |
~/Library/Containers/<bundle ID> |
沙盒 App(大多数 App Store App)的全部数据 | 要,但其中可能有你的文稿 |
~/Library/Group Containers/<team ID>.<name> |
同一系列 App(例如 Office)共享的数据 | 仅当相关 App 都已移除时 |
~/Library/Preferences/<bundle ID>.plist |
设置 | 要 |
~/Library/Saved Application State/<bundle ID>.savedState |
用于重新打开时恢复窗口的状态 | 要 |
~/Library/HTTPStorages/<bundle ID> |
Cookie 和网页存储 | 要 |
~/Library/WebKit/<bundle ID> |
网页内容数据 | 要 |
~/Library/LaunchAgents/<bundle ID>.*.plist |
你的账户的后台辅助程序 | 要,之后注销并重新登录 |
/Library/LaunchAgents、/Library/LaunchDaemons |
面向所有用户的辅助程序 | 要,需要管理员密码 |
/Library/PrivilegedHelperTools |
特权辅助程序 | 要,连同对应的 LaunchDaemon |
要在“资源库”中搜索某个 App 的名称或 Bundle ID,以下命令会列出匹配项,但不会做任何更改:
find ~/Library /Library -maxdepth 3 -iname "*example*" 2>/dev/null
请逐一检查每个结果。搜索“note”这样的短名称会匹配到很多无关的项目。在访达中把你确定的内容移到废纸篓;在清倒废纸篓之前,这一步都可以撤回。
登录项和后台服务
在后台运行的 App 会注册登录项或启动代理。在 macOS Sequoia 及更高版本中,打开系统设置 › 通用 › 登录项与扩展(在 Ventura 和 Sonoma 中只叫“登录项”)。把这个 App 从“登录时打开”中移除,并在“允许在后台”下关闭它的条目。如果移除 App 后条目仍在,通常说明上述某个 LaunchAgents 或 LaunchDaemons 文件夹中还残留着 plist 文件。
用 .pkg 安装器安装的 App
软件包会留下一份收据,列出它安装了什么。以下命令只读取信息:
pkgutil --pkgs | grep -i example # 查找软件包 ID
pkgutil --pkg-info com.example.pkg # 查看安装位置
pkgutil --files com.example.pkg # 列出它安装的每个路径
--files 列出的路径是相对于 --pkg-info 显示的位置而言的,通常是 /。请小心:这个列表包括 Library 和 usr/local/bin 等其他软件也在使用的共享目录。只移除明确属于这个 App 的文件,绝不要移除整个共享文件夹,也绝不要动 /System 或 /usr 下 /usr/local 以外的任何内容。pkgutil --forget 只会删除收据,并不会卸载任何东西。
哪些内容不要删除
- 任何以
com.apple.*命名的项目,以及“邮件”、“信息”、“照片”、Safari 浏览器、钥匙串和账户的文件夹。 ~/Library/Mobile Documents和~/Library/CloudStorage,它们就是你的云盘。- 同一开发者的其他 App 仍在使用的 Group Containers。
- 存有你自己创建的文稿的 Containers 或 Application Support 文件夹,除非你另有副本。笔记、游戏和编辑器类 App 常常把你的作品存在那里。
/System中的任何内容。它受到保护,也不是 App 安装的位置。
重置 App,而不是卸载它
如果 App 运行异常,你可能根本不需要移除它。先找找它有没有内置的重置功能,通常在“帮助”或“设置”中。如果没有,请退出 App,然后重置它的偏好设置:
defaults delete com.example.App
这会通过偏好设置系统移除为该 Bundle ID 储存的设置,比手动把 .plist 移到废纸篓更安全,因为 macOS 会缓存偏好设置。这一操作无法撤销,所以如果以后可能还需要,请先导出:defaults export com.example.App ~/Desktop/example-prefs.plist。沙盒 App 会把偏好设置保存在自己的容器中,defaults 会替你处理这一点。如果这样还不够,下一步是把 App 的缓存文件夹移到废纸篓,最后一步才是它的 Application Support 文件夹。
MoreRoom 能帮上什么忙
MoreRoom 免费版可以逐个卸载 App,并一并清除残留文件。它会在上面列出的文件夹(Application Support、Caches、Containers、Group Containers、Preferences、Saved Application State、HTTPStorages、WebKit、LaunchAgents 等)中匹配 App 的 Bundle ID,显示每一项的大小,并允许你取消勾选想保留的项目。所有内容都会先移到废纸篓,并且可以撤销。它在系统级 /Library 中找到的项目会显示出来,但留给你用管理员密码自行移除。MoreRoom 不会移除系统扩展或驱动程序;对于安全工具、VPN 和驱动程序,请使用厂商提供的卸载程序。
常见问题
把 App 拖到废纸篓就算卸载了吗?
这会移除 App,对大多数小型 App 来说已经足够。但它的设置、缓存和数据仍留在“资源库”文件夹中,有些 App 还会留下只有其自带卸载程序才能移除的后台辅助程序。
如何删除从 App Store 下载的 App?
在访达中把它从“应用程序”拖到废纸篓。在 macOS Sequoia 及更早版本中,也可以在启动台中按住 Option 键并点按删除按钮;macOS Tahoe 用新的“App”界面取代了启动台,所以请改用访达。
删除 ~/Library 中的文件夹安全吗?
只有明确属于已移除 App 的文件夹才可以删除。切勿删除 Apple 的文件夹(名称以 com.apple 开头)、钥匙串,以及“邮件”“信息”或“照片”的数据,并且请把项目移到废纸篓,以便需要时恢复。
pkgutil --forget 有什么作用?
它只会删除 macOS 为某个安装器软件包保存的收据,别的什么都不做。该软件包安装的文件仍留在原处,所以它并不会卸载任何东西。
为什么无法把 ~/Library/Containers 中的文件夹移到废纸篓?
macOS 会保护 App 容器。访达可能会请求权限,而“终端”需要在“系统设置”›“隐私与安全性”中获得“完全磁盘访问权限”。请先移除 App,再移除它的容器。