我们正在冒险将基于WiX的msi
代移植到CPackWIX
,用于我们的CMake项目。
CPackWIX
背后的想法似乎是使用heat.exe
创建一个安装程序,其中包含安装目录中的文件。是否可以提供自定义wxs
文件?
然后我们的想法是在我们的开发环境中利用CPack集成,即package
目标,同时保持对用于创建msi
安装程序的WiX描述的完全控制。
答案 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
。