增加版本但保持ProductCode相同?

时间:2015-09-25 13:25:03

标签: wix windows-installer

我目前正在尝试了解Windows Installer ProductCode与Version属性之间的关系。

据我了解到目前为止我所见的examples,ProductCode表示特定版本,因此增加版本也应更改产品代码。 (事实上​​,上面的例子使用Product Id='*')。

为了更好地理解这一点,我问自己是否有任何场景会使ProductCode保持不变但增加Version?如果安装了具有不同ProductCode(但是相同的UpgradeCode)的前一个MSI,那么Windows Installer会对这样的MSI做些什么呢?

我想另一个令我困惑的变化是:如果我只是想做"重大升级" Id='*'是否有意义,或者我必须以某种方式控制ProductCode?

2 个答案:

答案 0 :(得分:2)

如果您要使用更新的文件重建MSI文件并增加ProductVersion,那么您可以使用REINSTALL = ALL REINSTALLMODE = vomus(通常)命令行安装一个次要更新,以更新现有的产品。这很少见,IMO。

如果您没有使用该命令行,那么您将获得“已安装此产品的另一个版本”消息(如果新的MSI的软件包代码是新的,应该是这样)。

如果您只进行主要升级,那么每次都需要一个新的ProductCode,并在前3个字段中的某处增加ProductVersion。

答案 1 :(得分:2)

IMO:

1)MSI SDK doco写得不好。它以迂回的方式讨论该主题,但没有实际解释您的选择。

2)绝大多数MSI开发人员应该使用主要升级,在WiX中意味着Id =“*”,撞击ProductVersion中的前3个字段之一并创建一个MajorUpgrade元素。

3)次要升级非常严格且容易出错。在决定是否需要进行次要升级之前,您应该是MSI的专家,并且理解它和组件规则。换句话说,你会知道什么时候该。

进行重大升级时的FWIW“UpgradeCode”更像是一个ProductCode,因为它是静态的。将UpgradeCode视为一系列产品,而您的ProductCode总是在变化,不是因为它是一种新产品,而是因为MSI说您必须更改它才能进行重大升级。

软件从构建到构建这么多天进行了重构,功能变化如此之少,以及主要,次要和“小”的整个描述(总是不喜欢那个......谁在不改变版本号的情况下发布产品? ?)毫无意义。