【问题标题】:Major Upgrade detection from InstallShield InstallScript来自 InstallShield InstallScript 的主要升级检测
【发布时间】:2019-06-24 22:44:57
【问题描述】:

我有一个 IS 2018 InstallScript MSI 项目。我在升级视图中进行了更改,并添加了一个升级项以支持自动重大升级。

问题是我如何在安装脚本中检测安装是否要执行重大升级。

更具体地说,在安装脚本 .Rul 文件中,在 OnFirstUIBefore 函数中,我想知道安装是否会进行“重大升级”,并基于此我想执行某些安装任务。

是否有任何 InstallShield InstallScript 属性可供我检查以查看是否会执行“重大升级”?

提前致谢。

【问题讨论】:

  • 据我所知(您可能已经知道),当要执行“重大升级”时,安装基本上表现为首次安装。我看到了一些关于 UPGRADINGPRODUCTCODE 属性的东西,但它可能在 InstallScript 中不可用。我还看到包代码、产品版本和产品代码更改时会触发重大升级,但不知道如何通过脚本知道。

标签: windows-installer installshield


【解决方案1】:

您可以使用MsiGetProperty 检索IS_MAJOR_UPGRADE 或您在主要升级项目中指定的属性。如果您检索的值不为空,则说明已找到相关产品,并且您的安装将替换它。 (假设您没有设置主要升级项目的仅检测属性。)

请注意,与链接的示例相反,您需要引用 ISMSI_HANDLE 而不是 hMSI 才能从 OnFirstUIBefore 访问 Windows Installer 句柄,因为事件不会接收句柄作为参数。

您也可以查看UPGRADINGPRODUCTCODE,但这是针对当前产品因重大升级而被删除的相关场景。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-09-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多