本文引用的文件
本指南面向清鉴客户端用户,说明如何通过官方卸载脚本完成安全、完整的卸载,并补充浏览器缓存、Electron AppData、临时文件和残留进程等手动清理项。重点解释:
cmd/uninstall.bat 如何强制终止 qingjian-client.exe 并清理 %APPDATA% 下的 QingJian 相关目录。cmd/uninstall.sh 如何通过 $HOME 安全检查、pkill 进程终止和 rm -rf 递归删除用户数据目录。卸载逻辑集中在仓库根目录的 cmd 子目录中:
graph TB
Root["仓库根目录"] --> Cmd["cmd 目录"]
Cmd --> UninstallBat["uninstall.bat<br/>Windows 卸载脚本"]
Cmd --> UninstallSh["uninstall.sh<br/>Linux/macOS 卸载脚本"]
图表来源
章节来源
两个脚本都遵循相似的卸载流程:
安全检查
%APPDATA% 是否为空,防止误删系统默认应用数据。$HOME 是否为空,防止灾难性递归删除。强制终止清鉴客户端进程
taskkill /F 终止 qingjian-client.exe。pkill -9 -f "qingjian-client" 终止匹配进程。递归删除用户数据目录
%APPDATA%\QingJian 和 %APPDATA%\qingjian-client。$HOME/.config/qingjian-client、$HOME/.local/share/QingJian、$HOME/.qingjian-client。输出清理结果
显示是否已删除、跳过或失败,并在失败时提示可能因权限不足或被占用导致。
flowchart TD
Start(["开始卸载"]) --> CheckEnv["检查运行环境变量"]
CheckEnv --> KillProcess["强制终止 qingjian-client 进程"]
KillProcess --> DeleteDirs["递归删除用户数据目录"]
DeleteDirs --> Report["输出清理结果"]
Report --> End(["结束"])
[此图为概念流程图,不直接映射具体代码结构]
章节来源
cmd/uninstall.bat 是 Windows 平台的卸载脚本,核心行为包括:
%APPDATA% 是否存在且非空。qingjian-client.exe 的进程。%APPDATA%\QingJian。%APPDATA%\qingjian-client。脚本在开头判断 %APPDATA% 是否为空;若为空,则直接终止执行,避免在环境变量缺失的情况下误删系统默认应用数据。
脚本通过任务管理命令强制终止 qingjian-client.exe。该方式适用于大多数情况,但如果进程被其他程序锁定、以更高权限运行,或已被外部工具提前结束,可能出现无法终止的情况。
Windows 脚本只清理以下两个路径:
| 目录 | 含义 | 是否由脚本删除 |
|---|---|---|
%APPDATA%\QingJian |
Windows 平台下的 QingJian 用户数据目录 | 是 |
%APPDATA%\qingjian-client |
Windows 平台下的另一个 QingJian 相关目录 | 是 |
注意:Linux/macOS 使用的 $HOME/.config/qingjian-client、$HOME/.local/share/QingJian、$HOME/.qingjian-client 不在 Windows 脚本的默认清理范围内。
flowchart TD
Start(["进入 uninstall.bat"]) --> CheckAppdata["检查 %APPDATA% 是否为空"]
CheckAppdata --> Empty{"%APPDATA% 是否为空?"}
Empty -->|是| Abort["输出错误并终止"]
Empty -->|否| KillExe["强制终止 qingjian-client.exe"]
KillExe --> DeleteQingJian["删除 %APPDATA%\\QingJian"]
DeleteQingJian --> CheckQingJian{"目录是否仍存在?"}
CheckQingJian -->|否| QjOk["输出已删除"]
CheckQingJian -->|是| QjFail["输出无法删除,可能因权限或占用"]
DeleteQingJian --> DeleteClientDir["删除 %APPDATA%\\qingjian-client"]
DeleteClientDir --> CheckClientDir{"目录是否仍存在?"}
CheckClientDir -->|否| ClientOk["输出已删除"]
CheckClientDir -->|是| ClientFail["输出无法删除,可能因权限或占用"]
图表来源
章节来源
cmd/uninstall.sh 是 Linux 和 macOS 平台的卸载脚本,核心行为包括:
$HOME 是否为空。pkill -9 -f "qingjian-client" 终止进程。脚本首先判断 $HOME 是否为空。如果为空,则立即输出错误并退出,这是为了防止 $HOME 缺失时递归删除操作产生危险影响。
脚本使用 pkill -9 -f "qingjian-client" 查找并强制终止命令行中包含 qingjian-client 的进程。脚本记录了 pkill 的返回值:
pkill 返回值 |
脚本行为 |
|---|---|
0 |
认为进程已终止,等待约两秒让进程释放文件句柄后继续 |
1 |
表示未发现运行中的进程或进程已提前退出 |
| 其他值 | 输出警告,包含实际错误码 |
Linux/macOS 脚本会尝试删除以下三个目录:
| 目录 | 说明 |
|---|---|
$HOME/.config/qingjian-client |
清鉴客户端配置目录 |
$HOME/.local/share/QingJian |
清鉴客户端共享数据目录 |
$HOME/.qingjian-client |
清鉴客户端用户数据目录 |
当某个目录存在但 rm -rf 返回失败时,脚本会提示“无法删除”,并指出可能存在权限问题或文件被占用。这通常发生在:
文件系统挂载点、网络盘或容器卷限制删除。
flowchart TD
Start(["进入 uninstall.sh"]) --> CheckHome["检查 $HOME 是否为空"]
CheckHome --> HomeEmpty{"$HOME 是否为空?"}
HomeEmpty -->|是| Abort["输出错误并退出"]
HomeEmpty -->|否| Pkill["执行 pkill -9 -f \"qingjian-client\""]
Pkill --> ExitCode{"pkill 返回值?"}
ExitCode -->|0| Wait["等待约两秒,释放文件句柄"]
ExitCode -->|1| NoProcess["提示未发现进程"]
ExitCode -->|其他| Warn["输出未知错误码警告"]
Wait --> DeleteDirs["遍历删除三个用户数据目录"]
NoProcess --> DeleteDirs
Warn --> DeleteDirs
DeleteDirs --> Result{"删除是否成功?"}
Result -->|是| Deleted["输出已删除"]
Result -->|否| Failed["输出无法删除,提示权限或占用"]
图表来源
章节来源
在执行卸载脚本前,建议先备份重要数据,尤其是:
推荐做法:
章节来源
卸载脚本不会清理所有可能的残留位置。如果你希望彻底清除清鉴客户端,请按需检查以下位置。
清鉴客户端可能在浏览器缓存中保存过后端服务地址或登录状态。建议检查:
清鉴客户端基于 Electron 构建,其运行时数据和缓存通常位于操作系统的应用数据目录中。除了卸载脚本已清理的目录外,还应关注:
检查系统临时目录中是否残留清鉴客户端生成的日志、调试文件或打包产物。常见位置包括:
如果卸载后仍能发现清鉴相关进程,可能是进程未完全退出或父进程仍在维持子进程。处理方式包括:
qingjian-client。卸载脚本本身没有处理注册表。如果清鉴客户端在安装时写入注册表项,而卸载脚本未覆盖这些键值,可能需要手动清理。建议仅在了解注册表风险的前提下操作:
操作前导出并备份相关注册表项。
flowchart TD
Start(["卸载后残留排查"]) --> Browser["检查浏览器缓存和服务地址"]
Browser --> AppData["检查 Electron AppData 与应用数据目录"]
AppData --> Temp["检查临时文件"]
Temp --> Process["检查残留进程"]
Process --> Registry["Windows 检查注册表项"]
Registry --> Done(["清理完成"])
[此图为概念流程图,不直接映射具体代码结构]
章节来源
现象
卸载脚本提示进程终止失败,或卸载后仍能看到 qingjian-client 相关进程。
可能原因
处理方法
cmd/uninstall.bat,或在任务管理器中结束 qingjian-client.exe。cmd/uninstall.sh,或使用 ps 工具定位进程后手动结束。章节来源
现象
脚本输出“无法删除”或提示权限问题。
可能原因
处理方法
sudo 执行脚本,例如在终端中以 root 权限运行 cmd/uninstall.sh。章节来源
现象
某些用户数据目录仍然存在。
可能原因
处理方法
章节来源
现象
重新安装或重启后,界面仍显示旧的授权、服务地址或登录状态。
可能原因
处理方法
章节来源
$HOME 未定义现象
Linux/macOS 脚本直接退出,并提示 $HOME 未定义。
可能原因
处理方法
$HOME,并确认该路径确实是你期望的目标用户数据目录。章节来源
卸载脚本会递归删除用户数据目录,因此一旦删除,数据恢复难度较高。
Windows 上即使 rd /s /q 的行为也可能受系统回收站策略影响。如果发现误删,应:
rm -rf 通常绕过回收站,恢复更困难。建议:
最安全的恢复方式是使用卸载前的备份:
章节来源
cmd/uninstall.bat 和 cmd/uninstall.sh 提供了基础的清鉴客户端卸载能力,包括进程终止和用户数据目录清理。%APPDATA%\QingJian 和 %APPDATA%\qingjian-client;Linux/macOS 脚本清理 $HOME 下的三个 QingJian 相关目录。