将自定义wxs文件提供给CPackWIX

时间:2018-02-15 13:42:00

标签: cmake wix windows-installer cpack

我们正在冒险将基于WiX的msi代移植到CPackWIX,用于我们的CMake项目。

CPackWIX背后的想法似乎是使用heat.exe创建一个安装程序,其中包含安装目录中的文件。是否可以提供自定义wxs文件?

然后我们的想法是在我们的开发环境中利用CPack集成,即package目标,同时保持对用于创建msi安装程序的WiX描述的完全控制。

1 个答案:

答案 0 :(得分:0)

您可以使用CPACK_WIX_TEMPLATE变量。

我的安装程序有一个自定义wxs文件,其中包含一个自定义wxi文件。 在我的默认安装程序中,我按以下方式执行:

install(TARGETS yourTarget EXPORT "${PROJECT_NAME}${PROJECT_VERSION}"
    COMPONENT AppBinaries
    LIBRARY DESTINATION bin
    RUNTIME DESTINATION bin CONFIGURATIONS Release)

# this file is copied and renamed to main.wxs by CPack
set(CPACK_WIX_TEMPLATE   "${CMAKE_SOURCE_DIR}/packageInstallerCPack.wxs.in")
set(CPACK_WIX_UI_REF     "WixUI_FeatureTree")
set(CPACK_WIX_EXTENSIONS "WixUtilExtension")

configure_file("${CMAKE_SOURCE_DIR}/packageDefinesCPack.wxi.in" "${CMAKE_BINARY_DIR}/packageDefinesCPack.wxi" @ONLY)
set(CPACK_WIX_CANDLE_EXTRA_FLAGS "-I${CMAKE_BINARY_DIR}") # for packageDefinesCPack.wxi to work
set(CPACK_WIX_LIGHT_EXTRA_FLAGS  "-loc" "${CMAKE_SOURCE_DIR}/AdditionalWixUI_en-us.wxl") # for localization to work, not needed now, but who knows

include(CPack)
include(CPackWIX)

cpack_add_component(AppBinaries DISPLAY_NAME "Binaries" DESCRIPTION "${CPACK_PACKAGE_NAME} Binaries")

要构建我的MSI包,我使用cpack -C Release -G WIX