在我的设置中,我尝试通过代码生成应用程序版本,但是我无法调用它。我的设置如下:
#define ApplicationVersion GetVersion('Application.exe')
[Setup]
AppVersion={#ApplicationVersion}
VersionInfoVersion={#ApplicationVersion}
...
[Code]
function GetVersion(Param: String): String;
begin
{ some magic ... }
Result := '1.2.3';
end;
我也尝试过
[Setup]
AppVersion={code:GetVersion}
VersionInfoVersion={code:GetVersion}
有实现用户功能调用的想法吗?
注意,#define ApplicationVersion GetFileVersion('Application.exe')
不起作用,因为“ Application.exe”不提供任何版本信息。
答案 0 :(得分:1)
您不能从Inno Setup预处理器调用Pascal脚本代码。
首先,甚至在调用Pascal Script编译器之前,在编译时间上对预处理器进行评估。当Pascal Code在运行时间上运行时。
您实际上可以通过预处理器生成Pascal脚本代码。这意味着什么,您不能调用它,因为在评估预处理程序代码时,Pascal Script代码甚至在技术上都不存在。
这实际上是正确的:
[Setup]
AppVersion={code:GetVersion}
因为AppVersion
是在运行时进行评估的,所以它可以包含constants,就像{code}
(可能不是“常数” < / em> –但使用Inno Setup术语),如documented:
该指令的值,其中可能包含常量,...
但是您不能在VersionInfoVersion
中使用常量:
[Setup]
VersionInfoVersion={code:GetVersion}
因为VersionInfoVersion
是在编译时间求值的,因为它的值存储在安装程序可执行标头中。
但是几乎没有什么不能在预处理器中实现。但是您必须告诉我们您实际上想做什么。