summaryrefslogtreecommitdiffstats
path: root/Tools/msi/msi.py
diff options
context:
space:
mode:
Diffstat (limited to 'Tools/msi/msi.py')
-rw-r--r--Tools/msi/msi.py21
1 files changed, 13 insertions, 8 deletions
diff --git a/Tools/msi/msi.py b/Tools/msi/msi.py
index 694875a..b2c0a05 100644
--- a/Tools/msi/msi.py
+++ b/Tools/msi/msi.py
@@ -422,7 +422,7 @@ 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
+ removepipargs = r'-m ensurepip._uninstall'
# See "CustomAction Table"
add_data(db, "CustomAction", [
# msidbCustomActionTypeFirstSequence + msidbCustomActionTypeTextData + msidbCustomActionTypeProperty
@@ -441,7 +441,7 @@ def add_ui(db):
("CompileGrammar", 18, "python.exe", lib2to3args),
# msidbCustomActionTypeInScript (1024); run during actual installation
("UpdatePip", 18+1024, "python.exe", updatepipargs),
- #("RemovePip", 18, "python.exe", removepipargs),
+ ("RemovePip", 18, "python.exe", removepipargs),
])
# UI Sequences, see "InstallUISequence Table", "Using a Sequence Table"
@@ -480,10 +480,10 @@ def add_ui(db):
("UpdateEditIDLE", None, 1050),
# run command if install state of pip changes to INSTALLSTATE_LOCAL
# run after InstallFiles
- ("UpdatePip", "&pip=3", 4001),
+ ("UpdatePip", "&pip_feature=3", 4001),
# remove pip when state changes to INSTALLSTATE_ABSENT
# run before RemoveFiles
- #("RemovePip", "&pip=2", 3499),
+ ("RemovePip", "&pip_feature=2", 3499),
("CompilePyc", "COMPILEALL", 6800),
("CompilePyo", "COMPILEALL", 6801),
("CompileGrammar", "COMPILEALL", 6802),
@@ -862,7 +862,7 @@ def add_features(db):
# Features that have no advertisement trigger (e.g. the test suite)
# must not support advertisement
global default_feature, tcltk, htmlfiles, tools, testsuite
- global ext_feature, private_crt, prepend_path, update_pip
+ global ext_feature, private_crt, prepend_path, pip_feature
default_feature = Feature(db, "DefaultFeature", "Python",
"Python Interpreter and Libraries",
1, directory = "TARGETDIR")
@@ -886,10 +886,10 @@ def add_features(db):
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",
+ pip_feature = Feature(db, "pip_feature", "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)
+ parent = default_feature, attributes=2|8)
testsuite = Feature(db, "Testsuite", "Test suite",
"Python test suite (Lib/test/)", 13,
parent = default_feature, attributes=2|8)
@@ -1206,6 +1206,8 @@ def add_registry(db):
"Documentation"),
("REGISTRY.path", msilib.gen_uuid(), "TARGETDIR", registry_component, None,
None),
+ ("REGISTRY.ensurepip", msilib.gen_uuid(), "TARGETDIR", registry_component, "EnsurePipRun",
+ None),
("REGISTRY.def", msilib.gen_uuid(), "TARGETDIR", registry_component,
None, None)] + tcldata)
# See "FeatureComponents Table".
@@ -1223,6 +1225,7 @@ def add_registry(db):
[(default_feature.id, "REGISTRY"),
(htmlfiles.id, "REGISTRY.doc"),
(prepend_path.id, "REGISTRY.path"),
+ (pip_feature.id, "REGISTRY.ensurepip"),
(ext_feature.id, "REGISTRY.def")] +
tcldata
)
@@ -1309,7 +1312,9 @@ def add_registry(db):
"", r"[TARGETDIR]Python.exe", "REGISTRY.def"),
("DisplayIcon", -1,
r"Software\Microsoft\Windows\CurrentVersion\Uninstall\%s" % product_code,
- "DisplayIcon", "[TARGETDIR]python.exe", "REGISTRY")
+ "DisplayIcon", "[TARGETDIR]python.exe", "REGISTRY"),
+ # Fake registry entry to allow installer to track whether ensurepip has been run
+ ("EnsurePipRun", -1, prefix+r"\EnsurePipRun", "", "#1", "REGISTRY.ensurepip"),
])
# Shortcuts, see "Shortcut Table"
add_data(db, "Directory",