You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Inno Setup中GetStringFileInfo未生效,如何正确获取程序集信息?

解决Inno Setup中GetStringFileInfo未被解析的问题

你遇到的核心问题是Inno Setup的预处理器函数不能直接嵌入到[Setup]段的属性值中,必须先通过预处理器指令将函数结果存储为变量,再在配置段中引用这些变量。以下是正确的实现步骤:

1. 预处理器定义变量

首先在脚本开头的预处理器区域,用#define指令调用GetStringFileInfo,将读取到的程序集信息存为变量,同时注意路径拼接的正确性(要添加路径分隔符\):

#define RootDirectory "bin\Release"
# 读取软件名称(根据你的exe资源字段调整,比如用ProductName或FileDescription)
#define AppNameValue GetStringFileInfo("{#RootDirectory}\Sample.exe", "ProductName")
# 读取文件版本
#define AppVersionValue GetStringFileInfo("{#RootDirectory}\Sample.exe", "FileVersion")

2. 在[Setup]段引用变量

接着在[Setup]配置段中,通过{#变量名}的方式引用预处理器定义好的变量:

[Setup]
AppName={#AppNameValue}
AppVersion={#AppVersionValue}

额外注意事项

  • 字段名匹配:要确保你传入GetStringFileInfo的第二个参数,和你的Sample.exe版本资源中的字段名完全一致。你可以右键Sample.exe → 属性 → 详细信息,查看对应的字段(比如“产品名称”对应ProductName,“文件版本”对应FileVersion),别写错字段名导致读取失败。
  • 文件存在性:编译脚本时,Sample.exe必须已经存在于{#RootDirectory}指定的路径下,否则预处理器会报错找不到文件。

内容的提问来源于stack exchange,提问作者Youngjae

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.20 11:12:57