Inno Setup: копировать папки, подпапки и файлы рекурсивно в разделе кода

Есть ли способ просматривать и рекурсивно копировать / перемещать все файлы и подкаталоги каталога в разделе кода? (PrepareToInstall)

Мне нужно игнорировать конкретный каталог, но с помощью xcopy игнорирует все каталоги /default/Например, и мне нужно игнорировать только конкретные.

Files раздел выполняется позже, когда это необходимо.

1 ответ

Решение

Для рекурсивного копирования каталога программно используйте:

procedure DirectoryCopy(SourcePath, DestPath: string);
var
  FindRec: TFindRec;
  SourceFilePath: string;
  DestFilePath: string;
begin
  if FindFirst(SourcePath + '\*', FindRec) then
  begin
    try
      repeat
        if (FindRec.Name <> '.') and (FindRec.Name <> '..') then
        begin
          SourceFilePath := SourcePath + '\' + FindRec.Name;
          DestFilePath := DestPath + '\' + FindRec.Name;
          if FindRec.Attributes and FILE_ATTRIBUTE_DIRECTORY = 0 then
          begin
            if FileCopy(SourceFilePath, DestFilePath, False) then
            begin
              Log(Format('Copied %s to %s', [SourceFilePath, DestFilePath]));
            end
              else
            begin
              Log(Format('Failed to copy %s to %s', [SourceFilePath, DestFilePath]));
            end;
          end
            else
          begin
            if DirExists(DestFilePath) or CreateDir(DestFilePath) then
            begin
              Log(Format('Created %s', [DestFilePath]));
              DirectoryCopy(SourceFilePath, DestFilePath);
            end
              else
            begin
              Log(Format('Failed to create %s', [DestFilePath]));
            end;
          end;
        end;
      until not FindNext(FindRec);
    finally
      FindClose(FindRec);
    end;
  end
    else
  begin
    Log(Format('Failed to list %s', [SourcePath]));
  end;
end;

Добавьте любую фильтрацию, которая вам нужна. Посмотрите, как . а также .. фильтруются.


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

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