!echo "$%MY_VAR%"
$%MY_VAR%(... \ installer.nsi:46)
所以變量根本不被替換。這是一個錯誤?我在這裏有點難過。我該如何測試變量是否存在?到目前爲止,我認爲我可以使用
!if "$%MY_VAR%" = ""
但是,如果沒有替換,那麼這是行不通的。合乎邏輯的結論是使用這個:
!if "$%MY_VAR%" = "$%MY_VAR%"
我做錯了嗎?
!echo "$%MY_VAR%"
$%MY_VAR%(... \ installer.nsi:46)
所以變量根本不被替換。這是一個錯誤?我在這裏有點難過。我該如何測試變量是否存在?到目前爲止,我認爲我可以使用
!if "$%MY_VAR%" = ""
但是,如果沒有替換,那麼這是行不通的。合乎邏輯的結論是使用這個:
!if "$%MY_VAR%" = "$%MY_VAR%"
我做錯了嗎?
!if x = y
實際上是大量的測試,你需要使用==
測試字符串。
你需要欺騙編譯器得到這個工作:
; NSIS 2+
!define DOLLAR $
!if "$%foo%" == "${DOLLAR}%foo%"
!echo "%foo% not set"
!endif
; NSIS 3+
!if "$%foo%" == "${U+24}%foo%"
!echo "%foo% not set"
!endif
你最後一個例子基本上只是如果1 = 1 – Anders
並非在所有替換值是在Windows上不尋常和NSIS做它,因爲!保留類似c:\ $%foo%\ bar的路徑比使用環境變量更重要... – Anders