summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--Help/release/dev/rel-win-PATH.rst8
-rw-r--r--Utilities/Release/WiX/WIX.template.in1
-rw-r--r--Utilities/Release/WiX/options.wxs22
3 files changed, 29 insertions, 2 deletions
diff --git a/Help/release/dev/rel-win-PATH.rst b/Help/release/dev/rel-win-PATH.rst
new file mode 100644
index 0000000..f4a7360
--- /dev/null
+++ b/Help/release/dev/rel-win-PATH.rst
@@ -0,0 +1,8 @@
+rel-win-PATH
+------------
+
+* The precompiled Windows ``.msi`` installers provided on
+ `cmake.org <https://cmake.org/download/>`_, when performing a fresh
+ installation, now modify the system-wide ``PATH`` by default.
+ When replacing an existing installation, the ``PATH`` modification
+ preference is preserved by default.
diff --git a/Utilities/Release/WiX/WIX.template.in b/Utilities/Release/WiX/WIX.template.in
index f48f782..fb8fa59 100644
--- a/Utilities/Release/WiX/WIX.template.in
+++ b/Utilities/Release/WiX/WIX.template.in
@@ -46,6 +46,7 @@
<FeatureRef Id="ProductFeature">
<ComponentRef Id="CMakeRegistry_InstallDir" />
+ <ComponentRef Id="CMakeRegistry_InstallInPATH" />
</FeatureRef>
<UIRef Id="$(var.CPACK_WIX_UI_REF)" />
diff --git a/Utilities/Release/WiX/options.wxs b/Utilities/Release/WiX/options.wxs
index 2c76bb7..0fd3527 100644
--- a/Utilities/Release/WiX/options.wxs
+++ b/Utilities/Release/WiX/options.wxs
@@ -4,15 +4,33 @@
<Property Id="CMAKE_IN_PATH" Value="Init" />
<!-- 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="{}" />
+ <SetProperty Action="Set_CMAKE_IN_PATH_Init" Id="CMAKE_IN_PATH" After="AppSearch" Sequence="first" Value="1" />
+
+ <!-- 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>