[issue8552] msilib can't create large CAB files

Bill Janssen report at bugs.python.org
Wed Apr 28 00:55:51 CEST 2010


New submission from Bill Janssen <bill.janssen at gmail.com>:

I'm trying to create a CAB file containing about 69MB of data, in 4555 files.  msilib fails in CAB.commit():

$ python build-msi-installer.py /c/UpLib/1.7.9 ~/uplib 1.7.9 ./uplib-1.7.9.msi
c:\Documents and Settings\wjanssen\uplib\win32\uplib-1.7.9.msi
install_location c:/UpLib/1.7.9
c:\docume~1\wjanssen\locals~1\temp\tmpu5dwz6 68943045
gc: collecting generation 0...
gc: objects in each generation: 670 702 8255
gc: done, 0.0000s elapsed.
gc: collecting generation 0...
gc: objects in each generation: 707 1364 8255
gc: done, 0.0000s elapsed.
gc: collecting generation 0...
gc: objects in each generation: 699 2031 8255
gc: done, 0.0000s elapsed.
gc: collecting generation 0...
gc: objects in each generation: 794 2680 8255
gc: done, 0.0000s elapsed.
gc: collecting generation 0...
gc: objects in each generation: 730 3373 8255
gc: done, 0.0000s elapsed.
gc: collecting generation 0...
gc: objects in each generation: 765 4018 8255
gc: done, 0.0000s elapsed.
gc: collecting generation 0...
gc: objects in each generation: 741 4697 8255
gc: done, 0.0000s elapsed.
(1, 4555, None, '#prereqs', None, None)
Traceback (most recent call last):
  File "build-msi-installer.py", line 780, in <module>
    p.run()
  File "build-msi-installer.py", line 243, in run
    self.add_files()
  File "build-msi-installer.py", line 312, in add_files
    cab.commit(self.db)
  File "c:\Python26\lib\msilib\__init__.py", line 223, in commit
    [(1, self.index, None, "#"+self.name, None, None)])
  File "c:\Python26\lib\msilib\__init__.py", line 97, in add_data
    v = db.OpenView("SELECT * FROM `%s`" % table)
_msi.MSIError: 1: 2229 2: c:\Documents and Settings\wjanssen\uplib\win32\uplib-1.7.9.msi 3: Media 4: SELECT * FROM `Media` 
gc: collecting generation 2...
gc: objects in each generation: 416 5351 8254
gc: done, 0.0000s elapsed.
$

(I added a bit of code to print out the Media table record, and the size of the file created with FCICreate.)

This works fine if I choose a slightly smaller subset, such as /c/UpLib/1.7.9/lib, for instance.  So I'm guessing this is a memory problem; at some point there's just not enough memory to open the MSI file and load the Media table.

I opened the MSI file with orca and sure enough, there is no Media table in it.  Not sure how to take that, though;  perhaps the table only appears after a record has been written to it.

Another reason to allow multiple CAB files in a single installer?

----------
components: Library (Lib), Windows
messages: 104379
nosy: janssen, loewis
priority: normal
severity: normal
status: open
title: msilib can't create large CAB files
type: resource usage
versions: Python 2.6

_______________________________________
Python tracker <report at bugs.python.org>
<http://bugs.python.org/issue8552>
_______________________________________


More information about the Python-bugs-list mailing list