mirror of
https://github.com/python/cpython.git
synced 2025-11-02 11:08:57 +00:00
Replace cabarc with FCICreate.
This commit is contained in:
parent
9f59fa5d67
commit
49561ada3e
1 changed files with 4 additions and 36 deletions
|
|
@ -5,7 +5,7 @@ import win32com.client.gencache
|
||||||
import win32com.client
|
import win32com.client
|
||||||
import pythoncom, pywintypes
|
import pythoncom, pywintypes
|
||||||
from win32com.client import constants
|
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:
|
try:
|
||||||
basestring
|
basestring
|
||||||
|
|
@ -350,7 +350,7 @@ def gen_uuid():
|
||||||
class CAB:
|
class CAB:
|
||||||
def __init__(self, name):
|
def __init__(self, name):
|
||||||
self.name = name
|
self.name = name
|
||||||
self.file = open(name+".txt", "wt")
|
self.files = []
|
||||||
self.filenames = sets.Set()
|
self.filenames = sets.Set()
|
||||||
self.index = 0
|
self.index = 0
|
||||||
|
|
||||||
|
|
@ -369,47 +369,15 @@ class CAB:
|
||||||
if not logical:
|
if not logical:
|
||||||
logical = self.gen_id(dir, file)
|
logical = self.gen_id(dir, file)
|
||||||
self.index += 1
|
self.index += 1
|
||||||
if full.find(" ")!=-1:
|
self.files.append((full, logical))
|
||||||
print >>self.file, '"%s" %s' % (full, logical)
|
|
||||||
else:
|
|
||||||
print >>self.file, '%s %s' % (full, logical)
|
|
||||||
return self.index, logical
|
return self.index, logical
|
||||||
|
|
||||||
def commit(self, db):
|
def commit(self, db):
|
||||||
self.file.close()
|
|
||||||
try:
|
try:
|
||||||
os.unlink(self.name+".cab")
|
os.unlink(self.name+".cab")
|
||||||
except OSError:
|
except OSError:
|
||||||
pass
|
pass
|
||||||
for k, v in [(r"Software\Microsoft\VisualStudio\7.1\Setup\VS", "VS7CommonBinDir"),
|
_msi.FCICreate(self.name+".cab", self.files)
|
||||||
(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"
|
|
||||||
add_data(db, "Media",
|
add_data(db, "Media",
|
||||||
[(1, self.index, None, "#"+self.name, None, None)])
|
[(1, self.index, None, "#"+self.name, None, None)])
|
||||||
add_stream(db, self.name, self.name+".cab")
|
add_stream(db, self.name, self.name+".cab")
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue