我试图按照以下要求进行安装 1.应进行重大升级并防止降级 2.应处理轻微升级/更新并防止降级 3.应该可以打补丁并防止降级 当然所有都在同一个包中
到目前为止,我已经遇到了一个接一个的障碍
FindrelatedProducts 未在维护模式下运行,因此我无法真正检查安装了upgradeversion标签的其他产品。
不能有 ProductCode = “*”,因为pyro不喜欢创建补丁
另外我注意到,防止根据 https://www.firegiant.com/wix/tutorial/upgrades-and-modularization/ 构建的降级,并不能真正运行从命令行运行安装 REINSTALL = ALL 和 REINSTALLMODE重建= vomus 。似乎交换机忽略了升级版本设置。
我很确定我错过了什么,但我看不到它。有没有人知道如何做到这一点?
我的升级元素看起来像
<Upgrade Id="put-guid-here">
<UpgradeVersion OnlyDetect="yes" Property="SELFFOUND" Minimum="6.1.15119"
IncludeMinimum ="yes" Maximum="6.1.15124" IncludeMaximum="yes" />
<UpgradeVersion OnlyDetect="yes" Property="NEWERFOUND" Minimum="6.1.15124"
IncludeMinimum="no" />
</Upgrade>
答案 0 :(得分:0)
主要升级需要更改ProductCode(以及其他一些东西)来安装新版本,并且您可以防止降级,因为它已内置到Windows Installer中。
针对已安装产品的轻微升级需要具有相同ProductCode的MSI,因为您的目标是已安装的产品进行维护(而不是安装全新的产品),并且需要在命令行上设置REINSTALL和REINSTALLMODE 。在这种类型的更新中没有使用主要的升级逻辑,它主要用于更新文件并且是补丁的替代方案。
这意味着没有人可以通过运行次要升级来降级,除非您专门使用相同的ProductCode构建MSI文件(如您已经发布的那样)并使用较低的ProductVersion,然后告诉人们安装它与REINSTALL和REINSTALLMODE。你真的会这样做吗?你的问题似乎不是这样。另请注意,如果您发送的唯一MSI文件都具有不同的ProductCodes,那么您将永远不会遇到问题。
所以你需要做的就是重大升级,也许你会偶尔建立补丁。因此,您不必担心轻微升级,因为永远不会有任何可用于此的MSI文件。