NSIS-尝试比较两个字符串时出错

时间:2019-01-28 11:36:35

标签: compare nsis

我正在尝试将字符串与具有完全相同的值且无法正常工作的变量进行比较。
流程是:
  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/>

我想发表一个真实的声明

1 个答案:

答案 0 :(得分:0)

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