partial implementation of msi.dll

Mike McCormack mike at
Wed Aug 6 21:23:59 CDT 2003

Hey Greg,

The documentation for MSI is fairly incomplete.  The file format was 
mostly undocumented, but it looks like things get better as they get 
more abstract ;)

Fortunately it seems fairly well structured. The database and installer 
parts are cleanly seperated from each other.

The next steps are:

1) create a second parser for MSI conditional expressions (and figure 
out how to get two parsers into the code and keep Alexandre happy ... 
since pure parsers require a fairly new version of bison :)

2) make the database read/write - not immediately important, but 
necessary later

There's undocumented interaction with shell32 to create "Advertised 
Shortcuts", which are evil shortcuts that contain an identifier that 
only MSI can understand.  If you look through SHELL32.DLL from Windows 
2000, you can see it links to MSI.DLL.

However, now that the database is understood, the main installer loop is 
a little easier... it appears that you just iterate over the "Action" 
tables, and do the actions in the order specified.

I don't have lots of time to work on this at the moment, so if somebody 
wants to have a go, I'm happy to help them out.


ps. maybe we can just call it the Wine installer...

Gregory M. Turner wrote:

> Cool!
> But "Micorosft Installer" might not be the most appropriate name for this 
> implementation, eh?  :P  How about "Mike's Sexy Installer" ;)
> Having clearly delved into this deeper than most of us, how complete would you 
> say the documentation for MSI is?  What do you think is the future outlook of 
> this work?

More information about the wine-devel mailing list