【问题标题】:WiX-- always overwrite the previous versionWiX——总是覆盖以前的版本
【发布时间】:2010-10-20 23:43:49
【问题描述】:

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

相反,我有一个安装程序,它经常说我需要去添加/删除程序。这对我的测试人员来说是非常令人沮丧的行为,因为它只是在他们心中没有真正原因的情况下减慢他们的速度——以前的安装程序包总是只会安装,删除以前存在的所有文件,所以他们不必执行该步骤。我们还有一个(庞大的)客户群,他们接受过类似的培训,我现在安装的任何版本都应该覆盖我之前可能安装的任何版本。

据我所知,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,这显然是问题所在。

【问题讨论】:

  • 我不太明白你的最后一句话:将产品的默认 GUID 设置为 * 会为每个编译的安装程序生成一个新的 GUID。这会导致每次更新都同时进行新的安装。至少我是这么认为的。我仍在尝试为您的问题找到一个简单的工作 PoC...
  • 对我来说,这些装置似乎永远不会并排。只要升级代码匹配,旧版本将被卸载,新版本将安装在它的位置。这不是 wix 的预期行为吗?
  • 你可以在这里找到答案:stackoverflow.com/questions/11732290/…

标签: wix overwrite previous-installation


【解决方案1】:

您想要进行重大升级。在 WiX.chm “How To”中有一个专门针对此的主题(也在网络上:http://wix.sourceforge.net/manual-wix3/major_upgrade.htm)。

【讨论】:

  • 看起来很有趣。因此,如果我只是想要升级的东西,但我也想允许返回一个版本,那么我就省略了第二部分关于不允许安装较低版本的内容,我正在考虑。
  • @mmr 你能分享一下你最后做了什么吗?提供的链接似乎没有完全回答您的问题,如果它告诉您如何做与您想要的相反的事情。
猜你喜欢
  • 1970-01-01
  • 2016-10-22
  • 1970-01-01
  • 2011-12-12
  • 2018-12-26
  • 1970-01-01
  • 1970-01-01
  • 2020-09-08
  • 1970-01-01
相关资源
最近更新 更多