这可能是一个愚蠢的问题。
我们做了什么
我们只想通过遵循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>
我们得到什么
我们使用Orca检查.msi文件(1.0.0和1.0.1)上的安装条目信息,两者的属性都是正确的。
我们使用msiexec / a foo_1.0.x.msi / l * foo_1.0.x.log来获取日志,但发现NEWERFOUND属性未设置!
我们做错了什么?
答案 0 :(得分:1)
确保1.0.0包和1.0.1包以及UpgradeCode
属性中的Upgrade/@Id
相同。
答案 1 :(得分:0)
是的,我已经尝试了WiX tutorial的示例,用真正的GUID替换YOURGUID ***,示例不起作用,我仍然可以在新版本上安装旧版本,降级检查机制似乎做了不行。