如何在 Windows 上卸载 TortoiseSVN
卸载 TortoiseSVN 不会动你的工作副本,它们就是普通文件夹,签出到哪儿就留在哪儿。它和其他 svn 客户端共用的 Subversion 设置也会单独留下来,不会跟着一起没了。这份指南覆盖用 TortoiseSVN.TortoiseSVN winget 包按机器安装的 TortoiseSVN。
先退出 TortoiseSVN
关掉打开的 TortoiseSVN 对话框(提交、日志、版本库浏览器),卸载前在任务管理器(Ctrl+Shift+Esc)里确认没有 TortoiseProc.exe 还在。
用自带的卸载器移除应用
打开「设置 › 应用 › 已安装的应用」,找到 TortoiseSVN,选择卸载,或者运行:
winget uninstall --id TortoiseSVN.TortoiseSVN
数据分别在哪里
| 位置 | 里面是什么 | 如何处理 |
|---|---|---|
HKCU\SOFTWARE\TortoiseSVN |
TortoiseSVN 自己的少数几项偏好设置(比对视图、更新提醒) | 卸载器不会动,想清理自己删掉 |
%APPDATA%\Subversion |
Subversion 客户端自己的配置、凭据缓存和服务器证书例外,机器上任何 svn 客户端(包括 TortoiseSVN)共用 | 用了别的 svn 客户端或者可能重装的话就留着,里面存了想保留的凭据先备份 |
检查结果
卸载完成后运行下面几条只读命令:
Get-Process TortoiseProc -ErrorAction SilentlyContinue
winget list --id TortoiseSVN.TortoiseSVN
Test-Path "$env:ProgramFiles\TortoiseSVN"
Get-ItemProperty HKCU:\SOFTWARE\TortoiseSVN -ErrorAction SilentlyContinue
Test-Path "$env:APPDATA\Subversion"
Get-Process没有输出只表示未观察到匹配进程,被忽略的查询错误不能当作已经退出。winget list正常完成且没有匹配,才说明包记录已经没了;列出一行,说明卸载没完成。Test-Path "$env:ProgramFiles\TortoiseSVN"返回False,说明程序目录已经没了;返回True,说明那里还有文件。Get-ItemProperty返回设置值表示该项仍在,没有输出时还要确认查询没有权限或其他错误,不能只凭空输出判断已删除。Test-Path "$env:APPDATA\Subversion"返回True,说明共用的 Subversion 配置还在,只要你或别的 svn 客户端没有删掉,这就是正常的。
用 winget 安装时
winget uninstall 运行的是「设置 › 应用」用的同一个 MSI 卸载器,删的是同一批程序文件,不会动 %APPDATA%\Subversion 或任何工作副本。
Mole 会列出什么
对按机器安装的 winget 版 TortoiseSVN:
- 程序目录和公共开始菜单文件夹(里面有 Help、Settings、TortoiseIDiff、TortoiseMerge 等快捷方式)默认勾选。
HKCU\SOFTWARE\TortoiseSVN会列出,默认不勾选;这次测试勾选并删除之后,键本身还在,因为它有一部分归 Windows 所有,但里面的 5 个偏好设置值被清空了,删之前先备份成.reg文件。%APPDATA%\Subversion不在这张列表里,因为它是 Subversion 客户端共用的配置,不是 TortoiseSVN 独占的东西。
这次检查覆盖了什么
测试的是 arm64 MSI 版 TortoiseSVN 1.14.9.29743,按机器安装,提权环境。测试全程没有签出过版本库,也没有保存过任何凭据。
