0

さらにファイルを追加する必要があるため、いくつかのファイルをいくつかのフォルダーに追加する機能を作りたいと思います。

ここに関数の私のコードがあります:

Function "addElement"
    DetailPrint $0
    CreateDirectory $INSTDIR\data\Element\$0
    SetOutPath $INSTDIR\data\Element\$0

    File /r "${binFolder}\data\Element\$0\*.*"
FunctionEnd

そしてここで私はそれを呼びます:

strcpy $0 "Element_1"
call "addElement"

strcpy $0 "Element_2"
call "addElement"

strcpy $0 "Element_3"
call "addElement"

nsis は次のエラーを返します。

行で-> ファイルが見つかりませんFile /r...

4

1 に答える 1

1

$0は変数であり、変数は実行時に使用されます。File命令はコンパイル時にファイル名を知る必要があります!

関数をマクロに置き換えます。

!macro addElement fname
    DetailPrint "${fname}"
    CreateDirectory "$INSTDIR\data\Element\${fname}"
    SetOutPath "$INSTDIR\data\Element\${fname}"

    File /r "${binFolder}\data\Element\${fname}\*.*"
!macroend

...

Section

!insertmacro addElement foo
!insertmacro addElement bar
!insertmacro addElement baz
于 2013-03-18T16:05:44.353 に答える