1
0
mirror of https://github.com/Kitware/CMake.git synced 2025-10-19 19:43:23 +08:00

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
This commit is contained in:
Brad King
2024-06-05 13:40:15 -04:00
parent c370593f2e
commit 614100dbf6
2 changed files with 23 additions and 6 deletions

View File

@@ -453,19 +453,23 @@ Windows using WiX.
This variable can be optionally set to specify the ``InstallScope`` This variable can be optionally set to specify the ``InstallScope``
of the installer: of the installer:
``perMachine`` (default) ``perMachine``
Create an installer that installs for all users and requires Create an installer that installs for all users and requires
administrative privileges. Start menu entries created by the administrative privileges. Start menu entries created by the
installer are visible to all users. installer are visible to all users.
This is the default if :variable:`CPACK_WIX_VERSION` is set to any
value other than ``3``.
``perUser`` ``perUser``
Not yet supported. This is reserved for future use. Not yet supported. This is reserved for future use.
``NONE`` ``NONE``
Create an installer without any ``InstallScope`` attribute. Create an installer without any ``InstallScope`` attribute.
This is not supported if :variable:`CPACK_WIX_VERSION` is set If :variable:`CPACK_WIX_VERSION` is not set, or is set to ``3``, this
to any value other than ``3``. value is the default to preserve compatibility with 3.28 and lower.
Otherwise, this value is not supported.
.. deprecated:: 3.29 .. deprecated:: 3.29
@@ -475,4 +479,13 @@ Windows using WiX.
but the start menu entry and uninstaller registration are created only but the start menu entry and uninstaller registration are created only
for the current user. 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/ See https://wixtoolset.org/docs/v3/xsd/wix/package/

View File

@@ -11,6 +11,10 @@ if(CPACK_WIX_VERSION VERSION_GREATER_EQUAL 4)
if(NOT CPACK_WIX_EXECUTABLE) if(NOT CPACK_WIX_EXECUTABLE)
message(FATAL_ERROR "Could not find the 'wix' executable.") message(FATAL_ERROR "Could not find the 'wix' executable.")
endif() endif()
if(NOT DEFINED CPACK_WIX_INSTALL_SCOPE)
set(CPACK_WIX_INSTALL_SCOPE "perMachine")
endif()
else() else()
find_program(CPACK_WIX_CANDLE_EXECUTABLE candle find_program(CPACK_WIX_CANDLE_EXECUTABLE candle
PATHS "${CPACK_WIX_ROOT}" PATH_SUFFIXES "bin") PATHS "${CPACK_WIX_ROOT}" PATH_SUFFIXES "bin")
@@ -23,8 +27,8 @@ else()
if(NOT CPACK_WIX_LIGHT_EXECUTABLE) if(NOT CPACK_WIX_LIGHT_EXECUTABLE)
message(FATAL_ERROR "Could not find the WiX light executable.") message(FATAL_ERROR "Could not find the WiX light executable.")
endif() endif()
endif()
if(NOT DEFINED CPACK_WIX_INSTALL_SCOPE) if(NOT DEFINED CPACK_WIX_INSTALL_SCOPE)
set(CPACK_WIX_INSTALL_SCOPE "perMachine") set(CPACK_WIX_INSTALL_SCOPE "NONE")
endif()
endif() endif()