From 9c472b9482545230ac36205110df7090db7ea451 Mon Sep 17 00:00:00 2001 From: Brad King Date: Mon, 18 Mar 2024 14:04:25 -0400 Subject: Tests: Convert CPackWiXGenerator to RunCMake.CPack_WIX --- Tests/CMakeLists.txt | 22 ---- Tests/CPackWiXGenerator/CMakeLists.txt | 119 --------------------- Tests/CPackWiXGenerator/RunCPackVerifyResult.cmake | 78 -------------- Tests/CPackWiXGenerator/file with spaces.h | 0 Tests/CPackWiXGenerator/license.txt | 9 -- Tests/CPackWiXGenerator/mylib.cpp | 8 -- Tests/CPackWiXGenerator/mylib.h | 1 - Tests/CPackWiXGenerator/mylibapp.cpp | 6 -- Tests/CPackWiXGenerator/myotherapp.cpp | 3 - Tests/CPackWiXGenerator/patch.xml | 7 -- Tests/RunCMake/CMakeLists.txt | 5 + .../CPack_WIX/AppWiX-cpack-WIX-check.cmake | 1 + .../RunCMake/CPack_WIX/AppWiX-cpack-WIX-stdout.txt | 11 ++ Tests/RunCMake/CPack_WIX/AppWiX-verify-stdout.txt | 33 ++++++ Tests/RunCMake/CPack_WIX/RunCMakeTest.cmake | 5 + Tests/RunCMake/CPack_WIX/cpack-check-common.cmake | 6 ++ Tests/RunCMake/CPack_WIX/print-msi.ps1 | 29 +++++ Tests/RunCMake/RunCPack/AppWiX/CMakeLists.txt | 119 +++++++++++++++++++++ Tests/RunCMake/RunCPack/AppWiX/file with spaces.h | 0 Tests/RunCMake/RunCPack/AppWiX/license.txt | 9 ++ Tests/RunCMake/RunCPack/AppWiX/mylib.cpp | 8 ++ Tests/RunCMake/RunCPack/AppWiX/mylib.h | 1 + Tests/RunCMake/RunCPack/AppWiX/mylibapp.cpp | 6 ++ Tests/RunCMake/RunCPack/AppWiX/myotherapp.cpp | 3 + Tests/RunCMake/RunCPack/AppWiX/patch.xml | 7 ++ 25 files changed, 243 insertions(+), 253 deletions(-) delete mode 100644 Tests/CPackWiXGenerator/CMakeLists.txt delete mode 100644 Tests/CPackWiXGenerator/RunCPackVerifyResult.cmake delete mode 100644 Tests/CPackWiXGenerator/file with spaces.h delete mode 100644 Tests/CPackWiXGenerator/license.txt delete mode 100644 Tests/CPackWiXGenerator/mylib.cpp delete mode 100644 Tests/CPackWiXGenerator/mylib.h delete mode 100644 Tests/CPackWiXGenerator/mylibapp.cpp delete mode 100644 Tests/CPackWiXGenerator/myotherapp.cpp delete mode 100644 Tests/CPackWiXGenerator/patch.xml create mode 100644 Tests/RunCMake/CPack_WIX/AppWiX-cpack-WIX-check.cmake create mode 100644 Tests/RunCMake/CPack_WIX/AppWiX-cpack-WIX-stdout.txt create mode 100644 Tests/RunCMake/CPack_WIX/AppWiX-verify-stdout.txt create mode 100644 Tests/RunCMake/CPack_WIX/RunCMakeTest.cmake create mode 100644 Tests/RunCMake/CPack_WIX/cpack-check-common.cmake create mode 100755 Tests/RunCMake/CPack_WIX/print-msi.ps1 create mode 100644 Tests/RunCMake/RunCPack/AppWiX/CMakeLists.txt create mode 100644 Tests/RunCMake/RunCPack/AppWiX/file with spaces.h create mode 100644 Tests/RunCMake/RunCPack/AppWiX/license.txt create mode 100644 Tests/RunCMake/RunCPack/AppWiX/mylib.cpp create mode 100644 Tests/RunCMake/RunCPack/AppWiX/mylib.h create mode 100644 Tests/RunCMake/RunCPack/AppWiX/mylibapp.cpp create mode 100644 Tests/RunCMake/RunCPack/AppWiX/myotherapp.cpp create mode 100644 Tests/RunCMake/RunCPack/AppWiX/patch.xml diff --git a/Tests/CMakeLists.txt b/Tests/CMakeLists.txt index 52aba53..828191b 100644 --- a/Tests/CMakeLists.txt +++ b/Tests/CMakeLists.txt @@ -978,28 +978,6 @@ if(BUILD_TESTING) endif() endif() - if(WIN32) - if(CMake_TEST_CPACK_WIX) - add_test(CPackWiXGenerator ${CMAKE_CTEST_COMMAND} - -C \${CTEST_CONFIGURATION_TYPE} - --build-and-test - "${CMake_SOURCE_DIR}/Tests/CPackWiXGenerator" - "${CMake_BINARY_DIR}/Tests/CPackWiXGenerator" - ${build_generator_args} - --build-project CPackWiXGenerator - --build-options - --test-command ${CMAKE_CMAKE_COMMAND} - "-DCPackWiXGenerator_BINARY_DIR:PATH=${CMake_BINARY_DIR}/Tests/CPackWiXGenerator" - "-Dno_verify:BOOL=${CMake_TEST_WIX_NO_VERIFY}" - "-Dconfig=\${CTEST_CONFIGURATION_TYPE}" - -P "${CMake_SOURCE_DIR}/Tests/CPackWiXGenerator/RunCPackVerifyResult.cmake") - - set_property(TEST CPackWiXGenerator PROPERTY - ATTACHED_FILES_ON_FAIL - "${CMake_BINARY_DIR}/Tests/CPackWiXGenerator/_CPack_Packages/win32/WIX/wix.log") - endif() - endif() - # On Windows run the CPackInnoSetupGenerator test if(WIN32 AND CMake_TEST_CPACK_INNOSETUP) add_test(CPackInnoSetupGenerator ${CMAKE_CTEST_COMMAND} diff --git a/Tests/CPackWiXGenerator/CMakeLists.txt b/Tests/CPackWiXGenerator/CMakeLists.txt deleted file mode 100644 index 33fdc5e..0000000 --- a/Tests/CPackWiXGenerator/CMakeLists.txt +++ /dev/null @@ -1,119 +0,0 @@ -cmake_minimum_required(VERSION 3.5) - -project(CPackWiXGenerator) - -add_library(mylib mylib.cpp) - -add_executable(my-libapp mylibapp.cpp) -target_link_libraries(my-libapp mylib) - -add_executable(my-other-app myotherapp.cpp) - -file(MAKE_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/empty) -install(DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/empty - DESTINATION extras - COMPONENT extras) - -install(TARGETS mylib - ARCHIVE - DESTINATION lib - COMPONENT libraries) - -install(TARGETS my-libapp - RUNTIME - DESTINATION bin - COMPONENT applications) - -install(TARGETS my-other-app - RUNTIME - DESTINATION bin - COMPONENT applications2) - -install(FILES mylib.h "file with spaces.h" - DESTINATION include - COMPONENT headers) - -set(CPACK_GENERATOR "WIX") - -set(CPACK_PACKAGE_NAME "MyLib") -set(CPACK_PACKAGE_VENDOR "CMake.org") -set(CPACK_PACKAGE_CONTACT "somebody@cmake.org") -set(CPACK_PACKAGE_DESCRIPTION_SUMMARY - "MyLib - CPack Component Installation Example") - -set(CPACK_PACKAGE_VERSION_MAJOR "1") -set(CPACK_PACKAGE_VERSION_MINOR "0") -set(CPACK_PACKAGE_VERSION_PATCH "0") -set(CPACK_PACKAGE_INSTALL_DIRECTORY "CPack Component Example") - -set(CPACK_WIX_UPGRADE_GUID "BF20CE5E-7F7C-401D-8F7C-AB45E8D170E6") -set(CPACK_WIX_UNINSTALL "1") - -# Support non-interactive sessions (like CI). -set(CPACK_WIX_LIGHT_EXTRA_FLAGS "-sval") - -set(CPACK_PACKAGE_EXECUTABLES - "my-libapp" "CPack WiX Test" - "my-other-app" "Second CPack WiX Test" -) - -set(CPACK_CREATE_DESKTOP_LINKS - "my-libapp" - "my-other-app" -) - -set(CPACK_WIX_PATCH_FILE "${CMAKE_CURRENT_SOURCE_DIR}/patch.xml") - -set(CPACK_RESOURCE_FILE_LICENSE "${CMAKE_CURRENT_SOURCE_DIR}/license.txt") - -set(CPACK_WIX_PROPERTY_ARPCOMMENTS "My Custom ARPCOMMENTS") -set(CPACK_WIX_PROPERTY_ARPHELPLINK "https://cmake.org") - -include(CPack) - -cpack_add_install_type(Full DISPLAY_NAME "Everything") -cpack_add_install_type(Developer) - -cpack_add_component_group(Runtime) - -cpack_add_component_group(Development - EXPANDED - DESCRIPTION "All of the tools you'll ever need to develop software") - -cpack_add_component(extras - DISPLAY_NAME "Extras" - DESCRIPTION "Extras" - GROUP Runtime - INSTALL_TYPES Full) - -cpack_add_component(applications - REQUIRED - DISPLAY_NAME "MyLib Application" - DESCRIPTION "An extremely useful application that makes use of MyLib" - GROUP Runtime - INSTALL_TYPES Full) - -cpack_add_component(applications2 - DISPLAY_NAME "MyLib Extra Application" - DESCRIPTION "Another extremely useful application that makes use of MyLib" - GROUP Runtime - INSTALL_TYPES Full) - -cpack_add_component(documentation - DISPLAY_NAME "MyLib Documentation" - DESCRIPTION "The extensive suite of MyLib Application documentation files" - GROUP Runtime - INSTALL_TYPES Full) - -cpack_add_component(libraries - DISPLAY_NAME "Libraries" - DESCRIPTION "Static libraries used to build programs with MyLib" - GROUP Development - INSTALL_TYPES Developer Full) - -cpack_add_component(headers - DISPLAY_NAME "C++ Headers" - DESCRIPTION "C/C++ header files for use with MyLib" - GROUP Development - DEPENDS libraries - INSTALL_TYPES Developer Full) diff --git a/Tests/CPackWiXGenerator/RunCPackVerifyResult.cmake b/Tests/CPackWiXGenerator/RunCPackVerifyResult.cmake deleted file mode 100644 index 28665ee..0000000 --- a/Tests/CPackWiXGenerator/RunCPackVerifyResult.cmake +++ /dev/null @@ -1,78 +0,0 @@ -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}") - -if(config) - set(_C_config -C ${config}) -endif() - -execute_process(COMMAND "${CMAKE_CPACK_COMMAND}" - ${_C_config} - 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) - find_program(WIX_PROGRAM NAMES ${command} NO_CACHE PATHS "${WIX_ROOT}" PATH_SUFFIXES "bin") - if(NOT 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) -if (NOT no_verify) - run_wix_command(smoke -nologo -wx -sw1076 "${installer_file}") -endif () diff --git a/Tests/CPackWiXGenerator/file with spaces.h b/Tests/CPackWiXGenerator/file with spaces.h deleted file mode 100644 index e69de29..0000000 diff --git a/Tests/CPackWiXGenerator/license.txt b/Tests/CPackWiXGenerator/license.txt deleted file mode 100644 index 7942783..0000000 --- a/Tests/CPackWiXGenerator/license.txt +++ /dev/null @@ -1,9 +0,0 @@ -hello world -merhaba dünya -ハローワールド -привет мир -مرحبا العالم -你好世界 - -4-Byte sequences: - Perch (Fish) 𩶘 Elevator 𨋢! diff --git a/Tests/CPackWiXGenerator/mylib.cpp b/Tests/CPackWiXGenerator/mylib.cpp deleted file mode 100644 index 8d63071..0000000 --- a/Tests/CPackWiXGenerator/mylib.cpp +++ /dev/null @@ -1,8 +0,0 @@ -#include "mylib.h" - -#include "stdio.h" - -void mylib_function() -{ - printf("This is mylib"); -} diff --git a/Tests/CPackWiXGenerator/mylib.h b/Tests/CPackWiXGenerator/mylib.h deleted file mode 100644 index 5d0a822..0000000 --- a/Tests/CPackWiXGenerator/mylib.h +++ /dev/null @@ -1 +0,0 @@ -void mylib_function(); diff --git a/Tests/CPackWiXGenerator/mylibapp.cpp b/Tests/CPackWiXGenerator/mylibapp.cpp deleted file mode 100644 index a438ac7..0000000 --- a/Tests/CPackWiXGenerator/mylibapp.cpp +++ /dev/null @@ -1,6 +0,0 @@ -#include "mylib.h" - -int main() -{ - mylib_function(); -} diff --git a/Tests/CPackWiXGenerator/myotherapp.cpp b/Tests/CPackWiXGenerator/myotherapp.cpp deleted file mode 100644 index 5047a34..0000000 --- a/Tests/CPackWiXGenerator/myotherapp.cpp +++ /dev/null @@ -1,3 +0,0 @@ -int main() -{ -} diff --git a/Tests/CPackWiXGenerator/patch.xml b/Tests/CPackWiXGenerator/patch.xml deleted file mode 100644 index 13c392d..0000000 --- a/Tests/CPackWiXGenerator/patch.xml +++ /dev/null @@ -1,7 +0,0 @@ - - - - - diff --git a/Tests/RunCMake/CMakeLists.txt b/Tests/RunCMake/CMakeLists.txt index d4bb490..a541e8d 100644 --- a/Tests/RunCMake/CMakeLists.txt +++ b/Tests/RunCMake/CMakeLists.txt @@ -1096,6 +1096,11 @@ if(CMAKE_SYSTEM_PROCESSOR STREQUAL "e2k" AND NOT DEFINED CMake_TEST_E2K_BROKEN_L endif() add_RunCMake_test_group(CPack "${cpack_tests}") + +if(CMake_TEST_CPACK_WIX) + add_RunCMake_test(CPack_WIX) +endif() + # add a test to make sure symbols are exported from a shared library # for MSVC compilers CMAKE_WINDOWS_EXPORT_ALL_SYMBOLS property is used add_RunCMake_test(AutoExportDll diff --git a/Tests/RunCMake/CPack_WIX/AppWiX-cpack-WIX-check.cmake b/Tests/RunCMake/CPack_WIX/AppWiX-cpack-WIX-check.cmake new file mode 100644 index 0000000..a7a28ae --- /dev/null +++ b/Tests/RunCMake/CPack_WIX/AppWiX-cpack-WIX-check.cmake @@ -0,0 +1 @@ +include(${RunCMake_SOURCE_DIR}/cpack-check-common.cmake) diff --git a/Tests/RunCMake/CPack_WIX/AppWiX-cpack-WIX-stdout.txt b/Tests/RunCMake/CPack_WIX/AppWiX-cpack-WIX-stdout.txt new file mode 100644 index 0000000..585166d --- /dev/null +++ b/Tests/RunCMake/CPack_WIX/AppWiX-cpack-WIX-stdout.txt @@ -0,0 +1,11 @@ +CPack: Create package using WIX +CPack: Install projects +CPack: - Install project: CPackWiXGenerator \[Release\] +CPack: - Install component: applications +CPack: - Install component: applications2 +CPack: - Install component: extras +CPack: - Install component: headers +CPack: - Install component: libraries +CPack: Create package +CPack: - package: [^ +]*/Tests/RunCMake/CPack_WIX/AppWiX-build/MyLib-1\.0\.0-win64\.msi generated\. diff --git a/Tests/RunCMake/CPack_WIX/AppWiX-verify-stdout.txt b/Tests/RunCMake/CPack_WIX/AppWiX-verify-stdout.txt new file mode 100644 index 0000000..68f58ac --- /dev/null +++ b/Tests/RunCMake/CPack_WIX/AppWiX-verify-stdout.txt @@ -0,0 +1,33 @@ +-- MyLib-1\.0\.0-win64\.msi +Component: 'CM_CP_applications.bin.my_libapp.exe' 'CM_DP_applications.bin' +Component: 'CM_SHORTCUT_applications' 'PROGRAM_MENU_FOLDER' +Component: 'CM_SHORTCUT_DESKTOP_applications' 'DesktopFolder' +Component: 'CM_CP_applications2.bin.my_other_app.exe' 'CM_DP_applications2.bin' +Component: 'CM_SHORTCUT_applications2' 'PROGRAM_MENU_FOLDER' +Component: 'CM_SHORTCUT_DESKTOP_applications2' 'DesktopFolder' +Component: 'CM_C_EMPTY_CM_DP_extras.extras.empty' 'CM_DP_extras.extras.empty' +Component: 'CM_CP_headers.include.file_with_spaces.h' 'CM_DP_headers.include' +Component: 'CM_CP_headers.include.mylib.h' 'CM_DP_headers.include' +Component: 'CM_CP_libraries.lib.mylib.lib' 'CM_DP_libraries.lib' +Directory: 'INSTALL_ROOT' 'ProgramFiles64Folder' '[^']*\|CPack Component Example' +Directory: 'CM_DP_applications.bin' 'INSTALL_ROOT' 'bin' +Directory: 'PROGRAM_MENU_FOLDER' 'ProgramMenuFolder' 'MyLib' +Directory: 'DesktopFolder' 'TARGETDIR' 'Desktop' +Directory: 'CM_DP_applications2.bin' 'INSTALL_ROOT' 'bin' +Directory: 'CM_DP_extras.extras.empty' 'CM_DP_extras.extras' 'empty' +Directory: 'CM_DP_headers.include' 'INSTALL_ROOT' 'include' +Directory: 'CM_DP_libraries.lib' 'INSTALL_ROOT' 'lib' +Directory: 'CM_DP_extras.extras' 'INSTALL_ROOT' 'extras' +Directory: 'ProgramFiles64Folder' 'TARGETDIR' '.' +Directory: 'TARGETDIR' '' 'SourceDir' +Directory: 'ProgramMenuFolder' 'TARGETDIR' '.' +File: 'CM_FP_applications.bin.my_libapp.exe' 'CM_CP_applications.bin.my_libapp.exe' '[^']*\|my-libapp.exe' +File: 'CM_FP_applications2.bin.my_other_app.exe' 'CM_CP_applications2.bin.my_other_app.exe' '[^']*\|my-other-app.exe' +File: 'CM_FP_headers.include.file_with_spaces.h' 'CM_CP_headers.include.file_with_spaces.h' '[^']*\|file with spaces.h' +File: 'CM_FP_headers.include.mylib.h' 'CM_CP_headers.include.mylib.h' 'mylib.h' +File: 'CM_FP_libraries.lib.mylib.lib' 'CM_CP_libraries.lib.mylib.lib' 'mylib.lib' +Shortcut: 'CM_SP_applications.bin.my_libapp.exe' 'PROGRAM_MENU_FOLDER' '[^']*\|CPack WiX Test' 'CM_SHORTCUT_applications' +Shortcut: 'CM_DSP_applications.bin.my_libapp.exe' 'DesktopFolder' '[^']*\|CPack WiX Test' 'CM_SHORTCUT_DESKTOP_applications' +Shortcut: 'CM_SP_applications2.bin.my_other_app.exe' 'PROGRAM_MENU_FOLDER' '[^']*\|Second CPack WiX Test' 'CM_SHORTCUT_applications2' +Shortcut: 'CM_DSP_applications2.bin.my_other_app.exe' 'DesktopFolder' '[^']*\|Second CPack WiX Test' 'CM_SHORTCUT_DESKTOP_applications2' +-- diff --git a/Tests/RunCMake/CPack_WIX/RunCMakeTest.cmake b/Tests/RunCMake/CPack_WIX/RunCMakeTest.cmake new file mode 100644 index 0000000..1e81497 --- /dev/null +++ b/Tests/RunCMake/CPack_WIX/RunCMakeTest.cmake @@ -0,0 +1,5 @@ +include(RunCPack) + +set(RunCPack_GENERATORS WIX) + +run_cpack(AppWiX BUILD GLOB *.msi VERIFY powershell -ExecutionPolicy Bypass -File ${CMAKE_CURRENT_LIST_DIR}/print-msi.ps1) diff --git a/Tests/RunCMake/CPack_WIX/cpack-check-common.cmake b/Tests/RunCMake/CPack_WIX/cpack-check-common.cmake new file mode 100644 index 0000000..2f16d71 --- /dev/null +++ b/Tests/RunCMake/CPack_WIX/cpack-check-common.cmake @@ -0,0 +1,6 @@ +file(GLOB wix_log_file RELATIVE "${RunCMake_TEST_BINARY_DIR}" "${RunCMake_TEST_BINARY_DIR}/_CPack_Packages/*/WIX/wix.log") +if(wix_log_file) + file(READ "${RunCMake_TEST_BINARY_DIR}/${wix_log_file}" wix_log) + string(REPLACE "\n" "\n wix-log> " wix_log " wix-log> ${wix_log}") + set(RunCMake_TEST_FAILURE_MESSAGE "${wix_log_file}:\n${wix_log}") +endif() diff --git a/Tests/RunCMake/CPack_WIX/print-msi.ps1 b/Tests/RunCMake/CPack_WIX/print-msi.ps1 new file mode 100755 index 0000000..01fdbc8 --- /dev/null +++ b/Tests/RunCMake/CPack_WIX/print-msi.ps1 @@ -0,0 +1,29 @@ +# https://learn.microsoft.com/en-us/windows/win32/msi/database-tables + +param ( + $file + ) + +function printTable { + param ( + $msi, + [string]$name, + [int[]]$columns = (1) + ) + + try { + $view = $msi.OpenView("select * from " + $name) + $view.Execute() + while ($record = $view.Fetch()) { + Write-Host ($name + ": " + ($columns | ForEach-Object {"'" + $record.StringData($_) + "'"})) + } + } catch {} +} + +$installer = New-Object -ComObject WindowsInstaller.Installer +$msi = $installer.OpenDatabase($file, 0) + +printTable -msi $msi -name "Component" -columns 1,3 +printTable -msi $msi -name "Directory" -columns 1,2,3 +printTable -msi $msi -name "File" -columns 1,2,3 +printTable -msi $msi -name "Shortcut" -columns 1,2,3,4 diff --git a/Tests/RunCMake/RunCPack/AppWiX/CMakeLists.txt b/Tests/RunCMake/RunCPack/AppWiX/CMakeLists.txt new file mode 100644 index 0000000..33fdc5e --- /dev/null +++ b/Tests/RunCMake/RunCPack/AppWiX/CMakeLists.txt @@ -0,0 +1,119 @@ +cmake_minimum_required(VERSION 3.5) + +project(CPackWiXGenerator) + +add_library(mylib mylib.cpp) + +add_executable(my-libapp mylibapp.cpp) +target_link_libraries(my-libapp mylib) + +add_executable(my-other-app myotherapp.cpp) + +file(MAKE_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/empty) +install(DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/empty + DESTINATION extras + COMPONENT extras) + +install(TARGETS mylib + ARCHIVE + DESTINATION lib + COMPONENT libraries) + +install(TARGETS my-libapp + RUNTIME + DESTINATION bin + COMPONENT applications) + +install(TARGETS my-other-app + RUNTIME + DESTINATION bin + COMPONENT applications2) + +install(FILES mylib.h "file with spaces.h" + DESTINATION include + COMPONENT headers) + +set(CPACK_GENERATOR "WIX") + +set(CPACK_PACKAGE_NAME "MyLib") +set(CPACK_PACKAGE_VENDOR "CMake.org") +set(CPACK_PACKAGE_CONTACT "somebody@cmake.org") +set(CPACK_PACKAGE_DESCRIPTION_SUMMARY + "MyLib - CPack Component Installation Example") + +set(CPACK_PACKAGE_VERSION_MAJOR "1") +set(CPACK_PACKAGE_VERSION_MINOR "0") +set(CPACK_PACKAGE_VERSION_PATCH "0") +set(CPACK_PACKAGE_INSTALL_DIRECTORY "CPack Component Example") + +set(CPACK_WIX_UPGRADE_GUID "BF20CE5E-7F7C-401D-8F7C-AB45E8D170E6") +set(CPACK_WIX_UNINSTALL "1") + +# Support non-interactive sessions (like CI). +set(CPACK_WIX_LIGHT_EXTRA_FLAGS "-sval") + +set(CPACK_PACKAGE_EXECUTABLES + "my-libapp" "CPack WiX Test" + "my-other-app" "Second CPack WiX Test" +) + +set(CPACK_CREATE_DESKTOP_LINKS + "my-libapp" + "my-other-app" +) + +set(CPACK_WIX_PATCH_FILE "${CMAKE_CURRENT_SOURCE_DIR}/patch.xml") + +set(CPACK_RESOURCE_FILE_LICENSE "${CMAKE_CURRENT_SOURCE_DIR}/license.txt") + +set(CPACK_WIX_PROPERTY_ARPCOMMENTS "My Custom ARPCOMMENTS") +set(CPACK_WIX_PROPERTY_ARPHELPLINK "https://cmake.org") + +include(CPack) + +cpack_add_install_type(Full DISPLAY_NAME "Everything") +cpack_add_install_type(Developer) + +cpack_add_component_group(Runtime) + +cpack_add_component_group(Development + EXPANDED + DESCRIPTION "All of the tools you'll ever need to develop software") + +cpack_add_component(extras + DISPLAY_NAME "Extras" + DESCRIPTION "Extras" + GROUP Runtime + INSTALL_TYPES Full) + +cpack_add_component(applications + REQUIRED + DISPLAY_NAME "MyLib Application" + DESCRIPTION "An extremely useful application that makes use of MyLib" + GROUP Runtime + INSTALL_TYPES Full) + +cpack_add_component(applications2 + DISPLAY_NAME "MyLib Extra Application" + DESCRIPTION "Another extremely useful application that makes use of MyLib" + GROUP Runtime + INSTALL_TYPES Full) + +cpack_add_component(documentation + DISPLAY_NAME "MyLib Documentation" + DESCRIPTION "The extensive suite of MyLib Application documentation files" + GROUP Runtime + INSTALL_TYPES Full) + +cpack_add_component(libraries + DISPLAY_NAME "Libraries" + DESCRIPTION "Static libraries used to build programs with MyLib" + GROUP Development + INSTALL_TYPES Developer Full) + +cpack_add_component(headers + DISPLAY_NAME "C++ Headers" + DESCRIPTION "C/C++ header files for use with MyLib" + GROUP Development + DEPENDS libraries + INSTALL_TYPES Developer Full) diff --git a/Tests/RunCMake/RunCPack/AppWiX/file with spaces.h b/Tests/RunCMake/RunCPack/AppWiX/file with spaces.h new file mode 100644 index 0000000..e69de29 diff --git a/Tests/RunCMake/RunCPack/AppWiX/license.txt b/Tests/RunCMake/RunCPack/AppWiX/license.txt new file mode 100644 index 0000000..7942783 --- /dev/null +++ b/Tests/RunCMake/RunCPack/AppWiX/license.txt @@ -0,0 +1,9 @@ +hello world +merhaba dünya +ハローワールド +привет мир +مرحبا العالم +你好世界 + +4-Byte sequences: + Perch (Fish) 𩶘 Elevator 𨋢! diff --git a/Tests/RunCMake/RunCPack/AppWiX/mylib.cpp b/Tests/RunCMake/RunCPack/AppWiX/mylib.cpp new file mode 100644 index 0000000..8d63071 --- /dev/null +++ b/Tests/RunCMake/RunCPack/AppWiX/mylib.cpp @@ -0,0 +1,8 @@ +#include "mylib.h" + +#include "stdio.h" + +void mylib_function() +{ + printf("This is mylib"); +} diff --git a/Tests/RunCMake/RunCPack/AppWiX/mylib.h b/Tests/RunCMake/RunCPack/AppWiX/mylib.h new file mode 100644 index 0000000..5d0a822 --- /dev/null +++ b/Tests/RunCMake/RunCPack/AppWiX/mylib.h @@ -0,0 +1 @@ +void mylib_function(); diff --git a/Tests/RunCMake/RunCPack/AppWiX/mylibapp.cpp b/Tests/RunCMake/RunCPack/AppWiX/mylibapp.cpp new file mode 100644 index 0000000..a438ac7 --- /dev/null +++ b/Tests/RunCMake/RunCPack/AppWiX/mylibapp.cpp @@ -0,0 +1,6 @@ +#include "mylib.h" + +int main() +{ + mylib_function(); +} diff --git a/Tests/RunCMake/RunCPack/AppWiX/myotherapp.cpp b/Tests/RunCMake/RunCPack/AppWiX/myotherapp.cpp new file mode 100644 index 0000000..5047a34 --- /dev/null +++ b/Tests/RunCMake/RunCPack/AppWiX/myotherapp.cpp @@ -0,0 +1,3 @@ +int main() +{ +} diff --git a/Tests/RunCMake/RunCPack/AppWiX/patch.xml b/Tests/RunCMake/RunCPack/AppWiX/patch.xml new file mode 100644 index 0000000..13c392d --- /dev/null +++ b/Tests/RunCMake/RunCPack/AppWiX/patch.xml @@ -0,0 +1,7 @@ + + + + + -- cgit v0.12 From 406e207e74e4071700f23cd4675416c694134d80 Mon Sep 17 00:00:00 2001 From: Brad King Date: Mon, 18 Mar 2024 15:09:54 -0400 Subject: Tests: Teach RunCMake.CPack_WIX to honor windows-arm64 hosts --- Tests/RunCMake/CPack_WIX/AppWiX-cpack-WIX-stdout.txt | 2 +- Tests/RunCMake/CPack_WIX/AppWiX-verify-stdout.txt | 2 +- Tests/RunCMake/RunCPack/AppWiX/CMakeLists.txt | 5 +++++ 3 files changed, 7 insertions(+), 2 deletions(-) diff --git a/Tests/RunCMake/CPack_WIX/AppWiX-cpack-WIX-stdout.txt b/Tests/RunCMake/CPack_WIX/AppWiX-cpack-WIX-stdout.txt index 585166d..110b36e 100644 --- a/Tests/RunCMake/CPack_WIX/AppWiX-cpack-WIX-stdout.txt +++ b/Tests/RunCMake/CPack_WIX/AppWiX-cpack-WIX-stdout.txt @@ -8,4 +8,4 @@ CPack: - Install component: headers CPack: - Install component: libraries CPack: Create package CPack: - package: [^ -]*/Tests/RunCMake/CPack_WIX/AppWiX-build/MyLib-1\.0\.0-win64\.msi generated\. +]*/Tests/RunCMake/CPack_WIX/AppWiX-build/MyLib-1\.0\.0-(win64|windows-arm64)\.msi generated\. diff --git a/Tests/RunCMake/CPack_WIX/AppWiX-verify-stdout.txt b/Tests/RunCMake/CPack_WIX/AppWiX-verify-stdout.txt index 68f58ac..4713447 100644 --- a/Tests/RunCMake/CPack_WIX/AppWiX-verify-stdout.txt +++ b/Tests/RunCMake/CPack_WIX/AppWiX-verify-stdout.txt @@ -1,4 +1,4 @@ --- MyLib-1\.0\.0-win64\.msi +-- MyLib-1\.0\.0-(win64|windows-arm64)\.msi Component: 'CM_CP_applications.bin.my_libapp.exe' 'CM_DP_applications.bin' Component: 'CM_SHORTCUT_applications' 'PROGRAM_MENU_FOLDER' Component: 'CM_SHORTCUT_DESKTOP_applications' 'DesktopFolder' diff --git a/Tests/RunCMake/RunCPack/AppWiX/CMakeLists.txt b/Tests/RunCMake/RunCPack/AppWiX/CMakeLists.txt index 33fdc5e..affd4d4 100644 --- a/Tests/RunCMake/RunCPack/AppWiX/CMakeLists.txt +++ b/Tests/RunCMake/RunCPack/AppWiX/CMakeLists.txt @@ -46,6 +46,11 @@ set(CPACK_PACKAGE_VERSION_MINOR "0") set(CPACK_PACKAGE_VERSION_PATCH "0") set(CPACK_PACKAGE_INSTALL_DIRECTORY "CPack Component Example") +if(CMAKE_CXX_COMPILER_ARCHITECTURE_ID STREQUAL "ARM64") + set(CPACK_WIX_ARCHITECTURE arm64) + set(CPACK_SYSTEM_NAME windows-arm64) +endif() + set(CPACK_WIX_UPGRADE_GUID "BF20CE5E-7F7C-401D-8F7C-AB45E8D170E6") set(CPACK_WIX_UNINSTALL "1") -- cgit v0.12