summaryrefslogtreecommitdiffstats
path: root/Tools
diff options
context:
space:
mode:
authorMartin v. Löwis <martin@v.loewis.de>2013-11-19 16:02:36 (GMT)
committerMartin v. Löwis <martin@v.loewis.de>2013-11-19 16:02:36 (GMT)
commitdd7436c6130ae304c6e0b399fe22692a470b6b5c (patch)
treef22a7f118d4df913373357c7d2832f40a12785ef /Tools
parentdc2fd5101a22d82600a328158f484e74e976d12b (diff)
downloadcpython-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.py29
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)