应用

如何彻底卸载 Mac App,连同残留文件一起清除

把 App 拖到废纸篓后,它的数据仍留在“资源库”文件夹中。残留文件在哪里、该用哪些卸载程序,以及哪些内容绝不能手动删除。

阅读约需 7 分钟MoreRoom 团队,Yando Pte. Ltd.以 Markdown 格式查看本页

要点速览

  • 把 App 拖到废纸篓只会移除 App 本身,它的设置、缓存和数据仍留在“资源库”文件夹中,往往比 App 本身大得多。
  • 如果 App 自带卸载程序(例如 Adobe、Microsoft 和 Docker 的 App),请优先使用:它还会移除辅助程序、登录项和后台服务。
  • 残留文件位于 ~/Library/Application Support、Caches、Containers、Group Containers 和 Preferences 等文件夹中,通常以 App 名称或其 Bundle ID 命名。
  • 只移除明确属于已卸载 App 的残留文件,把它们移到废纸篓而不是直接删除,并且绝不要碰 Apple 自己的文件夹。
  • 要修复运行异常的 App,往往不必卸载;重置它的偏好设置或使用其内置的重置功能就够了。

如何卸载 Mac App 及其残留文件

  1. 退出 App 并寻找卸载程序. 退出 App。查看它在“应用程序”中的文件夹、它的菜单和官网是否提供“卸载”选项;如果有,就使用它。
  2. 记下 App 的 Bundle ID. 趁 App 还在“应用程序”中,在“终端”中运行 osascript -e 'id of app "Example"',得到类似 com.example.App 的名称。残留文件通常以它命名。
  3. 将 App 移到废纸篓. 在访达中打开“应用程序”,把 App 拖到废纸篓,或者选中它后按下 Command-Delete。如有要求,请输入管理员密码。
  4. 在“资源库”中查找残留文件. 在访达中按下 Command-Shift-G,前往 ~/Library,在 Application Support、Caches、Containers、Group Containers、Preferences、Saved Application State、HTTPStorages、WebKit 和 LaunchAgents 中查找这个名称。
  5. 检查系统级位置和登录项. 检查 /Library/LaunchAgents、/Library/LaunchDaemons 和 /Library/PrivilegedHelperTools,并在“系统设置”›“通用”›“登录项与扩展”中关闭这个 App 的条目。
  6. 确认无误后再清倒废纸篓. 先使用替代的 App,或打开几个文稿试试。一切正常后,再清倒废纸篓以释放空间。

把 App 拖到废纸篓会移除 App,但不会移除它创建的数据。设置、缓存、下载的内容和后台辅助程序都会留在“资源库”文件夹中,有时占用的空间比 App 本身还多。要彻底卸载:如果 App 自带卸载程序,就使用它;否则先把 App 移到废纸篓,再移除明确属于它的残留文件。

第一步:App 本身

决策流程:如果 App 自带卸载程序就使用它;否则把 App 拖到废纸篓,移除与其 Bundle ID 匹配的残留文件,然后检查登录项

来自 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"'
Mac App 的数据存放位置:App 本身在“应用程序”中,用户级残留文件在 ~/Library 中,系统级辅助程序在 /Library 中
位置 存放的内容 卸载后要移除吗?
~/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,再移除它的容器。

本指南提到的文件夹