清除 Thunderbird 多条通知注册项的简单方法

一般情况下,我使用 scoop 来管理常用软件,不过这也不是一个十全十美的方法, 比如它跟 Mozilla 的 firefox 的配合就不是很好,同家的 thunderbird 可能也是相同的 原因,也有相同的问题。

Scoop 的 Feature

我之前提到过,scoop 因为会给应用的每一个版本都创建一个目录, 然后创建一个 current 的软连接,指向当前使用的版本,这种情况下会 使 windows 认为电脑上装了至少两个应用,一个 current 下的应用,一个当前版本下的 应用,如果我们多次更新了应用而且没执行过 cleanup,那么同样的应用会更多。

而 Mozilla 家的软件又是允许装多个不同版本的程序到不同路径的,结合这两个特性, 每次 scoop 升级 Mozilla 软件时,直接运行就会丢失上一版本的 profile, 不过 Mozilla 也注意到多版本多程序的升级问题,thunderbird 和 firefox 都提供了 一个 profile manager,升级后,我们可以用 profile manager 告诉应用, 我们是要用哪个 profile。

profile manager 解决了我们升级 thunderbird 版本后迁移 profile 的问题, 但是因为多个版本共存的特性还在,每个版本的 thunderbird 应该都给我们发送过 邮件提醒,那么我们的提醒控制列表会相当壮观:

图上我们已经有三个小雷鸟了。这就是多个不同版本应用留下的历史残留, 每个应用都会向 windows 注册一个通知类别,但是我们使用 scoop cleanup 清理 历史版本时,windows 并不知道这回事,于是它们就永久地保存在了这里。

这个列表应该对我们的日常使用不会有太大影响,占用的空间也不会很多,主要伤害到的 应该也是系统整洁强迫症患者,唯一可能造成的影响是,如果我们想 精确控制 thunderbird 的提醒时,我们不知道要修改哪一个才能生效。

那么如果想要解决这个问题,其实并不太难,我们知道 Windows 自己的设定一般 都会保存在注册表中,所以一番简单的搜索后,我们就找到了保存通知设定的位置是 \HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Notifications\Settings\

下面我们有一个新的问题,这里面没有程序的存放路径,那么清理哪个比较合适。

这个问题有两个解法:

正常一点的话,每个注册项里虽然没有安装路径,但是有一个最近更新时间的时间戳, 那么我们只要保留最大的时间戳对应的注册项,应该问题不大,因为最大的时间戳应该 对应我们最近使用的版本。

如果我们跳出常规思路,直接清除掉全部的小雷鸟注册项,这样做显然简单一点, 但会不会影响我们后续接收邮件通知?我觉得不会,因为我的小雷鸟一直是 scoop 安装的 版本,scoop 除了 nonportable 库,其它库基本都是收录 portable 软件的, 我的小雷鸟是在 extra 库中,大概率也是 portable 软件,所以添加注册项这回事, 要么是小雷鸟自己加的,要么是 windows 自己加的,不会是安装包加的。那么既然这样, 我们可以放心大胆地清掉所有 thunderbird 注册项。

清完之后,重启小雷鸟,写封邮件给自己,看看是不是会收到通知。

总结

这是很多 portable 软件,尤其是允许多版本共存的软件的通病, windows 会认为它们是不同的软件,但是在通知中它们又没有办法分辨出哪一项 对应哪一个版本,所以我们需要定期去清理通知的注册表项,一个比较合适的时机, 是我们更新软件后。