【问题标题】:How do I force Installshield 2012 to perform a major upgrade?如何强制 Installshield 2012 执行重大升级?
【发布时间】:2016-05-20 16:23:15
【问题描述】:

从 1.7.211 升级到 1.7.212 时,我的安装程序正在执行小升级,但我希望它始终执行大升级。新安装程序应始终覆盖以前安装程序安装的所有内容,无一例外。有没有办法修改 installshield 项目来完成这个?

【问题讨论】:

  • 哪种项目类型?微星还是非微星? Basic 还是 InstallScript?
  • 我猜是msi类型。 (.exe 和 .msi 都会生成,.exe 会在安装过程中提取 msi),不确定它是基本的还是 installscript。我基本上从不,曾经想做一个小更新。我希望它考虑版本号的任何更改都构成重大更新。

标签: visual-studio upgrade installshield major-upgrade


【解决方案1】:

对于 MSI 项目,请转到“升级”区域(在“媒体”下)。在“升级 Windows 安装程序设置”下,创建一个新的主要升级项目。对于该项目,选择“在特定版本范围内”并将最大版本设置为大于当前版本的版本号(例如,在您的情况下为 1.8)。

这样,当 Windows Installer 检测到它应该在升级模式下运行时,它会看到当前安装的版本 (1.7.11) 适用于主要升级规则,并将继续执行主要升级。

【讨论】:

    【解决方案2】:

    我假设您使用的是基本 MSI 或 InstallScript MSI 项目类型。对于每个版本,您必须采取必要的步骤进行重大升级(准确地说,这是MSI rule,而不是 InstallShield 规则)。

    在您的 InstallShield 项目中,在“升级”视图中编写主要升级。设置时需要说“任何以前的版本”。

    然后,对于每个版本,您需要增加版本号(前三位数字之一,MSI 忽略第四位)和产品代码 GUID。

    我不同意您关于“新安装程序应始终覆盖先前安装程序安装的所有内容,无一例外”的说法。当仅更新在版本之间发生更改的文件是重中之重时,有许多部署模型。如果该模型目前适合您,那就太好了。对小规模和补丁升级的可能性以及发布计划方面的情况持开放态度。

    【讨论】:

    • 为什么我必须触摸产品代码 GUID? “任何以前的版本”不应该解决这个问题吗?有没有办法直接将它与版本号联系起来,这样在创建新版本时它都是自动的?
    • 如果您想进行重大升级,您必须滚动产品代码 GUID。这只是 MSI 工作方式的一部分。您也不希望在每次构建时都滚动产品 GUID。每个 RELEASE 都可以。我想重申,在每个版本中自动强制进行重大升级是需要重新考虑的事情。
    猜你喜欢
    • 1970-01-01
    • 2012-09-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-04-18
    • 2011-06-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多