【问题标题】:NSIS - Error trying to compare two stringsNSIS - 尝试比较两个字符串时出错
【发布时间】:2019-01-28 11:36:34
【问题描述】:

我正在尝试将字符串与具有完全相同值的变量进行比较,但无法正常工作。
流程是:
1.打开一个只有一行Node.Js版本的文件;
2.读取该行并保存到$NODE_VERSION
3. 关闭文件
4. 检查$NODE_VERSION 是否等于“v8.11.3”——这总是返回false。

我已经:
1. 创建另一个变量并在硬编码中设置相同的值并进行比较。
2. 将 $NODE_VERSION 与字符串“v8.11.3”进行比较
3. 比较 "1" = "1" 并且有效。
4. 使用 If/EndIf
5. 使用 StrCmp

Var /GLOBAL NODE_VERSION<br/>
Function .onInit<br/>
  ExecWait "node --version > C:\Windows\nodeversion.txt"<br/>
  ClearErrors<br/>
  FileOpen $0 "C:\Windows\nodeversion.txt" r<br/>
  IfErrors done<br/>
  FileRead $0 $NODE_VERSION<br/>
  FileClose $0<br/>
  StrCmp $NODE_VERSION "v8.11.3" 0 nobla<br/>
       Messagebox MB_OK "not true, or maybe"<br/>
  nobla:<br/>
 Messagebox MB_OK "not true"<br/>
 Messagebox MB_OK $NODE_VERSION<br/>

  ${If} $NODE_VERSION == "v8.11.3"<br/>
    Call uninstallNode<br/>
    Goto FinishInit<br/>
  ${EndIf}<br/>

我想进入一个真实的陈述

【问题讨论】:

    标签: compare nsis


    【解决方案1】:

    FileRead 在返回的字符串中包含换行符,当您在​​寻找完全匹配的字符串时必须删除它们。

    !include "LogicLib.nsh"
    !include "StrFunc.nsh"
    ${StrTrimNewLines} ; Tell StrFunc.nsh to define this function for us
    
    Section
    FileOpen $0 "$windir\nodeversion.txt" r
    FileRead $0 $1
    ${StrTrimNewLines} $1 $1
    FileClose $0
    MessageBox mb_ok "Line 1=|$1|"
    ${If} "v8.11.3" == "$1"
      ; ...
    ${EndIf}
    SectionEnd
    

    【讨论】:

    • 完美,你让我开心!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-11-15
    • 1970-01-01
    • 2022-11-18
    • 1970-01-01
    • 2016-07-18
    • 1970-01-01
    相关资源
    最近更新 更多