【发布时间】:2016-11-30 19:03:52
【问题描述】:
我正在使用 Inno Setup 为应用程序制作安装程序。在我的 .iss 脚本中,我使用 GetStringFileInfo(SourceDir + "\myapp\myapp.exe", PRODUCT_VERSION) 从我的 exe 的元数据中获取“产品版本”。更具体地说,我目前有:
#define MyAppVersion GetStringFileInfo(SourceDir + "\myapp\myapp.exe", PRODUCT_VERSION)
AppVersion={#MyAppVersion}
不幸的是,它似乎没有抓住产品版本的最后一个字符,我不知道为什么。例如,如果产品版本是1.1.1,那么在控制面板中我会看到1.1.。
我可以通过右键单击.exe并查看详细信息来确认产品版本的值,但是当我安装应用程序后查看控制面板时,最后一个字符丢失了。
我尝试将PRODUCT_VERSION 替换为其他元数据值,例如FILE_VERSION,效果很好。这个问题似乎只出现在PRODUCT_VERSION。
对为什么会发生这种情况有任何想法吗?
【问题讨论】:
-
在我的情况下,您的代码适用于
PRODUCT_VERSION。也许您想获得FILE_VERSION而不是PRODUCT_VERSION? -
很遗憾我们想使用
PRODUCT_VERSION。 -
我已经在几个可执行文件上测试了您的代码,并且在所有情况下,函数都返回了完整的产品版本。你能用
ExpandConstant('{#MyAppVersion}')在InitializeSetup中调用MsgBox,然后用这个消息和另一个用文件属性(详细信息选项卡)发布屏幕截图吗? -
或者更好的是,提供给我们
myapp.exe进行测试。
标签: inno-setup