Inno setup 在Inno Setup Pascal脚本中,在运行时评估来自预处理器的数据集合
我试图在Inno setup 在Inno Setup Pascal脚本中,在运行时评估来自预处理器的数据集合,inno-setup,pascalscript,Inno Setup,Pascalscript,我试图在code部分中获取Inno设置定义值,但不是使用{VersionTool1}。我需要动态地传递定义的名称,因为有很多这样的名称(我希望避免使用大型开关)。我尝试了SetupSetting,但它不在设置部分(在它之前)。有没有办法做到这一点 #定义版本TOL1 2019.01.1111 #定义版本TOL2020.02.2111 ... [守则] 过程集合选择工具(工具名称:字符串); 变量 当前工具:字符串; 开始 ... CurrentTool:=“版本”+工具名称; CurrentTo
code
部分中获取Inno设置定义值,但不是使用{VersionTool1}
。我需要动态地传递定义的名称,因为有很多这样的名称(我希望避免使用大型开关)。我尝试了SetupSetting
,但它不在设置部分(在它之前)。有没有办法做到这一点
#定义版本TOL1 2019.01.1111
#定义版本TOL2020.02.2111
...
[守则]
过程集合选择工具(工具名称:字符串);
变量
当前工具:字符串;
开始
...
CurrentTool:=“版本”+工具名称;
CurrentToolVersion:={#CurrentTool};
...
结束;
例如,局部变量CurrentTool
的值将是'VersionTool1'
,我想得到VersionTool1
预处理器变量的值,它是2020.02.2111
这是不可能的,请参阅
但还有其他解决办法 例如:
[代码]
变量
工具名称:TStringList;
工具版本:TStringList;
函数InitializeSetup():Boolean;
开始
工具名称:=TStringList.Create;
ToolVersions:=TStringList.Create;
#定义AddToolVersion(名称、版本)\
“ToolNames.Add('“+Name+”);ToolVersions.Add('“+Version+”);”
#发出AddToolVersion('Tool1','2019.01.1111')
#emit AddToolVersion('Tool2','2020.02.2111')
{ ... }
结果:=真;
结束;
(当然,只有当您实际上不硬编码版本号,而是使用只有预处理器才能执行的代码时,上述内容才有意义–类似于GetStringFileInfo
,这是我从您的评论中了解到的您计划执行的代码)
然后你可以有这样一个函数:
函数GetToolVersion(ToolName:string):string;
变量
I:整数;
开始
I:=ToolNames.IndexOf(ToolName);
如果I>=0,则结果:=ToolVersions[I];
结束;
这是不可能的,请参阅
但还有其他解决办法 例如:
[代码]
变量
工具名称:TStringList;
工具版本:TStringList;
函数InitializeSetup():Boolean;
开始
工具名称:=TStringList.Create;
ToolVersions:=TStringList.Create;
#定义AddToolVersion(名称、版本)\
“ToolNames.Add('“+Name+”);ToolVersions.Add('“+Version+”);”
#发出AddToolVersion('Tool1','2019.01.1111')
#emit AddToolVersion('Tool2','2020.02.2111')
{ ... }
结果:=真;
结束;
(当然,只有当您实际上不硬编码版本号,而是使用只有预处理器才能执行的代码时,上述内容才有意义–类似于GetStringFileInfo
,这是我从您的评论中了解到的您计划执行的代码)
然后你可以有这样一个函数:
函数GetToolVersion(ToolName:string):string;
变量
I:整数;
开始
I:=ToolNames.IndexOf(ToolName);
如果I>=0,则结果:=ToolVersions[I];
结束;