防止在较高版本上安装较低版本

时间:2009-06-15 05:16:57

标签: version installshield installshield-2008

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

我们面临的问题是考虑产品版本为1.0.0925.1的新项目,并添加条件以避免更高版本而不是更高版本。为了增加这个条件,我从上面的链接中得到了它;在主要升级的Common选项卡中我已经启用了升级提示;因为将来新设置1.0.0925.2会要求升级。

现在我将使用产品版本1.0.0925.2创建新设置,在主要升级的Common选项卡下,我将禁用提示,因为;如果用户尝试在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中检查产品版本,但我不知道如何处理如果我设法获得已安装设置的产品版本以及当前运行设置的方法。但是如何在运行时更改升级提示,因为它是在设计时设置的。

2 个答案:

答案 0 :(得分:6)

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

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

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

答案 1 :(得分:1)

我认为您遇到的问题是您没有更改ProductCode。您首先必须决定是要进行主要升级还是次要升级。听起来你已经确定了重大升级。因此,您需要生成新的ProductCode,方法是使用Direct Editor并更改Upgrade表,或者在InstallShield IDE的“Upgrades”部分中创建一个新的“Major Upgrade Item”。