正如@Andrew 已经写的那样,ParseVersion(或者实际上从Inno Setup 6.1 开始,GetVersionComponents)是一个预处理器函数。因此必须使用预处理器指令调用它,并将其结果存储到预处理器变量中。
#define Major
#define Minor
#define Rev
#define Build
#expr GetVersionComponents("C:\path\MyProg.exe", Major, Minor, Rev, Build)
如果您需要使用 Pascal 脚本Code 中的变量,则再次需要使用预处理器语法。例如:
[Code]
function InitializeSetup: Boolean;
begin
MsgBox('Version is: {#Major}.{#Minor}.{#Rev}.{#Build}.', mbInformation, MB_OK);
Result := True;
end;
上面是真的,如果你真的想在编译时提取版本号。如果您真的想在Code 部分执行此操作,即在安装时,您必须使用Pascal Script support function GetVersionComponents(是的,名称相同,但语言不同):
[Code]
function InitializeSetup: Boolean;
var
Major, Minor, Rev, Build: Word;
Msg: string;
begin
GetVersionComponents('C:\path\MyProg.exe', Major, Minor, Rev, Build);
Msg := Format('Version is: %d.%d.%d.%d', [Major, Minor, Rev, Build]);
MsgBox(Msg, mbInformation, MB_OK);
Result := True;
end;
Pascal 脚本函数 GetVersionComponents 仅在 Inno Setup 6.1 之后可用。
RemoveBackslash 在两种情况下都有效,因为Pascal Script RemoveBackslash 和Preprocessor RemoveBackslash 都有。