Inno Setup Перейдите в каталог и его подкаталоги

Как пройти каталог и его подкаталоги в сценариях Inno Setup Pascal? Я не могу найти какой-либо метод и интерфейс в документе справки Inno Setup.

1 ответ

Решение

Использование FindFirst а также FindNext вспомогательные функции.

procedure RecurseDirectory(Path: string);
var
  FindRec: TFindRec;
  FilePath: string;
begin
  if FindFirst(Path + '\*', FindRec) then
  begin
    try
      repeat
        if (FindRec.Name <> '.') and (FindRec.Name <> '..') then
        begin
          FilePath := Path + '\' + FindRec.Name;
          if FindRec.Attributes and FILE_ATTRIBUTE_DIRECTORY = 0 then
          begin
            Log(Format('File %s', [FilePath]));
          end
            else
          begin
            Log(Format('Directory %s', [FilePath]));
            RecurseDirectory(FilePath);
          end;
        end;
      until not FindNext(FindRec);
    finally
      FindClose(FindRec);
    end;
  end
    else
  begin
    Log(Format('Failed to list %s', [Path]));
  end;
end;

Примеры использования смотрите:

Другие вопросы по тегам