2

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

目前我做这样的事情:

${If} $NonExistentVar == $$NonExistentVar

但是,如果现有 varsome_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 回答