2015-05-27 71 views
0

我试图按照以下要求进行安装。
1.应该进行重大升级并防止降级。
2.应处理次要升级/更新并防止降级。
3.应该可以修补并防止降级。
当然,所有在同一个包无法防止降级

到目前为止,我已经跑到一个接一个的障碍。
FindrelatedProducts不能在维护模式下运行,所以我无法真正检查使用upgradeversion标记安装的其他产品。
不能有ProductCode =“*”作为pyro不喜欢创建一个补丁。
另外我注意到,防止降级,根据https://www.firegiant.com/wix/tutorial/upgrades-and-modularization/建,并未真正发挥运行在命令行安装与开关重新安装= ALLREINSTALLMODE重建= vomus。似乎交换机忽略了升级版本设置。

我很确定我错过了什么,但我看不到它。有没有人有关于如何做到这一点的提示?

我的升级元素看起来像

<Upgrade Id="put-guid-here"> 
    <UpgradeVersion OnlyDetect="yes" Property="SELFFOUND" Minimum="6.1.15119" 
        IncludeMinimum ="yes" Maximum="6.1.15124" IncludeMaximum="yes" /> 
    <UpgradeVersion OnlyDetect="yes" Property="NEWERFOUND" Minimum="6.1.15124" 
        IncludeMinimum="no" /> 
</Upgrade> 
+0

你可能想看看https://stackoverflow.com/questions/10461840/wix-prevent-downgrade-with-check-for-revision – mcy

+0

@mcy现在我感到困惑,因为* RemoveExistingProducts *只运行第一次安装。这导致我相信我需要删除静态* ProductCode *,在这种情况下patchbuild(pyro)不会接受。或者我看着错误的东西? –

+0

我升级elemnt看起来像'<升级编号= “aaab4b63-729f-45b4-9457-fb70c2e4bcda”> ' –

回答

0

主要升级需要的产品代码(和其他一些东西)的变化,以安装新版本,并可以防止降级,因为它的内置到Windows安装程序。

针对已安装产品的次要升级需要具有相同ProductCode的MSI,因为您已针对已安装的产品进行维护(而不是安装全新的产品),并且需要在命令上设置REINSTALL和REINSTALLMODE线。这种类型的更新没有使用主要的升级逻辑,主要是更新文件并且是补丁的替代品。

这意味着没有人可以通过运行次要升级来降级,除非您专门构建具有相同ProductCode(已发货的产品代码)和较低ProductVersion的MSI文件,然后告诉人们使用REINSTALL和REINSTALLMODE进行安装。你真的会这么做吗?它看起来不像你的问题。另外,请注意,如果您发布的唯一MSI文件都有不同的ProductCodes,那么您将永远不会遇到问题。

所以你所需要做的就是重大升级,也许你会建立偶尔的补丁。所以再次,你不必担心小升级,因为永远不会有任何MSI文件可用于此。

+0

Thx为我清除了很多问题标记。 –