https://bugs.winehq.org/show_bug.cgi?id=29806
Anastasius Focht focht@gmx.net changed:
What |Removed |Added ---------------------------------------------------------------------------- Status|UNCONFIRMED |NEW URL| |http://driverscollection.co | |m/?aid=2192 Keywords|regression |download Component|-unknown |advpack CC| |focht@gmx.net Ever confirmed|0 |1 Summary|DirectX Software Test |Hype The Time Quest: |Causes Hype The Time Quest |DirectX Media (DXM) v6.0 |Installer to Fail |runtime installer fails | |(advpack.ExecuteCab should | |extract the INF from CAB | |before running the install | |part) Severity|minor |normal
--- Comment #3 from Anastasius Focht focht@gmx.net --- Hello folks,
confirming.
The DirectX Media (DXM) v6.0 runtime installer which is distributed with the game is the failing part here. It refuses/fails to run with NT versions > 4.0 which makes sense because at the time of DXM v6 release Windows 2000 did not exist (yet).
Prerequisite: WINEPREFIX WinVer set to "Windows 4.0"
You can run the sub-installer standalone.
Relevant part of trace log:
--- snip --- $ WINEDEBUG=+tid,+seh,+relay wine ./DXMedia.exe -id:"Hype - The Time Quest" ... 0025:Call KERNEL32.FindResourceA(00400000,000000c9,004071e4 "BINARY") ret=00402106 0025:Ret KERNEL32.FindResourceA() retval=0040d3e8 ret=00402106 0025:Call KERNEL32.LoadResource(00400000,0040d3e8) ret=00402126 0025:Ret KERNEL32.LoadResource() retval=00495730 ret=00402126 0025:Call KERNEL32.CreateFileA(00409cb8 "C:\users\focht\Temp\~dxmcab~\support.cab",40000000,00000000,00000000,00000002,00000080,00000000) ret=00402145 0025:Ret KERNEL32.CreateFileA() retval=00000050 ret=00402145 0025:Call KERNEL32.SizeofResource(00400000,0040d3e8) ret=0040216c 0025:Ret KERNEL32.SizeofResource() retval=0006bf0c ret=0040216c 0025:Call KERNEL32.WriteFile(00000050,00495730,0006bf0c,00e8e0d8,00000000) ret=0040217b 0025:Ret KERNEL32.WriteFile() retval=00000001 ret=0040217b 0025:Call KERNEL32.CloseHandle(00000050) ret=00402185 0025:Ret KERNEL32.CloseHandle() retval=00000001 ret=00402185 ... 0025:Call advpack.ExecuteCab(ffffffff,00e8dfcc,00000000) ret=00401919 0025:Call ntdll.RtlCreateUnicodeStringFromAsciiz(00e8df4c,0040a830 "C:\users\focht\Temp\~dxmcab~\support.cab") ret=7e96e5ed 0025:Ret ntdll.RtlCreateUnicodeStringFromAsciiz() retval=00000001 ret=7e96e5ed 0025:Call ntdll.RtlCreateUnicodeStringFromAsciiz(00e8df44,00e8e954 "support.inf") ret=7e96e61a 0025:Ret ntdll.RtlCreateUnicodeStringFromAsciiz() retval=00000001 ret=7e96e61a ... 0025:Call KERNEL32.MultiByteToWideChar(00000000,00000000,00e8dfd8 "C:\users\focht\Temp\~dxmcab~",ffffffff,00e8dd30,00000104) ret=7e96e670 0025:Ret KERNEL32.MultiByteToWideChar() retval=0000001d ret=7e96e670 0025:fixme:advpack:ExecuteCabW Cab archive not extracted! ... 0025:Call setupapi.SetupOpenInfFileW(001273f0 L"C:\users\focht\Temp\~dxmcab~\support.inf",00000000,00000002,00000000) ret=7e96e1ee 0025:Call KERNEL32.GetFullPathNameW(001273f0 L"C:\users\focht\Temp\~dxmcab~\support.inf",00000000,00000000,00000000) ret=7e7289d9 0025:Ret KERNEL32.GetFullPathNameW() retval=00000029 ret=7e7289d9 ... 0025:Call KERNEL32.GetFullPathNameW(001273f0 L"C:\users\focht\Temp\~dxmcab~\support.inf",00000029,0012a9f0,00000000) ret=7e728a5e 0025:Ret KERNEL32.GetFullPathNameW() retval=00000028 ret=7e728a5e 0025:Call KERNEL32.CreateFileW(0012a9f0 L"C:\users\focht\Temp\~dxmcab~\support.inf",80000000,00000001,00000000,00000003,00000000,00000000) ret=7e728a9c 0025:Ret KERNEL32.CreateFileW() retval=ffffffff ret=7e728a9c ... 0025:Ret setupapi.SetupOpenInfFileW() retval=ffffffff ret=7e96e1ee 0025:Call setupapi.SetupCloseInfFile(ffffffff) ret=7e96e2a0 0025:Ret setupapi.SetupCloseInfFile() retval=ffffffff ret=7e96e2a0 ... 0025:Ret advpack.ExecuteCab() retval=80070002 ret=00401919 0025:Call KERNEL32.lstrlenA(0040b4e0 "Flags:0000002C, Installed:80070002") ret=0040260b 0025:Ret KERNEL32.lstrlenA() retval=00000022 ret=0040260b --- snip ---
Wine assumes the INF file already lives outside of the CAB file which is obviously the problem here.
Source: http://source.winehq.org/git/wine.git/blob/531f795623659c77380ff4e79c7445731...
I think advpack.ExecuteCab() should actually _extract_ the INF file from the CAB before running the INF install part.
'support.inf' really lives within the CAB:
--- snip --- $ pwd /home/focht/.wine/drive_c/users/focht/Temp/~dxmcab~
$ ll total 932 -rw-rw-r--. 1 focht focht 74960 Feb 18 20:42 advpack.dll -rw-rw-r--. 1 focht focht 67072 Feb 18 20:42 cabinet.dll -rw-rw-r--. 1 focht focht 23552 Jun 18 1998 cfgmgr32.dll -rw-rw-r--. 1 focht focht 327072 Jun 18 1998 setupapi.dll -rw-rw-r--. 1 focht focht 442124 Feb 18 20:42 support.cab -rw-rw-r--. 1 focht focht 2272 Jul 15 1997 w95inf16.dll -rw-rw-r--. 1 focht focht 4608 Jul 15 1997 w95inf32.dll
$ cabextract -l support.cab Viewing cabinet: support.cab File size | Date Time | Name -----------+---------------------+------------- 803 | 26.08.1998 14:53:10 | support.inf 18432 | 26.08.1998 14:52:48 | atl.nt 22288 | 26.08.1998 14:52:48 | comcat.dll 271632 | 26.08.1998 14:52:48 | msvcrt.dll 491792 | 26.08.1998 14:52:48 | oleaut32.dll 32528 | 26.08.1998 14:52:48 | olepro32.dll 20992 | 26.08.1998 14:52:48 | atl.9x
All done, no errors. --- snip ---
Content of 'support.inf':
--- snip --- [version] Signature="$CHICAGO$" AdvancedINF=2.5
[SourceDisksNames] 1=%DiskName%,%CabName%,0
[SourceDisksFiles] olepro32.dll=1 oleaut32.dll=1 atl.9x=1 atl.nt=1 msvcrt.dll=1 support.inf=1
[DestinationDirs] CopyFile.System.NT=11 CopyFile.System=11
[DefaultInstall.NT] CopyFiles=CopyFile.System.NT RegisterOCXs=Register.System SmartReboot=I
[DefaultInstall] CopyFiles=CopyFile.System RegisterOCXs=Register.System SmartReboot=I
[CopyFile.System.NT] atl.dll,atl.nt,,35 olepro32.dll,,,35 oleaut32.dll,,,35 msvcrt.dll,,,35
[CopyFile.System] atl.dll,atl.9x,,35 olepro32.dll,,,35 oleaut32.dll,,,35 msvcrt.dll,,,35
[Register.System] "%11%\oleaut32.dll" "%11%\olepro32.dll" "%11%\atl.dll"
[Strings] DiskName = "DirectX Media support" CabName = "support.cab" --- snip ---
$ sha1sum DXMEDIA.EXE 1aae3323d7a68f01e61fa8e148c6ebe8f228eb25 DXMEDIA.EXE
$ du -sh DXMEDIA.EXE 4.5M DXMEDIA.EXE
$ wine --version wine-1.7.12-180-g4afe73f
There is no MS download of this old DXM runtime anymore.
Fortunately I found it bundled with "Matrox Matrox G200 MMS with TV Tuner Video Tools - Windows NT 4.0 driver v.1.53.054 for Windows NT" driver package (matching sha1sum).
Download: http://driverscollection.com/?aid=2192 (unzip and you get 'DXMEDIA.EXE')
Regards