diff options
author | Martin v. Löwis <martin@v.loewis.de> | 2013-11-19 16:02:36 (GMT) |
---|---|---|
committer | Martin v. Löwis <martin@v.loewis.de> | 2013-11-19 16:02:36 (GMT) |
commit | dd7436c6130ae304c6e0b399fe22692a470b6b5c (patch) | |
tree | f22a7f118d4df913373357c7d2832f40a12785ef /Tools | |
parent | dc2fd5101a22d82600a328158f484e74e976d12b (diff) | |
download | cpython-dd7436c6130ae304c6e0b399fe22692a470b6b5c.zip cpython-dd7436c6130ae304c6e0b399fe22692a470b6b5c.tar.gz cpython-dd7436c6130ae304c6e0b399fe22692a470b6b5c.tar.bz2 |
Issue #19550: Implement Windows installer changes of PEP 453 (ensurepip).
Diffstat (limited to 'Tools')
-rw-r--r-- | Tools/msi/msi.py | 29 |
1 files changed, 24 insertions, 5 deletions
diff --git a/Tools/msi/msi.py b/Tools/msi/msi.py index 73f1c83..a5007be 100644 --- a/Tools/msi/msi.py +++ b/Tools/msi/msi.py @@ -420,6 +420,8 @@ def add_ui(db): compileargs = r'-Wi "[TARGETDIR]Lib\compileall.py" -f -x "bad_coding|badsyntax|site-packages|py2_|lib2to3\\tests|venv\\scripts" "[TARGETDIR]Lib"' lib2to3args = r'-c "import lib2to3.pygram, lib2to3.patcomp;lib2to3.patcomp.PatternCompiler()"' + updatepipargs = r'-m ensurepip -U' + removepipargs = r'-m ensurepip -r' # does not yet work # See "CustomAction Table" add_data(db, "CustomAction", [ # msidbCustomActionTypeFirstSequence + msidbCustomActionTypeTextData + msidbCustomActionTypeProperty @@ -436,6 +438,9 @@ def add_ui(db): ("CompilePyc", 18, "python.exe", compileargs), ("CompilePyo", 18, "python.exe", "-O "+compileargs), ("CompileGrammar", 18, "python.exe", lib2to3args), + # msidbCustomActionTypeInScript (1024); run during actual installation + ("UpdatePip", 18+1024, "python.exe", updatepipargs), + #("RemovePip", 18, "python.exe", removepipargs), ]) # UI Sequences, see "InstallUISequence Table", "Using a Sequence Table" @@ -462,7 +467,7 @@ def add_ui(db): # Prepend TARGETDIR to the system path, and remove it on uninstall. add_data(db, "Environment", - [("PathAddition", "=-*Path", "[TARGETDIR];[~]", "REGISTRY.path")]) + [("PathAddition", "=-*Path", "[TARGETDIR];[TARGETDIR]Scripts;[~]", "REGISTRY.path")]) # Execute Sequences add_data(db, "InstallExecuteSequence", @@ -472,6 +477,12 @@ def add_ui(db): ("SetLauncherDirToWindows", 'LAUNCHERDIR="" and ' + sys32cond, 753), ("SetLauncherDirToTarget", 'LAUNCHERDIR="" and not ' + sys32cond, 754), ("UpdateEditIDLE", None, 1050), + # run command if install state of pip changes to INSTALLSTATE_LOCAL + # run after InstallFiles + ("UpdatePip", "&pip=3", 4001), + # remove pip when state changes to INSTALLSTATE_ABSENT + # run before RemoveFiles + #("RemovePip", "&pip=2", 3499), ("CompilePyc", "COMPILEALL", 6800), ("CompilePyo", "COMPILEALL", 6801), ("CompileGrammar", "COMPILEALL", 6802), @@ -751,7 +762,8 @@ def add_ui(db): advanced = PyDialog(db, "AdvancedDlg", x, y, w, h, modal, title, "CompilePyc", "Ok", "Ok") advanced.title("Advanced Options for [ProductName]") - # A radio group with two options: allusers, justme + + # A checkbox whether to build pyc files advanced.checkbox("CompilePyc", 135, 60, 230, 50, 3, "COMPILEALL", "Compile .py files to byte code after installation", "Ok") @@ -848,7 +860,8 @@ def add_features(db): # (i.e. additional Python libraries) need to follow the parent feature. # Features that have no advertisement trigger (e.g. the test suite) # must not support advertisement - global default_feature, tcltk, htmlfiles, tools, testsuite, ext_feature, private_crt, prepend_path + global default_feature, tcltk, htmlfiles, tools, testsuite + global ext_feature, private_crt, prepend_path, update_pip default_feature = Feature(db, "DefaultFeature", "Python", "Python Interpreter and Libraries", 1, directory = "TARGETDIR") @@ -870,8 +883,14 @@ def add_features(db): tools = Feature(db, "Tools", "Utility Scripts", "Python utility scripts (Tools/)", 9, parent = default_feature, attributes=2) + # pip installation isn't enabled by default until a clean uninstall procedure + # becomes possible + update_pip = Feature(db, "pip", "pip", + "Install (or upgrade from an earlier version) pip, " + "a tool for installing and managing Python packages.", 11, + parent = default_feature, attributes=2|8, level=2) testsuite = Feature(db, "Testsuite", "Test suite", - "Python test suite (Lib/test/)", 11, + "Python test suite (Lib/test/)", 13, parent = default_feature, attributes=2|8) # prepend_path is an additional feature which is to be off by default. # Since the default level for the above features is 1, this needs to be @@ -879,7 +898,7 @@ def add_features(db): prepend_path = Feature(db, "PrependPath", "Add python.exe to Path", "Prepend [TARGETDIR] to the system Path variable. " "This allows you to type 'python' into a command " - "prompt without needing the full path.", 13, + "prompt without needing the full path.", 15, parent = default_feature, attributes=2|8, level=2) |