Как добавить параметр RequestExecutionLevel NSIS в CMakeLists.txt

Я пытаюсь заставить установщик, скомпилированный с помощью NSIS в Windows 7, работать без прав администратора. Проект настроен с помощью CMake и скомпилирован с помощью VC2010. Я понял, что я должен использовать

RequestExecutionLevel user

вариант. Мой вопрос: что я должен поместить в свой CMakeLists.txt, чтобы передать эту опцию в NSIS? я нашел

set(CPACK_NSIS_EXTRA_INSTALL_COMMANDS "RequestExecutionLevel user")

где-то в гугле, но тот выдает ошибку, что мол нельзя установить эту опцию в этом разделе.

Любая помощь приветствуется


person Hans    schedule 15.12.2011    source источник
comment
Я не знаю CMake, но в NSIS RequestExecutionLevel является атрибутом установщика (недействителен в разделе). Таким образом, вы можете разместить его в любом месте вашего скрипта, кроме раздела или функции. Это оно?   -  person zbynour    schedule 16.12.2011


Ответы (2)


Версия CMake, которая у меня есть, имеет @CPACK_NSIS_DEFINES@ в шаблоне NSIS, поэтому добавление set(CPACK_NSIS_DEFINES "RequestExecutionLevel user") в CMakeLists.txt также работает.

Хотя может потребоваться дополнительная работа для установки на основе компонентов.

person mlt    schedule 06.10.2014

Вы можете попробовать следующие шаги:

  1. Скопируйте NSIS.template.in в каталог вашего проекта, например. подкаталог с именем "упаковка":

    xcopy \cmake-install-path\modules\share\cmake-xxx\Modules\NSIS.template.in \your-project-directory\packaging\

  2. Добавьте RequestExecutionLevel user в NSIS.template.in

  3. Обновите CMAKE_MODULE_PATH в CMakeLists.txt:

    list(APPEND CMAKE_MODULE_PATH ${CMAKE_SOURCE_DIR}/packaging)

Затем пересоберите свой пакет, чтобы увидеть, работает ли он.

person Deqing    schedule 31.03.2012