Merge topic 'cpack-wix-arch' cae7e5e38d CPack/WIX: Add CPACK_WIX_ARCHITECTURE to support Windows for ARM installers Acked-by: Kitware Robot <kwrobot@kitware.com> Merge-request: !7236
diff --git a/Help/cpack_gen/wix.rst b/Help/cpack_gen/wix.rst index e9d5af6..a3d43fc 100644 --- a/Help/cpack_gen/wix.rst +++ b/Help/cpack_gen/wix.rst
@@ -328,3 +328,12 @@ If this variable is set then the inclusion of WixUIExtensions is skipped, i.e. the ``-ext "WixUIExtension"`` command line is not included during the execution of the WiX light tool. + +.. variable:: CPACK_WIX_ARCHITECTURE + + .. versionadded:: 3.24 + + This variable can be optionally set to specify the target architecture + of the installer. May for example be set to ``x64`` or ``arm64``. + + When unspecified, CPack will default to ``x64`` or ``x86``.
diff --git a/Help/release/dev/cpack-wix-arch.rst b/Help/release/dev/cpack-wix-arch.rst new file mode 100644 index 0000000..e7fd1ad --- /dev/null +++ b/Help/release/dev/cpack-wix-arch.rst
@@ -0,0 +1,6 @@ +cpack-wix-arch +-------------- + +* The :cpack_gen:`CPack WIX Generator` gained a new variable, + :variable:`CPACK_WIX_ARCHITECTURE`, to specify the installer architecture + in order to support computers running Windows for ARM.
diff --git a/Source/CPack/WiX/cmCPackWIXGenerator.cxx b/Source/CPack/WiX/cmCPackWIXGenerator.cxx index 6a0095b..594f408 100644 --- a/Source/CPack/WiX/cmCPackWIXGenerator.cxx +++ b/Source/CPack/WiX/cmCPackWIXGenerator.cxx
@@ -89,10 +89,21 @@ return false; } + std::string arch; + if (cmValue archOpt = GetOption("CPACK_WIX_ARCHITECTURE")) { + arch = *archOpt; + } else { + arch = GetArchitecture(); + cmCPackLogger( + cmCPackLog::LOG_VERBOSE, + "CPACK_WIX_ARCHITECTURE was not set. Invoking WiX with architecture " + << arch << " . " << std::endl); + } + std::ostringstream command; command << QuotePath(executable); command << " -nologo"; - command << " -arch " << GetArchitecture(); + command << " -arch " << arch; command << " -out " << QuotePath(objectFile); for (std::string const& ext : CandleExtensions) {