Come selezionare più file nella finestra di dialogo aperta in Inno Setup?

Aug 22 2020

Questi sono i due metodi in Inno Setup per mostrare la finestra di selezione dei file,

Metodo pagina guidata:

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

Finestra di dialogo di apertura diretta,

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

Ma questi non consentono di selezionare più file nella finestra di dialogo aperta, seleziona solo un file. Come selezionare più file?

Il metodo in questione Inno Setup con tre cartelle di destinazione non funziona qui. Dovrebbe essere una casella di testo e un pulsante Sfoglia in grado di selezionare più file.

Risposte

3 mirtheil Aug 22 2020 at 21:00

Ho provato con Inno Setup 6.0.5 (u). Altre versioni potrebbero essere diverse.

Dai un'occhiata alla GetOpenFileNameMultifunzione: Dalla documentazione :

Descrizione:
visualizza una finestra di dialogo che consente all'utente di selezionare uno o più file esistenti. Restituisce True se l'utente ha selezionato un file, False in caso contrario. Il nome dei file selezionati viene restituito nell'elenco FileNameList.

Note:
un esempio Filtro: 'File di testo ( .txt) | .txt | Tutti i file ( . ) | . '

Esempio:

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;