最近有点时间在 mac 上开始游戏和模拟器(果然我这种爱折腾的人就爱在 windows 折腾生产力,在 mac 上折腾游戏),结果发现了一个比较有意思的 bug。

触发过程

通过 Ryujinx Switch 模拟器把游戏添加游戏快捷路径(即:右键菜单的 Create Application Shortcut 功能);然后,在「应用程序」文件夹中把对应的. app 文件夹删除。

https://res.cloudinary.com/dhgrzx10c/image/upload/v1703049441/simpread/0749b9c4dd932dc9120b774cf9213ac8a6331cf39b5a5c5c1d33b88657772995.png

应用程序文件夹里已经找不到文件任何包含 Pok 字符的文件

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

https://res.cloudinary.com/dhgrzx10c/image/upload/v1703049443/simpread/a97ac7218c8d2ec88735633239a28f44f606345be5b4efcb22286d35afdb9e26.png

我的宝可梦 · 朱游戏图标就很神奇的保留了下来

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

https://res.cloudinary.com/dhgrzx10c/image/upload/v1703049445/simpread/dd72765489d40fda4439a3bda057c8d47249ea0a46181c024dfdcdfa95440248.png

Lemon 上也完全查不到这个 APP

问题分析

一开始本以为这是个系统级的 bug,查了会资料,大多推荐用 cleam my mac 或者 lemon 卸载,但是实测无用。要不就是找不到应用,要不就是卸载完后依旧在启动台有个图标。

更有甚者建议我把那个图标丢到文件夹的下一页眼不见心不烦……

原本已经准备放弃的时候,我猛然间发现如果通过 mac 的 steam 安装游戏并打开启动台直接启动游戏选项时,启动台会生成图标但文件夹中不会有相应的 app 文件生成。

这一现象给了我灵感,我意识到启动台的应用图标并不是和「应用程序」文件夹一一对应的,有另外的配置文件或数据库与之对应。

通过对启动台包名 com.apple.dock.launchpad 的查找,我终于找到了位于犄角旮旯的配置文件。很幸运,这个文件是个没加密过的 Sqlite 3 数据库文件,通过简单的 sql 语句我就查明白了数据库各个表的结构。

https://res.cloudinary.com/dhgrzx10c/image/upload/v1703049446/simpread/f511ada18e9ac70fda3af5eb805bbf7a6a116bc68bf817814a98d31630a3c262.png

可以直接通过系统自带的 sqlite 命令查询修改数据库

于是最终的解决办法应运而生。