Inno Setupの開いているダイアログボックスで複数のファイルを選択するにはどうすればよいですか?

Aug 22 2020

これらは、ファイル選択ダイアログを表示するためのInnoSetupの2つの方法です。

ウィザードページの方法:

[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;

ただし、これらは開いているダイアログで複数のファイルを選択することを許可していません。1つのファイルのみを選択します。複数のファイルを選択する方法は?

3つの宛先フォルダーを使用した問題のInnoSetupの方法は、ここでは機能しません。複数のファイルを選択できる1つのテキストボックスと参照ボタンである必要があります。

回答

3 mirtheil Aug 22 2020 at 21:00

Inno Setup 6.0.5(u)でテストしました。他のバージョンは異なる場合があります。

GetOpenFileNameMulti関数を見てください:ドキュメントから:

説明:
ユーザーが1つ以上の既存のファイルを選択できるダイアログボックスを表示します。ユーザーがファイルを選択した場合はTrueを返し、それ以外の場合はFalseを返します。選択したファイルの名前がFileNameListリストに返されます。

備考:
フィルターの例: 'テキストファイル(.txt)| .txt |すべてのファイル()| '

例:

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;