https://bugs.winehq.org/show_bug.cgi?id=19277
Anastasius Focht focht@gmx.net changed:
What |Removed |Added ---------------------------------------------------------------------------- CC| |focht@gmx.net
--- Comment #9 from Anastasius Focht focht@gmx.net --- Hello folks,
confirming.
The bootstrapper unpacks everything in temp directory and starts the real installer 'infinst.exe' from that location.
--- snip --- ... 003d:Call KERNEL32.CreateFileA(00154f08 "C:\users\focht\Temp\inst32.dll",40000000,00000000,00000000,00000002,00000080,ffffffff) ret=00401325 ... 003d:Ret KERNEL32.CreateFileA() retval=0000009c ret=00401325 ... 003d:Call KERNEL32.CreateFileA(00154f08 "C:\users\focht\Temp\inst16.dll",40000000,00000000,00000000,00000002,00000080,ffffffff) ret=00401325 ... 003d:Ret KERNEL32.CreateFileA() retval=0000009c ret=00401325 ... 003d:Call KERNEL32.SetFileAttributesA(00154f08 "C:\users\focht\Temp\inst32.dll",00000020) ret=0040185d 003d:Ret KERNEL32.SetFileAttributesA() retval=00000001 ret=0040185d ... 003f:Starting process L"C:\users\focht\Temp\infinst.exe" (entryproc=0x40263d) ... 003f:Call KERNEL32.LoadLibraryA(0040a1c0 "INST32.DLL") ret=004010ef 003f:Call PE DLL (proc=0x3510ef,module=0x350000 L"INST32.DLL",reason=PROCESS_ATTACH,res=(nil)) 003f:Call krnl386.exe16.ThunkConnect32(00353000,00351011 "instthk_ThunkData16",00353070 "INST16.DLL",00353064 "INST32.DLL",00350000,00000001) ret=00351106 ... 003f:Call KERNEL32.LoadLibraryA(0033f31c "inst16.dll16") ret=7ea1d932 003f:Ret KERNEL32.LoadLibraryA() retval=00000000 ret=7ea1d932 003f:Call KERNEL32.GetFullPathNameA(00353070 "INST16.DLL",00000080,0033f24a,00000000) ret=7e9e1d5c 003f:Ret KERNEL32.GetFullPathNameA() retval=00000022 ret=7e9e1d5c 003f:Call KERNEL32.GetWindowsDirectoryA(0033ef0a,000000fd) ret=7e9e2c9d 003f:Ret KERNEL32.GetWindowsDirectoryA() retval=0000000a ret=7e9e2c9d 003f:Call KERNEL32.GetWindowsDirectoryA(00000000,00000000) ret=7e9e17c8 003f:Ret KERNEL32.GetWindowsDirectoryA() retval=0000000b ret=7e9e17c8 003f:Call KERNEL32.GetEnvironmentVariableA(7ea42d33 "PATH",00000000,00000000) ret=7e9e17fb 003f:Ret KERNEL32.GetEnvironmentVariableA() retval=00000038 ret=7e9e17fb 003f:Call ntdll.RtlAllocateHeap(00110000,00000000,0000005b) ret=7e9e182c 003f:Ret ntdll.RtlAllocateHeap() retval=00149658 ret=7e9e182c 003f:Call KERNEL32.GetWindowsDirectoryA(0033ef0a,000000fd) ret=7e9e2c9d 003f:Ret KERNEL32.GetWindowsDirectoryA() retval=0000000a ret=7e9e2c9d 003f:Call KERNEL32.GetWindowsDirectoryA(0014966c,00000047) ret=7e9e18b7 003f:Ret KERNEL32.GetWindowsDirectoryA() retval=0000000a ret=7e9e18b7 003f:Call KERNEL32.GetEnvironmentVariableA(7ea42d33 "PATH",00149677,0000003c) ret=7e9e1938 003f:Ret KERNEL32.GetEnvironmentVariableA() retval=00000037 ret=7e9e1938 003f:Call KERNEL32.SearchPathA(00149658 ".;C:\windows\SYSTEM;C:\windows;C:\windows\system32;C:\windows;C:\windows\system32\wbem",00353070 "INST16.DLL",00000000,00000080,0033f24a,00000000) ret=7e9e1e85 003f:Ret KERNEL32.SearchPathA() retval=00000000 ret=7e9e1e85 003f:Call ntdll.RtlFreeHeap(00110000,00000000,00149658) ret=7e9e1eb1 003f:Ret ntdll.RtlFreeHeap() retval=00000001 ret=7e9e1eb1 003f:err:thunk:_loadthunk (INST16.DLL, instthk_ThunkData16, INST32.DLL): Unable to load 'INST16.DLL', error 2 003f:Ret krnl386.exe16.ThunkConnect32() retval=00000000 ret=00351106 003f:Call user32.MessageBoxA(00000000,00353088 "ThunkConnect32 Failure!!",0035307c "INST32.DLL",00000000) ret=00351123 ... 003f:Ret user32.MessageBoxA() retval=00000001 ret=00351123 003f:Ret PE DLL (proc=0x3510ef,module=0x350000 L"INST32.DLL",reason=PROCESS_ATTACH,res=(nil)) retval=0 003f:Call PE DLL (proc=0x3510ef,module=0x350000 L"INST32.DLL",reason=PROCESS_DETACH,res=(nil)) 003f:Call krnl386.exe16.ThunkConnect32(00353000,00351011 "instthk_ThunkData16",00353070 "INST16.DLL",00353064 "INST32.DLL",00350000,00000000) ret=00351106 003f:Ret krnl386.exe16.ThunkConnect32() retval=00000001 ret=00351106 003f:Ret PE DLL (proc=0x3510ef,module=0x350000 L"INST32.DLL",reason=PROCESS_DETACH,res=(nil)) retval=1 003f:Ret KERNEL32.LoadLibraryA() retval=00000000 ret=004010ef ... --- snip ---
The directory from which the application loaded must be taken into account for dll search path (NOTE: executable load path != current working directory here).
As already mentioned in OP's report you can work around by unpacking the first stage. This allows the loader to pick up the thunk dll from current working directory.
--- snip --- $ cabextract msie20.exe Extracting cabinet: msie20.exe extracting license.txt extracting ohrome.inf extracting inst32.dll extracting inst16.dll extracting infinst.exe extracting iexplore.cab
All done, no errors. --- snip ---
Internet Exploder 2 gets installed here:
--- snip --- $ pwd /home/focht/.wine/drive_c/windows/system32/unknown
$ ls -o total 1468 drwxrwxr-x. 1 focht 4314 Feb 21 15:19 cache -rw-rw-r--. 1 focht 289 Feb 21 15:19 cookies.txt drwxrwxr-x. 1 focht 178 Feb 21 15:19 history -rwxrwxr-x. 1 focht 755712 Nov 22 1995 IEXPLORE.EXE -rwxrwxr-x. 1 focht 13824 Nov 22 1995 INETWIZ.EXE -rwxrwxr-x. 1 focht 33280 Nov 22 1995 INFINST.EXE -rw-rw-r--. 1 focht 2416 Nov 22 1995 INST16.DLL -rw-rw-r--. 1 focht 5632 Nov 22 1995 INST32.DLL -rw-rw-r--. 1 focht 5378 Nov 22 1995 INTERNET.TXT -rw-rw-r--. 1 focht 305784 Nov 22 1995 MSN105.CAB -rw-rw-r--. 1 focht 129008 Nov 22 1995 RA.DLL -rwxrwxr-x. 1 focht 8528 Nov 22 1995 RAPLAYER.EXE -rwxrwxr-x. 1 focht 192304 Nov 22 1995 RATASK.EXE -rw-rw-r--. 1 focht 23552 Nov 22 1995 SECBASIC.DLL --- snip ---
('unknown' path element is another bug):
IE 2.0 works surprisingly well - beware of websites with heavy client-side javascript though.
$ sha1sum msie20.exe d558932c8d34472c5d20134ca9448f79f4ecfc9b msie20.exe
$ du -sh msie20.exe 1.2M msie20.exe
$ wine --version wine-1.7.37
Regards