Formatting InstallShield 2012生成的升级以错误格式报告已安装版本
在使用InstallShield 2012 Spring构建的安装程序进行升级期间,我看到以下消息:Formatting InstallShield 2012生成的升级以错误格式报告已安装版本,formatting,version,upgrade,installshield,installscript,Formatting,Version,Upgrade,Installshield,Installscript,在使用InstallShield 2012 Spring构建的安装程序进行升级期间,我看到以下消息: InstallShield向导将把的已安装版本(9.01.005)更新为9.2.0.53版 InstallShield向导正在将的(9.01.005)更新为版本9.2.0.53 这些消息基于字符串资源IDS\u IFX\u SDWELCOMMESSAGE\u UPDATE\u WELCOME和IDS\u IFX\u STATUSEX\u STATICTEXT\u UPDATEUI。我相信未更改的
IDS\u IFX\u SDWELCOMMESSAGE\u UPDATE\u WELCOME
和IDS\u IFX\u STATUSEX\u STATICTEXT\u UPDATEUI
。我相信未更改的字符串资源将如下所示:
- InstallShield向导将%P的已安装版本(%VI)更新为版本%VS。若要继续,请单击“下一步”
- InstallShield向导正在将%P的(%VI)更新为版本%VS
SdSubstituteProductInfo
使用IFX\u INSTALLED\u DISPLAY\u VERSION
在OnUpdateUIBefore
的默认安装脚本代码中填充%VI
替换。以及IFX\u INSTALLED\u DISPLAY\u VERSION
中的IFX\u INSTALLED\u VERSION
的默认值,这解释了为什么首选显示字符串没有显示在我们希望显示的位置。我假设SdWelcome
(或类似引用IFX\u INSTALLED\u DISPLAY\u VERSION
)的任何对话框或代码)也会显示格式不正确的版本
尽管我在web上搜索了上述函数、字符串和字符串ID,但我还没有找到以正确格式显示正确格式的旧版本号(DisplayVersion)的理想解决方案。一些文章建议硬编码跳过旧版本号的格式字符串,而不是使用包含
%VI
的字符串资源。其他人建议根据需要手动格式化版本号,并将结果放入IFX\u INSTALLED\u DISPLAY\u version
。我知道有更好的答案,我希望下次我或其他人查找时能更容易地找到它。在OnBegin
InstallScript函数中,在begin
之后添加以下一行InstallScript代码作为第一行:
RegDBGetItem(REGDB_UNINSTALL_DISPLAY_VERSION, IFX_INSTALLED_DISPLAY_VERSION);
在OnBegin中执行此操作还可以确保问题中未提及的另一条消息使用正确的格式:
安装程序检测到已安装%p的版本%VI
此安装程序安装%p(%VS)的早期版本
在安装此版本之前,您必须卸载以前的版本
美丽的!在InstallShield中,简单的事情是多么的困难,这让我一直感到惊讶。