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