mirror of
https://github.com/reactos/CMake.git
synced 2024-12-20 10:38:08 +00:00
85baac1503
This new CPack generator produces an *.msi installer file. Requires having the WiX Toolset installed in order to work properly. Download the WiX Toolset installer "WiX36.exe" here: http://wix.codeplex.com/releases/view/93929
73 lines
2.3 KiB
CMake
73 lines
2.3 KiB
CMake
message(STATUS "=============================================================")
|
|
message(STATUS "CTEST_FULL_OUTPUT (Avoid ctest truncation of output)")
|
|
message(STATUS "")
|
|
|
|
if(NOT CPackWiXGenerator_BINARY_DIR)
|
|
message(FATAL_ERROR "CPackWiXGenerator_BINARY_DIR not set")
|
|
endif()
|
|
|
|
message(STATUS "CMAKE_COMMAND: ${CMAKE_COMMAND}")
|
|
message(STATUS "CMAKE_CPACK_COMMAND: ${CMAKE_CPACK_COMMAND}")
|
|
message(STATUS "CPackWiXGenerator_BINARY_DIR: ${CPackWiXGenerator_BINARY_DIR}")
|
|
|
|
execute_process(COMMAND "${CMAKE_CPACK_COMMAND}"
|
|
RESULT_VARIABLE CPack_result
|
|
OUTPUT_VARIABLE CPack_output
|
|
ERROR_VARIABLE CPack_error
|
|
WORKING_DIRECTORY "${CPackWiXGenerator_BINARY_DIR}")
|
|
|
|
if(CPack_result)
|
|
message(FATAL_ERROR "CPack execution went wrong!, CPack_output=${CPack_output}, CPack_error=${CPack_error}")
|
|
else ()
|
|
message(STATUS "CPack_output=${CPack_output}")
|
|
endif()
|
|
|
|
set(expected_file_mask "*.msi")
|
|
file(GLOB installer_file "${expected_file_mask}")
|
|
|
|
message(STATUS "installer_file='${installer_file}'")
|
|
message(STATUS "expected_file_mask='${expected_file_mask}'")
|
|
|
|
if(NOT installer_file)
|
|
message(FATAL_ERROR "installer_file does not exist.")
|
|
endif()
|
|
|
|
function(run_wix_command command)
|
|
file(TO_CMAKE_PATH "$ENV{WIX}" WIX_ROOT)
|
|
set(WIX_PROGRAM "${WIX_ROOT}/bin/${command}.exe")
|
|
|
|
if(NOT EXISTS "${WIX_PROGRAM}")
|
|
message(FATAL_ERROR "Failed to find WiX Tool: ${WIX_PROGRAM}")
|
|
endif()
|
|
|
|
message(STATUS "Running WiX Tool: ${command} ${ARGN}")
|
|
|
|
execute_process(COMMAND "${WIX_PROGRAM}" ${ARGN}
|
|
RESULT_VARIABLE WIX_result
|
|
OUTPUT_VARIABLE WIX_output
|
|
ERROR_VARIABLE WIX_output
|
|
WORKING_DIRECTORY "${CPackWiXGenerator_BINARY_DIR}")
|
|
|
|
message(STATUS "${command} Output: \n${WIX_output}")
|
|
|
|
if(WIX_result)
|
|
message(FATAL_ERROR "WiX ${command} failed: ${WIX_result}")
|
|
endif()
|
|
endfunction()
|
|
|
|
file(GLOB WXS_SOURCE_FILES
|
|
"${CPackWiXGenerator_BINARY_DIR}/_CPack_Packages/*/WIX/*.wxs")
|
|
|
|
if(NOT WXS_SOURCE_FILES)
|
|
message(FATAL_ERROR "Failed finding WiX source files to validate.")
|
|
endif()
|
|
|
|
foreach(WXS_SOURCE_FILE IN LISTS WXS_SOURCE_FILES)
|
|
run_wix_command(wixcop "${WXS_SOURCE_FILE}")
|
|
endforeach()
|
|
|
|
# error SMOK1076 : ICE61: This product should remove only older
|
|
# versions of itself. The Maximum version is not less
|
|
# than the current product. (1.0.0 1.0.0)
|
|
run_wix_command(smoke -nologo -wx -sw1076 "${installer_file}")
|