我的更新必须弄清楚用户指定的目录中是否存在两个已知文件。如果不是,我想让他知道,这条路上没有文件。到目前为止,这是我所有.isl文件中的CustomMessage
。
现在我想向他展示他用文件输入的完整路径。
到目前为止,消息如下所示:
在所选位置找不到File1,File2或两者....
我现在想要的是:
%1,%2或两者都找不到......
对于%1
和%2
,我想传递完整的指定路径,但我看不到如何执行此操作。 ExpandConstant
没有任何论据,到目前为止,我还没有发现如何将参数传递给自定义消息。
为澄清事情,请参阅以下代码:
function NextButtonClick(CurPageID: Integer): Boolean;
var
ResultCode: Integer;
ServerData : String;
UseDatabase : String;
Language : String;
ResultCode : Integer;
ExePath : String;
ConfigFilePath : String;
begin
Result := True;
if CurPageID = wpSelectDir then begin
if DirExists(ExpandConstant('{app}')) then begin
MsgBox(ExpandConstant('{app}'),mbInformation,MB_OK);
UpdatePath := ExpandConstant('{app}');
ExePath := UpdatePath+'\File1.exe';
ConfigFilePath := UpdatePath+'\File2.exe.config';
if FileExists(UpdatePath+'\File1.exe') and FileExists(UpdatePath+'\File2.exe.config') then begin
RegPath := UpdatePath;
UpdatePath := RegPath + '\Update-' + ExpandConstant('{#MyAppVersion}');
ConfigPath := RegPath + '\File2.exe.config';
DBPage.Values[0] := ExtractServerAddr(GetServerData(ConfigPath));
DBPage.Values[1] := ExtractServerPort(GetServerData(ConfigPath));
end else begin
MsgBox(ExpandConstant('{cm:DirPageFileNotFound,ExePath,ConfigFilePath}'),mbInformation,MB_OK);
Result := False;
end;
end else begin
MsgBox(ExpandConstant('{cm:DirPageDirectoryNotFound}'),mbInformation,MB_OK);
Result := False;
end;
答案 0 :(得分:1)
在Pascal脚本中,您应该使用CustomMessage
和FmtMessage
:
FmtMessage(CustomMessage('DirPageFileNotFound'), [ExePath, ConfigFilePath])
它比组装{cm:MessageName,Arguments}
"constant"更清晰,更不容易出错。如果任何路径中有任何逗号或大括号,Your syntax将会中断。
{cm:...}
常量适用于非Code
部分,例如:
[Run]
Filename: "myapp.exe"; Description: "{cm:RunningApp,myapp.exe}";
答案 1 :(得分:0)
嗯,解决方案尽可能简单:
ToExpand := '{cm:DirPageFileNotFound,' + ExePath +',' + ConfigFilePath + '}'
MsgBox(ExpandConstant(ToExpand),mbInformation,MB_OK);
这两条线就行了。
PS:我很感谢StackOverflow成为我的橡皮鸭。