summaryrefslogtreecommitdiffstats
path: root/Tools/msi/msi.py
diff options
context:
space:
mode:
authorChristian Heimes <christian@cheimes.de>2008-02-28 20:52:40 (GMT)
committerChristian Heimes <christian@cheimes.de>2008-02-28 20:52:40 (GMT)
commite1feb2ebb29a4d27013902dfaf7b7e3dcac65fde (patch)
tree13c88b3de867fe0caa28e57aca1554248cea06b1 /Tools/msi/msi.py
parent70e7ea23f18aacc31f429787645ff8c074c0ad86 (diff)
downloadcpython-e1feb2ebb29a4d27013902dfaf7b7e3dcac65fde.zip
cpython-e1feb2ebb29a4d27013902dfaf7b7e3dcac65fde.tar.gz
cpython-e1feb2ebb29a4d27013902dfaf7b7e3dcac65fde.tar.bz2
Merged revisions 61038,61042-61045,61047,61050,61053,61055-61056,61061-61062,61066,61068,61070,61083,61085,61092-61097,61103-61104,61109-61111 via svnmerge from
svn+ssh://pythondev@svn.python.org/python/trunk ........ r61109 | martin.v.loewis | 2008-02-28 20:57:34 +0100 (Thu, 28 Feb 2008) | 1 line Bundle msvcr90.dll as a "private assembly". ........
Diffstat (limited to 'Tools/msi/msi.py')
-rw-r--r--Tools/msi/msi.py48
1 files changed, 23 insertions, 25 deletions
diff --git a/Tools/msi/msi.py b/Tools/msi/msi.py
index d39e21c..6760d02 100644
--- a/Tools/msi/msi.py
+++ b/Tools/msi/msi.py
@@ -845,21 +845,19 @@ def extract_msvcr90():
prod_dir = _winreg.QueryValueEx(k, "ProductDir")[0]
_winreg.CloseKey(k)
- # Copy msvcr90*
- dir = os.path.join(prod_dir, r'VC\redist\x86\Microsoft.VC90.CRT')
- files = glob.glob1(dir, "*CRT*.dll") + glob.glob1(dir, "*VCR*.dll")
- for file in files:
- shutil.copy(os.path.join(dir, file), '.')
-
- dir = os.path.join(prod_dir, r'VC\redist\Debug_NonRedist\x86\Microsoft.VC90.DebugCRT')
- files = glob.glob1(dir, "*CRT*.dll") + glob.glob1(dir, "*VCR*.dll")
- for file in files:
- shutil.copy(os.path.join(dir, file), '.')
-
- # Find the version/language of msvcr90.dll
+ result = []
installer = msilib.MakeInstaller()
- return installer.FileVersion("msvcr90.dll", 0), \
- installer.FileVersion("msvcr90.dll", 1)
+ dir = os.path.join(prod_dir, r'VC\redist\x86\Microsoft.VC90.CRT')
+ # omit msvcm90 and msvcp90, as they aren't really needed
+ files = ["Microsoft.VC90.CRT.manifest", "msvcr90.dll"]
+ for f in files:
+ path = os.path.join(dir, f)
+ kw = {'src':path}
+ if f.endswith('.dll'):
+ kw['version'] = installer.FileVersion(path, 0)
+ kw['language'] = installer.FileVersion(path, 1)
+ result.append((f, kw))
+ return result
class PyDirectory(Directory):
"""By default, all components in the Python installer
@@ -888,7 +886,10 @@ def add_files(db):
root.add_file("%s/pythonw.exe" % PCBUILD)
# msidbComponentAttributesSharedDllRefCount = 8, see "Component Table"
- dlldir = PyDirectory(db, cab, root, srcdir, "DLLDIR", ".")
+ #dlldir = PyDirectory(db, cab, root, srcdir, "DLLDIR", ".")
+ #install python30.dll into root dir for now
+ dlldir = root
+
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)
@@ -901,17 +902,14 @@ def add_files(db):
dlldir.add_file("%s/python%s%s.dll" % (PCBUILD, major, minor),
version=pyversion,
language=installer.FileVersion(pydllsrc, 1))
+ DLLs = PyDirectory(db, cab, root, srcdir + "/" + PCBUILD, "DLLs", "DLLS|DLLs")
# XXX determine dependencies
if MSVCR == "90":
- # XXX don't package the CRT for the moment;
- # this should probably use the merge module in the long run.
- pass
- #version, lang = extract_msvcr90()
- #dlldir.start_component("msvcr90", flags=8, keyfile="msvcr90.dll",
- # uuid=msvcr90_uuid)
- #dlldir.add_file("msvcr90.dll", src=os.path.abspath("msvcr90.dll"),
- # version=version, language=lang)
- #tmpfiles.append("msvcr90.dll")
+ root.start_component("msvcr90")
+ for file, kw in extract_msvcr90():
+ root.add_file(file, **kw)
+ if file.endswith("manifest"):
+ DLLs.add_file(file, **kw)
else:
version, lang = extract_msvcr71()
dlldir.start_component("msvcr71", flags=8, keyfile="msvcr71.dll",
@@ -1012,7 +1010,7 @@ def add_files(db):
pydirs.append((lib, f))
# Add DLLs
default_feature.set_current()
- lib = PyDirectory(db, cab, root, srcdir + "/" + PCBUILD, "DLLs", "DLLS|DLLs")
+ lib = DLLs
lib.add_file("py.ico", src=srcdir+"/PC/py.ico")
lib.add_file("pyc.ico", src=srcdir+"/PC/pyc.ico")
dlls = []