Мне нужно создать два exe-файла с одним скриптом nsis. Один содержит zip-файл в виде полного пакета, а другой не содержит zip-файла. Я устанавливаю параметр в файле perl, который вызывает мой скрипт nsis и использует параметр в скрипте nsis. Проблема с "выходным файлом". Невозможно проверить состояние.
Пример:
передача параметра как $FULL_PKG =1 (с zip-файлом), =0 (без zip-файла) name "PKG" Strcmp ${FULL_PKG} "1" 0 1 outfile "FULLPKG.exe" outfile "PKG.exe"'
ERROR: command not valid outside section or function
Ответ 1 · Anders
Атрибуты типа Outfile не могут быть изменены во время выполнения (Код в разделах и функциях)
Вы можете создать определения, используя /D с makensis: makensis /DNOZIP yourscript.nsi, а затем проверить наличие этого определения:
!ifdef NOZIP
Outfile nozip.exe
!else
Outfile withzip.exe
!endif
...
Section
!ifndef NOZIP
File foo.zip ;Extract the zip file
!endif
SectionEnd
Ответ 2 · Bohne
Для меня это тоже работает (возможно, в 2012 году его не было):
!if ${FULL_PKG} == 1
OutFile "FULLPKG.exe"
!else
OutFile "PKG.exe"
!endif