https://bugs.winehq.org/show_bug.cgi?id=46114
Anastasius Focht focht@gmx.net changed:
What |Removed |Added ---------------------------------------------------------------------------- Resolution|--- |INVALID CC| |focht@gmx.net Component|-unknown |shell32 Status|UNCONFIRMED |RESOLVED Keywords| |download
--- Comment #2 from Anastasius Focht focht@gmx.net --- Hello folks,
confirming. The installer targets Win9x-based systems and the check is simply broken/non-applicable on modern Windows NT based OS.
--- snip --- ... 0056:Starting process L"C:\users\focht\Temp\IXP000.TMP\infinst2.exe" (entryproc=0x405e3e) ... 0056:Call KERNEL32.LoadLibraryA(0040b904 "SHELL32.DLL") ret=00402893 ... 0056:Ret KERNEL32.LoadLibraryA() retval=7da90000 ret=00402893 0056:Call KERNEL32.GetProcAddress(7da90000,0040b910 "DllGetVersion") ret=004028a5 0056:Ret KERNEL32.GetProcAddress() retval=7da9ae10 ret=004028a5 0056:Call KERNEL32.FreeLibrary(7da90000) ret=004028b9 ... 0056:Ret KERNEL32.FreeLibrary() retval=00000001 ret=004028b9 0056:Call user32.LoadStringA(00000000,00000092,0040d158,00000800) ret=00403b09 0056:Ret user32.LoadStringA() retval=0000005e ret=00403b09 0056:Call KERNEL32.lstrcatA(0040d158 "Internet Explorer 3.0 cannot be installed on a system that has Internet Explorer 4.0 installed",0040cf48 "") ret=00403b1d 0056:Ret KERNEL32.lstrcatA() retval=0040d158 ret=00403b1d 0056:Call user32.MessageBoxA(00000000,0040d158 "Internet Explorer 3.0 cannot be installed on a system that has Internet Explorer 4.0 installed",0040d050 "",00000000) ret=00403b31 --- snip ---
The brain damage:
--- snip --- 00402887 PUSH ESI 00402888 PUSH OFFSET 0040B904 ; FileName = "SHELL32.DLL" 0040288D CALL DWORD PTR DS:[<&KERNEL32.LoadLibraryA>] 00402893 MOV ESI,EAX 00402895 TEST ESI,ESI 00402897 JZ SHORT 004028B9 00402899 PUSH OFFSET 0040B910 ; Procname = "DllGetVersion" 0040289E PUSH ESI ; hModule 0040289F CALL DWORD PTR DS:[<&KERNEL32.GetProcAddress>] 004028A5 PUSH ESI ; hModule 004028A6 CMP EAX,1 004028A9 SBB EAX,EAX 004028AB ADD EAX,2 004028AE MOV DWORD PTR DS:[40B6C8],EAX 004028B3 CALL DWORD PTR DS:[<&KERNEL32.FreeLibrary>] 004028B9 MOV EAX,DWORD PTR DS:[40B6C8] 004028BE POP ESI 004028BF RETN --- snip ---
Again, this can't work on native Windows NT based systems.
You can work around in Wine by setting an app specific dll override for the sub-installer to prevent loading of 'shell32.dll' at all. It will then successfully install the old IE 3.x crap. It needs to be app specific override to ensure that Wine builtin/main app processes can still load 'shell32.dll' (otherwise they would break earlier).
--- snip --- [HKEY_CURRENT_USER\Software\Wine\AppDefaults\infinst2.exe\DllOverrides] "shell32"="" --- snip ---
$ sha1sum msie302w95.exe a55c3834860347342c0b91e0f572124b440eb195 msie302w95.exe
$ du -sh msie302w95.exe 11M msie302w95.exe
$ wine --version wine-3.19-194-gd3c9d7558b
Regards