我正在尝试在 Inno Setup 中创建一个脚本,以从 GitHub 存储库中提取文件,将其解压缩,然后将其写入
[Setup]
部分中定义的目录。
[Setup]
MyVariable={userappdata}\MetaQuotes\Terminal\{#MyAppName}
[Code]
procedure CurStepChanged(CurStep: TSetupStep);
begin
// Copy the selected files to the selected directory
if not FileCopy(Output + '\file1.txt', MyVariable + '\file1.txt', False) then
begin
MsgBox('Failed to copy file1.txt to the selected directory.', mbError, MB_OK);
Abort();
end;
if not FileCopy(Output + '\file2.txt', MyVariable + '\file2.txt', False) then
begin
MsgBox('Failed to copy file2.txt to the selected directory.', mbError, MB_OK);
Abort();
end;
end;
显然,这不会编译,因为
MyVariable
尚未在 Pascal 脚本中定义。只是,我不知道如何引用[Setup]
中的值。还是我以错误的方式处理这个问题?
好吧,您可以使用
[Setup]
预处理器函数:阅读
SetupSetting
但是你不能发明自己的新指令。
但是您可以:
#define
指令使用预处理器变量(您已经将其用于 MyAppName
的方式):
#define MyVariable "{userappdata}\MetaQuotes\Terminal\" + MyAppName
将
#define
放在哪里并不重要,只要在使用变量之前放置即可。
在 Pascal 脚本中像这样使用它:
ExpandConstant('{#MyVariable}\file1.txt')
ExpandConstant
是扩展{userappdata}
。
使用 Pascal Script 常量:
[Code]
const
MyVariable = '{userappdata}\MetaQuotes\Terminal\{#MyAppName}';
像任何其他 Pascal Script 变量/常量一样使用它。
ExpandConstant(MyVariable) + '\file1.txt'