Как создать два exe-файла одним скриптом nsis?

Мне нужно создать два 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

person Prakash    schedule 22.10.2012    source источник


Ответы (2)


Атрибуты типа 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
person Anders    schedule 22.10.2012

Для меня это тоже работает (возможно, в 2012 году его не было):

!if ${FULL_PKG} == 1
    OutFile "FULLPKG.exe"
!else
    OutFile "PKG.exe"
!endif
person Bohne    schedule 13.02.2019