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