0

我们在 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 中检查产品版本,但如果我设法获得已安装设置的产品版本以及当前运行的设置,我什至不知道如何处理。但是如何在运行时更改升级的提示,因为它是在设计时设置的。

4

2 回答 2

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 版本号。我们使用第四个“修订”字段供内部使用来识别测试版安装程序,但安装新版本需要卸载之前的版本。仅在我们更改前三个字段之一并适当配置升级的公共版本中支持升级。

于 2009-06-16T06:33:39.513 回答
1

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

于 2009-06-15T13:40:29.780 回答