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