【问题标题】:Preventing Installation of Lower Version over Higher Version防止在高版本上安装低版本
【发布时间】:2009-06-15 05:16:56
【问题描述】:

我们在 Installshield 2008 Premier Edition 中使用 InstallScript MSI Project 开发了该项目。在项目中,我们添加了一个条件,以便旧版本不应安装在更高版本上。

我们面临的问题是考虑新项目,其中产品版本将为 1.0.0925.1,并添加条件以避免更高版本超过更低版本。要添加该条件,我是从上面的链接中获得的;连同此在主要升级的通用选项卡中,我已启用升级提示;因为在未来的新设置中会附带 1.0.0925.2 它应该要求升级。

现在我将使用产品版本 1.0.0925.2 创建新设置,在主要升级的通用选项卡下,我将禁用提示,因为;如果用户尝试在 1.0.0925.2 上安装 1.0.0925.1,则不应允许;在这种情况下,它工作正常;弹出提示“已安装此产品的另一个版本。无法继续安装此版本。要配置或删除此产品的现有版本,请使用控制面板上的添加/删除程序。{2D0E6C46-1CC2-4174-8AAC -0B39312D8ECE}"

现在几天后会有变化,并且将再次使用版本 1.0.0925.3 创建另一个设置,因为升级提示将被禁用。现在我尝试在 1.0.0925.2 上安装 1.0.0925.3 显然它应该得到升级;但是这里出现了问题,而不是询问“安装程序将执行升级”,而是说“已安装此产品的另一个版本。此版本的安装无法继续。要配置或删除此产品的现有版本,请使用添加/删除控制面板上的程序。{2D0E6C46-1CC2-4174-8AAC-0B39312D8ECE}" 那就是因为我禁用了 1.0.0925.2 的提示,所以不允许升级。如果我启用此功能,那么每次它会要求升级时都会运行任何设置,无论是在低版本上高于高版本还是在高版本上高于低版本。

即使我想在 Installscript 中检查产品版本,但如果我设法获得已安装设置的产品版本以及当前运行的设置,我什至不知道如何处理。但是如何在运行时更改升级的提示,因为它是在设计时设置的。

【问题讨论】:

  • 除了把问题说清楚外,这应该是 serverfault (或...超级用户?)
  • Stack Overflow 是正确的地方——安装开发和其他软件开发一样。

标签: version installshield installshield-2008


【解决方案1】:

好的,如果您使用的是 Windows Installer,那么您需要重新考虑您的版本号。 Windows Installer 仅识别 ma​​jor.minor.build 的安装包(但文件可以使用 ma​​jor.minor.build.revision,而不是安装程序本身)

所以从 Windows Installer 的角度来看,1.0.0925.1 和 1.0.0925.2 实际上都是 1.0.0925,如果它们具有相同的产品代码,那么您将得到标准的“此产品的另一个版本是已安装”对话框。

基本上如果您想支持升级,请更改major.minor.build 版本号。我们使用第四个“修订”字段供内部使用来识别测试版安装程序,但安装新版本需要卸载之前的版本。仅在我们更改前三个字段之一并适当配置升级的公开版本中支持升级。

【讨论】:

  • greetings sascha 实际上 Installshield 在内部使用的是 windows 安装程序; Installshield 遵循自己的一组表示版本号。我确实考虑了你的观点,并很快就这个问题向你更新。
  • Windows Installer 和 InstallShield 都允许您使用四位数的版本号,但是除非您进行重大升级,否则无论您在 InstallShield 中做了什么,Windows Installer 都会在运行时忽略第四位数.当我使用它时,我花了几个小时才弄清楚:)
【解决方案2】:

我认为您遇到的问题是您没有更改ProductCode。您首先必须决定是否要进行主要或次要升级。听起来您已经决定进行重大升级。因此,您需要生成一个新的ProductCode,方法是使用直接编辑器并更改升级表,或者在 InstallShield IDE 的“升级”部分中创建一个新的“主要升级项”。

【讨论】:

  • opps!.. 很抱歉链接的不便。请找到链接helpnet.acresso.com/robo/projects/installshield14helplib/… 每次创建新设置时我都需要更改升级代码吗?我会检查并更新你...
  • 是的,在进行重大升级时,您必须更改:ProductCode、ProductVersion 和 PackageCode。默认情况下,IS 会为您更改 PackageCode。您必须自己更改版本号和 ProductCode。这就是您收到有关已安装产品的消息的原因。 (注意:我之前说 UpgradeCode 时说错了 - UpgradeCode 保持不变 - ProductCode 必须由您更改。
猜你喜欢
  • 2016-12-28
  • 1970-01-01
  • 2017-07-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多