【问题标题】:Installshield: is it possible to use ProductVersion property in MSI Upgrade table?Installshield:是否可以在 MSI 升级表中使用 ProductVersion 属性?
【发布时间】:2013-02-13 07:55:20
【问题描述】:

InstallShield MSI 安装的典型“升级表”包含两条记录:“从任何版本到当前都是升级”和“从当前到任何是降级”。这需要在每次更改主要、次要或内部版本号时手动复制粘贴“当前版本”号,这不是很好。

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

【问题讨论】:

    标签: installshield


    【解决方案1】:

    一个新项目应该包含两条记录,其行为与您描述的一样。但是,它们不应存储实际的产品版本,而应具有标记令牌,例如 ***ALL_VERSIONS***(抱歉,我现在不在我的 InstallShield 副本附近)。这个令牌的名字不是很好,因为真正发生的是当前的 ProductVersion 在构建时替换它。

    如果您已将令牌更改为实际版本,则可以通过选择引用“我的版本”而不是实际版本的单选按钮,使用“友好”视图将其改回。或者,您可以创建一个新项目来查看它,然后将其复制进去。令牌在所有最新版本的 InstallShield 中都可以在最小值或最大值字段中使用(但在某些旧版本中仅在最大值字段中)。

    【讨论】:

    • 仅供参考,如果放在输入产品名称中,此 ALL_VERSIONS 是否也解析为 [ProductVersion]?
    • @Sid,否 - InstallShield 仅在 Upgrade table 的版本列中执行此特定替换。如果您需要在属性中使用它,最好从构建系统中设置它,或者在运行时使用 set-property 自定义操作进行设置。
    猜你喜欢
    • 2018-02-08
    • 1970-01-01
    • 1970-01-01
    • 2014-07-31
    • 1970-01-01
    • 2018-06-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多