MAKEMSI quickly and reliably creates MSI files in a non-programmatic way
Have your say! Join the MAKEMSI discussion list or view archive! Suggest improvements. No question too simple or too complex.
[Bottom][Contents][Prev]: ConfigurableItem Object Completely Broken[Next]: IntegerData() Features (on Record Object)
Have your say! Join the MAKEMSI discussion list or view archive! Suggest improvements. No question too simple or too complex.
\->Troubleshooting->Bugs, Features and Issues (NON-MAKEMSI)->A Windows Installer _Streams table key longer than 62 bytes corrupts the database

BUG: A Windows Installer _Streams table key longer than 62 bytes corrupts the database

Many tables and MAKEMSI commands cause Windows Installer to update the "_Streams" table. Windows Installer generates a key which begins with the table name followed by the values of all primary key columns (with full stops as delimiters).

If the length of the generated key is longer than 62 chars (the documented maximum OLE data structure key length) then the Windows Installer database gets corrupted.

The problem is easy to generate with "ORCA" but can no longer be generated by MAKEMSI as it now prevalidates the length and reports an error if its too long, this code would previously have corrupted the database (build failing with a 2213 error) but it will now report a "nice" error:

<$Icon "Tryme.ico" Key="I23456789X123456789X123456789X123456789X123456789X1234567a">  ;;Key of 58 bytes (will cause 2213 failure), try again with "a" removed!

The following is a partial list of tables that may have this issue (basically any table with a column type of "v0" for binary):

These are my main issues:

  1. The schema for tables with single field primary keys should reflect the limitation, so for example the maximum length of the "Name" column of the "Icon" table is 57 bytes not the 72 that the schema defines.

  2. Windows Installer should be reporting the problem and not corrupting the database. MAKEMSI should not need to contain the prevalidation code.


Microsoft awarded me an MVP (Most Valuable Professional award) in 2004, 2005, 2006, 2007, 2008 & 2009 for the Windows SDK (Windows Installer) area.Please email me any feedback, additional information or corrections.
See this page online (look for updates)

[Top][Contents][Prev]: ConfigurableItem Object Completely Broken[Next]: IntegerData() Features (on Record Object)


MAKEMSI© is (C)opyright Dennis Bareis 2003-2008 (All rights reserved).
Saturday May 28 2022 at 3:11pm
Visit MAKEMSI's Home Page
Microsoft awarded me an MVP (Most Valuable Professional award) in 2004, 2005, 2006, 2007, 2008 & 2009 for the Windows SDK (Windows Installer) area.