Vitaly Perov [mailto:vitperov@etersoft.ru] wrote:
I haven't found any information about how it implemented in Windows. I use the similar *.com and *.bat way of execution *.msi. I don't sure, that it is correct, but it works! I'll be grateful if you have any information/links about how it should work
What about the normal Windows file extension registry?
HKCR.msi REG_SZ Msi.Package HKCR\Msi.Package REG_SZ Windows Installer Package HKCR\Msi.Package EditFlags REG_BINARY 00 00 00 01 HKCR\Msi.Package FriendlyTypeName REG_EXPAND_SZ @%SystemRoot%\System32\msi.dll,-34 HKCR\Msi.Package\DefaultIcon REG_SZ C:\WINDOWS\system32\msiexec.exe,0 HKCR\Msi.Package\shell REG_SZ Open,Repair,Uninstall
This for Install:
HKCR\Msi.Package\shell\Open REG_SZ &Install HKCR\Msi.Package\shell\Open MUIVerb REG_EXAPND_SZ @%SystemRoot%\System32\msi.dll,-36 HKCR\Msi.Package\shell\Open\command REG_EXPAND_SZ "%SystemRoot%\System32\msiexec.exe" /i "%1" %*
And similar for Repair and Uninstall!
I would think that at some point cmd.exe just should call ShellExecuteEx for file types it doesn't know about and get the registry handling for free in that way. Possibly the import of shell32 would need to be done dynamically or delayed in that case.
Rolf Kalbermatter