2013-02-13 57 views
3

InstallShield MSI安装的典型“升级表”包含两条记录:“从任何版本到当前都是升级”和“从当前到任何正在降级”。这需要每次修改主要版本号,次要版本号或内部版本号时手动复制粘贴“当前版本”号码,这并不是很好。Installshield:是否可以在MSI升级表中使用ProductVersion属性?

当前我正在使用脚本解析.ism项目文件并在构建之前替换升级表中的版本号。但这是一个肮脏的黑客。也许可以在升级表中使用“ProductVersion”MSI属性,因此产品版本仅在存储在此属性?我曾尝试以多种方式输入此属性名称,例如[ProductVersion]##ProductVersion##,但没有任何帮助 - 它不会被属性值取代,并且生成的MSI包含“## ProductVersion ##”文本而不是“1.30.1264”属性值。

回答

7

新项目应包含两个记录,其行为与您所描述的相同。然而,不要存储实际的产品版本,他们应该有一个标记令牌,如***ALL_VERSIONS***(对不起,我现在不在我的InstallShield副本附近)。这个令牌的名字并不好,因为真正发生的是当前的ProductVersion在构建时被替换。

如果您已经将令牌更改为实际版本,则可以通过选择引用“我的版本”而不是实际版本的单选按钮,将其更改为“友好”视图。或者您可以创建一个新项目来查看并复制它。该标记可以在InstallShield的所有最新版本的最小或最大字段中(但只是在某些较早版本的最大字段中)运行。

+0

谢谢!它像一个魅力! – grigoryvp 2013-02-13 13:32:06

+0

仅供参考,如果放在输入中,说明产品名称,*** ***这个*** ALL_VERSIONS ***是否也解析为[ProductVersion]? – Sid 2014-08-28 13:04:30

+1

@Sid,no - InstallShield仅在[升级表](http://msdn.microsoft.com/zh-cn/library/aa372379.aspx)中的版本列中执行此特定替换。如果你在一个属性中需要它,你最好从你的构建系统中设置它,或者在运行时使用set-property自定义操作。 – 2014-08-29 12:14:01

相关问题