Installation WiX主要升级不需要';从项目中删除合并模块时,无法运行 我有一个WiX项目,包括用分离的合并模块安装X86的Visual C++ 2008运行时组件。

Installation WiX主要升级不需要';从项目中删除合并模块时,无法运行 我有一个WiX项目,包括用分离的合并模块安装X86的Visual C++ 2008运行时组件。,installation,wix,runtime,upgrade,merge-module,Installation,Wix,Runtime,Upgrade,Merge Module,不幸的是,MSI v4.5中的.msm存在一个众所周知的问题。更具体地说,.msm自定义操作在卸载时需要20分钟才能完成 因此,长话短说,我决定从新版本的产品中删除.msm,用.exe文件悄悄地安装VC++组件 如果我只更改这件事(当然还有ProductCode),安装程序不会检测到机器上已经安装的产品并执行正常安装,而不会先卸载旧版本 知道这是怎么回事吗?MSI是否应该检查UpgradeCode和ProductCode以检测某个产品是否是系统上已安装的另一个产品的升级?如果您希望新MSI升级旧

不幸的是,MSI v4.5中的.msm存在一个众所周知的问题。更具体地说,.msm自定义操作在卸载时需要20分钟才能完成

因此,长话短说,我决定从新版本的产品中删除.msm,用.exe文件悄悄地安装VC++组件

如果我只更改这件事(当然还有ProductCode),安装程序不会检测到机器上已经安装的产品并执行正常安装,而不会先卸载旧版本


知道这是怎么回事吗?MSI是否应该检查UpgradeCode和ProductCode以检测某个产品是否是系统上已安装的另一个产品的升级?

如果您希望新MSI升级旧MSI(并且您需要使用主要升级,因为您正在删除组件),那么,是的,您需要使用UpgradeCode和upgrade元素(或者在WiX v3.5中,您可以使用新的MajorUpgrade元素)


如果您提供有关.wxs文件中内容的更多详细信息,我可以说得更具体。

该项目已设置为使用UpgradeCode和ProductCode来检测升级。 例如:我使用以下内容构建.msi:

ProductCode="05406C5C-8D66-4779-AECA-A93B18729ED5"  
UpgradeCode="05B87404-548E-4BEA-9621-FBF9459F25B0"  
PackageCode="*"  
Version="1.1.1"  
此.msi包含要安装的文件和文件夹,以及Microsoft_VC90_CRT_x86.msm合并模块

然后我用以下参数构建另一个.msi

ProductCode="7F626A0C-5E69-496D-999E-8E2B14C01FE6"  
UpgradeCode="05B87404-548E-4BEA-9621-FBF9459F25B0"  
PackageCode="*"   
Version="1.1.2"  
相同的文件,合并模块仍然包括:它工作,应用程序得到更新(卸载了以前的版本,安装了新版本)。
当我对Microsoft_VC90_CRT_x86.msm的每一个引用都进行注释时,内置安装程序不会检测到应用程序的早期版本。

检查两个安装程序中的ALLUSERS属性是否设置相同。我在合并模块方面遇到了相同的问题,并解决了该问题。

我的注释太长,我将其添加为ans下面是答案。提前感谢您的帮助。编辑您的问题以添加此信息和升级表信息。这是另一个难题。另外,您在哪里计划RemoveExistingProducts操作?