如何强制卸载损坏的 Wix 捆绑包

Posted

技术标签:

【中文标题】如何强制卸载损坏的 Wix 捆绑包【英文标题】:How to force uninstall of broken Wix bundle 【发布时间】:2016-08-08 06:50:29 【问题描述】:

我已经构建了一个带有自定义托管引导程序应用程序的 WiX 包来使用它,但没有意识到我必须实现卸载逻辑。

现在我安装了一个无法卸载的捆绑包版本。

有没有干净的方法来删除这个捆绑包?我试图在 C:\ProgramData\Package Cache 文件夹中找到缓存的包 .exe 并将其替换为固定版本,但不幸的是,它实际上仍然没有卸载,也没有从已安装程序视图中删除条目在控制面板中。

当我检查更新包的 MSI 日志文件时,在卸载过程中,我看到一些类似这样的行:

[1014:1B44][2016-08-08T01:13:02]i300: Apply begin
[1014:1B44][2016-08-08T01:13:02]i010: Launching elevated engine process.
[1014:1B44][2016-08-08T01:13:06]i011: Launched elevated engine process.
[1014:1B44][2016-08-08T01:13:06]i012: Connected to elevated engine.
[10F8:1AD4][2016-08-08T01:13:06]i358: Pausing automatic updates.
[10F8:1AD4][2016-08-08T01:13:12]w308: Automatic updates could not be paused due to error: 0x80070422. Continuing...
[10F8:1AD4][2016-08-08T01:13:12]i360: Creating a system restore point.
[10F8:1AD4][2016-08-08T01:13:16]i361: Created a system restore point.
[10F8:1AD4][2016-08-08T01:13:16]i370: Session begin, registration key: SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\598ba570-f8c8-43c5-8aa9-b7d26f3e6124, options: 0x0, disable resume: No
[10F8:1AD4][2016-08-08T01:13:16]i371: Updating session, registration key: SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\598ba570-f8c8-43c5-8aa9-b7d26f3e6124, resume: Active, restart initiated: No, disable resume: No
[10F8:1AD4][2016-08-08T01:13:16]i329: Removed package dependency provider: 27C17010-A6C4-4087-8EB7-8DCB45DC7D7E, package: MyPackage1
[10F8:1AD4][2016-08-08T01:13:16]i326: Removed dependency: 598ba570-f8c8-43c5-8aa9-b7d26f3e6124 on package provider: C12FA53F-22FA-4979-8C63-0B6850F59A16, package MyPackage2
[10F8:1AD4][2016-08-08T01:13:16]i372: Session end, registration key: SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\598ba570-f8c8-43c5-8aa9-b7d26f3e6124, resume: None, restart: None, disable resume: No
[10F8:1AD4][2016-08-08T01:13:16]i352: Removing cached bundle: 598ba570-f8c8-43c5-8aa9-b7d26f3e6124, from path: C:\ProgramData\Package Cache\598ba570-f8c8-43c5-8aa9-b7d26f3e6124\
[10F8:1AD4][2016-08-08T01:13:16]w354: Unable to remove cached bundle: 598ba570-f8c8-43c5-8aa9-b7d26f3e6124, from path: C:\ProgramData\Package Cache\598ba570-f8c8-43c5-8aa9-b7d26f3e6124\, reason: 0x80070003. Continuing...
[10F8:1AD4][2016-08-08T01:13:16]i371: Updating session, registration key: SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\598ba570-f8c8-43c5-8aa9-b7d26f3e6124, resume: None, restart initiated: No, disable resume: No
[1014:1B44][2016-08-08T01:13:16]i399: Apply complete, result: 0x0, restart: None, ba requested restart:  No

【问题讨论】:

在 VM 环境中测试安装程序的主要原因之一 =] @BrianSutherland 感谢您的有见地 评论 - 有趣的是我在虚拟机中进行测试但忘记拍摄快照 【参考方案1】:

Revo Uninstaller Pro 能够卸载我所有的错误捆绑包(它有 30 天的试用期)。

【讨论】:

感谢@Mischo5500 - 希望我不必依赖 3p 工具,但 30 美元的许可证值得节省时间;我能够用它删除它 说得太早了 - 捆绑包已被删除,但与它一起安装的主要 MSI 仍在系统上.. 很烦人

以上是关于如何强制卸载损坏的 Wix 捆绑包的主要内容,如果未能解决你的问题,请参考以下文章

如何获得 Wix Burn 捆绑包以阻止升级

我搞砸了,我该如何卸载我的程序?

用Wix手工编辑XML制作C++ MSI安装程序,怎样保证安装新版本时候强制卸载旧版本,急急急!!!

刻录如何检测到它需要自行卸载?

如何从包含多个 MSI 的 wix 自定义引导程序包中安装/卸载单个 msi,例如安装项目的添加/删除功能?

如何防止 wix 自定义引导程序卸载 UI 在升级过程中显示