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 03933bbd8e..c29d563d72 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 c179fd74f5..42cb3fd6f8 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.49.0