mirror of
				https://github.com/python/cpython.git
				synced 2025-10-31 05:31:20 +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                        | | ||||
| |                           | ``.pyc``.                            |                          | | ||||
| +---------------------------+--------------------------------------+--------------------------+ | ||||
| | PrependPath               | Add install and Scripts directories  | 0                        | | ||||
| |                           | to :envvar:`PATH` and ``.PY`` to     |                          | | ||||
| |                           | :envvar:`PATHEXT`                    |                          | | ||||
| | PrependPath               | Prepend install and Scripts          | 0                        | | ||||
| |                           | directories  to :envvar:`PATH` and   |                          | | ||||
| |                           | 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                        | | ||||
| |                           | 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``. | ||||
|   (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 | ||||
| =========== | ||||
| 
 | ||||
|  |  | |||
|  | @ -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="PrependPathLabel">Add Python to &environment variables</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="InstallLauncherAllUsersLabel">for &all users (requires elevation)</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"lib", L"Include_lib" }, | ||||
|     { L"path", L"PrependPath" }, | ||||
|     { L"appendpath", L"AppendPath" }, | ||||
|     { L"pip", L"Include_pip" }, | ||||
|     { L"tcltk", L"Include_tcltk" }, | ||||
|     { L"test", L"Include_test" }, | ||||
|  |  | |||
|  | @ -67,6 +67,7 @@ | |||
|         <Package Include="..\exe\exe*.wixproj" /> | ||||
|         <Package Include="..\lib\lib*.wixproj" /> | ||||
|         <Package Include="..\path\path*.wixproj" /> | ||||
|         <Package Include="..\appendpath\appendpath*.wixproj" /> | ||||
|         <Package Include="..\pip\pip*.wixproj" /> | ||||
|         <Package Include="..\tcltk\tcltk*.wixproj" /> | ||||
|         <Package Include="..\test\test*.wixproj" /> | ||||
|  | @ -104,4 +105,4 @@ | |||
|     </Target> | ||||
|      | ||||
|     <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" | ||||
|      xmlns:bal="http://schemas.microsoft.com/wix/BalExtension" | ||||
|      xmlns:dep="http://schemas.microsoft.com/wix/DependencyExtension"> | ||||
|  | @ -87,6 +87,7 @@ | |||
|     <Variable Name="AssociateFiles" Value="1" bal:Overridable="yes" /> | ||||
|     <Variable Name="Shortcuts" Value="1" 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="SimpleInstall" Value="0" bal:Overridable="yes" /> | ||||
|  |  | |||
|  | @ -20,6 +20,27 @@ | |||
|                 <MsiProperty Name="TARGETDIR" Value="[TargetDir]" /> | ||||
|                 <MsiProperty Name="OPTIONALFEATURESREGISTRYKEY" Value="[OptionalFeaturesRegistryKey]" /> | ||||
|             </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"?> | ||||
|             <ExePackage Id="compileall_AllUsers" | ||||
|  | @ -85,4 +106,4 @@ | |||
|                         InstallCondition="not InstallAllUsers and CompileAll and not LauncherOnly" /> | ||||
|         </PackageGroup> | ||||
|     </Fragment> | ||||
| </Wix> | ||||
| </Wix> | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue
	
	 bneuburg
						bneuburg