http://bugs.winehq.org/show_bug.cgi?id=8439
--- Comment #3 from Anastasius Focht focht@gmx.net 2008-01-31 08:20:40 --- Created an attachment (id=10544) --> (http://bugs.winehq.org/attachment.cgi?id=10544) patch which fixes MSI_GetProductInfo to treat specific properties with correct type
Hello,
another installer issue is msi's MsiGetProductInfoW() (MSI_GetProductInfo) failing to treat specific properties of correct type. By using default case of switch some values are accidentally read/interpreted as strings.
This prevents prerequisite installers of VS.NET 2003 and 2005 from finishing successfully.
--- snip installer msi log --- [01/31/08,11:14:40] Microsoft FrontPage 2000 Web Extensions Client [01/31/08,11:14:40] This component uses the MsiVersionCheck version check method. It will validate a Windows Installer app on your machine. [01/31/08,11:14:40] MSI Update Code: {0712D42B-19A7-4d8a-899C-B9CDACDE39D3}. [01/31/08,11:14:40] Checking for a major version of 7 and a minor version of 0. [01/31/08,11:14:40] Setup Runtime Files [01/31/08,11:14:40] This component uses the MsiVersionCheck version check method. It will validate a Windows Installer app on your machine. [01/31/08,11:14:40] MSI Update Code: {663BB9F7-C904-439D-B99D-24D8F1419E2A}. [01/31/08,11:14:40] Checking for a major version of 7 and a minor version of 1. --- snip installer msi log ---
--- snip trace --- .. 001a:Call msi.MsiGetProductInfoW(0034c22c L"{AEB9948B-4FF2-47C9-990E-47014492A0FE}",00409208 L"VersionMajor",0034c294 L"",0034c228) ret=0043ea2c 001a:trace:msi:MsiGetProductInfoW L"{AEB9948B-4FF2-47C9-990E-47014492A0FE}" L"VersionMajor" 0x34c294 0x34c228 001a:trace:msi:MSI_GetProductInfo L"{AEB9948B-4FF2-47C9-990E-47014492A0FE}" L"VersionMajor" 0x34c154 0x34c228 001a:Call KERNEL32.lstrcmpW(00409208 L"VersionMajor",6174c7a0 L"PackageCode") ret=617172e0 001a:Ret KERNEL32.lstrcmpW() retval=00000001 ret=617172e0 001a:Call KERNEL32.lstrcmpW(00409208 L"VersionMajor",6174c7b8 L"AssignmentType") ret=61717516 001a:Ret KERNEL32.lstrcmpW() retval=00000001 ret=61717516 001a:Call KERNEL32.lstrcmpW(00409208 L"VersionMajor",6174c7d6 L"Language") ret=61717590 001a:Ret KERNEL32.lstrcmpW() retval=00000001 ret=61717590 001a:Call KERNEL32.lstrcmpW(00409208 L"VersionMajor",6174c7e8 L"Version") ret=61717677 001a:Ret KERNEL32.lstrcmpW() retval=00000001 ret=61717677 001a:Call KERNEL32.lstrcmpW(00409208 L"VersionMajor",6174c7f8 L"ProductName") ret=61717697 001a:Ret KERNEL32.lstrcmpW() retval=00000001 ret=61717697 001a:fixme:msi:MSI_GetProductInfo L"VersionMajor" 001a:Call KERNEL32.lstrcmpW(00409208 L"VersionMajor",6174c810 L"VersionString") ret=6171770b 001a:Ret KERNEL32.lstrcmpW() retval=ffffffff ret=6171770b 001a:trace:msi:MSIREG_OpenUninstallKey L"{AEB9948B-4FF2-47C9-990E-47014492A0FE}" 001a:Call advapi32.RegOpenKeyW(80000002,0034bc7c L"Software\Microsoft\Windows\CurrentVersion\Uninstall\{AEB9948B-4FF2-47C9-990E-47014492A0FE}",0034c108) ret=61726837 001a:Ret advapi32.RegOpenKeyW() retval=00000000 ret=61726837 001a:Call advapi32.RegQueryValueExW(00000060,00409208 L"VersionMajor",00000000,00000000,00000000,0034c07c) ret=61729404 001a:Ret advapi32.RegQueryValueExW() retval=00000000 ret=61729404 001a:Call ntdll.RtlAllocateHeap(00110000,00000000,00000006) ret=61729440 001a:Ret ntdll.RtlAllocateHeap() retval=00175098 ret=61729440 001a:Call advapi32.RegQueryValueExW(00000060,00409208 L"VersionMajor",00000000,00000000,00175098,0034c07c) ret=61729478 001a:Ret advapi32.RegQueryValueExW() retval=00000000 ret=61729478 001a:Call advapi32.RegCloseKey(00000060) ret=6171745c 001a:Ret advapi32.RegCloseKey() retval=00000000 ret=6171745c 001a:trace:msi:MSI_GetProductInfo returning L"\0006" 001a:Call ntdll.RtlFreeHeap(00110000,00000000,00175098) ret=617174a5 001a:Ret ntdll.RtlFreeHeap() retval=00000001 ret=617174a5 001a:Ret msi.MsiGetProductInfoW() retval=00000000 ret=0043ea2c .. --- snip trace ---
MSI_GetProductInfo returns L"\0006" instead of "6". In this case "VersionMajor" and "VersionMinor" are of REG_DWORD.
Attached patch fixes this.
There are other FIXME's of same category but they seem harmless, not affecting overall installation result.
--- snip --- .. fixme:msi:MSI_GetProductInfo L"InstalledProductName" .. fixme:msi:MSI_GetProductInfo L"VersionString" .. fixme:msi:MSI_GetProductInfo L"InstallLocation" --- snip ---
Regards