inno-setup pascalscript

Inno Setup: copia carpetas, subcarpetas y archivos de forma recursiva en la sección Código



inno-setup pascalscript (1)

Para copiar un directorio de forma recursiva, use programáticamente:

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;

Agregue cualquier filtro que necesite. Mira cómo . y .. se filtran.

Para ver un ejemplo de uso, vea mis respuestas a las preguntas:

  • Copiar archivos ocultos en Inno Setup
  • ¿Cómo guardar una carpeta cuando el usuario confirma la desinstalación? (Configuración Inno) .

¿Hay alguna forma de navegar y copiar / mover recursivamente todos los archivos y subdirectorios de un directorio dentro de la sección de código? ( PrepareToInstall )

Necesito ignorar un directorio específico, pero usando xcopy ignora todos los directorios /default/ , por ejemplo, y necesito ignorar solo un específico.

La sección Files se ejecuta más adelante cuando sea necesario.