NSIS - Ошибка при попытке сравнить две строки - PullRequest
0 голосов
/ 28 января 2019

Я пытаюсь сравнить строку с переменной с точно таким же значением и не работает.Поток это:1. Откройте файл с одной строкой версии Node.Js;2. Прочитайте строку и сохраните в $NODE_VERSION3. Закрыть файл4. Проверьте, равен ли $NODE_VERSION «v8.11.3» - и это всегда возвращает false.

У меня уже было:1. Создайте другую переменную и установите в жестко заданные одинаковые значения для обоих и сравните.2. Сравните $ NODE_VERSION со строкой "v8.11.3"3. Сравните «1» = «1» и работает.4. Используйте If / EndIf5. Используйте 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 голосов
/ 28 января 2019

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
...