Inno Setup: copy the folder, subfolders and files recursively to the code section

Is there a way to view and recursively copy / move all files and subdirectories of a directory in a code section? ( PrepareToInstall )

I need to ignore a specific directory, but using xcopy , it ignores all /default/ directories, for example, and I need to ignore only certain.

The Files section is executed later when necessary.

+5
source share
1 answer

To recursively copy a directory, programmatically use:

 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; 

Add the necessary filtering. See how they are filtered . and ..


For an example of use, see my answers to questions:

+9
source

Source: https://habr.com/ru/post/1234696/


All Articles