Wix操作FindRelatedProducts无法正常工作

时间:2010-10-13 09:01:15

标签: wix

这可能是一个愚蠢的问题。

我们做了什么

我们只想通过遵循Wix教程,使用FindRelatedProducts操作来检查现有安装的版本:

<Upgrade Id='YOURGUID-7349-453F-94F6-BCB5110BA4FD'>
  <UpgradeVersion OnlyDetect='yes' Property='SELFFOUND'
    Minimum='1.0.1' IncludeMinimum='yes'
    Maximum='1.0.1' IncludeMaximum='yes' />
  <UpgradeVersion OnlyDetect='yes' Property='NEWERFOUND'
    Minimum='1.0.1' IncludeMinimum='no' />
</Upgrade>
...
<CustomAction Id='AlreadyUpdated' Error='Foobar 1.0 has already been updated to 1.0.1 or newer.' />
<CustomAction Id='NoDowngrade' Error='A later version of [ProductName] is already installed.' />

<InstallExecuteSequence>
  <Custom Action='AlreadyUpdated' After='FindRelatedProducts'>SELFFOUND</Custom>
  <Custom Action='NoDowngrade' After='FindRelatedProducts'>NEWERFOUND</Custom>
</InstallExecuteSequence>

我们得到什么

  • 如果没有安装任何版本,FindRelatedProducts可以检测到没有安装,但
  • 如果存在1.0.1,则在安装1.0.0时,应检测到具有更高版本号的现有安装,并且弹出错误消息,但事实并非如此。

我们使用Orca检查.msi文件(1.0.0和1.0.1)上的安装条目信息,两者的属性都是正确的。

我们使用msiexec / a foo_1.0.x.msi / l * foo_1.0.x.log来获取日志,但发现NEWERFOUND属性未设置!

我们做错了什么?

2 个答案:

答案 0 :(得分:1)

确保1.0.0包和1.0.1包以及UpgradeCode属性中的Upgrade/@Id相同。

答案 1 :(得分:0)

是的,我已经尝试了WiX tutorial的示例,用真正的GUID替换YOURGUID ***,示例不起作用,我仍然可以在新版本上安装旧版本,降级检查机制似乎做了不行。