【问题标题】:NSIS multiple if conditionsNSIS 多个 if 条件
【发布时间】:2015-06-18 10:54:03
【问题描述】:

我可以在 NSIS 脚本中实现以下 C 代码吗?

C 代码

if ( (value1 == 1) && ((value2 == "text") || (value3 >= 100)) )
  //Do something

NSIS 代码

${If} $value2 == "text"
${OrIf} $value3 >= 100

但我不认为在上述条件下我可以添加另一个${AndIf} 语句。相反,我需要执行以下操作:

${If} $value1 == 1
    ${If} $value2 == "text"
    ${OrIf} $value3 >= 100
        //Condition success
    ${EndIf}
${Else}
    //Conditon failed
${EndIf}

我是正确的还是有更好的方法?

【问题讨论】:

    标签: nsis


    【解决方案1】:

    ${OrIf}${AndIf} 组合在一个语句中会得到未定义的结果,您需要嵌套if 语句。我不知道更好的方法...

    【讨论】:

      【解决方案2】:

      ;如果一个工作示例可以帮助任何人。

      !include LogicLib.nsh
      
      Section testSec
          Var /GLOBAL equalsFive
      
          StrCpy $equalsFive 5
      
          Var /GLOBAL equalsSix
      
          StrCpy $equalsSix 6
      
          Var /GLOBAL equalsSeven
      
          StrCpy $equalsSeven 7
      
          ${If} $equalsFive = 5
              ${AndIf} $equalsSix = 8
                  ${OrIf} $equalsSeven = 7
                      DetailPrint "OrIf Works"
          ${EndIf}
      SectionEnd
      

      【讨论】:

        【解决方案3】:
        strcmp $value1 1 0 Error
        strcmp $value2 'Text' 0 Error
        strcmp $value3 100 Do Do
        

        试试这个代码

        【讨论】:

          【解决方案4】:
          ${If} $value1 == 1
              ${AndIf} $value2 == "text"    ;useAndif
              ${OrIf} $value3 >= 100
                  //Condition success
              ${EndIf}
          ${Else}
              //Conditon failed
          ${EndIf}
          

          【讨论】:

          • 欢迎来到 StackOverflow,请在您的答案中添加一些上下文/信息,并防止发布仅代码答案。
          猜你喜欢
          • 1970-01-01
          • 2013-09-29
          • 2016-01-20
          • 2015-02-07
          • 2011-06-16
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多