Включение сценария NSIS в CMake

Можно ли включить сценарий NSIS из CMake, который использует CPack вместе с NSIS? Похоже, я ограничен только несколькими командами (doc), но некоторые команды предполагают, что есть способ включить весь сценарий NSIS, в частности:

CPACK_NSIS_EXTRA_PREINSTALL_COMMANDS,
CPACK_NSIS_EXTRA_INSTALL_COMMANDS,
CPACK_NSIS_EXTRA_UNINSTALL_COMMANDS

Однако, когда я пытаюсь вызвать эти команды:

SET(CPACK_NSIS_EXTRA_PREINSTALL_COMMANDS "!include extra_preinstall.nsh")

Ничего не произошло. (Исключение /NONFATAL вызывает ошибку, поэтому, вероятно, скрипт не может быть найден.)

Проверка базовой функциональности:

SET(CPACK_NSIS_EXTRA_PREINSTALL_COMMANDS "MessageBox MB_OK \\\"Hello world!\\\"")

Ничего не делает с установщиком.

Почему не появляется кнопка Hello World? Почему файл сценария не найден (хотя я помещал его на каждый уровень иерархии CMake)?


person Vilda    schedule 08.06.2017    source источник
comment
Несколько лет назад я просто модифицировал скрипт NSIS, поставляемый с CMake, чтобы добавить необходимые мне функции.   -  person drescherjm    schedule 08.06.2017
comment
Я изучил это, и это подтвердило мое ощущение, что ДОЛЖЕН быть способ включить внешний скрипт NSIS.   -  person Vilda    schedule 08.06.2017
comment
Я называю свой замещающий скрипт NSIS NSIS.template.in и помещаю его в папку с локальными модулями, которая добавляется с помощью команды list(APPEND CMAKE_MODULE_PATH ${PROJECT_SOURCE_DIR}/CMake/External/Modules).   -  person drescherjm    schedule 08.06.2017
comment
@drescherjm Я решил это немного по-другому. Спасибо, в любом случае! :)   -  person Vilda    schedule 08.06.2017


Ответы (1)


Предварительная установка не означает, что она выполняется перед разделом установки, поэтому вам действительно нужно нажать «установить», после чего команда будет выполнена. То же самое касается установки и удаления.

Что касается включения внешних скриптов: включение с абсолютным путем решает все. Если абсолютный путь недоступен, его можно легко получить с помощью инструментов CMake.

person Vilda    schedule 08.06.2017