0

我试图按照以下要求进行安装。
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>
4

1 回答 1

0

重大升级需要更改 ProductCode(和其他一些东西)才能安装新版本,并且您可以防止降级,因为它内置在 Windows Installer 中。

对已安装产品的次要升级需要具有相同 ProductCode 的 MSI,因为您要针对已安装的产品进行维护(而不是安装全新的产品),并且它们需要在命令行上设置 REINSTALL 和 REINSTALLMODE。此类更新没有使用任何主要的升级逻辑,主要是更新文件,是补丁的替代方案。

这意味着没有人可以通过运行次要升级来进行降级,除非您专门使用相同的 ProductCode(与您已经发布的一样)和较低的 ProductVersion 构建一个 MSI 文件,然后告诉人们使用 REINSTALL 安装它和重新安装模式。你真的要这么做吗?从你的问题看来不是这样。另外,请注意,如果您发布的唯一 MSI 文件都有不同的 ProductCode,那么您将永远不会遇到问题。

因此,您需要做的就是进行重大升级,也许您会偶尔构建补丁。再说一次,您不必担心小升级,因为那里永远不会有任何 MSI 文件可用于此。

于 2015-05-27T18:35:11.400 回答