summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMartin v. Löwis <martin@v.loewis.de>2004-09-07 15:39:29 (GMT)
committerMartin v. Löwis <martin@v.loewis.de>2004-09-07 15:39:29 (GMT)
commit4b2017ae1ad347651586467055c3019c4a40b6df (patch)
tree89692578a18bd9cedbc84885b2ef14e99d96b60e
parent104c46bce3f3c45f0d5e41abfcef0d4aff318a60 (diff)
downloadcpython-4b2017ae1ad347651586467055c3019c4a40b6df.zip
cpython-4b2017ae1ad347651586467055c3019c4a40b6df.tar.gz
cpython-4b2017ae1ad347651586467055c3019c4a40b6df.tar.bz2
Implement conditional extensions through launcher.exe.
-rw-r--r--Tools/msi/msi.py32
1 files changed, 11 insertions, 21 deletions
diff --git a/Tools/msi/msi.py b/Tools/msi/msi.py
index 754ffe6..7b6b1d7 100644
--- a/Tools/msi/msi.py
+++ b/Tools/msi/msi.py
@@ -135,10 +135,6 @@ msilib.reset()
# b) it is NT, the user is privileged, and has chosen per-machine installation
sys32cond = "(Windows9x or (Privileged and ALLUSERS))"
-# Install extensions if the feature goes into
-# INSTALLSTATE_ADVERTISED or INSTALLSTATE_LOCAL
-want_extensions = "(&Extensions = 1) or (&Extensions = 3)"
-
def build_database():
"""Generate an empty database, with just the schema and the
Summary information stream."""
@@ -164,15 +160,6 @@ def build_database():
# back in case the installation is interrupted
msilib.change_sequence(sequence.InstallExecuteSequence,
"RemoveExistingProducts", 1510)
- # Conditionalize Extension information
- msilib.change_sequence(sequence.InstallExecuteSequence,
- "RegisterClassInfo", cond=want_extensions)
- msilib.change_sequence(sequence.InstallExecuteSequence,
- "RegisterExtensionInfo", cond=want_extensions)
- msilib.change_sequence(sequence.InstallExecuteSequence,
- "RegisterProgIdInfo", cond=want_extensions)
- msilib.change_sequence(sequence.InstallExecuteSequence,
- "RegisterMIMEInfo", cond=want_extensions)
msilib.add_tables(db, sequence)
# We cannot set ALLUSERS in the property table, as this cannot be
# reset if the user choses a per-user installation. Instead, we
@@ -825,6 +812,8 @@ def add_files(db):
root.add_file("PCBuild/python.exe")
root.start_component("pythonw.exe", keyfile="pythonw.exe")
root.add_file("PCBuild/pythonw.exe")
+ root.start_component("launcher.exe", feature=ext_feature, keyfile="launcher.exe")
+ root.add_file("PCBuild/launcher.exe")
# msidbComponentAttributesSharedDllRefCount = 8, see "Component Table"
dlldir = PyDirectory(db, cab, root, srcdir, "DLLDIR", ".")
@@ -998,7 +987,8 @@ def add_registry(db):
if have_tcl:
tcldata = [
("REGISTRY.tcl", msilib.gen_uuid(), "TARGETDIR", 4,
- "&%s <> 2" % ext_feature.id, "py.IDLE")]
+ "&%s <> 2" % ext_feature.id,
+ "py.IDLE")]
add_data(db, "Component",
# msidbComponentAttributesRegistryKeyPath = 4
[("REGISTRY", msilib.gen_uuid(), "TARGETDIR", 4, None,
@@ -1027,16 +1017,16 @@ def add_registry(db):
pat3 = r"Software\Classes\%sPython.%sFile"
# Advertised extensions
add_data(db, "Extension",
- [("py", "python.exe", "Python.File", None, default_feature.id),
- ("pyw", "pythonw.exe", "Python.NoConFile", None, default_feature.id),
- ("pyc", "python.exe", "Python.CompiledFile", None, default_feature.id),
- ("pyo", "python.exe", "Python.CompiledFile", None, default_feature.id)])
+ [("py", "launcher.exe", "Python.File", None, ext_feature.id),
+ ("pyw", "launcher.exe", "Python.NoConFile", None, ext_feature.id),
+ ("pyc", "launcher.exe", "Python.CompiledFile", None, ext_feature.id),
+ ("pyo", "launcher.exe", "Python.CompiledFile", None, ext_feature.id)])
# add_data(db, "MIME") XXX
add_data(db, "Verb",
- [("py", "open", 1, None, r'"%1"'),
+ [("py", "open", 1, None, r'-console "%1"'),
("pyw", "open", 1, None, r'"%1"'),
- ("pyc", "open", 1, None, r'"%1"'),
- ("pyo", "open", 1, None, r'"%1"')])
+ ("pyc", "open", 1, None, r'-console "%1"'),
+ ("pyo", "open", 1, None, r'-console "%1"')])
add_data(db, "ProgId",
[("Python.File", None, None, "Python File", "python_icon.exe", 0),
("Python.NoConFile", None, None, "Python File (no console)", "python_icon.exe", 0),