2

変数がNSISに存在するかどうかを確認する最良の方法は何ですか?

現在、私は次のようなことをしています。

${If} $NonExistentVar == $$NonExistentVar

しかし、既存の変数some_varの値が$some_var、の場合、これは期待どおりに機能しません。まれなことですが、それをチェックするためのより良い方法はありますか?

section non_existent_var
    detailprint "non existent: $NonExistentVar"
    var /global ExistentVar
    detailprint "existent: $ExistentVar"
    ${If} $NonExistentVar == $$NonExistentVar
        detailprint "PASS: NonExistent doesn't exist"
    ${Else}
        detailprint "FAIL: NonExistent exists"
    ${EndIf}

    ${If} $ExistentVar == $$ExistentVar
        detailprint "FAIL: ExistentVar doesn't exist"
    ${Else}
        detailprint "PASS: ExistentVar exists"
    ${EndIf}

    strcpy $ExistentVar "$$ExistentVar"

    ${If} $ExistentVar == $$ExistentVar
        detailprint "FAIL: ExistentVar doesn't exist"
    ${Else}
        detailprint "PASS: ExistentVar exists"
    ${EndIf}
SectionEnd

与える:

non existent: $NonExistentVar
existent: 
PASS: NonExistent doesn't exist
PASS: ExistentVar exists
FAIL: ExistentVar doesn't exist
Completed
4

1 に答える 1

1

定義を使用してみませんか?これは、結局のところコンパイル時に行われるべきチェックです。

!macro DeclareDetactableVariable name
!ifndef VAR_${name}
Var /Global ${name}
!define VAR_${name}
!endif
!macroend

!insertmacro DeclareDetactableVariable foo
!ifdef VAR_foo
...
!endif
于 2012-11-20T11:37:18.313 に答える