mirror of
https://github.com/python/cpython.git
synced 2025-07-28 21:55:21 +00:00
Package the launcher.
This commit is contained in:
parent
f36d65c7c8
commit
7dae234e78
1 changed files with 30 additions and 6 deletions
|
@ -286,7 +286,7 @@ def remove_old_versions(db):
|
|||
None, migrate_features, None, "REMOVEOLDSNAPSHOT")])
|
||||
props = "REMOVEOLDSNAPSHOT;REMOVEOLDVERSION"
|
||||
|
||||
props += ";TARGETDIR;DLLDIR"
|
||||
props += ";TARGETDIR;DLLDIR;LAUNCHERDIR"
|
||||
# Installer collects the product codes of the earlier releases in
|
||||
# these properties. In order to allow modification of the properties,
|
||||
# they must be declared as secure. See "SecureCustomProperties Property"
|
||||
|
@ -426,6 +426,8 @@ def add_ui(db):
|
|||
"[WindowsVolume]Python%s%s" % (major, minor)),
|
||||
("SetDLLDirToTarget", 307, "DLLDIR", "[TARGETDIR]"),
|
||||
("SetDLLDirToSystem32", 307, "DLLDIR", SystemFolderName),
|
||||
("SetLauncherDirToTarget", 307, "LAUNCHERDIR", "[TARGETDIR]"),
|
||||
("SetLauncherDirToWindows", 307, "LAUNCHERDIR", "[WindowsFolder]"),
|
||||
# msidbCustomActionTypeExe + msidbCustomActionTypeSourceFile
|
||||
# See "Custom Action Type 18"
|
||||
("CompilePyc", 18, "python.exe", compileargs),
|
||||
|
@ -442,6 +444,8 @@ def add_ui(db):
|
|||
# In the user interface, assume all-users installation if privileged.
|
||||
("SetDLLDirToSystem32", 'DLLDIR="" and ' + sys32cond, 751),
|
||||
("SetDLLDirToTarget", 'DLLDIR="" and not ' + sys32cond, 752),
|
||||
("SetLauncherDirToWindows", 'LAUNCHERDIR="" and ' + sys32cond, 753),
|
||||
("SetLauncherDirToTarget", 'LAUNCHERDIR="" and not ' + sys32cond, 754),
|
||||
("SelectDirectoryDlg", "Not Installed", 1230),
|
||||
# XXX no support for resume installations yet
|
||||
#("ResumeDlg", "Installed AND (RESUME OR Preselected)", 1240),
|
||||
|
@ -450,6 +454,7 @@ def add_ui(db):
|
|||
add_data(db, "AdminUISequence",
|
||||
[("InitialTargetDir", 'TARGETDIR=""', 750),
|
||||
("SetDLLDirToTarget", 'DLLDIR=""', 751),
|
||||
("SetLauncherDirToTarget", 'LAUNCHERDIR=""', 752),
|
||||
])
|
||||
|
||||
# Prepend TARGETDIR to the system path, and remove it on uninstall.
|
||||
|
@ -461,6 +466,8 @@ def add_ui(db):
|
|||
[("InitialTargetDir", 'TARGETDIR=""', 750),
|
||||
("SetDLLDirToSystem32", 'DLLDIR="" and ' + sys32cond, 751),
|
||||
("SetDLLDirToTarget", 'DLLDIR="" and not ' + sys32cond, 752),
|
||||
("SetLauncherDirToWindows", 'LAUNCHERDIR="" and ' + sys32cond, 753),
|
||||
("SetLauncherDirToTarget", 'LAUNCHERDIR="" and not ' + sys32cond, 754),
|
||||
("UpdateEditIDLE", None, 1050),
|
||||
("CompilePyc", "COMPILEALL", 6800),
|
||||
("CompilePyo", "COMPILEALL", 6801),
|
||||
|
@ -469,6 +476,7 @@ def add_ui(db):
|
|||
add_data(db, "AdminExecuteSequence",
|
||||
[("InitialTargetDir", 'TARGETDIR=""', 750),
|
||||
("SetDLLDirToTarget", 'DLLDIR=""', 751),
|
||||
("SetLauncherDirToTarget", 'LAUNCHERDIR=""', 752),
|
||||
("CompilePyc", "COMPILEALL", 6800),
|
||||
("CompilePyo", "COMPILEALL", 6801),
|
||||
("CompileGrammar", "COMPILEALL", 6802),
|
||||
|
@ -904,7 +912,7 @@ def generate_license():
|
|||
dirs = glob.glob(srcdir+"/../"+pat)
|
||||
if not dirs:
|
||||
raise ValueError, "Could not find "+srcdir+"/../"+pat
|
||||
if len(dirs) > 2:
|
||||
if len(dirs) > 2 and not snapshot:
|
||||
raise ValueError, "Multiple copies of "+pat
|
||||
dir = dirs[0]
|
||||
shutil.copyfileobj(open(os.path.join(dir, file)), out)
|
||||
|
@ -939,6 +947,7 @@ def hgmanifest():
|
|||
# See "File Table", "Component Table", "Directory Table",
|
||||
# "FeatureComponents Table"
|
||||
def add_files(db):
|
||||
installer = msilib.MakeInstaller()
|
||||
hgfiles = hgmanifest()
|
||||
cab = CAB("python")
|
||||
tmpfiles = []
|
||||
|
@ -958,11 +967,26 @@ def add_files(db):
|
|||
|
||||
# msidbComponentAttributesSharedDllRefCount = 8, see "Component Table"
|
||||
dlldir = PyDirectory(db, cab, root, srcdir, "DLLDIR", ".")
|
||||
launcherdir = PyDirectory(db, cab, root, srcdir, "LAUNCHERDIR", ".")
|
||||
|
||||
# msidbComponentAttributes64bit = 256; this disables registry redirection
|
||||
# to allow setting the SharedDLLs key in the 64-bit portion even for a
|
||||
# 32-bit installer.
|
||||
# XXX does this still allow to install the component on a 32-bit system?
|
||||
launcher = os.path.join(srcdir, PCBUILD, "py.exe")
|
||||
launcherdir.start_component("launcher", flags = 8+256, keyfile="py.exe")
|
||||
launcherdir.add_file("%s/py.exe" % PCBUILD,
|
||||
version=installer.FileVersion(launcher, 0),
|
||||
language=installer.FileVersion(launcher, 1))
|
||||
launcherw = os.path.join(srcdir, PCBUILD, "pyw.exe")
|
||||
launcherdir.start_component("launcherw", flags = 8+256, keyfile="pyw.exe")
|
||||
launcherdir.add_file("%s/pyw.exe" % PCBUILD,
|
||||
version=installer.FileVersion(launcherw, 0),
|
||||
language=installer.FileVersion(launcherw, 1))
|
||||
|
||||
pydll = "python%s%s.dll" % (major, minor)
|
||||
pydllsrc = os.path.join(srcdir, PCBUILD, pydll)
|
||||
dlldir.start_component("DLLDIR", flags = 8, keyfile = pydll, uuid = pythondll_uuid)
|
||||
installer = msilib.MakeInstaller()
|
||||
pyversion = installer.FileVersion(pydllsrc, 0)
|
||||
if not snapshot:
|
||||
# For releases, the Python DLL has the same version as the
|
||||
|
@ -1211,11 +1235,11 @@ def add_registry(db):
|
|||
"text/plain", "REGISTRY.def"),
|
||||
#Verbs
|
||||
("py.open", -1, pat % (testprefix, "", "open"), "",
|
||||
r'"[TARGETDIR]python.exe" "%1" %*', "REGISTRY.def"),
|
||||
r'"[LAUNCHERDIR]py.exe" "%1" %*', "REGISTRY.def"),
|
||||
("pyw.open", -1, pat % (testprefix, "NoCon", "open"), "",
|
||||
r'"[TARGETDIR]pythonw.exe" "%1" %*', "REGISTRY.def"),
|
||||
r'"[LAUNCHERDIR]pyw.exe" "%1" %*', "REGISTRY.def"),
|
||||
("pyc.open", -1, pat % (testprefix, "Compiled", "open"), "",
|
||||
r'"[TARGETDIR]python.exe" "%1" %*', "REGISTRY.def"),
|
||||
r'"[LAUNCHERDIR]py.exe" "%1" %*', "REGISTRY.def"),
|
||||
] + tcl_verbs + [
|
||||
#Icons
|
||||
("py.icon", -1, pat2 % (testprefix, ""), "",
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue