【问题标题】:Set installation for Windows 10 to specify drive letter and path without spaces为 Windows 10 设置安装以指定不带空格的驱动器号和路径
【发布时间】:2020-09-14 20:26:10
【问题描述】:

我正在尝试使用 CPACK 和 NSIS 创建 Windows 安装程序。我正在使用 Windows 10、CMake GUI、NSIS 和 Visual Studio 社区版。

效果很好,只是我找不到选项,所以默认安装位置是:

 C:\package-version.patch (e.g. C:\apbs-3.0)

apbs 软件是一项协作成果,是跨平台的,但它不喜欢路径名中的“空格”,因此 Windows 10 x64 上 NSIS 的默认位置是:

 C:\Program Files\package version (e.g. C:\Program Files\apbs 3.0\)

我最接近的是:

 C:\\apbs 3.0

使用以下配置:

    string(TOLOWER ${PROJECT_NAME}         PACKAGE_NAME)
    set(CPACK_PACKAGE_NAME                 "${PACKAGE_NAME}")
    set(CPACK_PACKAGE_DESCRIPTION          "${PACKAGE_DESC}")
    set(CPACK_RESOURCE_FILE_LICENSE        "${PROJECT_SOURCE_DIR}/../LICENSE.md")
    set(CPACK_PACKAGE_DESCRIPTION_FILE     "${PROJECT_SOURCE_DIR}/README.md")
    set(CPACK_PACKAGING_INSTALL_PREFIX     "${PACKAGE_NAME}")
    set(CPACK_PACKAGE_VERSION              "${APBS_VERSION}")
    set(CPACK_PACKAGE_VERSION_PATCH        "0")
    set(CPACK_PACKAGE_VENDOR               "${VENDOR}")
    set(CPACK_PACKAGE_CONTACT              "${CONTACT}")
    set(CPACK_PACKAGE_FILE_NAME            "${PACKAGE_NAME}-${APBS_VERSION}")
    set(CPACK_STRIP_FILES                  ON)
    if(WIN32)
        # From: https://martinrotter.github.io/it-programming/2014/05/09/integrating-nsis-cmake/
        list(APPEND CPACK_GENERATOR              "NSIS")
        set(CPACK_PACKAGING_INSTALL_PREFIX       "\\\\${PACKAGE_NAME}-${APBS_VERSION}")
        set(CPACK_NSIS_INSTALL_ROOT              "C:\\\\")
    endif()

    include (CPack)

是否有一组神奇/未记录的 CPACK 变量来消除额外的“\”并将“空格”替换为“-”,以便我可以得到默认安装?

 C:\apbs-3.0\

【问题讨论】:

    标签: windows installation nsis cpack


    【解决方案1】:

    下面是安装目录,C:\APBS-3.0.0

    set(CMAKE_MAJOR_VERSION "3")
    set(CMAKE_MINOR_VERSION "0")
    set(CMAKE_MICRO_VERSION "0")
    set(PACKAGE_NAME                       "${PROJECT_NAME}")
    set(CPACK_PACKAGE_NAME                 "${PACKAGE_NAME}")
    set(CPACK_PACKAGE_DESCRIPTION          "APBS - Adaptive Poisson Boltzmann Solver")
    set(CPACK_RESOURCE_FILE_LICENSE        "${PROJECT_SOURCE_DIR}/../LICENSE.md")
    set(CPACK_PACKAGE_DESCRIPTION_FILE     "${PROJECT_SOURCE_DIR}/README.md")
    set(CPACK_SOURCE_IGNORE_FILES          "${PROJECT_BINARY_DIR};/.git/;.gitignore")
    set(CPACK_PACKAGE_VERSION_MAJOR        "${CMAKE_MAJOR_VERSION}")
    set(CPACK_PACKAGE_VERSION_MINOR        "${CMAKE_MINOR_VERSION}")
    set(CPACK_PACKAGE_VERSION_PATCH        "${CMAKE_MICRO_VERSION}")
    set(CPACK_PACKAGE_VENDOR               "PNNL")
    set(CPACK_PACKAGE_CONTACT              "APBS - https://github.com/Electrostatics/apbs-pdb2pqr")
    set(CPACK_PACKAGE_FILE_NAME            "${PACKAGE_NAME}-${APBS_VERSION}")
    set(CPACK_STRIP_FILES                   ON)
    
    if(WIN32)
        # From: https://martinrotter.github.io/it-programming/2014/05/09/integrating-nsis-cmake/
        SET(CPACK_NSIS_PACKAGE_NAME              "${PACKAGE_NAME}-${CMAKE_MAJOR_VERSION}.${CMAKE_MINOR_VERSION}.${CMAKE_MICRO_VERSION}")
        SET(CPACK_NSIS_DISPLAY_NAME              "${PACKAGE_NAME}-${CMAKE_MAJOR_VERSION}.${CMAKE_MINOR_VERSION}.${CMAKE_MICRO_VERSION}")
        SET(CPACK_PACKAGE_INSTALL_DIRECTORY      "${PACKAGE_NAME}-${CMAKE_MAJOR_VERSION}.${CMAKE_MINOR_VERSION}.${CMAKE_MICRO_VERSION}")
        SET(CPACK_NSIS_INSTALL_ROOT              "C:")
        set(CPACK_PACKAGE_INSTALL_REGISTRY_KEY   "${PACKAGE_NAME}-${MAJOR_VERSION}.${MINOR_VERSION}.${MICRO_VERSION}")
        list(APPEND CPACK_GENERATOR              "NSIS")
    endif()
    

    希望这可以帮助其他寻找类似解决方案的人。

    【讨论】:

      猜你喜欢
      • 2018-06-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-07-20
      • 1970-01-01
      • 2017-08-18
      • 2010-10-08
      相关资源
      最近更新 更多