旧版本和新版本的产品代码相同时,是否可以执行升级?

时间:2018-07-20 11:32:14

标签: wix windows-installer

我们在WIX中构建了两个安装程序,其约束是产品代码必须保持不变。从旧到新升级时,出现错误,“ specifile帐户已存在。”

WIX是否允许我采取任何变通办法来实现升级,同时保持产品代码不变。

2 个答案:

答案 0 :(得分:1)

次要升级 :这只是minor upgrade-与更常用的major upgrade不同的MSI更新形式。有关Patching & Upgrades的信息(通常)。

复杂和受限 :次要升级有很多限制,使大多数人最终只能使用主要升级。本质上,次要升级可以添加新的功能和组件,但不能重组功能组件树。但是,等等,还有更多限制:

安装次要升级 :次要升级可以作为常规MSI或补丁文件提供。用于安装常规MSI文件的标准命令行:

msiexec.exe /i MySetup.msi REINSTALLMODE=vomus REINSTALL=ALL

Maybe see this Flexera help file page,以获取有关安装次要升级的更多详细信息(某些特定于Flexera的内容,但大多是通用的)。那就是上面的命令行来自哪里。

个人意见 :让我以一个主观的观察结束。我发现在实际使用中会有一些小小的升级,我只是成功地将它们用于“ 修复”(仅更新了几个文件,没有其他更改),并且修复了以下错误:已安装产品的卸载顺序,阻止了它们的成功卸载。在这些情况下,次要升级变得如此简单,以至于它们可以可靠地工作。 要交付仅需少量升级的实际产品,就需要大量的护理,远见和纪律 (更不用说耐心和有见识的产品经理了了解这些技术局限性以及它们对实际产品部署的意义。

话虽如此,让我们不要低估MSI的巨大企业利益 (除了升级问题和相关细节之外):

答案 1 :(得分:1)

这取决于您所说的“升级”,但是在ProductCode保持不变的情况下,没有像重大升级这样的事情。保持相同不是一个约束,这与主要升级的目的相反。您应该说出为什么认为保持相同是一个制约因素,如果您确定这是您没有告诉我们的问题的解决方案。

该错误消息来自某种WiX util CreateUser自定义操作。您尚未在MSI文件中指定已更改的内容,但是如果您只是在运行新的MSI并且它具有相同的ProductCode,则您可能正在进行修复,并且该修复正在再次运行CreateUser并告诉您存在。您应该提供有关CreateUser的更多信息。

您还需要说您正在执行哪种升级(主要,次要?),如果是次要的,您的命令行是什么?