相关疑难解决方法(0)

如何使WIX MSI始终删除以前的版本?

我有CI构建系统在开发人员检查更改时构建MSI.我们对已安装的MSI进行自动验收测试.

基本上每个MSI都是产品的完整安装,因此我们本身没有任何版本控制(ala Windows安装程序).

每个MSI具有相同的产品GUID和升级GUID,以及相同的版本号.但是有一个不同的包GUID(在wix中使用'*').

我想要实现的是,当安装程序运行时,它将"卸载"任何以前安装的产品版本,并安装新的..所有这些都来自一个MSI(我们有一个不受我们控制的复杂安装过程.. citrix和sccm,所以我们想给他们一个简单的安装路径)

我试过了:

<Property Id='PREVIOUSVERSIONSINSTALLED' Secure='yes' />
<Upgrade Id='$UPGRADE_GUID'>  
  <UpgradeVersion Minimum='1.0.0.0'
                  Maximum='99.0.0.0'
                  Property='PREVIOUSVERSIONSINSTALLED'
                  IncludeMinimum='yes'
                  IncludeMaximum='no' />
</Upgrade>
Run Code Online (Sandbox Code Playgroud)

并有:

<InstallExecuteSequence>
  <RemoveExistingProducts After='InstallFinalize' />
</InstallExecuteSequence>
Run Code Online (Sandbox Code Playgroud)

并尝试过:

<InstallExecuteSequence>
  <RemoveExistingProducts After='InstallInitialize' />
</InstallExecuteSequence>
Run Code Online (Sandbox Code Playgroud)

但是当我尝试从后续版本安装msi时,我得到:

Another version of this product is already installed. Installation of this version cannot continue. 
To configure or remove the existing version of this product, use Add/Remove Programs on the Control Panel. 
Run Code Online (Sandbox Code Playgroud)

这不是我真正想要的......

我知道我可以只更新产品标签中的Version属性,但这很难管理.首先,我可以每天生成20多个msi构建,因为我有许多生成MSI的构建管道,并且不确定如何以有意义的方式处理版本编号.

也许Windows Installer不允许这种类型的"始终覆盖安装版本"安装?

windows-installer wix wix3.5

19
推荐指数
3
解决办法
3万
查看次数

自动化wix小更新和次要升级

我刚刚在wix教程中阅读了以下内容.

由于某些奇怪的原因,只需单击.msi文件就无法运行小更新和次要升级 - 它们会出现错误:"已安装此产品的另一个版本." 我们知道,愚蠢...无论如何,你必须用命令启动它:

msiexec/i SampleUpgrade2.msi重新安装=所有重新安装模式= vomus

不要问我这对普通用户有什么影响...你最好从Autorun.inf文件启动它,或者设计一个外部Setup.exe shell来启动它.

我们希望人们能够下载最新版本的应用并安装它,即使他们已经安装了旧版本.你通常如何处理这个问题?

wix

9
推荐指数
1
解决办法
8348
查看次数

标签 统计

wix ×2

windows-installer ×1

wix3.5 ×1