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

时间:2015-07-13 13:50:02

标签: windows wix msiexec

卸载我的应用程序时没有删除文件时出现问题。 我发现应用程序在日志中卸载时会打印出来:

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

然后我发现使用WiX Toolset有一个名为DTF的API(在Wix toolset: complete cleanup after "disallowing uninstallation of component since another client exists"中提到),我在LinqPad中执行了查询(c#Statement):

(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();

有旧的recods: enter image description here

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

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

1 个答案:

答案 0 :(得分:0)

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

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

您是否确定系统中没有其他产品引用此组件?

您不希望进行此类清理,因为Windows安装程序无需任何用户干预即可处理所有这些内容。

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