2012-06-13 14 views
18

Ich kann anscheinend keine Informationen darüber finden, wie man ein Verzeichnis mit NSIS kopiert? Ich weiß, dass es einen Dateibefehl gibt, aber gibt es einen Befehl, ein Verzeichnis zu kopieren.Kopieren Sie ein Verzeichnis mit NSIS.

Antwort

22

Die Syntax ist für Verzeichnis und Datei identisch, außer dass Sie ein Verzeichnis angeben müssen, indem Sie a angeben \ am Ende. File Befehl kopiert das Verzeichnis, wenn das angegebene Argument ein Verzeichnis ist. Zum Beispiel können Sie tun:

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

Aber das kopiert nur die oberste Ebene Verzeichnis. Um es rekursiv zu tun, haben Sie /r Schalter

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

welche kopiert den Inhalt von myDirectory (aber nicht myDirectory Ordner selbst). /nonfatal ignoriert ohne einen Fehler, wenn kein bestimmtes Verzeichnis vorhanden ist. /a kopiert auch Dateiattribute. /x Schalter wird zum Ausschließen von Dateien verwendet. Ansonsten

,

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

kopiert alle Inhalte von myDirectory einschließlich myDirectory Ordner outputPath.

+1

Danke! Das letzte Beispiel scheint jedoch nicht zu funktionieren ... Um den Ordner zu erstellen, muss ich SetOutPath $ INSTDIR \ myDirectory und dann Datei/a/r "myDirectory" – werner

+0

@ nawfal, DANKE so viel für das "\" am Ende betonen. Es trieb mich VERRÜCKT !! Ich habe in der NSIS-Dokumentation nichts gesehen, was darauf Bezug nimmt. – Damian

+0

Wichtig zu sagen, es wird einen Nebeneffekt haben, wie Pack das Verzeichnis in der ausführbaren Datei Installer auf Compilierung stufe. – Andry

4

Ich habe gefunden, wie es geht, entschuldigen Sie den Ärger.

die Dateien in ein Verzeichnis extrahieren, die vorher nicht existieren können

CreateDirectory $Installdir\extracting 

SetOutPath $Installdir\extracting 

File Directory\* 
+2

"SetOutPath" erstellt bereits das übergebene Verzeichnis und die Unterverzeichnisse, daher ist der erste Aufruf von CreateDirectory nicht erforderlich. – Claudix

3

Die File Anweisung Dateien von Ihrem Installationsprogramm extrahiert und CopyFiles kopiert Dateien und/oder Verzeichnisse, die auf dem Endbenutzer-System bereits vorhanden (Sie können $ EXEDIR verwenden, wenn Sie Dateien von einer DVD kopieren müssen, auf der sich auch Ihr Installationsprogramm befindet ...)

Verwandte Themen