WiX--始终覆盖以前的版本

时间:2009-04-22 00:29:41

标签: wix overwrite previous-installation

我有一个应用程序的安装程序,需要安装在任何现有版本上,无论版本号如何。

相反,我有一个安装程序,经常说我需要去添加/删除程序。对于我的测试人员而言,这是非常令人沮丧的行为,因为它只会让他们放慢速度而没有真正的理由 - 以前的安装程序包总是只安装,删除以前存在的任何文件,所以他们从来不必这么做。我们还有一个(大)客户群经过类似的培训,因为我现在安装的任何版本都应该覆盖我之前可能拥有的任何安装。

从我可以收集的信息来看,似乎WiX范例是做阻止向后版本安装和其他复杂事情的事情,比如修补。坦率地说,我们的客户不够聪明,不知道或不关心修补,合并等等,只想要一个总是有效的安装程序(而且我倾向于同意它们;带宽便宜)。那我该怎么做呢?

我试过这个,但这似乎并不重要:

<InstallExecuteSequence>
  <RemoveExistingProducts Before="InstallInitialize"/>
</InstallExecuteSequence>

这是WiX版本3.0.5120。

编辑:根据Rob的建议,我已经添加了这段代码:

<InstallExecuteSequence>
  <RemoveExistingProducts After="InstallInitialize"/>
</InstallExecuteSequence>

<Upgrade Id="27cb76c7-544e-465f-b1f3-b11d9a49e416">
  <UpgradeVersion Minimum="0.8.0"
                  IncludeMinimum="yes"
                  Maximum="1.5.1"
                  Property="OLDERVERSIONBEINGUPGRADED" />
</Upgrade>

我没有添加代码以不允许回滚安装;由于令我非常尴尬的原因,我们只是说版本号的增加并不一定与软件良好性的增加相关。我不希望任何人被锁定在他们认为需要的东西之外。

另外,非常重要的是将产品的默认GUID更改为“*”,以便使用不同的安装程序创建不同的GUID,这显然是问题所在。

1 个答案:

答案 0 :(得分:18)

您需要进行重大升级。在WiX.chm“如何”(也在网络上:http://wix.sourceforge.net/manual-wix3/major_upgrade.htm)中有一个专门讨论该主题的主题。