Как отлаживать скрипт nsis? 3.05-2 выдает ошибку: Ошибка: незавершенная строка синтаксического анализа в макросе: _IncludeStrFunction - PullRequest
0 голосов
/ 29 мая 2020

Как отлаживать сценарий nsis?

Я обновил Ubuntu 19.10 до 20.04, что, похоже, обновляет nsis с v3.04-1 до v3.05-2. Теперь я получаю сообщение об ошибке в моем сценарии:

# makensis installer.nsi 
Processing config: /etc/nsisconf.nsh
Processing script file: "installer.nsi" (UTF8)
Error: unterminated string parsing line at macro:_IncludeStrFunction:7
Error in macro _IncludeStrFunction on macroline 7
!include: error in script: "../src/other/EnvVarUpdate.nsh" on line 49
Error in script "installer.nsi" on line 2 -- aborting creation process

Мой сценарий таков:

OutFile speedata-publisher-windows-386-3.9.14-installer.exe
!include "../src/other/EnvVarUpdate.nsh"
InstallDir $PROGRAMFILES\speedata-publisher
DirText "This will install speedata Publisher on your computer. Choose a directory"

Section
SetOutPath $INSTDIR
RMDir /r /REBOOTOK $INSTDIR
File /r /tmp/publisher-git/build/speedata-publisher\*.*
${EnvVarUpdate} $0 "PATH" "A" "HKCU" "$INSTDIR\bin"
WriteUninstaller $INSTDIR\Uninstall.exe
MessageBox MB_OK "Run speedata Publisher with 'sp' on the command.com prompt"
SectionEnd


Section "Uninstall"
${un.EnvVarUpdate} $0 "PATH" "R" "HKCU" "$INSTDIR\bin"
RMDir /r /REBOOTOK $INSTDIR
SectionEnd

, а EnvVarUpdate.nsh - от https://nsis.sourceforge.io/Environmental_Variables: _ append, _prepend, _and_remove_entries

Строка 49 в этом скрипте: !insertmacro _IncludeStrFunction StrTok

Результат моей команды с предыдущей версией 3.04-1:

Processing config: /etc/nsisconf.nsh
Processing script file: "build/installer.nsi" (UTF8)

Processed 1 file, writing output (x86-ansi):

Output: "/tmp/publisher-git/build/speedata-publisher-windows-386-3.9.14-installer.exe"
Install: 2 pages (128 bytes), 1 section (4120 bytes), 1139 instructions (31892 bytes), 647 strings (11565 bytes), 1 language table (230 bytes).
Uninstall: 1 page (128 bytes), 1 section (4120 bytes), 385 instructions (10780 bytes), 100 strings (1387 bytes), 1 language table (194 bytes).
Datablock optimizer saved 650630 bytes (~1.8%).

Using zlib compression.

EXE header size:               75264 / 76288 bytes
Install code:                  10537 / 45255 bytes
Install data:               34526923 / 62531730 bytes
Uninstall code+data:            2665 / 3163 bytes
CRC (0xFE2E922E):                  4 / 4 bytes

Total size:                 34615393 / 62656440 bytes (55.2%)

I Я не очень разбираюсь в скриптах nsis, поэтому я хотел бы знать, как найти, где может быть проблема.

1 Ответ

1 голос
/ 29 мая 2020

Произошло изменение внутренней работы StrFun c, и сторонний файл EnvVarUpdate.n sh из Wiki несовместим с ним.

Как обсуждалось здесь, вы можете попробовать исправить EnvVarUpdate.n sh, изменив !define un.${StrFuncName} "${Un${StrFuncName}}" на !define un.${StrFuncName} '${Un${StrFuncName}}'.

Вместо того, чтобы вручную исправлять этот файл, я бы рекомендовал вам использовать подключаемый модуль EnVar в качестве замены.

...