前两年的时候,想了解一下各个国产厂商的系统里,主题包是怎么个结构,就到网上找了它们各家的主题制作工具安装了一下,好像华为的叫 Theme Studio,OPPO 的叫 Theme Editor(全称是 HeyTapThemeEditor)。
前两天的时候,Windows 突然报系统盘空间吃紧,也许是跟最近颇为安装了几个 AI 工具有关,要知道现在的这些 AI 工具大部分都是把 Electron 作为核心技术栈来使用,打出来的包安装之后随随便便就得一两个 GB,空间消耗吓人。于是找来磁盘占用分析工具帮助分析,看哪些可以卸载掉。
当然了,HeyTapThemeEditor 就在清退之列。到系统设置里卸载它,可是每次执行过程刚刚开始,它就会报一个错,说“HeyTapThemeEditor 正在运行”,而且也不能够自动关闭,卸载无法完成。
无论是拿进程管理工具查看,还是拿窗口遍历工具查看,都没有发现其它与 HeyTapThemeEditor 相关的处于运行状态的进程。只好怀疑它很愚蠢地把它自己当成了问题所在。由于它的报错信息里清晰地包含了“HeyTapThemeEditor”字样,而含有“HeyTapThemeEditor”字样的窗口被俺第一时间认为是它的检测目标,于是请 AI 临时手搓了个脚本,遍历所有窗口,把标题里含有的“HeyTapThemeEditor”去掉。去掉是成功了,但是错误没有消除,依然不能卸载。
只好再次仔细检查卸载程序的进程树。Uninstall HeyTapThemeEditor.exe 是安装路径下首先被执行起来的,它会在系统的临时目录里创建一个名为 Un_A.exe 的可执行程序然后将之启动,若半途退出卸载过程,则临时目录里的内容也被清除。看上去很标准的手法,也没什么问题。
不过等等,似乎不大对。通常说来,临时目录里的卸载程序启动的时候,安装目录里的内容就不该再有保持活着(执行中)的了,因为要为删除操作创造条件。而当前的状况是,安装目录下的 Uninstall 似乎把 Un_A 加载起来之后一直在等待中,会不会就是这样产生了互相锁死的问题?
于是在报错之际,将临时目录里的 Un_A 复制了一份备用,然后把报错的卸载过程退出。再直接去运行复制出的那个 Un_A,果然,卸载得以顺利完成(见下图)。
此问题在 OPPO 官网提供的最新版的主题设计器中仍然存在。

