检查NSIS中是否存在var的最佳方法是什么?
目前我这样做:
${If} $NonExistentVar == $$NonExistentVar
但是如果现有var 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
答案 0 :(得分:1)
为什么不使用定义?这是一个应该在编译时发生的检查。
!macro DeclareDetactableVariable name
!ifndef VAR_${name}
Var /Global ${name}
!define VAR_${name}
!endif
!macroend
!insertmacro DeclareDetactableVariable foo
!ifdef VAR_foo
...
!endif