【发布时间】: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