gpt4 book ai didi

formatting - InstallShield 2012 构建的升级以错误格式报告已安装的版本

转载 作者:行者123 更新时间:2023-12-04 20:13:48 27 4
gpt4 key购买 nike

在使用 InstallShield 2012 Spring 构建的安装程序进行升级期间,我看到以下消息:

  • InstallShield 向导会将 的已安装版本 (9.01.005) 更新到版本 9.2.0.53。
  • InstallShield 向导正在将 的 (9.01.005) 更新到版本 9.2.0.53。

  • 这些是基于字符串资源的消息 IDS_IFX_SDWELCOMMESSAGE_UPDATE_WELCOMEIDS_IFX_STATUSEX_STATICTEXT_UPDATEUI .我相信未更改的字符串资源将如下所示:
  • InstallShield 向导会将已安装的 %P 版本 (%VI) 更新为版本 %VS。要继续,请单击下一步。
  • InstallShield 向导正在将 %P 的 (%VI) 更新到版本 %VS。

  • 尽管某些资源表明第二个字符串资源是“InstallShield 向导已将 %P 的 %VI 更新到版本 %VS”。

    问题是旧的(安装的)版本号应该是像“9.1.5.2”这样的显示字符串,而不是像“9.01.005”这样的内部版本号的格式化版本。据我了解 SdSubstituteProductInfo用途 IFX_INSTALLED_DISPLAY_VERSION填充 %VI替换 OnUpdateUIBefore的默认 InstallScript 代码。和 IFX_INSTALLED_DISPLAY_VERSION默认来自 IFX_INSTALLED_VERSION ,这就解释了为什么首选显示字符串没有出现在我们想要的地方。我假设 SdWelcome (或任何类似引用 IFX_INSTALLED_DISPLAY_VERSION 的对话框或代码),也会显示格式错误的版本。

    尽管我在网上搜索了有关上述函数、字符串和字符串 ID 的所有内容,但我还没有找到以正确格式显示格式正确的旧版本号 (DisplayVersion) 的理想解决方案。一些文章建议对跳过旧版本号的格式字符串进行硬编码,而不是使用包含 %VI 的字符串资源。 .其他人建议根据需要手动格式化版本号并将结果放入 IFX_INSTALLED_DISPLAY_VERSION .我知道有一个更好的答案,我希望下次我或其他任何人寻找它时更容易找到它。

    最佳答案

    关于 OnBegin InstallScript 函数,在 begin 之后添加下面一行 InstallScript 代码作为第一行:

    RegDBGetItem(REGDB_UNINSTALL_DISPLAY_VERSION, IFX_INSTALLED_DISPLAY_VERSION);

    在 OnBegin 中执行此操作还可确保问题中未提及的另一条消息使用正确的格式:

    The setup has detected that version %VI of %P is already installed.

    This setup installs an earlier version of %P (%VS).

    You will have to uninstall the previous version before installing this version.

    关于formatting - InstallShield 2012 构建的升级以错误格式报告已安装的版本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14485147/

    27 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com