diff options
author | Martin v. Löwis <martin@v.loewis.de> | 2010-08-28 13:39:09 (GMT) |
---|---|---|
committer | Martin v. Löwis <martin@v.loewis.de> | 2010-08-28 13:39:09 (GMT) |
commit | 49561ada3e75ad936d207cfa2a516537bd9a5fa7 (patch) | |
tree | 48e5df5683b43ec78b44c460b0fdacc8bbd19b5b /Tools/msi/msilib.py | |
parent | 9f59fa5d67030eb5749938a99c4fe105955aedcc (diff) | |
download | cpython-49561ada3e75ad936d207cfa2a516537bd9a5fa7.zip cpython-49561ada3e75ad936d207cfa2a516537bd9a5fa7.tar.gz cpython-49561ada3e75ad936d207cfa2a516537bd9a5fa7.tar.bz2 |
Replace cabarc with FCICreate.
Diffstat (limited to 'Tools/msi/msilib.py')
-rw-r--r-- | Tools/msi/msilib.py | 40 |
1 files changed, 4 insertions, 36 deletions
diff --git a/Tools/msi/msilib.py b/Tools/msi/msilib.py index 8f73934..12cb9d0 100644 --- a/Tools/msi/msilib.py +++ b/Tools/msi/msilib.py @@ -5,7 +5,7 @@ import win32com.client.gencache import win32com.client import pythoncom, pywintypes from win32com.client import constants -import re, string, os, sets, glob, subprocess, sys, _winreg, struct +import re, string, os, sets, glob, subprocess, sys, _winreg, struct, _msi try: basestring @@ -350,7 +350,7 @@ def gen_uuid(): class CAB: def __init__(self, name): self.name = name - self.file = open(name+".txt", "wt") + self.files = [] self.filenames = sets.Set() self.index = 0 @@ -369,47 +369,15 @@ class CAB: if not logical: logical = self.gen_id(dir, file) self.index += 1 - if full.find(" ")!=-1: - print >>self.file, '"%s" %s' % (full, logical) - else: - print >>self.file, '%s %s' % (full, logical) + self.files.append((full, logical)) return self.index, logical def commit(self, db): - self.file.close() try: os.unlink(self.name+".cab") except OSError: pass - for k, v in [(r"Software\Microsoft\VisualStudio\7.1\Setup\VS", "VS7CommonBinDir"), - (r"Software\Microsoft\VisualStudio\8.0\Setup\VS", "VS7CommonBinDir"), - (r"Software\Microsoft\VisualStudio\9.0\Setup\VS", "VS7CommonBinDir"), - (r"Software\Microsoft\Win32SDK\Directories", "Install Dir"), - ]: - try: - key = _winreg.OpenKey(_winreg.HKEY_LOCAL_MACHINE, k) - dir = _winreg.QueryValueEx(key, v)[0] - _winreg.CloseKey(key) - except (WindowsError, IndexError): - continue - cabarc = os.path.join(dir, r"Bin", "cabarc.exe") - if not os.path.exists(cabarc): - continue - break - else: - print "WARNING: cabarc.exe not found in registry" - cabarc = "cabarc.exe" - cmd = r'"%s" -m lzx:21 n %s.cab @%s.txt' % (cabarc, self.name, self.name) - p = subprocess.Popen(cmd, shell=True, stdin=subprocess.PIPE, - stdout=subprocess.PIPE, stderr=subprocess.STDOUT) - for line in p.stdout: - if line.startswith(" -- adding "): - sys.stdout.write(".") - else: - sys.stdout.write(line) - sys.stdout.flush() - if not os.path.exists(self.name+".cab"): - raise IOError, "cabarc failed" + _msi.FCICreate(self.name+".cab", self.files) add_data(db, "Media", [(1, self.index, None, "#"+self.name, None, None)]) add_stream(db, self.name, self.name+".cab") |