卸载失效的安装程序

前言

对于传统的 Win32 应用,他们的安装程序一般是 .MSI,或是 .EXE 里套 .MSI 安装程序,这便于 Windows 管理所有的应用程序。但是,若在安装缓存丢失或卸载不正确的情况下,会导致新的/旧的安装程序无法继续进行

准备工具

  1. MicrosoftProgram_Install_and_Uninstall.meta.diagcab

使用疑难解答程序包

直接打开下载好的 MicrosoftProgram_Install_and_Uninstall.meta.diagcab,并根据需要选择“安装”或“卸载”(不明可以选择“卸载”)

“安装”或“卸载”

在列表中,找到要卸载的项目,点击“下一步”
最后,选择“是,尝试卸载”,即可启动安装程序,并清理大部分相关项目

卸载并清理

卸载完成后,重启 Windows 即可

若在列表中没有找到对应的项目,请参阅:《注册表查找 GUID》或《安装程序缓存目录查找 GUID》,选择“未列出”,并将安装程序的 GUID 填入

输入产品代码

注册表查找 GUID

卸载程序的注册表路径如下

所有用户的 64 位应用程序(包括 32 位系统的 32 位应用程序):

1
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall

64 位系统上所有用户的 64 位应用程序:

1
HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall

当前登录用户安装的程序:

1
HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall

Windows Installer(最全,但是不带花括号 {}

1
HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Installer\Products

在注册表条目中,逐一寻找目标安装程序的 GUID(项名称即为 GUID,不包括花括号外的内容)
例如,Microsoft Visual C++ 2022 X64 Additional Runtime - 14.50.35719 的项名称为 {AECD4ED0-8A3B-41E9-92D1-6BEE0374CCAF},则 GUID 则为 {AECD4ED0-8A3B-41E9-92D1-6BEE0374CCAF}
InstallSourceModifyPathUninstallString 里花括号的内容也是 GUID)

注册表编辑器下的 GUID

安装程序缓存目录查找 GUID

安装程序缓存目录:

1
%ProgramData%\Package Cache

(一般为 C:\ProgramData\Package Cache

1
%SystemRoot%\Installer

(一般为 C:\Windows\Installer)下也有缓存,但是一般为精简过的安装缓存

在文件夹列表中,逐一寻找目标安装程序的 GUID(文件夹名称即为 GUID,不包括花括号外的内容)
例如,vc_runtimeMinimum_x64.msi 的文件夹名称为 {61B44572-8722-4DAF-8ACF-8E742D30BCC5}v14.50.35719,则 GUID 则为 {61B44572-8722-4DAF-8ACF-8E742D30BCC5}

ProgramData 下的 GUID

对于部分安装程序,可能会在其他路径下存放有安装缓存,如 VMware Workstation 就存放于:

1
%CommonProgramFiles(x86)%\VMware\InstallerCache

(一般为 C:\Program Files (x86)\Common Files\VMware\InstallerCache

VMware Workstation 安装缓存

后记

  1. COM 类对象和 CLSID - Win32 apps | Microsoft Learn