Mac 上的应用卸载工具
更新于 · 作者 Anton Shakirov
把一个应用拖进废纸篓,走掉的只是这个应用。缓存、偏好设置、支持文件夹和登录项都还在——散在大约三十个你这辈子也不会去的地方。hop 把它们找出来,一并带走。

| what it is | app uninstaller inside hop, a menu bar app for macOS |
|---|---|
| price | free — no trial, no pro tier, no account |
| licence | MIT, source on GitHub |
| requires | macOS 14 or later, Apple silicon or Intel |
| works offline | yes |
| data sent anywhere | none |
macOS 没有应用卸载工具
访达里没有卸载命令,系统设置里没有卸载面板,命令行里也没有对应的东西。Apple 自己的说明是:先看这个应用有没有自带卸载程序,如果没有,就把它从「应用程序」拖进废纸篓。官方答案到此为止。
Apple 的说明,全文(英文页面): 在 Mac 上删除或卸载应用
废纸篓到底带走了什么
应用包,别的什么都没有。一个应用写下的东西远不止这些:偏好设置在一个资源库文件夹里,缓存在另一个里,支持数据在第三个里;来自 App Store 的还有自己的容器,有时候还有一个登录项和一个后台助手。把应用包拖走,这些统统留在原处。
大多数时候这只是杂物。偶尔要糟一些——你为了修好某个毛病重装了应用,它带着你正想逃开的那套坏设置回来了,因为它的旧偏好设置哪儿都没去。
命令行能给你什么
比它的名声少。人们被指向的那条命令是「pkgutil --forget」,而它自己的手册页把它做的事说得很白:丢掉关于一个安装包的回执数据,但不碰已安装的文件。它让 macOS 忘掉曾经跑过一个安装程序。那个安装程序放到硬盘上的每一个文件,都还在原来的地方。
用手翻 ~/Library 能走得更远一点,然后撞上第二堵墙:终端没有完全磁盘访问权限之前,shell 读不了其中一些文件夹。向它要一个它没有权限的容器,它回你「Operation not permitted」,而这从外面看,跟「这里什么都没有」很像。
「--forget」做什么、不做什么(英文页面): 忘掉一个安装包 — MacAdmins 文档
为什么 shell 访问那些文件夹需要权限(英文页面): 在 macOS 中控制应用对文件的访问
Mac 上的卸载工具值不值得装
用手做这件事,既不花钱,也不损失质量。它花的是「知道有这么回事」:macOS 把这些碎片撒在哪儿、怎么从一个应用的 Info.plist 里读出它的标识符,以及那三十来个位置里哪些会出现这个标识符。Apple 的说明比问题本身早结束了一步。
余下的代价是风险:用手做的删除,最后落在一条你自己推断出来的路径上的「rm」,而「rm」没有撤销。这两样哪一样要紧,完全取决于你要删的是什么。
| 你要办的事 | 免费路径 | 用 hop |
|---|---|---|
| 删掉一个从 App Store 装的应用 | 拖出去,再把它在 ~/Library/Containers 里那一个文件夹删掉——两次拖动就完事 | 用不上——那两次拖动就够了 |
| 一个你已经信得过的免费卸载工具 | AppCleaner 干这件事干了很多年,而且不花钱 | 光为这一件事,没有换的理由 |
| 从命令行做这件事 | 没什么可跑的:「pkgutil --forget」丢掉回执,每个文件都留着 | 往那一行上一放就好 |
| 一次能收回来的删除 | 「rm」是终局,一个报个数字就走人的清理工具也是 | 一切先进废纸篓,出错的代价是还原一次 |
| 只想办这件事,不想要一整套维护软件 | 付费清理工具把卸载卖在一份订阅里,外带二十来件别的工具 | 一个免费应用的一个模块,不用账号 |
所以简短版是这样:App Store 的应用两次拖动就够,不需要帮手。AppCleaner 已经在你的 Mac 上的话,留着它。一个专门的卸载工具在别的一切上才挣得到自己的位置——从开发者网站装的应用、一年前删掉但文件夹还杵在那儿的应用,以及任何一次你希望能收回来的删除。
hop 的卸载工具会带走什么
你把一个应用交给它,在任何东西动起来之前,先看见这个应用长出来的整条尾巴:它在系统各处留下的每一块,每一块旁边都写着它有多大。一次确认,全部一起进废纸篓——正是这一步,把「大概没事吧」变成一个你真做得了的决定。
哪个按钮做什么、那张残留列表是怎么读出来的、一次半途而废的删除会怎样——说明书这一头的内容,你自己语言的版本: 说明里的卸载应用
它走过的地方,正是应用真会写东西的地方:application support、缓存、偏好设置、容器、launch agents、插件、安装回执等等——大约三十处。
凡是 macOS 不肯交出来的,都会连同原因一起点名,而不是悄悄跳过:一个对什么都报告成功的卸载工具,是在给人讲故事。
已经进了废纸篓的应用照样认得出来,所以一次半途而废的删除能接着做完。早已消失的应用留下的残留也一样——它们单独列着,已经没有应用包可以拿来辨认它们了。
它是移进废纸篓,不是删掉
一个直接删除的卸载工具,离一个糟糕的下午只差一次点错。hop 拿走的一切都进废纸篓,所以出错的代价是还原一次,而不是丢一个文件——这也是确认那一屏把每一块都列出来、而不是数个数的缘故。
把大小列出来,好让你看见空间去了哪儿
应用包和它的数据,分开称
列表里每个应用都标着它有多大,应用包和它的数据分开算。一个两百兆的应用坐在六个 g 的缓存数据上,很常见,而且看不见。删掉它到底能不能腾出值得折腾的空间,你在动手之前就知道,而不是之后。
你也可以只清掉某个应用的缓存,属于它的别的东西一概不碰,按大的在前排好。应用本身没毛病、只是缓存长疯了的时候,这一条很好用。同一个模块还会列出留在下载、桌面和文稿里的安装包,以及废纸篓和它的大小。
它是卸载工具,不是清理工具
hop 不承诺让你的 Mac 变快、腾出神秘的几十个 g,或者修好你本来不知道自己有的问题。那些承诺属于另一类软件,而那类软件的名声是自己挣来的。
它做的是删掉一个应用和它留下的东西。这就是全部的活儿。这个应用由各管一件事的模块拼起来,盯着磁盘和内存的是另一个。它报数字;它不卖给你针对这些数字的解药。
那个负责盯着数字的模块: Mac 的系统监视器
它和别的 Mac 卸载工具比起来如何
AppCleaner 免费,这件事做得好,也做了很多年;它就够用的话,没有换的理由。
付费的清理工具把卸载打包进一套维护软件里——扫描、清理、优化——然后为整套收一笔订阅费。
这个模块是给那些想把这件事办了、又不想在菜单栏里再添一个图标的人——以及那些宁愿删掉的东西先进废纸篓、而不是直接从世上消失的人。它免费,不需要账号,还附带 hop 会做的另外十八件事。
frequently asked questions
- Mac 上有自带的应用卸载工具吗?
- 没有。macOS 的访达和系统设置里都没有卸载命令。Apple 的说明是:应用自带卸载程序就用它自带的,否则把应用拖进废纸篓——而这会把应用写在它自己的包之外的一切都留下。
- 能从终端卸载 Mac 应用吗?
- 做不干净。通常被推荐的命令是「pkgutil --forget」,而它的手册说它丢掉的是回执数据,不碰已安装的文件。而且终端没有完全磁盘访问权限时,它还读不了一部分资源库文件夹。
- 文件会被彻底删除吗?
- 不会。一切都移进废纸篓,所以误删的东西都能放回去。
- 它能找到一个应用几个月前留下的文件吗?
- 它会走过大约三十个 macOS 应用通常会写东西的位置,并且把已经消失的应用留下的残留单独列出来。一个应用刻意藏在不寻常地方的东西,它找不到。
- 已经在废纸篓里的应用还能卸载吗?
- 能。hop 照样认得出它,所以一次没做完的删除可以接着做完。
- 它会让我的 Mac 变快吗?
- 不会,我们也不想装作会。它删掉应用和它们的残留,这会腾出空间。速度是另一个问题。
- 能只清掉某个应用的缓存吗?
- 能,属于它的别的东西一概不碰。列表按大的在前排好。
- 这个卸载工具多少钱?
- 不要钱。hop 免费且开源,不需要账号,也不发遥测,而卸载工具是它的一个模块,不是一档付费功能。
other tools in hop
- vpn switcherevery vpn your Mac knows about, one switch each.
- clipboard historyeverything you copied — text, links, screenshots and whole files.
- screenshotsan area, a window or the whole screen — marked up before it leaves the screen.
关于作者

Anton Shakirov开发 hop
开发 hop,也编写本站的每一页。十九个工具收在一个菜单栏图标下,MIT 许可,源码公开。issue 和邮件都由他本人阅读和回复。