http://bugs.winehq.org/show_bug.cgi?id=18097
Summary: Missing extrac32.exe tool causes some prerequisite installers to fail (msjavx86.exe) Product: Wine Version: 1.1.19 Platform: Other URL: http://www.microsoft.com/downloads/details.aspx?FamilyID =1dacdb3d-50d1-41b2-a107-fa75ae960856&di OS/Version: other Status: UNCONFIRMED Severity: normal Priority: P2 Component: -unknown AssignedTo: wine-bugs@winehq.org ReportedBy: focht@gmx.net
Hello,
while testing old stuff, I noticed some installers require "extrac32.exe" utility present in system32.
An example is the M$ Java VM prerequisite installer "msjavx86.exe" from M$ Visual C++ 6.0 and Embedded Visual C++ 4.x.
Due to missing extrac32.exe:
--- snip --- 002b:Call user32.SetDlgItemTextA(00060034,000003e9,0033f2e0 "Installing Component: XML Classes") ret=00401392 ... 002b:Call KERNEL32.CreateProcessW(00000000,0033ced4 L"C:\windows\system32\extrac32.exe /c /y C:\windows\temp\IXP000.TMP\xmldso.cab C:\windows\Java\Classes\xmldso.cab",00000000,00000000,00000000,04000200,00000000,00150440 L"C:\windows\temp\IXP000.TMP",0033ce60,0033ce50) ret=714d15da ... 002b:Call KERNEL32.CreateProcessW(00000000,0033ced4 L"rundll32 C:\windows\system32\msjava.dll,JavaPkgMgr_Install C:\windows\Java\classes\xmldso.cab,0,0,0,0,4,42",00000000,00000000,00000000,04000200,00000000,00150450 L"C:\windows\temp\IXP000.TMP",0033ce60,0033ce50) ret=714d15da --- snip ---
failure later:
--- snip --- 002b:Call KERNEL32.CreateProcessW(00000000,0033ced4 L"rundll32 C:\windows\system32\msjava.dll,JavaPkgMgr_Install C:\windows\Java\classes\xmldso.cab,0,0,0,0,4,42",00000000,00000000,00000000,04000200,00000000,00150450 L"C:\windows\temp\IXP000.TMP",0033ce60,0033ce50) ret=714d15da ... 0047:CALL msjava.JavaPkgMgr_Install(<unknown, check return>) ret=601d6475 0047:Call KERNEL32.lstrcpynA(0033fa90,0012fd48 "C:\windows\Java\classes\xmldso.cab,0,0,0,0,4,42",00000023) ret=00500bf4 ... 0047:Call KERNEL32.GetFullPathNameA(0033fa90 "C:\windows\Java\classes\xmldso.cab",00000105,0033f880,0033fd10) ret=005012e8 0047:Ret KERNEL32.GetFullPathNameA() retval=00000022 ret=005012e8 0047:Call KERNEL32.GetFileAttributesA(0033f880 "C:\windows\Java\classes\xmldso.cab") ret=00516697 0047:Ret KERNEL32.GetFileAttributesA() retval=ffffffff ret=00516697 ... 0047:Call user32.MessageBoxA(00000000,0033ef54 "Unable to install Java packages from C:\windows\Java\classes\xmldso.cab.\r\n\r\nUnknown HRESULT: (80070002h)",00133bd0 "Java Package Manager",00000030) ret=00500fe4 .... --- snip ---
Bug 12852 was initially about this problem but that app no longer ships with this dependency and the issue went out of focus. Therefore I create a separate bug for this "extrac32.exe" tool.
A wine-devel thread talked about this tool some time ago:
http://www.winehq.org/pipermail/wine-devel/2007-July/057886.html
It looks like the Ethersoft guys went their own route ... A google search didn't really come up with useful info.
Although it says the tool is "part of Internet Explorer" all installers will detect IE already installed in WINEPREFIX and do not attempt to install any earlier version (like IE4). Hence Extrac32.exe will never be installed as prerequisite.
Extrac32 is the win32 gui version of the console "extract" utility from Microsoft Cabinet Software Development Kit.
--- snip --- EXTRACT [/Y] [/A] [/D | /E] [/L dir] cabinet [filename ...] EXTRACT [/Y] source [newname] EXTRACT [/Y] /C source destination
cabinet - Cabinet file (contains two or more files). filename - Name of the file to extract from the cabinet. Wild cards and multiple filenames (separated by blanks) may be used.
source - Compressed file (a cabinet with only one file). newname - New filename to give the extracted file. If not supplied, the original name is used.
/A Process ALL cabinets. Follows cabinet chain starting in first cabinet mentioned. /C Copy source file to destination (to copy from DMF disks). /D Display cabinet directory (use with filename to avoid extract). /E Extract (use instead of *.* to extract all files). /L dir Location to place extracted files (default is current directory). /Y Do not prompt before overwriting an existing file. --- snip ---
Maybe another attempt can be made by someone to get this tool in to fix older installers.
Regards
http://bugs.winehq.org/show_bug.cgi?id=18097
Austin English austinenglish@gmail.com changed:
What |Removed |Added ---------------------------------------------------------------------------- Keywords| |download, Installer
http://bugs.winehq.org/show_bug.cgi?id=18097
Anastasius Focht focht@gmx.net changed:
What |Removed |Added ---------------------------------------------------------------------------- URL|http://www.microsoft.com/dow%7Chttp://visiteinteractive.fre |nloads/details.aspx?FamilyID|e.fr/VM_java/msjavx86.exe |=1dacdb3d-50d1-41b2-a107- | |fa75ae960856&di |
--- Comment #1 from Anastasius Focht focht@gmx.net 2009-04-18 15:44:08 --- Hello,
adjusted URL field to direct Java VM installer download (smaller).
More info: http://java-virtual-machine.net/download.html
Regards
http://bugs.winehq.org/show_bug.cgi?id=18097
--- Comment #2 from Vitaly Lipatov lav@etersoft.ru 2009-10-10 09:09:46 --- Created an attachment (id=24007) --> (http://bugs.winehq.org/attachment.cgi?id=24007) extrac32 program implementation
This is Etersoft's realization of extrac32 program.
http://bugs.winehq.org/show_bug.cgi?id=18097
Vitaly Lipatov lav@etersoft.ru changed:
What |Removed |Added ---------------------------------------------------------------------------- Attachment #24007|0 |1 is obsolete| |
--- Comment #3 from Vitaly Lipatov lav@etersoft.ru 2009-10-10 09:29:30 --- (From update of attachment 24007) Obsoleted by Andrey Turkin andrey.turkin@gmail.com implementation http://www.winehq.org/pipermail/wine-patches/2009-October/079344.html
http://bugs.winehq.org/show_bug.cgi?id=18097
Louis Lenders xerox_xerox2000@yahoo.co.uk changed:
What |Removed |Added ---------------------------------------------------------------------------- Status|UNCONFIRMED |NEW CC| |xerox_xerox2000@yahoo.co.uk Ever Confirmed|0 |1
--- Comment #4 from Louis Lenders xerox_xerox2000@yahoo.co.uk 2009-11-20 06:31:44 --- extrac32 is now partially implemented, but the installer is still complaining. In the end the installer claims to be successfull. I haven't got a clue how to check if the installation was indeed successfull
http://bugs.winehq.org/show_bug.cgi?id=18097
--- Comment #5 from Anastasius Focht focht@gmx.net 2009-12-28 12:28:10 --- Hello,
--- quote --- extrac32 is now partially implemented, --- quote ---
Yes, but copy-only part (/c) of extrac32 is still stub.
--- quote --- but the installer is still complaining. In the end the installer claims to be successfull. I haven't got a clue how to check if the installation was indeed successfull --- quote ---
WINEDEBUG=+tid,+seh,+relay,+setupapi wine ./msjavx86.exe &> log.txt
Use the "vminst.log" file in system32 to quickly determine which part failed.
--- snip --- === INF Invocation ==========================================
Type : RunSetupCommand INF : C:\windows\temp\IXP000.TMP\java.inf
00000000 : WFCClean.RunNow 00000000 : CleanUp 00000000 : BaseInstallation.NT5 00000000 : BaseInstallation.RegNow 00000000 : IEOptions.Register 00000000 : IEOptions.X86.Register 00000000 : BaseInstallation.ClassFiles 80004005 : BasePkgMgr.Install.Execute ... --- snip ---
java.inf -> "BasePkgMgr.Install.Execute" part failed.
--- snip --- [BasePkgMgr.Install.Execute] ComponentName=Java RunPreSetupCommands=BASEINST.ExecPkgMgr --- snip ---
--- snip --- [BASEINST.ExecPkgMgr] rundll32 %11%\msjava.dll,JavaPkgMgr_Install %10%\Java\classes\classes.zip,1,5,00,%VERNUM%,4,286,%10%\java\classes\classes.cer rundll32 %11%\msjava.dll,JavaPkgMgr_Install %10%\Java\trustlib\tclasses.zip,1,5,00,%VERNUM%,6,286,%10%\java\trustlib\tclasses.cer rundll32 %11%\msjava.dll,JavaPkgMgr_Install %10%\Java\classes\msjdbc.zip,1,5,00,%VERNUM%,4,286,%10%\java\classes\msjdbc.cer %11%\jdbgmgr.exe -regserver --- snip ---
The self-register call fails because there is no target file ("%11%\jdbgmgr.exe -regserver"):
--- snip --- 001d:Call KERNEL32.CreateProcessW(00000000,0033d22c L"C:\windows\system32\jdbgmgr.exe -regserver",00000000,00000000,00000000,04000200,00000000,00152a50 L"C:\windows\temp\IXP000.TMP",0033d18c,0033d1d0) ret=62fee93c 001d:Ret KERNEL32.CreateProcessW() retval=00000000 ret=62fee93c --- snip ---
Go back to .inf to look up named sections for the file:
--- snip --- [BASEINST.SysFilesNoReg] jdbgmgr.exe,,,33 javart.dll,,,33 msjdbc10.dll,,,33 zonedoff.reg,,,33 zonedon.reg,,,33 ... [BASEINST.SysFilesNoReg.NT5] clspack.exe,,,33 javart.dll,,,33 jdbgmgr.exe,,,33 jview.exe,,,33 msjdbc10.dll,,,33 wjview.exe,,,33 zonedoff.reg,,,33 zonedon.reg,,,33 --- snip ---
The copy files action is listed here:
--- snip --- [BaseInstallation] ComponentName=Java CheckAdminRights=1 CopyFiles=BASEINST.SysFilesRegister,BASEINST.SysFilesNoReg,BASEINST.WinFiles,BASEINST.INF AddReg=BASEINST.AddReg
[BaseInstallation.NT5] ComponentName=Java CheckAdminRights=1 CopyFiles=BASEINST.SysFilesRegister,BASEINST.SysFilesNoReg.NT5,BASEINST.INF AddReg=BASEINST.AddReg --- snip ---
The culprit (BASEINST.SysFilesNoReg.NT5) is here:
--- snip --- ... 001d:trace:setupapi:SetupGetStringFieldW context 0x1526a8/0x1526a8/6/2 index 2 returning L"BASEINST.SysFilesNoReg.NT5" 001d:trace:setupapi:SetupQueueCopySectionW hinf=0x1526a8/0x1526a8 section=L"BASEINST.SysFilesNoReg.NT5" root=L"C:\windows\temp\IXP000.TMP" 001d:Call KERNEL32.SetLastError(00000000) ret=5092b82c 001d:Ret KERNEL32.SetLastError() retval=00000000 ret=5092b82c 001d:trace:setupapi:SetupFindFirstLineW (0x1526a8,L"BASEINST.SysFilesNoReg.NT5",(null)): returning 62/0 001d:trace:setupapi:SetupFindNextMatchLineW (0x1526a8,L"DestinationDirs",L"BASEINST.SysFilesNoReg.NT5"): not found 001d:Call KERNEL32.SetLastError(e0000102) ret=5092bed6 001d:Ret KERNEL32.SetLastError() retval=e0000102 ret=5092bed6 001d:trace:setupapi:SetupFindNextMatchLineW (0x1526a8,L"DestinationDirs",L"DefaultDestDir"): not found 001d:Call KERNEL32.SetLastError(e0000102) ret=5092bed6 001d:Ret KERNEL32.SetLastError() retval=e0000102 ret=5092bed6 001d:Call KERNEL32.SetLastError(00000000) ret=5092c4be 001d:Ret KERNEL32.SetLastError() retval=00000000 ret=5092c4be 001d:trace:setupapi:SetupGetStringFieldW context 0x1526a8/0x1526a8/6/2 index 3 returning L"BASEINST.INF" ... --- snip ---
"BASEINST.SysFilesNoReg.NT5" is skipped because there is no "DestinationDirs" for this named section present (unlike the others BASEINST.SysFilesRegister and BASEINST.INF):
--- snip --- [DestinationDirs] PRECLEAN.RegSvr=11 BASEINST.ClassFiles=10,Java\Classes BASEINST.TClassFiles=10,Java\TrustLib BASEINST.SysFilesRegister=11 BASEINST.SysFilesNoReg=11 BASEINST.WinFiles=10 BASEINST.INF=17 --- snip ---
"[DestinationDirs]" -> "DefaultDestDir" is also missing. Because of this the file is never copied.
http://msdn.microsoft.com/en-us/library/ms794560.aspx (INF CopyFiles Directive)
--- quote --- If a named section referenced by a CopyFiles directive has a corresponding entry in the DestinationDirs section of the same INF, that entry explicitly specifies the target destination directory into which all files that are listed in the named section are copied. If the named section is not listed in the DestinationDirs section, Setup uses the DefaultDestDir in the INF file. ... --- quote ---
And what if no "DefaultDestDir" is given?
I searched a bit and found this: http://technet.microsoft.com/en-us/library/cc768164.aspx (Appendix C - Windows 98 INF Files)
--- quote --- The optional DefaultDestDir entry provides a default destination for any Copyfile entries that use the direct copy notation (@filename) or any [File-List] section not specified in the [DestinationDirs] section. If DefaultDestDir is not given, the default directory is set to LDID_WIN. --- quote ---
LDID_WIN might apply to Win9X but not to Windows NT. In many .INF files for win32/NT you will find:
--- snip --- [DestinationDirs] ... DefaultDestDir = 11 ; LDID_SYS --- snip ---
So the default for non-existing "DefaultDestDir" on NT is LDID_SYS (as the .inf references the file(s) as "%11%<executable>")
Regards
http://bugs.winehq.org/show_bug.cgi?id=18097
Andrey Turkin andrey.turkin@gmail.com changed:
What |Removed |Added ---------------------------------------------------------------------------- CC| |andrey.turkin@gmail.com
--- Comment #6 from Andrey Turkin andrey.turkin@gmail.com 2010-02-24 10:42:44 --- git's extrac32 understands /C now
http://bugs.winehq.org/show_bug.cgi?id=18097
--- Comment #7 from Anastasius Focht focht@gmx.net 2010-02-24 13:34:46 --- Hello,
--- quote --- git's extrac32 understands /C now --- quote ---
thanks for your effort so far (commit 7628fcdd76eece53960dac5554ecc241feff2135).
Unfortunately the current parsing of copy command arguments relies on source and destination immediately following the command token. This doesn't work for cases where order of cmd tokens is arbitrary.
Installer example:
--- snip --- 0027:Call KERNEL32.CreateProcessW(00000000,0033d270 L"C:\windows\system32\extrac32.exe /c /y C:\users\focht\Temp\IXP000.TMP\xmldso.cab C:\windows\Java\Classes\xmldso.cab",00000000,00000000,00000000,04000200,00000000,00135760 L"C:\users\focht\Temp\IXP000.TMP",0033d1fc,0033d1ec) ret=2395e4b8 --- snip ---
Regards
http://bugs.winehq.org/show_bug.cgi?id=18097
--- Comment #8 from Andrey Turkin andrey.turkin@gmail.com 2010-03-01 14:25:05 --- Hopefully should be fixed now
http://bugs.winehq.org/show_bug.cgi?id=18097
Anastasius Focht focht@gmx.net changed:
What |Removed |Added ---------------------------------------------------------------------------- Status|NEW |RESOLVED Resolution| |FIXED
--- Comment #9 from Anastasius Focht focht@gmx.net 2010-03-01 15:12:58 --- Hello,
yes, the extrac32.exe part is now finally fixed by commit 9939fd6012b0f48c30293f85af47746dc4a81bce Thank you.
For the "DefaultDestDir" issue (SetupQueueCopyXXX and friends) I will file a separate bug, essentially copying the information I already gave in comment #5
Regards
http://bugs.winehq.org/show_bug.cgi?id=18097
Alexandre Julliard julliard@winehq.org changed:
What |Removed |Added ---------------------------------------------------------------------------- Status|RESOLVED |CLOSED
--- Comment #10 from Alexandre Julliard julliard@winehq.org 2010-03-05 12:42:59 --- Closing bugs fixed in 1.1.40.
http://bugs.winehq.org/show_bug.cgi?id=18097
Anastasius Focht focht@gmx.net changed:
What |Removed |Added ---------------------------------------------------------------------------- Fixed by SHA1| |9939fd6012b0f48c30293f85af4 | |7746dc4a81bce Component|-unknown |programs
--- Comment #11 from Anastasius Focht focht@gmx.net 2011-10-11 15:33:09 CDT --- Hello,
filling/correcting fields ...
Regards
http://bugs.winehq.org/show_bug.cgi?id=18097
Anastasius Focht focht@gmx.net changed:
What |Removed |Added ---------------------------------------------------------------------------- Hardware|Other |x86 OS|other |Linux
https://bugs.winehq.org/show_bug.cgi?id=18097
Anastasius Focht focht@gmx.net changed:
What |Removed |Added ---------------------------------------------------------------------------- URL|http://visiteinteractive.fr |https://web.archive.org/web |ee.fr/VM_java/msjavx86.exe |/20130922191416/http://visi | |teinteractive.free.fr/VM_ja | |va/msjavx86.exe