如何在 Inno Setup 的打开对话框中 select 多个文件?

How to select multiple files in open dialog box in Inno Setup?

这是 Inno Setup 中显示文件 selection 对话框的两种方法,

向导页面方法:

[Code]
Var
  PageFileDialog: TInputFileWizardPage;

procedure InitializeWizard;
begin
  PageFileDialog:= CreateInputFilePage(
    wpWelcome, 
    'Title 1', 
    'Title 2', 
    'Title 3'); 
 
  PageFileDialog:= PageFileDialog.Edits[PageFileDialog.Add('', 'Text file (*.txt)|*.txt', '.txt')];
end;

直接打开对话框,

[Code]
procedure InitializeWizard;
var
    FileName: string;
begin
    FileName := '';
    if GetOpenFileName('', FileName, '', 
    'Text Documents (*.txt)|*.txt|All Files|*.*', 'txt') then
    begin
       { Filename contains the selected filename }
    end;
end;

但是这些不允许在打开的对话框中 select 多个文件,它只能 select 一个文件。如何select多个文件?

有问题的方法Inno Setup with three destination folders在这里不起作用。它应该是一个文本框和浏览按钮,可以 select 多个文件。

我使用 Inno Setup 6.0.5(u) 进行了测试。其他版本可能不同。

看看GetOpenFileNameMulti函数: 来自 documentation:

Description:
Displays a dialog box that enables the user to select one or more existing file(s). Returns True if the user selected a file, False otherwise. The name of the selected file(s) is returned in the FileNameList list.

Remarks:
An example Filter: 'Text files (.txt)|.txt|All files (.)|.'

Example:

var
  FileNameList: TStrings;
begin
  { Create the list }
  FileNameList := TStringList.Create;
  try
    if GetOpenFileNameMulti('', FileNameList, '',
       'Text Documents (*.txt)|*.txt|All Files|*.*', 'txt') then
    begin
      { Successful; user clicked OK }
      { FileNameList contains the selected filename(s) }
    end;
  finally
    FileNameList.Free;
  end;
end;