From cae7e5e38df6035779f1de473cf3debbc4a9260f Mon Sep 17 00:00:00 2001 From: jakoblover Date: Tue, 3 May 2022 15:07:17 +0200 Subject: CPack/WIX: Add CPACK_WIX_ARCHITECTURE to support Windows for ARM installers --- Help/cpack_gen/wix.rst | 9 +++++++++ Help/release/dev/cpack-wix-arch.rst | 6 ++++++ Source/CPack/WiX/cmCPackWIXGenerator.cxx | 13 ++++++++++++- 3 files changed, 27 insertions(+), 1 deletion(-) create mode 100644 Help/release/dev/cpack-wix-arch.rst 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 @@ Windows using WiX. 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 @@ bool cmCPackWIXGenerator::RunCandleCommand(std::string const& sourceFile, 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) { -- cgit v0.12