From 6e3f6e925d4207fec570a3d2c0c0ec7161ba0770 Mon Sep 17 00:00:00 2001 From: Nils Gladitz Date: Thu, 11 Sep 2025 14:36:10 +0200 Subject: [PATCH] CPack/WiX: Allow multiple empty top-level components Avoid generating empty / conflicting directory components for the installation root which is shared across components and (except for the degenerate case of an empty installer) will always be created implicitly. --- Source/CPack/WiX/cmCPackWIXGenerator.cxx | 4 ++++ Tests/RunCMake/CPack_WIX/3-AppWiX-cpack-WIX-stdout.txt | 2 ++ Tests/RunCMake/CPack_WIX/4-AppWiX-cpack-WIX-stdout.txt | 2 ++ Tests/RunCMake/RunCPack/AppWiX/CMakeLists.txt | 3 +++ 4 files changed, 11 insertions(+) diff --git a/Source/CPack/WiX/cmCPackWIXGenerator.cxx b/Source/CPack/WiX/cmCPackWIXGenerator.cxx index ce542c737b..8982600e83 100644 --- a/Source/CPack/WiX/cmCPackWIXGenerator.cxx +++ b/Source/CPack/WiX/cmCPackWIXGenerator.cxx @@ -1015,6 +1015,10 @@ void cmCPackWIXGenerator::AddDirectoryAndFileDefinitions( if (emptyDirectory) { createDirectory = true; + + if (directoryId == "INSTALL_ROOT") { + return; + } } if (directoryInstalledFile) { diff --git a/Tests/RunCMake/CPack_WIX/3-AppWiX-cpack-WIX-stdout.txt b/Tests/RunCMake/CPack_WIX/3-AppWiX-cpack-WIX-stdout.txt index 29984409f5..a3b61519a0 100644 --- a/Tests/RunCMake/CPack_WIX/3-AppWiX-cpack-WIX-stdout.txt +++ b/Tests/RunCMake/CPack_WIX/3-AppWiX-cpack-WIX-stdout.txt @@ -3,6 +3,8 @@ CPack: Install projects CPack: - Install project: CPackWiXGenerator \[Release\] CPack: - Install component: applications CPack: - Install component: applications2 +CPack: - Install component: empty1 +CPack: - Install component: empty2 CPack: - Install component: extras CPack: - Install component: headers CPack: - Install component: libraries diff --git a/Tests/RunCMake/CPack_WIX/4-AppWiX-cpack-WIX-stdout.txt b/Tests/RunCMake/CPack_WIX/4-AppWiX-cpack-WIX-stdout.txt index 51f06caf21..77be62d47a 100644 --- a/Tests/RunCMake/CPack_WIX/4-AppWiX-cpack-WIX-stdout.txt +++ b/Tests/RunCMake/CPack_WIX/4-AppWiX-cpack-WIX-stdout.txt @@ -3,6 +3,8 @@ CPack: Install projects CPack: - Install project: CPackWiXGenerator \[Release\] CPack: - Install component: applications CPack: - Install component: applications2 +CPack: - Install component: empty1 +CPack: - Install component: empty2 CPack: - Install component: extras CPack: - Install component: headers CPack: - Install component: libraries diff --git a/Tests/RunCMake/RunCPack/AppWiX/CMakeLists.txt b/Tests/RunCMake/RunCPack/AppWiX/CMakeLists.txt index 50d9b43afb..0ef51cd245 100644 --- a/Tests/RunCMake/RunCPack/AppWiX/CMakeLists.txt +++ b/Tests/RunCMake/RunCPack/AppWiX/CMakeLists.txt @@ -33,6 +33,9 @@ install(FILES mylib.h "file with spaces.h" DESTINATION include COMPONENT headers) +install(CODE "" COMPONENT "empty1") +install(CODE "" COMPONENT "empty2") + set(CPACK_GENERATOR "WIX") set(CPACK_PACKAGE_NAME "MyLib")