语境
我目前的任务是构建我们软件安装程序的下一个版本。
我拥有以前版本(v16)的所有项目文件,目前正在构建 v17。
我们正在使用 InstallShield 2015 专业版(版本 22 | Service Pack 2)
问题
我在这里有基本的 MSI 项目文件,我已经更改了版本号并对我们软件的下一个版本进行了必要的更改 - 但是,当我运行安装程序时,它说我已经安装了它(即使版本号不同)
在研究这个问题时,有很多关于这个问题的帖子,但我找不到明确的答案,不知道应该更改“产品代码”还是“升级代码”,或者两个代码都更改,或者两个代码都不更改,或者其他我遗漏的东西。
任何帮助将不胜感激。
答案1
这取决于你如何设计你的软件。你能同时运行多个版本吗?只能运行一个版本吗?
查看Microsoft 有关 Productcode 的文章也升级代码。
如果更新时出现以下任一情况,则必须更改产品代码:
- 必须能够在同一系统上共存安装原始产品和更新产品。
- .msi 文件的名称已更改。
- 现有组件的组件代码已发生改变。
- 一个组件被从现有特征中删除。
- 现有特征已成为现有特征的子特征。
- 现有子特征已从其父特征中移除。
对于升级代码,给出了以下示例。
以下两个场景说明了UpgradeCode的使用。
- 产品 A 和产品 B 附带相同的 ProductLanguage、ProductVersion 和 UpgradeCode。产品 A 和产品 B 具有不同的 ProductCode。由于产品被分配了相同的 UpgradeCode,因此无法编写升级表来区分产品 A 的旧版本和产品 B 的旧版本。在这种情况下,您将无法进行忽略产品 B 的产品 A 升级安装。由于它们是不同的产品,因此应该为它们分配不同的 UpgradeCode。
- 产品 A 的英语版和法语版附带相同的 ProductVersion 和 UpgradeCode。产品 A 的英语版和法语版均具有不同的 ProductLanguages 和 ProductCode。尽管英语版和法语版共享相同的 UpgradeCode,但可以编写 Upgrade 表,以便只检测和升级较旧的英语版本,而忽略较旧的法语版本。产品的不同语言版本可以使用相同的 UpgradeCode。