NSIS:如何检查var是否存在

NSIS:如何检查var是否存在,nsis,Nsis,检查NSIS中是否存在var的最佳方法是什么 目前我做的事情如下: ${If} $NonExistentVar == $$NonExistentVar 但是,如果现有var某些_var的值为$some _var,这将无法按预期工作,我知道这很少见,但是,有没有更好的方法来检查它 section non_existent_var detailprint "non existent: $NonExistentVar" var /global ExistentVar deta

检查NSIS中是否存在var的最佳方法是什么

目前我做的事情如下:

${If} $NonExistentVar == $$NonExistentVar
但是,如果现有var
某些_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

为什么不使用define?这毕竟是一个应该在编译时进行的检查

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

!insertmacro DeclareDetactableVariable foo
!ifdef VAR_foo
...
!endif