2012-06-13 62 views
18

Parece que no puedo encontrar ninguna información sobre cómo copiar un directorio utilizando NSIS?, Sé que hay un comando de archivo, pero ¿hay algún comando para copiar un directorio?Copie un directorio usando NSIS.

Respuesta

22

La sintaxis es la misma tanto para el directorio como para el archivo, excepto que debe especificar un directorio proporcionando un \ al final. El comando File copia el directorio si el argumento especificado es un directorio. Por ejemplo, puede hacer:

SetOutPath "outputPath" 
File "myDirectory\" #note back slash at the end 

Pero eso copia solo el directorio de nivel superior. Para hacerlo de forma recursiva, tienes /r interruptor

SetOutPath "outputPath" 
File /nonfatal /a /r "myDirectory\" #note back slash at the end 

que copia el contenido de myDirectory (pero no myDirectory propia carpeta). /nonfatal ignora sin un error si no hay un directorio particular. /a también copia atributos de archivo. El interruptor /x se usa para excluir archivos.

De lo contrario,

SetOutPath "outputPath\myDirectory" 
File /nonfatal /a /r "myDirectory\" #note back slash at the end 

copia todos los contenidos del myDirectory incluyendo myDirectory carpeta para outputPath.

+1

Gracias! El último ejemplo no parece funcionar ... Para crear la carpeta, tengo que usar SetOutPath $ INSTDIR \ myDirectory y luego Archivo/a/r "myDirectory \" – werner

+0

@nawfal, MUCHAS GRACIAS por destacando la '\' al final. ¡¡Me estaba volviendo loco!! No vi nada que haga referencia a eso en la documentación de NSIS. – Damian

+0

Es importante decir que tendrá un efecto secundario, ya que empaqueta el directorio dentro del ejecutable del instalador en la etapa de compilación. – Andry

4

He encontrado cómo hacerlo, lo siento por el problema.

extraer los archivos en un directorio que no pueden existir de antemano

CreateDirectory $Installdir\extracting 

SetOutPath $Installdir\extracting 

File Directory\* 
+2

'SetOutPath' ya crea el directorio y subdirectorios pasados, por lo que no es necesario llamar primero a CreateDirectory. – Claudix

3

La instrucción File extrae archivos desde el instalador y CopyFiles archivos y/o directorios de copias que ya existen en el sistema de los usuarios finales (Puede usar $ EXEDIR si necesita copiar archivos de un DVD donde también está ubicado su instalador ...)

Cuestiones relacionadas