2012-11-20 28 views
2

检查变量是否存在于NSIS中的最佳方法是什么?NSIS:如何检查变量是否存在

目前,我做这样的事情:

${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 

回答

1

为什么不使用一个定义?毕竟,这是一个应该在编译时发生的检查。

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

!insertmacro DeclareDetactableVariable foo 
!ifdef VAR_foo 
... 
!endif 
相关问题