web-dev-qa-db-ja.com

NSISを使用してディレクトリをコピーします。

NSISを使用してディレクトリをコピーする方法に関する情報が見つからないようです。fileコマンドがあることは知っていますが、ディレクトリをコピーするコマンドはありますか。

23
rajat

構文はディレクトリとファイルの両方で同じですが、最後に\を指定してディレクトリを指定する必要がある点が異なります。指定された引数がディレクトリの場合、Fileコマンドはディレクトリをコピーします。たとえば、次のことができます。

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

ただし、これは最上位のディレクトリのみをコピーします。再帰的に行うには、/rスイッチがあります

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

myDirectoryの内容をコピーします(ただし、myDirectoryフォルダー自体はコピーしません)。 /nonfatalは、特定のディレクトリがない場合、エラーなしで無視します。 /aはファイル属性もコピーします。 /xスイッチは、ファイルを除外するために使用されます。

さもないと、

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

myDirectoryフォルダを含むmyDirectoryのすべての内容をoutputPathにコピーします。

28
nawfal

やり方を見つけました、ご迷惑をおかけして申し訳ありません。

事前に存在できないディレクトリにファイルを抽出します

CreateDirectory $Installdir\extracting

SetOutPath $Installdir\extracting

File Directory\*
4
rajat

File命令はインストーラーからファイルを抽出し、 CopyFiles エンドユーザーシステムにすでに存在するファイルやディレクトリをコピーします(次の場合は$ EXEDIRを使用できます)インストーラーもあるDVDからファイルをコピーする必要があります...)

3
Anders

バックスラッシュの後にコンテンツ全体に一致するスターは必須です。構文は次のとおりです。

マニュアル セクション4.9.1.6を参照してください

SetOutPath "outputPath\myDirectory"
File /nonfatal /a /r "myDirectory\*" 
0
Fabien Ducat