Inno Setup 提示用户输入文件夹并存储值

Inno Setup Prompt user for a folder and store the value

我有以下需求:

[Run] 
;run robocopy.exe source dest/OLD/[source_contents] /options

其中:
source 必须由用户在目标机器上指定(这可以根据物理平台而改变)
destination 将与刚刚用户定义的源文件夹相同,而子路径 OLD/[source_contents] 将由 robocopy 输入自动创建。

我想使用 "scripted-constant",但问题是我需要以某种方式将 "source" 提示参数存储在某个位置(我不能在同一个地方要求两个提示)。

谢谢。

scripted constant 是一条路要走。您只需要确保只提示用户一次并重复使用源路径和目标路径的结果。

例如,您可以使用 CreateInputDirPage 并实现脚本常量来引用用户在页面上指定的路径:

[Run]
Filename: "robocopy.exe"; Parameters: "{code:CopyDir} {code:CopyDir}\OLD"
[Code]
var
  CopyDirPage: TInputDirWizardPage;

procedure InitializeWizard();
begin
  CopyDirPage :=
    CreateInputDirPage(wpSelectDir, 'Select source directory', '',  '', False, '');
  CopyDirPage.Add('Source directory:');
end;

function CopyDir(Params: string): string;
begin
  Result := CopyDirPage.Values[0];
end;