我想通过 CMD 或 C# 代码卸载 BUNDLE,无需原始 bundle.exe

问题描述

我看过其他帖子

Is there a way to uninstall Wix bundle from CMD

Removing bundle setup (wix) from ARP using CMD

但是,在这两种情况下,解决方案都建议使用原始的bundle.exe卸载。

根据我的要求,这是不可能的。以下是不可能的原因。


我在注册表的第一个帖子中看到了 comment

计算机\HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall{xxx...xxx}\InstallSource

包含ProgramData中的目录,我查了一下那个文件夹,可惜有msi没有exe。

我还检查了 UninstallString,但只有 msiexec.exe /i{xxx...xxx}

我可以使用msiexec.exe /x {xxx...xxx}成功卸载该程序,并且注册表项消失了,但由于我没有删除捆绑包,因此捆绑包的ARP条目仍然存在。


当我使用 UI 从添加/删除程序中卸载时,我可以卸载这个包。但我需要在没有 UI 的情况下这样做。

一定有办法。

任何帮助将不胜感激。

解决方法

实际上找到了答案。

由于我的应用程序是 64 位,所以我的 msi 是 64 位。所以我假设 bundle 也是 64 位的。

但是,该捆绑包仍在使用 32 位。

所以通过搜索 WOW6432Node,我找到了 BundleCachePath 下的 exe 路径。

而且因为我有 exe 路径,所以我能够卸载捆绑包。