NSIS讓我瘋狂,我無法做一些非常簡單的事情。跟if語句的字符串比較無效。有人能告訴我我做錯了什麼嗎?我的字符串comparaison與if語句無效
!ifndef PRODUCT_NAME
!define PRODUCT_NAME "$%PRODUCT_NAME%"
!endif
DetailPrint "TEST - ${PRODUCT_NAME}"
${If} ${PRODUCT_NAME} == "DEMO_NOT_FOR_RETAIL"
DetailPrint "DEMO"
File /r ${LOCAL_DIST_DIR_OUTPUT}\bin\win64
${Else}
DetailPrint "NOT DEMO"
${EndIf}
無論$ {PRODUCT_NAME}的價值是什麼,它都會輸入if語句。 PRODUCT_NAME是一個環境變量,通過我的shell腳本設置只是叫我NSIS腳本
編輯 正如安德斯建議,我試過(學)使用變量,而不是定義之前:
Var /Global PRODUCT_NAME
StrCpy $PRODUCT_NAME "$%PRODUCT_NAME%"
DetailPrint "TEST - $PRODUCT_NAME"
${If} $PRODUCT_NAME == "DEMO_NOT_FOR_RETAIL"
DetailPrint "DEMO"
File /r ${LOCAL_DIST_DIR_OUTPUT}\bin\win64
${Else}
DetailPrint "NOT DEMO"
${EndIf}
Unfortunaly,不起作用。見蹤跡:
Var: "PRODUCT_NAME"
StrCpy $PRODUCT_NAME "sdk"()()
DetailPrint: "TEST - $PRODUCT_NAME"
!insertmacro: _If
!insertmacro: _PushLogic
!insertmacro: _PushScope
!define: "_Logic"="_LogicLib_Label_53"
!insertmacro: end of _PushScope
!insertmacro: _IncreaseCounter
!define: "_LOGICLIB_COUNTER"="53"
!undef: "LOGICLIB_COUNTER"
!define: "LOGICLIB_COUNTER"="54"
!undef: "_LOGICLIB_COUNTER"
!insertmacro: end of _IncreaseCounter
!insertmacro: end of _PushLogic
!define: "_LogicLib_Label_53If"=""
!define: "_LogicLib_Label_53Else"="_LogicLib_Label_54"
!insertmacro: _IncreaseCounter
!define: "_LOGICLIB_COUNTER"="54"
!undef: "LOGICLIB_COUNTER"
!define: "LOGICLIB_COUNTER"="55"
!undef: "_LOGICLIB_COUNTER"
!insertmacro: end of _IncreaseCounter
!define: "_c=true"=""
!insertmacro: _==
StrCmp "$PRODUCT_NAME" "DEMO_NOT_FOR_RETAIL" equal=, nonequal=_LogicLib_Label_54
您將PRODUCT_NAME定義爲什麼? – Anders
@Anders PRODUCT_NAME = sdk在這種情況下 – peterphonic
你確定你沒有混合定義和變量嗎? – Anders