使用Inno Setup提取应用版本号(排除第四位数字)
在Inno Setup编译阶段提取可执行文件信息的实践
我一直在琢磨怎么在安装包编译期间,通过API调用从可执行文件里提取关键信息——比如在Inno Setup的Setup区段中使用GetStringFileInfo函数。目前我的ISPP脚本片段是这样的:
[ISPP] ; 若不清楚操作,请勿手动编辑此区段。 #define DataDir "{userappdata}\Meeting Schedule Assistant" #define CommonDataDir "{commonappdata}\Meeting Schedule Assistant" #define AppVerText "18.1...."
让版本信息自动提取的小技巧
你看现在AppVerText是手动硬编码的版本号,其实可以用GetStringFileInfo动态从目标可执行文件里提取,不用每次更新版本都手动改脚本。比如改成这样:
[ISPP] ; 若不清楚操作,请勿手动编辑此区段。 #define DataDir "{userappdata}\Meeting Schedule Assistant" #define CommonDataDir "{commonappdata}\Meeting Schedule Assistant" ; 从目标EXE中自动提取产品版本 #define AppVerText GetStringFileInfo("MeetingScheduleAssistant.exe", "ProductVersion")
几个要注意的点
- 要确保
GetStringFileInfo的第一个参数是可执行文件的正确路径,相对路径的话要保证编译时能找到这个文件; - 第二个参数是文件版本资源里的字段名,常用的还有
FileVersion、ProductName、CompanyName这些,按需替换就行; - 如果文件路径里包含空格,记得用双引号把整个路径括起来。
这样每次编译安装包时,版本信息都会自动从你的程序EXE里拉取,既省事儿又能避免版本号不一致的问题。
内容的提问来源于stack exchange,提问作者Andrew Truckle
相关产品推荐
相关产品推荐

