mirror of
https://github.com/Kitware/CMake.git
synced 2026-01-07 14:20:06 -06:00
Utilities/Release/WiX: Save PATH modification preference persistently
Our Windows installer provides an interactive dialog to choose whether
the PATH should be modified. It may also be specified on the `msiexec`
command-line as an `ADD_CMAKE_TO_PATH={0,1}` property. Save the choice
persistently in the Windows Registry and use the same choice by default
in future installations.
Issue: #21465
This commit is contained in:
6
Help/release/dev/rel-win-PATH.rst
Normal file
6
Help/release/dev/rel-win-PATH.rst
Normal file
@@ -0,0 +1,6 @@
|
||||
rel-win-PATH
|
||||
------------
|
||||
|
||||
* The precompiled Windows ``.msi`` installers provided on
|
||||
`cmake.org <https://cmake.org/download/>`_, when replacing an existing
|
||||
installation, now preserve the ``PATH`` modification preference by default.
|
||||
@@ -46,6 +46,7 @@
|
||||
|
||||
<FeatureRef Id="ProductFeature">
|
||||
<ComponentRef Id="CMakeRegistry_InstallDir" />
|
||||
<ComponentRef Id="CMakeRegistry_InstallInPATH" />
|
||||
</FeatureRef>
|
||||
|
||||
<UIRef Id="$(var.CPACK_WIX_UI_REF)" />
|
||||
|
||||
@@ -6,13 +6,31 @@
|
||||
<!-- Always initialize the checkbox value so it cannot be directly overridden from the command line. -->
|
||||
<SetProperty Action="Set_CMAKE_IN_PATH_Init" Id="CMAKE_IN_PATH" After="AppSearch" Sequence="first" Value="{}" />
|
||||
|
||||
<!-- Read the "CMAKE_IN_PATH" checkbox value from the registry, if it was stored previously.
|
||||
Properties using RegistrySearch cannot be private, so use a private-looking public name. -->
|
||||
<Property Id="_CMAKE_IN_PATH_REG">
|
||||
<RegistrySearch Id="CMAKE_IN_PATH_RegistrySearch_HKLM" Root="HKLM" Key="Software\Kitware\CMake" Name="InstallInPATH" Type="raw" />
|
||||
</Property>
|
||||
|
||||
<!-- Override the default "CMAKE_IN_PATH" checkbox with a value read from the registry, if any. -->
|
||||
<SetProperty Action="Set_CMAKE_IN_PATH_REG_0" Id="CMAKE_IN_PATH" After="Set_CMAKE_IN_PATH_Init" Sequence="first" Value="{}"> _CMAKE_IN_PATH_REG = "#0" </SetProperty>
|
||||
<SetProperty Action="Set_CMAKE_IN_PATH_REG_1" Id="CMAKE_IN_PATH" After="Set_CMAKE_IN_PATH_REG_0" Sequence="first" Value="1"> _CMAKE_IN_PATH_REG = "#1" </SetProperty>
|
||||
|
||||
<!-- Override the default "CMAKE_IN_PATH" checkbox with a value specified on the command line, if any. -->
|
||||
<SetProperty Action="Set_CMAKE_IN_PATH_CMD_0" Id="CMAKE_IN_PATH" After="Set_CMAKE_IN_PATH_Init" Sequence="first" Value="{}"> ADD_CMAKE_TO_PATH = "0" </SetProperty>
|
||||
<SetProperty Action="Set_CMAKE_IN_PATH_CMD_0" Id="CMAKE_IN_PATH" After="Set_CMAKE_IN_PATH_REG_1" Sequence="first" Value="{}"> ADD_CMAKE_TO_PATH = "0" </SetProperty>
|
||||
<SetProperty Action="Set_CMAKE_IN_PATH_CMD_1" Id="CMAKE_IN_PATH" After="Set_CMAKE_IN_PATH_CMD_0" Sequence="first" Value="1"> ADD_CMAKE_TO_PATH = "1" </SetProperty>
|
||||
<!-- Support legacy values too. -->
|
||||
<SetProperty Action="Set_CMAKE_IN_PATH_CMD_None" Id="CMAKE_IN_PATH" After="Set_CMAKE_IN_PATH_CMD_1" Sequence="first" Value="{}"> ADD_CMAKE_TO_PATH = "None" </SetProperty>
|
||||
<SetProperty Action="Set_CMAKE_IN_PATH_CMD_System" Id="CMAKE_IN_PATH" After="Set_CMAKE_IN_PATH_CMD_None" Sequence="first" Value="1"> ADD_CMAKE_TO_PATH = "System" AND ALLUSERS </SetProperty>
|
||||
<!-- Per-user installation is not implemented, but reserve the old value for future use. -->
|
||||
<SetProperty Action="Set_CMAKE_IN_PATH_CMD_User" Id="CMAKE_IN_PATH" After="Set_CMAKE_IN_PATH_CMD_System" Sequence="first" Value="1"> ADD_CMAKE_TO_PATH = "User" AND NOT ALLUSERS </SetProperty>
|
||||
|
||||
<DirectoryRef Id="TARGETDIR">
|
||||
<!-- Save the "CMAKE_IN_PATH" checkbox value persistently in the registry. -->
|
||||
<Component Id="CMakeRegistry_InstallInPATH">
|
||||
<!-- Use a leading "0" so the value parses as an integer even when the property is unset. -->
|
||||
<RegistryValue Root="HKLM" Key="Software\Kitware\CMake" Name="InstallInPATH" Type="integer" Value="0[CMAKE_IN_PATH]" />
|
||||
</Component>
|
||||
</DirectoryRef>
|
||||
</Fragment>
|
||||
</Wix>
|
||||
|
||||
Reference in New Issue
Block a user