无法从[代码]调用Inno Setup ParseVersion

例如,ParseVersionRemoveBackslash都在中声明ISPPBuiltins.iss如果我尝试从[代码]中调用两者:

function InitializeSetup: Boolean;
var
    Major, Minor, Rev, Build: Integer;
begin
    RemoveBackslash('123\');
    ParseVersion('12345', Major, Minor, Rev, Build);
end;

RemoveBackslash编译正常,但是添加ParseVersion会导致编译器错误:

未知标识符“ ParseVersion””

当另一个宏声明的一部分,ParseVersion似乎可以正常编译,只是不能从[Code]我应该可以这样称呼吗?

马丁·普里克里(Martin Prikryl)

正如@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支持功能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;

GetVersionComponentsInno Setup 6.1,Pascal脚本功能可用


RemoveBackslash在两种情况下工作,因为有两个Pascal脚本RemoveBackslash预处理RemoveBackslash

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

在Inno Setup中从过程调用函数?

来自分类Dev

Inno Setup:{code:...}无法用于OutputBaseFilename吗?

来自分类Dev

Inno Setup语法-OR,AND

来自分类Dev

Inno Setup中的TTreeView

来自分类Dev

Inno Setup:如何获取引发异常的异常代码?

来自分类Dev

Inno Setup遍历Pascal代码中的[Files]部分

来自分类Dev

如何从代码部分完全禁用Inno Setup中的特定组件?

来自分类Dev

Inno Setup“返回”,如代码中的命令/构造

来自分类Dev

Inno-Setup:检测/ SUPPRESSMSGBOXES在代码中不显示MsgBox

来自分类Dev

Inno Setup“返回”,如代码中的命令/构造

来自分类Dev

如何在 Inno Setup iss 文件中调用 GetNativeSystemInfo?

来自分类Dev

Inno Setup 以字符串为参数调用 DLL

来自分类Dev

Inno Setup:Exec无法读取字符串?

来自分类Dev

Inno Setup File存在无法找到现有文件

来自分类Dev

Inno Setup无法处理带有空格的源路径

来自分类Dev

无法从PowerShell脚本写入默认的Inno Setup日志文件

来自分类Dev

Inno Setup File存在无法找到现有文件

来自分类Dev

Inno Setup执行功能无法完全正常运行

来自分类Dev

JUNIT:未调用setUp()

来自分类Dev

inno setup中的“ Not in a loop”错误

来自分类Dev

未捕获Inno Setup异常

来自分类Dev

如何从Inno Setup安装JRE?

来自分类Dev

Inno Setup ComponentsList OnClick事件

来自分类Dev

Inno Setup设置TInputQueryWizardPage高度

来自分类Dev

Inno Setup从CDATA创建TStringList

来自分类Dev

Inno Setup:选择组件的功能

来自分类Dev

Inno Setup隐藏日志条目

来自分类Dev

Inno Setup Abs(Integer)功能

来自分类Dev

Inno Setup更改CreateOutputMsgMemoPage字体