http://bugs.winehq.org/show_bug.cgi?id=7409
------- Additional Comments From focht@gmx.net 2007-23-03 08:45 ------- Hello,
--- snip --- It seems this is the official MS way to get msvcr80.dll: http://www.sweetpotatosoftware.com/files/vcredist_x86.zip but this seems to fail to install in wine with: wine vcredist_x86.exe fixme:advapi:DecryptFileA "C:\windows\temp\IXP001.TMP\" 00000000 wine: Unhandled page fault on read access to 0x80002b8c at address 0x701069b2 (thread 003f), starting debugger... --- snip ---
Doesnt crash this way here (wine 0.9.33 current). Instead it bumps later on:
--- snip --- Call from 0x7b8405f0 to unimplemented function msi.dll.MsiEnumProductsExA, aborting 0012:trace:seh:call_stack_handlers calling handler at 0x7bc2f490 code=80000100 flags=1 wine: Unimplemented function msi.dll.MsiEnumProductsExA called at address 0x7b8405f0 (thread 0012), starting debugger.. --- snip ---
But thats easy to fix, simply add empty "A" and "W" implementations to msi module:
--- snip dlls/msi/msi.spec --- 245 stdcall MsiEnumProductsExA( str str long long ptr ptr ptr ptr) 246 stdcall MsiEnumProductsExW( wstr wstr long long ptr ptr ptr ptr) --- snip dlls/msi/msi.spec ---
--- snip dlls/msi/registry.c ---
UINT WINAPI MsiEnumProductsExA( LPCSTR szProductCode, LPCSTR szUserSid, DWORD dwContext, DWORD dwIndex, LPSTR szInstalledProductCode, MSIINSTALLCONTEXT* pdwInstalledContext, LPSTR szSid, LPDWORD pcchSid) { FIXME("%s %s %d %d %p %p %p %p\n", debugstr_a(szProductCode), debugstr_a(szUserSid), dwContext, dwIndex, szInstalledProductCode, pdwInstalledContext, szSid, pcchSid); return ERROR_NO_MORE_ITEMS; }
UINT WINAPI MsiEnumProductsExW( LPCWSTR szProductCode, LPCWSTR szUserSid, DWORD dwContext, DWORD dwIndex, LPWSTR szInstalledProductCode, MSIINSTALLCONTEXT* pdwInstalledContext, LPWSTR szSid, LPDWORD pcchSid) { FIXME("%s %s %d %d %p %p %p %p\n", debugstr_w(szProductCode), debugstr_w(szUserSid), dwContext, dwIndex, szInstalledProductCode, pdwInstalledContext, szSid, pcchSid); return ERROR_NO_MORE_ITEMS; } --- snip dlls/msi/registry.c ---
That way it doesnt crash (no exception seen, even in full relay). You see a file copy dialog shortly flashing and then it exits. All the stuff seems to get copied and registry entries created.
Regards