【问题标题】:How do I add the RequestExecutionLevel option of NSIS to a CMakeLists.txt如何将 NSIS 的 RequestExecutionLevel 选项添加到 CMakeLists.txt
【发布时间】:2011-12-15 15:08:54
【问题描述】:

我正在尝试让一个在 Windows 7 上使用 NSIS 编译的安装程序在没有管理员权限的情况下工作。该项目使用 CMake 设置并使用 VC2010 编译。我发现我必须使用

RequestExecutionLevel user

选项。我的问题是:我必须在我的 CMakeLists.txt 中添加什么才能将此选项传递给 NSIS?我找到了

set(CPACK_NSIS_EXTRA_INSTALL_COMMANDS "RequestExecutionLevel user")

在 google 的某个地方,但是这给出了一个错误,说这个选项不能在这个部分中设置。

非常感谢任何帮助

【问题讨论】:

  • 我不知道 CMake,但在 NSIS 中,RequestExecutionLevel 是安装程序属性(在该部分中无效)。因此,您可以将它放在脚本中的任何位置,除了部分或函数。是这样吗?

标签: windows-7 cmake nsis cpack


【解决方案1】:

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

虽然it may require extra work for component based install.

【讨论】:

    【解决方案2】:

    您可以尝试以下步骤:

    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. 更新 CMakeLists.txt 中的 CMAKE_MODULE_PATH:

      list(APPEND CMAKE_MODULE_PATH ${CMAKE_SOURCE_DIR}/packaging)

    然后重建你的包,看看它是否有效。

    【讨论】:

      猜你喜欢
      • 2020-03-06
      • 2019-12-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-06-07
      • 1970-01-01
      • 1970-01-01
      • 2011-02-23
      相关资源
      最近更新 更多