From 81ca7c784c4dd58dde691284321e3e220550a75c Mon Sep 17 00:00:00 2001 From: Christian Heimes Date: Sun, 18 Nov 2007 18:18:41 +0000 Subject: [PATCH] Updates to the msi builder and PCbuild9 directory. msi.py can now create installers from the PCbuild9 directory with MSVCR90.dll. PCbuild and MSVCR71.dll are still the default. --- PCbuild9/installer.bmp | Bin 0 -> 58806 bytes PCbuild9/pyd.vsprops | 8 +++- PCbuild9/pyd_d.vsprops | 6 ++- Tools/msi/msi.py | 101 +++++++++++++++++++++++++++++------------ 4 files changed, 83 insertions(+), 32 deletions(-) create mode 100644 PCbuild9/installer.bmp diff --git a/PCbuild9/installer.bmp b/PCbuild9/installer.bmp new file mode 100644 index 0000000000000000000000000000000000000000..1875e194ba2720cf25541c20e0459f16f3f96d72 GIT binary patch literal 58806 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 + diff --git a/PCbuild9/pyd_d.vsprops b/PCbuild9/pyd_d.vsprops index 03933bbd8eff..c29d563d7226 100644 --- a/PCbuild9/pyd_d.vsprops +++ b/PCbuild9/pyd_d.vsprops @@ -16,7 +16,11 @@ Name="VCLinkerTool" OutputFile="$(OutDir)\$(ProjectName)_d.pyd" LinkIncremental="1" - ImportLibrary="$(IntDir)\$(TargetName).lib" ProgramDatabaseFile="$(OutDir)\$(ProjectName)_d.pdb" + ImportLibrary="$(IntDir)\$(TargetName).lib" + /> + diff --git a/Tools/msi/msi.py b/Tools/msi/msi.py index c179fd74f5d4..42cb3fd6f878 100644 --- a/Tools/msi/msi.py +++ b/Tools/msi/msi.py @@ -1,7 +1,7 @@ # Python MSI Generator # (C) 2003 Martin v. Loewis # See "FOO" in comments refers to MSDN sections with the title FOO. -import msilib, schema, sequence, os, glob, time, re +import msilib, schema, sequence, os, glob, time, re, shutil from msilib import Feature, CAB, Directory, Dialog, Binary, add_data import uisample from win32com.client import constants @@ -26,6 +26,12 @@ full_current_version = None have_tcl = True # Where is sqlite3.dll located, relative to srcdir? sqlite_dir = "../sqlite-source-3.3.4" +# path to PCbuild directory +PCBUILD="PCbuild" +#PCBUILD="PCbuild9" +# msvcrt version +MSVCR = "71" +#MSVCR = "90" try: from config import * @@ -101,6 +107,7 @@ extensions = [ # Using the same UUID is fine since these files are versioned, # so Installer will always keep the newest version. msvcr71_uuid = "{8666C8DD-D0B4-4B42-928E-A69E32FA5D4D}" +msvcr90_uuid = "" # XXX pythondll_uuid = { "24":"{9B81E618-2301-4035-AC77-75D9ABEB7301}", "25":"{2e41b118-38bd-4c1b-a840-6977efd1b911}", @@ -147,15 +154,15 @@ def build_mingw_lib(lib_file, def_file, dll_file, mingw_lib): return True # Target files (.def and .a) go in PCBuild directory -lib_file = os.path.join(srcdir, "PCBuild", "python%s%s.lib" % (major, minor)) -def_file = os.path.join(srcdir, "PCBuild", "python%s%s.def" % (major, minor)) +lib_file = os.path.join(srcdir, PCBUILD, "python%s%s.lib" % (major, minor)) +def_file = os.path.join(srcdir, PCBUILD, "python%s%s.def" % (major, minor)) dll_file = "python%s%s.dll" % (major, minor) -mingw_lib = os.path.join(srcdir, "PCBuild", "libpython%s%s.a" % (major, minor)) +mingw_lib = os.path.join(srcdir, PCBUILD, "libpython%s%s.a" % (major, minor)) have_mingw = build_mingw_lib(lib_file, def_file, dll_file, mingw_lib) # Determine the target architechture -dll_path = os.path.join(srcdir, "PCBuild", dll_file) +dll_path = os.path.join(srcdir, PCBUILD, dll_file) msilib.set_arch_from_file(dll_path) if msilib.pe_type(dll_path) != msilib.pe_type("msisupport.dll"): raise SystemError("msisupport.dll for incorrect architecture") @@ -327,7 +334,7 @@ def add_ui(db): if not os.path.exists(srcdir+r"\PC\python_icon.exe"): raise "Run icons.mak in PC directory" add_data(db, "Binary", - [("PythonWin", msilib.Binary(srcdir+r"\PCbuild\installer.bmp")), # 152x328 pixels + [("PythonWin", msilib.Binary(r"%s\%s\installer.bmp" % (srcdir, PCBUILD))), # 152x328 pixels ("py.ico",msilib.Binary(srcdir+r"\PC\py.ico")), ]) add_data(db, "Icon", @@ -816,19 +823,45 @@ def extract_msvcr71(): r"Software\Microsoft\VisualStudio\7.1\Setup\VS") dir = _winreg.QueryValueEx(k, "MSMDir")[0] _winreg.CloseKey(k) - files = glob.glob1(dir, "*CRT71*") - assert len(files) == 1 - file = os.path.join(dir, files[0]) + files = glob.glob1(dir, "*VCR71*.dll") + assert len(files) > 0, (dir, files) # Extract msvcr71.dll - m = msilib.MakeMerge2() - m.OpenModule(file, 0) - m.ExtractFiles(".") - m.CloseModule() + #m = msilib.MakeMerge2() + #m.OpenModule(file, 0) + #m.ExtractFiles(".") + #m.CloseModule() + for file in files: + shutil.copy(os.path.join(dir, file), '.') # Find the version/language of msvcr71.dll installer = msilib.MakeInstaller() return installer.FileVersion("msvcr71.dll", 0), \ installer.FileVersion("msvcr71.dll", 1) +def extract_msvcr90(): + import _winreg + # Find the location of the merge modules + k = _winreg.OpenKey( + _winreg.HKEY_LOCAL_MACHINE, + r"Software\Microsoft\VisualStudio\9.0\Setup\VS") + 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 + installer = msilib.MakeInstaller() + return installer.FileVersion("msvcr90.dll", 0), \ + installer.FileVersion("msvcr90.dll", 1) + class PyDirectory(Directory): """By default, all components in the Python installer can run from source.""" @@ -846,19 +879,19 @@ def add_files(db): root = PyDirectory(db, cab, None, srcdir, "TARGETDIR", "SourceDir") default_feature.set_current() if not msilib.Win64: - root.add_file("PCBuild/w9xpopen.exe") + root.add_file("%s/w9xpopen.exe" % PCBUILD) root.add_file("README.txt", src="README") root.add_file("NEWS.txt", src="Misc/NEWS") root.add_file("LICENSE.txt", src="LICENSE") root.start_component("python.exe", keyfile="python.exe") - root.add_file("PCBuild/python.exe") + root.add_file("%s/python.exe" % PCBUILD) root.start_component("pythonw.exe", keyfile="pythonw.exe") - root.add_file("PCBuild/pythonw.exe") + root.add_file("%s/pythonw.exe" % PCBUILD) # msidbComponentAttributesSharedDllRefCount = 8, see "Component Table" dlldir = PyDirectory(db, cab, root, srcdir, "DLLDIR", ".") pydll = "python%s%s.dll" % (major, minor) - pydllsrc = srcdir + "/PCBuild/" + pydll + 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) @@ -866,18 +899,28 @@ def add_files(db): # For releases, the Python DLL has the same version as the # installer package. assert pyversion.split(".")[:3] == current_version.split(".") - dlldir.add_file("PCBuild/python%s%s.dll" % (major, minor), + dlldir.add_file("%s/python%s%s.dll" % (PCBUILD, major, minor), version=pyversion, language=installer.FileVersion(pydllsrc, 1)) # XXX determine dependencies - version, lang = extract_msvcr71() - dlldir.start_component("msvcr71", flags=8, keyfile="msvcr71.dll", uuid=msvcr71_uuid) - dlldir.add_file("msvcr71.dll", src=os.path.abspath("msvcr71.dll"), - version=version, language=lang) - tmpfiles.append("msvcr71.dll") + if MSVCR == "90": + 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") + else: + version, lang = extract_msvcr71() + dlldir.start_component("msvcr71", flags=8, keyfile="msvcr71.dll", + uuid=msvcr71_uuid) + dlldir.add_file("msvcr71.dll", src=os.path.abspath("msvcr71.dll"), + version=version, language=lang) + tmpfiles.append("msvcr71.dll") + # Check if _ctypes.pyd exists - have_ctypes = os.path.exists(srcdir+"/PCBuild/_ctypes.pyd") + have_ctypes = os.path.exists(srcdir+"/%s/_ctypes.pyd" % PCBUILD) if not have_ctypes: print("WARNING: _ctypes.pyd not found, ctypes will not be included") extensions.remove("_ctypes.pyd") @@ -963,7 +1006,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 = PyDirectory(db, cab, root, srcdir + "/" + PCBUILD, "DLLs", "DLLS|DLLs") lib.add_file("py.ico", src="../PC/py.ico") lib.add_file("pyc.ico", src="../PC/pyc.ico") dlls = [] @@ -971,7 +1014,7 @@ def add_files(db): for f in extensions: if f=="_tkinter.pyd": continue - if not os.path.exists(srcdir+"/PCBuild/"+f): + if not os.path.exists(srcdir + "/" + PCBUILD + "/" + f): print("WARNING: Missing extension", f) continue dlls.append(f) @@ -985,7 +1028,7 @@ def add_files(db): sqlite_arch = "" lib.add_file(srcdir+"/"+sqlite_dir+sqlite_arch+"/sqlite3.dll") if have_tcl: - if not os.path.exists(srcdir+"/PCBuild/_tkinter.pyd"): + if not os.path.exists("%s/%s/_tkinter.pyd" % (srcdir, PCBUILD)): print("WARNING: Missing _tkinter.pyd") else: lib.start_component("TkDLLs", tcltk) @@ -995,7 +1038,7 @@ def add_files(db): for f in glob.glob1(tcldir, "*.dll"): lib.add_file(f, src=os.path.join(tcldir, f)) # check whether there are any unknown extensions - for f in glob.glob1(srcdir+"/PCBuild", "*.pyd"): + for f in glob.glob1(srcdir+"/"+PCBUILD, "*.pyd"): if f.endswith("_d.pyd"): continue # debug version if f in dlls: continue print("WARNING: Unknown extension", f) @@ -1006,7 +1049,7 @@ def add_files(db): lib.glob("*.h") lib.add_file("pyconfig.h", src="../PC/pyconfig.h") # Add import libraries - lib = PyDirectory(db, cab, root, "PCBuild", "libs", "LIBS|libs") + lib = PyDirectory(db, cab, root, PCBUILD, "libs", "LIBS|libs") for f in dlls: lib.add_file(f.replace('pyd','lib')) lib.add_file('python%s%s.lib' % (major, minor)) -- 2.47.3