如何将NSIS的RequestExecutionLevel选项添加到CMakeLists.txt

时间:2011-12-15 15:08:54

标签: windows-7 cmake nsis cpack

我试图在Windows 7上使用NSIS编译的安装程序在没有管理员权限的情况下工作。该项目使用CMake建立并使用VC2010编译。我发现我必须使用

RequestExecutionLevel user

选项。我的问题是:我需要将什么内容放入我的CMakeLists.txt以将此选项传递给NSIS?我找到了

set(CPACK_NSIS_EXTRA_INSTALL_COMMANDS "RequestExecutionLevel user")
在谷歌的某个地方,但这会出错,并说此选项无法在此部分中设置。

非常感谢任何帮助

2 个答案:

答案 0 :(得分:4)

我拥有的CMake版本在NSIS模板中有@CPACK_NSIS_DEFINES@,因此将set(CPACK_NSIS_DEFINES "RequestExecutionLevel user")添加到CMakeLists.txt也可以完成这项工作。

虽然it may require extra work for component based install

答案 1 :(得分:2)

您可以尝试以下步骤:

  1. 将NSIS.template.in复制到您的项目目录,例如一个名为“packaging”的子目录:

      

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

  2. RequestExecutionLevel user添加到NSIS.template.in

  3. 在CMakeLists.txt中更新CMAKE_MODULE_PATH:

      

    list(APPEND CMAKE_MODULE_PATH ${CMAKE_SOURCE_DIR}/packaging)

  4. 然后重建你的包以查看它是否有效。