如何在[Setup]中设置我自己的变量并从[Code]中读取它

问题描述 投票:0回答:1

我正在尝试在 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]
中的值。还是我以错误的方式处理这个问题?

inno-setup pascalscript
1个回答
2
投票

好吧,您可以使用

[Setup] 预处理器函数
:
阅读
SetupSetting
部分指令 如何读取Pascal代码中的[Setup]参数?

但是你不能发明自己的新指令。


但是您可以:

  • 使用

    #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'
    
© www.soinside.com 2019 - 2024. All rights reserved.