summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBrad King <brad.king@kitware.com>2024-06-05 17:40:15 (GMT)
committerBrad King <brad.king@kitware.com>2024-06-05 18:01:14 (GMT)
commit614100dbf66b44bafd618acaf752b1c2877ce9bc (patch)
treed280330ed0e4a51ce4ed1d6d51ba2ff7c5b78c26
parentc370593f2e41b2094d6d7f1a1c47cd5d9d371388 (diff)
downloadCMake-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.rst19
-rw-r--r--Modules/Internal/CPack/CPackWIX.cmake10
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()