WIX:产品未完全卸载(未删除系统中的文件)

问题描述 投票:0回答:2

当卸载我的应用程序没有删除文件时,我遇到了问题。 我发现当应用程序在日志中卸载时它会打印:

...

MSI (s) (0C:84) [11:39:07:836]: Disallowing uninstallation of component: {51DB6066-AFCD-5A03-BE34-09E197799057} since another client exists
...

然后我通过使用 WiX 工具集发现有一个名为 DTF 的 API(在Wix 工具集中提到:“由于存在另一个客户端而不允许卸载组件”后完成清理),我在 LinqPad 中执行了查询(c# 语句):

(按 F4 键导入命名空间和附加引用)

//using Microsoft.Deployment.WindowsInstaller;
//using System.Linq;
// <ref>"C:\Program Files (x86)\WiX Toolset v3.9\SDK\
         Microsoft.Deployment.WindowsInstaller.dll"</ref> 


var client = ComponentInstallation.AllComponents
    .Where (c => c.ComponentCode == "{72ED6979-0AAD-317C-A25C-AB9A121E6D30}")
    .Select(c => c);
client.Dump();

有旧记录: enter image description here

我无法使用“msiexec /x {GUID}”删除它们,因为这些产品被标记为“IsInstalled=False”。

那么如何删除这些旧记录?

windows wix windows-installer
2个回答
0
投票

不允许卸载组件:{51DB6066-AFCD-5A03-BE34-09E197799057},因为存在另一个客户端

这通常意味着您的系统上当前安装了一个或多个引用此组件的产品。

您确定系统上没有其他产品引用该组件吗?

您不想进行这种清理,因为 Windows 安装程序会在没有任何用户干预的情况下处理所有这些。

您之前是否安装了旧版本的产品,或者此文件是由合并模块安装的?


0
投票

对 Wix MSI 故障排除非常有用的信息。

© www.soinside.com 2019 - 2024. All rights reserved.