首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Wix FindRelatedProducts发现了一个未安装的产品

Wix FindRelatedProducts发现了一个未安装的产品
EN

Stack Overflow用户
提问于 2019-04-23 00:43:56
回答 3查看 1K关注 0票数 1

在机器上测试了我的产品的许多安装/卸载后,我结束了一个场景,我没有安装我的产品,至少我在控制面板中看不到它,但当我试图再次安装它时,Wix试图更新一个没有安装的产品。

我已经使用日志执行了msi,然后我发现找到了一个GUID并填充了WIX属性WIX_UPGRADE_DETECTEDFindRelatedProducts

日志的一部分:

代码语言:javascript
运行
复制
FindRelatedProducts: Found application: {MY-GUID}
MSI (c) (24:8C) [07:21:36:885]: PROPERTY CHANGE: Adding WIX_UPGRADE_DETECTED property. Its value is '{MY-GUID}'.

当我使用WIX_UPGRADE_DETECTED选择要显示的带有对话框(安装或升级)时,它显示了一个升级对话框,但没有安装任何产品。

如果我在另一台机器上测试,执行相同的场景,FindRelatedProducts没有找到任何产品,这是正确的情况。

我怀疑windows注册表(Regedit)中的某些条目未被清除。你知道Wix是如何检测FindRelatedProducts的吗?或者为什么Wix在没有安装产品的情况下填充WIX_UPGRADE_DETECTED

谢谢!

EN

回答 3

Stack Overflow用户

发布于 2019-04-23 01:01:16

Windows Installer提供了有关注册表的注册信息。它提供了一个API来对该注册进行内省。在本例中,您需要::MsiEnumRelatedProducts()。它将通过该UpgradeCode为您提供所有相关产品。

然后,您可以通过执行以下操作来卸载这些产品:

代码语言:javascript
运行
复制
msiexec /x {PRODUCT-CODE-GUID}

您应该会发现{PRODUCT-CODE-GUID}与您作为{MY-GUID}编辑的内容相同。

注意:这与WiX工具集无关。是100% Windows Installer行为(又称: MSI)。

票数 3
EN

Stack Overflow用户

发布于 2019-04-23 01:33:26

FindRelatedProducts是由Windows Installer而不是WiX执行的。你断言行为是不正确的,这肯定是不正确的。您有一台脏机器,而MSI有一些工件表明它已安装。您的另一台机器是干净的,但不是。

票数 0
EN

Stack Overflow用户

发布于 2019-04-23 22:25:05

我能够确定机器上留下的注册表条目是什么,它们导致了我提到的错误。

它们位于以下位置:

代码语言:javascript
运行
复制
 - HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Installer\UpgradeCodes\{OTHER-GUID}
 - HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Installer\Products\{OTHER-GUID}

请注意,{OTHER-GUID}不是我的产品代码,而是生成的产品代码,我的产品代码是这些注册表项中的一个值。

只要移除它们,我的安装程序就可以再次工作。

Tks @stein-äsmul这个命令:get-wmiobject Win32_Product非常有用。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55797852

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档