2015-09-25 69 views
0

我目前正试图了解Windows Installer ProductCode和Version属性之间的关系。增加版本但保持ProductCode相同?

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

为了更好地理解这一点,我在问自己是否有任何的情况会使ProductCode保持不变,但增加Version?如果以前安装了不同ProductCode(但是具有相同的UpgradeCode)的Windows Installer,那么Windows Installer将如何处理这样的MSI?

我想我的混淆的另一个变化是:如果我只想做“重大升级”,Id='*'是否有意义,或者我将不得不以某种方式控制ProductCode?

回答

2

IMO:

1)MSI SDK doco写得不好。它以迂回的方式讨论了这个话题,而没有真正解释你的选择。 2)绝大多数MSI开发者应该使用主要升级版本,在WiX中意味着Id =“*”,碰撞ProductVersion的前3个字段之一并创作一个MajorUpgrade元素。

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

重大升级时的FWIW“UpgradeCode”更像静态的ProductCode。将UpgradeCode看作一系列产品,您的ProductCode始终在变化,并非因为它是每个说法的新产品,而是因为MSI说您必须对其进行更改才能进行重大升级。

软件从构建到构建这些日子都经过重构,功能变化如此之小以至于对主要,次要和“小”(总是不喜欢那个......谁发布产品而不更改版本号? ??)是毫无意义的。

2

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

如果你没有使用该命令行,你会得到“该产品的另一个版本已经安装”的消息(如果包代码对于新MSI是新的,它应该是这样)。

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

相关问题