http://bugs.winehq.org/show_bug.cgi?id=24611
--- Comment #40 from Andrew Eikum aeikum@codeweavers.com 2013-09-25 14:12:24 CDT --- Created attachment 46079 --> http://bugs.winehq.org/attachment.cgi?id=46079 Misc fixes
Here's a patch which fixes the Titan Quest installer for me. It's three incomplete patches rolled into one.
First, on Windows, RegisterTypeLib appears to register 32-bit typelibs into the 64-bit side of HKCR\Interfaces (HKCR\Typelib is mirrored, which is why this already works). So this patch adds code to do that using KEY_WOW64_64KEY in 32-bit processes.
But, advapi32 is broken and uses the cached 32-bit HKEY for HKEY_CLASSES_ROOT even if you specify the KEY_WOW64_64KEY. So this patch adds logic to avoid the cached entries if any of the KEY_WOW64 flags are present.
Finally, tmarshal rigidly checks for a <HKCR\Typelib...\win64> key when running in 64-bit mode. For a 32-bit typelib, Windows's RegisterTypeLib only creates a win32 key. I think tmarshal should fall back onto a win32 key if win64 is not present. This patch does that, and it's enough to fix the installer.
So I need to write some tests to verify what I just wrote, but this patch should work for anyone who wants to test it.