最近有点时间在 mac 上开始游戏和模拟器(果然我这种爱折腾的人就爱在 windows 折腾生产力,在 mac 上折腾游戏),结果发现了一个比较有意思的 bug。
触发过程
通过 Ryujinx Switch 模拟器把游戏添加游戏快捷路径(即:右键菜单的 Create Application Shortcut 功能);然后,在「应用程序」文件夹中把对应的. app 文件夹删除。

此时在启动台中应该无法再看见该应用的图标,但事实是,该图标有概率会保留;

甚至利用 Lemon 这种卸载工具也没办法卸载……

问题分析
一开始本以为这是个系统级的 bug,查了会资料,大多推荐用 cleam my mac 或者 lemon 卸载,但是实测无用。要不就是找不到应用,要不就是卸载完后依旧在启动台有个图标。
更有甚者建议我把那个图标丢到文件夹的下一页眼不见心不烦……
原本已经准备放弃的时候,我猛然间发现如果通过 mac 的 steam 安装游戏并打开启动台直接启动游戏选项时,启动台会生成图标但文件夹中不会有相应的 app 文件生成。
这一现象给了我灵感,我意识到启动台的应用图标并不是和「应用程序」文件夹一一对应的,有另外的配置文件或数据库与之对应。
通过对启动台包名 com.apple.dock.launchpad
的查找,我终于找到了位于犄角旮旯的配置文件。很幸运,这个文件是个没加密过的 Sqlite 3 数据库文件,通过简单的 sql 语句我就查明白了数据库各个表的结构。

于是最终的解决办法应运而生。
解决方法
- 打开 Finder
- 按下
command+shift+G
启动前往窗口 - 在前往中输入地址
/private/var/folders
后回车

- 在当前文件路径下搜索
com.apple.dock.launchpad
这个文件夹

- 进入后有个文件夹 叫
db

- 打开终端,通过
cd
命令进入该文件夹

- 确认路径无误后在终端输入:
sqlite3 db "delete from apps where title='应用名称';" && killall Dock

- 看见窗口跳动后即成功
