diff options
author | Brad King <brad.king@kitware.com> | 2024-06-05 17:40:15 (GMT) |
---|---|---|
committer | Brad King <brad.king@kitware.com> | 2024-06-05 18:01:14 (GMT) |
commit | 614100dbf66b44bafd618acaf752b1c2877ce9bc (patch) | |
tree | d280330ed0e4a51ce4ed1d6d51ba2ff7c5b78c26 | |
parent | c370593f2e41b2094d6d7f1a1c47cd5d9d371388 (diff) | |
download | CMake-614100dbf66b44bafd618acaf752b1c2877ce9bc.zip CMake-614100dbf66b44bafd618acaf752b1c2877ce9bc.tar.gz CMake-614100dbf66b44bafd618acaf752b1c2877ce9bc.tar.bz2 |
CPack/WiX: Restore default (missing) InstallScope from 3.28 and lower
In commit 60661f6770 (CPack/WiX: Make InstallScope configurable,
2023-11-07, v3.29.0-rc1~413^2) the `CPACK_WIX_INSTALL_SCOPE` default was
set to `perMachine`. While installers created with `perMachine` have
better behavior on their own than installers created without any
`InstallScope`, they do not cleanly convert existing installations on
updates.
Fixes: #26029
-rw-r--r-- | Help/cpack_gen/wix.rst | 19 | ||||
-rw-r--r-- | Modules/Internal/CPack/CPackWIX.cmake | 10 |
2 files changed, 23 insertions, 6 deletions
diff --git a/Help/cpack_gen/wix.rst b/Help/cpack_gen/wix.rst index dfa3434..f196988 100644 --- a/Help/cpack_gen/wix.rst +++ b/Help/cpack_gen/wix.rst @@ -453,19 +453,23 @@ Windows using WiX. This variable can be optionally set to specify the ``InstallScope`` of the installer: - ``perMachine`` (default) + ``perMachine`` Create an installer that installs for all users and requires administrative privileges. Start menu entries created by the installer are visible to all users. + This is the default if :variable:`CPACK_WIX_VERSION` is set to any + value other than ``3``. + ``perUser`` Not yet supported. This is reserved for future use. ``NONE`` Create an installer without any ``InstallScope`` attribute. - This is not supported if :variable:`CPACK_WIX_VERSION` is set - to any value other than ``3``. + If :variable:`CPACK_WIX_VERSION` is not set, or is set to ``3``, this + value is the default to preserve compatibility with 3.28 and lower. + Otherwise, this value is not supported. .. deprecated:: 3.29 @@ -475,4 +479,13 @@ Windows using WiX. but the start menu entry and uninstaller registration are created only for the current user. + .. warning:: + + An installation performed by an installer created without any + ``InstallScope`` cannot be cleanly updated or replaced by an + installer with an ``InstallScope``. In order to transition + a project's installers from ``NONE`` to ``perMachine``, the + latter installer should be distributed with instructions to + first manually uninstall any older version. + See https://wixtoolset.org/docs/v3/xsd/wix/package/ diff --git a/Modules/Internal/CPack/CPackWIX.cmake b/Modules/Internal/CPack/CPackWIX.cmake index 103d21c..9980bc2 100644 --- a/Modules/Internal/CPack/CPackWIX.cmake +++ b/Modules/Internal/CPack/CPackWIX.cmake @@ -11,6 +11,10 @@ if(CPACK_WIX_VERSION VERSION_GREATER_EQUAL 4) if(NOT CPACK_WIX_EXECUTABLE) message(FATAL_ERROR "Could not find the 'wix' executable.") endif() + + if(NOT DEFINED CPACK_WIX_INSTALL_SCOPE) + set(CPACK_WIX_INSTALL_SCOPE "perMachine") + endif() else() find_program(CPACK_WIX_CANDLE_EXECUTABLE candle PATHS "${CPACK_WIX_ROOT}" PATH_SUFFIXES "bin") @@ -23,8 +27,8 @@ else() if(NOT CPACK_WIX_LIGHT_EXECUTABLE) message(FATAL_ERROR "Could not find the WiX light executable.") endif() -endif() -if(NOT DEFINED CPACK_WIX_INSTALL_SCOPE) - set(CPACK_WIX_INSTALL_SCOPE "perMachine") + if(NOT DEFINED CPACK_WIX_INSTALL_SCOPE) + set(CPACK_WIX_INSTALL_SCOPE "NONE") + endif() endif() |