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: