mirror of
https://github.com/python/cpython.git
synced 2025-10-27 03:34:32 +00:00
bpo-44934: Add optional feature AppendPath to Windows MSI installer (GH-27889)
The option must be enabled from the command line
This commit is contained in:
parent
9e20ec4d43
commit
c47c9e6589
11 changed files with 107 additions and 6 deletions
|
|
@ -165,9 +165,13 @@ of available options is shown below.
|
||||||
| CompileAll | Compile all ``.py`` files to | 0 |
|
| CompileAll | Compile all ``.py`` files to | 0 |
|
||||||
| | ``.pyc``. | |
|
| | ``.pyc``. | |
|
||||||
+---------------------------+--------------------------------------+--------------------------+
|
+---------------------------+--------------------------------------+--------------------------+
|
||||||
| PrependPath | Add install and Scripts directories | 0 |
|
| PrependPath | Prepend install and Scripts | 0 |
|
||||||
| | to :envvar:`PATH` and ``.PY`` to | |
|
| | directories to :envvar:`PATH` and | |
|
||||||
| | :envvar:`PATHEXT` | |
|
| | add ``.PY`` to :envvar:`PATHEXT` | |
|
||||||
|
+---------------------------+--------------------------------------+--------------------------+
|
||||||
|
| AppendPath | Append install and Scripts | 0 |
|
||||||
|
| | directories to :envvar:`PATH` and | |
|
||||||
|
| | add ``.PY`` to :envvar:`PATHEXT` | |
|
||||||
+---------------------------+--------------------------------------+--------------------------+
|
+---------------------------+--------------------------------------+--------------------------+
|
||||||
| Shortcuts | Create shortcuts for the interpreter,| 1 |
|
| Shortcuts | Create shortcuts for the interpreter,| 1 |
|
||||||
| | documentation and IDLE if installed. | |
|
| | documentation and IDLE if installed. | |
|
||||||
|
|
|
||||||
|
|
@ -200,6 +200,12 @@ Other CPython Implementation Changes
|
||||||
have been removed as their values can be derived from ``exc_value``.
|
have been removed as their values can be derived from ``exc_value``.
|
||||||
(Contributed by Irit Katriel in :issue:`45711`.)
|
(Contributed by Irit Katriel in :issue:`45711`.)
|
||||||
|
|
||||||
|
* A new command line option for the Windows installer ``AppendPath`` has beend added.
|
||||||
|
It behaves similiar to ``PrependPath`` but appends the install and scripts directories
|
||||||
|
instead of prepending it.
|
||||||
|
(Contributed by Bastian Neuburger in :issue:`44934`.)
|
||||||
|
|
||||||
|
|
||||||
New Modules
|
New Modules
|
||||||
===========
|
===========
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1 @@
|
||||||
|
The installer now offers a command-line only option to add the installation directory to the end of :envvar:`PATH` instead of at the start.
|
||||||
19
Tools/msi/appendpath/appendpath.wixproj
Normal file
19
Tools/msi/appendpath/appendpath.wixproj
Normal file
|
|
@ -0,0 +1,19 @@
|
||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||||
|
<PropertyGroup>
|
||||||
|
<ProjectGuid>{12B59A06-37CC-4558-A9C8-DAE922E64EF3}</ProjectGuid>
|
||||||
|
<SchemaVersion>2.0</SchemaVersion>
|
||||||
|
<OutputName>appendpath</OutputName>
|
||||||
|
<OutputType>Package</OutputType>
|
||||||
|
<SuppressIces>ICE71</SuppressIces>
|
||||||
|
</PropertyGroup>
|
||||||
|
<Import Project="..\msi.props" />
|
||||||
|
<ItemGroup>
|
||||||
|
<Compile Include="*.wxs" />
|
||||||
|
</ItemGroup>
|
||||||
|
<ItemGroup>
|
||||||
|
<EmbeddedResource Include="*.wxl" />
|
||||||
|
</ItemGroup>
|
||||||
|
|
||||||
|
<Import Project="..\msi.targets" />
|
||||||
|
</Project>
|
||||||
39
Tools/msi/appendpath/appendpath.wxs
Normal file
39
Tools/msi/appendpath/appendpath.wxs
Normal file
|
|
@ -0,0 +1,39 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi">
|
||||||
|
<Product Id="*" Language="!(loc.LCID)" Name="!(loc.Title)" Version="$(var.Version)" Manufacturer="!(loc.Manufacturer)" UpgradeCode="$(var.UpgradeCode)">
|
||||||
|
<Package InstallerVersion="300" Compressed="yes" InstallScope="perUser" Platform="$(var.Platform)" />
|
||||||
|
|
||||||
|
<PropertyRef Id="UpgradeTable" />
|
||||||
|
<PropertyRef Id="REGISTRYKEY" />
|
||||||
|
|
||||||
|
<Feature Id="DefaultFeature" AllowAdvertise="no" Title="!(loc.Title)" Description="!(loc.Description)">
|
||||||
|
<Component Id="AppendPath_CU" Directory="InstallDirectory" Guid="*">
|
||||||
|
<Condition>NOT ALLUSERS=1</Condition>
|
||||||
|
<RegistryKey Root="HKCU" Key="[REGISTRYKEY]">
|
||||||
|
<RegistryValue KeyPath="yes" Key="InstalledFeatures" Name="$(var.OptionalFeatureName)" Value="$(var.Version)" Type="string" />
|
||||||
|
</RegistryKey>
|
||||||
|
|
||||||
|
<CreateFolder Directory="Scripts" />
|
||||||
|
<RemoveFolder Id="Remove_Scripts_CU" Directory="Scripts" On="uninstall" />
|
||||||
|
|
||||||
|
<Environment Id="PATH_CU" Action="set" Name="PATH" Part="last" Value="[InstallDirectory]" />
|
||||||
|
<Environment Id="SCRIPTS_PATH_CU" Action="set" Name="PATH" Part="last" Value="[Scripts]" />
|
||||||
|
</Component>
|
||||||
|
<Component Id="AppendPath_LM" Directory="InstallDirectory" Guid="*">
|
||||||
|
<Condition>ALLUSERS=1</Condition>
|
||||||
|
<RegistryKey Root="HKLM" Key="[REGISTRYKEY]">
|
||||||
|
<RegistryValue KeyPath="yes" Key="InstalledFeatures" Name="$(var.OptionalFeatureName)" Value="$(var.Version)" Type="string" />
|
||||||
|
</RegistryKey>
|
||||||
|
|
||||||
|
<CreateFolder Directory="Scripts" />
|
||||||
|
<RemoveFolder Id="Remove_Scripts_LM" Directory="Scripts" On="uninstall" />
|
||||||
|
|
||||||
|
<Environment Id="PATH_LM" Action="set" Name="PATH" Part="last" Value="[InstallDirectory]" System="yes" />
|
||||||
|
<Environment Id="SCRIPTS_PATH_LM" Action="set" Name="PATH" Part="last" Value="[Scripts]" System="yes" />
|
||||||
|
<Environment Id="PY_PATHEXT_LM" Action="set" Name="PATHEXT" Part="last" Value=".PY" System="yes" />
|
||||||
|
<Environment Id="PYW_PATHEXT_LM" Action="set" Name="PATHEXT" Part="last" Value=".PYW" System="yes" />
|
||||||
|
</Component>
|
||||||
|
</Feature>
|
||||||
|
</Product>
|
||||||
|
</Wix>
|
||||||
|
|
||||||
6
Tools/msi/appendpath/appendpath_en-US.wxl
Normal file
6
Tools/msi/appendpath/appendpath_en-US.wxl
Normal file
|
|
@ -0,0 +1,6 @@
|
||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<WixLocalization Culture="en-us" xmlns="http://schemas.microsoft.com/wix/2006/localization">
|
||||||
|
<String Id="Descriptor">Append to Path</String>
|
||||||
|
<String Id="ShortDescriptor">AppendPath</String>
|
||||||
|
<String Id="NoPython">No !(loc.ProductName) installation was detected.</String>
|
||||||
|
</WixLocalization>
|
||||||
|
|
@ -84,6 +84,8 @@ Select Customize to review current options.</String>
|
||||||
<String Id="ShortcutsLabel">Create shortcuts for installed applications</String>
|
<String Id="ShortcutsLabel">Create shortcuts for installed applications</String>
|
||||||
<String Id="PrependPathLabel">Add Python to &environment variables</String>
|
<String Id="PrependPathLabel">Add Python to &environment variables</String>
|
||||||
<String Id="ShortPrependPathLabel">Add &Python [ShortVersion] to PATH</String>
|
<String Id="ShortPrependPathLabel">Add &Python [ShortVersion] to PATH</String>
|
||||||
|
<String Id="AppendPathLabel">Append Python to &environment variables</String>
|
||||||
|
<String Id="ShortAppendPathLabel">Append &Python [ShortVersion] to PATH</String>
|
||||||
<String Id="InstallAllUsersLabel">Install for &all users</String>
|
<String Id="InstallAllUsersLabel">Install for &all users</String>
|
||||||
<String Id="InstallLauncherAllUsersLabel">for &all users (requires elevation)</String>
|
<String Id="InstallLauncherAllUsersLabel">for &all users (requires elevation)</String>
|
||||||
<String Id="ShortInstallLauncherAllUsersLabel">Install &launcher for all users (recommended)</String>
|
<String Id="ShortInstallLauncherAllUsersLabel">Install &launcher for all users (recommended)</String>
|
||||||
|
|
|
||||||
|
|
@ -205,6 +205,7 @@ static struct { LPCWSTR regName; LPCWSTR variableName; } OPTIONAL_FEATURES[] = {
|
||||||
{ L"exe", L"Include_exe" },
|
{ L"exe", L"Include_exe" },
|
||||||
{ L"lib", L"Include_lib" },
|
{ L"lib", L"Include_lib" },
|
||||||
{ L"path", L"PrependPath" },
|
{ L"path", L"PrependPath" },
|
||||||
|
{ L"appendpath", L"AppendPath" },
|
||||||
{ L"pip", L"Include_pip" },
|
{ L"pip", L"Include_pip" },
|
||||||
{ L"tcltk", L"Include_tcltk" },
|
{ L"tcltk", L"Include_tcltk" },
|
||||||
{ L"test", L"Include_test" },
|
{ L"test", L"Include_test" },
|
||||||
|
|
|
||||||
|
|
@ -67,6 +67,7 @@
|
||||||
<Package Include="..\exe\exe*.wixproj" />
|
<Package Include="..\exe\exe*.wixproj" />
|
||||||
<Package Include="..\lib\lib*.wixproj" />
|
<Package Include="..\lib\lib*.wixproj" />
|
||||||
<Package Include="..\path\path*.wixproj" />
|
<Package Include="..\path\path*.wixproj" />
|
||||||
|
<Package Include="..\appendpath\appendpath*.wixproj" />
|
||||||
<Package Include="..\pip\pip*.wixproj" />
|
<Package Include="..\pip\pip*.wixproj" />
|
||||||
<Package Include="..\tcltk\tcltk*.wixproj" />
|
<Package Include="..\tcltk\tcltk*.wixproj" />
|
||||||
<Package Include="..\test\test*.wixproj" />
|
<Package Include="..\test\test*.wixproj" />
|
||||||
|
|
@ -104,4 +105,4 @@
|
||||||
</Target>
|
</Target>
|
||||||
|
|
||||||
<Import Project="..\msi.targets" />
|
<Import Project="..\msi.targets" />
|
||||||
</Project>
|
</Project>
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
<?xml version="1.0"?>
|
<?xml version="1.0"?>
|
||||||
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi"
|
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi"
|
||||||
xmlns:bal="http://schemas.microsoft.com/wix/BalExtension"
|
xmlns:bal="http://schemas.microsoft.com/wix/BalExtension"
|
||||||
xmlns:dep="http://schemas.microsoft.com/wix/DependencyExtension">
|
xmlns:dep="http://schemas.microsoft.com/wix/DependencyExtension">
|
||||||
|
|
@ -87,6 +87,7 @@
|
||||||
<Variable Name="AssociateFiles" Value="1" bal:Overridable="yes" />
|
<Variable Name="AssociateFiles" Value="1" bal:Overridable="yes" />
|
||||||
<Variable Name="Shortcuts" Value="1" bal:Overridable="yes" />
|
<Variable Name="Shortcuts" Value="1" bal:Overridable="yes" />
|
||||||
<Variable Name="PrependPath" Value="0" bal:Overridable="yes" />
|
<Variable Name="PrependPath" Value="0" bal:Overridable="yes" />
|
||||||
|
<Variable Name="AppendPath" Value="0" bal:Overridable="yes" />
|
||||||
<Variable Name="CompileAll" Value="0" bal:Overridable="yes" />
|
<Variable Name="CompileAll" Value="0" bal:Overridable="yes" />
|
||||||
|
|
||||||
<Variable Name="SimpleInstall" Value="0" bal:Overridable="yes" />
|
<Variable Name="SimpleInstall" Value="0" bal:Overridable="yes" />
|
||||||
|
|
|
||||||
|
|
@ -20,6 +20,27 @@
|
||||||
<MsiProperty Name="TARGETDIR" Value="[TargetDir]" />
|
<MsiProperty Name="TARGETDIR" Value="[TargetDir]" />
|
||||||
<MsiProperty Name="OPTIONALFEATURESREGISTRYKEY" Value="[OptionalFeaturesRegistryKey]" />
|
<MsiProperty Name="OPTIONALFEATURESREGISTRYKEY" Value="[OptionalFeaturesRegistryKey]" />
|
||||||
</MsiPackage>
|
</MsiPackage>
|
||||||
|
|
||||||
|
<MsiPackage Id="appendpath_AllUsers"
|
||||||
|
SourceFile="appendpath.msi"
|
||||||
|
Compressed="$(var.CompressMSI)"
|
||||||
|
DownloadUrl="$(var.DownloadUrl)"
|
||||||
|
ForcePerMachine="yes"
|
||||||
|
InstallCondition="InstallAllUsers and AppendPath and not LauncherOnly">
|
||||||
|
<MsiProperty Name="TARGETDIR" Value="[TargetDir]" />
|
||||||
|
<MsiProperty Name="OPTIONALFEATURESREGISTRYKEY" Value="[OptionalFeaturesRegistryKey]" />
|
||||||
|
</MsiPackage>
|
||||||
|
<MsiPackage Id="appendpath_JustForMe"
|
||||||
|
SourceFile="appendpath.msi"
|
||||||
|
Compressed="$(var.CompressMSI)"
|
||||||
|
DownloadUrl="$(var.DownloadUrl)"
|
||||||
|
ForcePerMachine="no"
|
||||||
|
InstallCondition="not InstallAllUsers and AppendPath and not LauncherOnly">
|
||||||
|
<MsiProperty Name="TARGETDIR" Value="[TargetDir]" />
|
||||||
|
<MsiProperty Name="OPTIONALFEATURESREGISTRYKEY" Value="[OptionalFeaturesRegistryKey]" />
|
||||||
|
</MsiPackage>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<?define CompileAllCommand=-E -s -Wi "[TargetDir]\Lib\compileall.py" -f -x "bad_coding|badsyntax|site-packages|py2_|lib2to3\\tests|venv\\scripts" "[TargetDir]\Lib"?>
|
<?define CompileAllCommand=-E -s -Wi "[TargetDir]\Lib\compileall.py" -f -x "bad_coding|badsyntax|site-packages|py2_|lib2to3\\tests|venv\\scripts" "[TargetDir]\Lib"?>
|
||||||
<ExePackage Id="compileall_AllUsers"
|
<ExePackage Id="compileall_AllUsers"
|
||||||
|
|
@ -85,4 +106,4 @@
|
||||||
InstallCondition="not InstallAllUsers and CompileAll and not LauncherOnly" />
|
InstallCondition="not InstallAllUsers and CompileAll and not LauncherOnly" />
|
||||||
</PackageGroup>
|
</PackageGroup>
|
||||||
</Fragment>
|
</Fragment>
|
||||||
</Wix>
|
</Wix>
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue