Inno setup 将参数传递给.isl文件中定义的自定义消息

Inno setup 将参数传递给.isl文件中定义的自定义消息,inno-setup,Inno Setup,我的更新必须确定用户指定的目录中是否存在两个已知文件。如果没有,我想让他知道,这个路径上没有文件。到目前为止,在我的所有.isl文件中,这都是一条自定义消息。 现在我想向他展示他输入的文件的完整路径 到目前为止,消息如下所示: 在所选位置找不到文件1、文件2或两者 我现在想要的是: %找不到1,%2或两者都找不到 对于%1和%2,我希望传入完整的指定路径,但我看不到如何执行此操作ExpandConstant没有任何参数,到目前为止,我还没有找到任何关于如何向自定义消息传递参数的信息 为了澄清问题

我的更新必须确定用户指定的目录中是否存在两个已知文件。如果没有,我想让他知道,这个路径上没有文件。到目前为止,在我的所有.isl文件中,这都是一条
自定义消息。
现在我想向他展示他输入的文件的完整路径

到目前为止,消息如下所示:

在所选位置找不到文件1、文件2或两者

我现在想要的是:

%找不到1,%2或两者都找不到

对于
%1
%2
,我希望传入完整的指定路径,但我看不到如何执行此操作
ExpandConstant
没有任何参数,到目前为止,我还没有找到任何关于如何向自定义消息传递参数的信息

为了澄清问题,下面是代码:

函数NextButtonClick(CurPageID:Integer):布尔;
变量
结果代码:整数;
ServerData:String;
UseDatabase:String;
语言:字符串;
结果代码:整数;
ExePath:字符串;
ConfigFilePath:字符串;
开始
结果:=真;
如果CurPageID=wpSelectDir,则开始
如果存在dir(ExpandConstant({app}'),则开始
MsgBox(ExpandConstant({app}'),mbInformation,MB_OK);
UpdatePath:=ExpandConstant('{app}');
ExePath:=UpdatePath+'\File1.exe';
ConfigFilePath:=UpdatePath+'\File2.exe.config';
如果文件存在(UpdatePath+'\File1.exe')和文件存在(UpdatePath+'\File2.exe.config'),则开始
RegPath:=UpdatePath;
UpdatePath:=RegPath+'\Update-'+ExpandConstant('{#MyAppVersion}');
ConfigPath:=RegPath+'\File2.exe.config';
DBPage.Values[0]:=ExtractServerAddr(GetServerData(ConfigPath));
DBPage.Values[1]:=ExtractServerPort(GetServerData(ConfigPath));
结束,否则开始
MsgBox(ExpandConstant({cm:DirPageFileNotFound,ExePath,ConfigFilePath}'),mbInformation,MB_OK);
结果:=假;
结束;
结束,否则开始
MsgBox(ExpandConstant({cm:DirPageDirectoryNotFound}'),mbInformation,MB_OK);
结果:=假;
结束;

好吧,解决方案尽可能简单:

ToExpand:='{cm:DirPageFileNotFound'+ExePath+','+ConfigFilePath+'}'
MsgBox(ExpandConstant(ToExpand),mbInformation,MB_OK);
这两句话起了作用


PS:我很感谢StackOverflow成为我的橡皮鸭

在Pascal脚本中,您应该与以下内容一起使用:

FmtMessage(CustomMessage('DirPageFileNotFound'),[ExePath,ConfigFilePath])

它比组装
{cm:MessageName,Arguments}
更干净,更不容易出错。例如,如果在任何路径中有任何逗号或花括号,则将断开

{cm:…}
常量用于非
代码
部分,如:

[Run]
Filename: "myapp.exe"; Description: "{cm:RunningApp,myapp.exe}"; 


类似的问题:

我不知道它的存在。谢谢你给我看。