http://bugs.winehq.org/show_bug.cgi?id=21906
Summary: setupapi copyfiles action target must default to
LDID_WIN (win9x) or LDID_SYS (NT) when neither
DestinationDirs nor DefaultDestDir is given
Product: Wine
Version: 1.1.39
Platform: x86
URL: http://visiteinteractive.free.fr/VM_java/msjavx86.exe
OS/Version: Linux
Status: UNCONFIRMED
Severity: normal
Priority: P2
Component: setupapi
AssignedTo: wine-bugs(a)winehq.org
ReportedBy: focht(a)gmx.net
Hello,
with bug 18097 fixed (extrac32.exe tool), the msjavx86.exe installer still
fails.
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>")
You may want to fix dlls/setupapi/queue.c:get_destination_dir().
With this bug is fixed, the installer almost cleanly installs except for bug
18098 (urlmon.AsyncInstallDistributionUnit not implemented).
Regards
--
Configure bugmail: http://bugs.winehq.org/userprefs.cgi?tab=email
Do not reply to this email, post in Bugzilla using the
above URL to reply.
------- You are receiving this mail because: -------
You are watching all bug changes.
http://bugs.winehq.org/show_bug.cgi?id=24214
Summary: ole: Java SE JRE subinstaller (msi) dies due to OLE
compound storage reader failure on some stream (the
one after _StringPool stream)
Product: Wine
Version: 1.1.21
Platform: x86
OS/Version: Linux
Status: NEW
Severity: normal
Priority: P2
Component: ole
AssignedTo: wine-bugs(a)winehq.org
ReportedBy: focht(a)gmx.net
Hello,
when installing Java SE JRE one of the sub-installers crashes.
Though it doesn't seem to affect overall installer result - the installer still
reports "success" in the end.
--- snip ---
...
0009:Call KERNEL32.CreateProcessA(00000000,0032ed40
"\"C:\\windows\\system32\\msiexec.exe\" /i \"C:\\users\\focht\\Application
Data\\Sun\\Java\\jdk1.6.0_21\\jdk1.6.0_21.msi\"
WRAPPER=1",00000000,00000000,00000000,00000000,00000000,00000000,0032c4d0,0032c514)
ret=00401184
....
001d:trace:msi:ACTION_ProcessComponents Component L"sb160210"
(L"14888323ADFE6D117AD8000B0D612001"), Keypath=L"C:\\Program
Files\\Java\\jdk1.6.0_21\\javadb.msi", RefCount=1 Request=3
...
001d:trace:msi:MSI_ProcessMessage (nil) (nil) (nil) 0 200 L"File: javadb.msi,
Directory: INSTALLDIR, Size: 10566952"
...
001d:trace:msi:cabinet_copy_file extracting L"C:\\Program
Files\\Java\\jdk1.6.0_21\\javadb.msi"
001d:Call KERNEL32.CreateFileW(00205320 L"C:\\Program
Files\\Java\\jdk1.6.0_21\\javadb.msi",c0000000,00000000,00000000,00000002,00000080,00000000)
ret=683a75f4
001d:Ret KERNEL32.CreateFileW() retval=00000054 ret=683a75f4
...
001d:trace:msi:ACTION_CustomAction Handling custom action L"installjavadb" (62
L"SystemFolder" L"msiexec.exe /i \"[INSTALLDIR]javadb.msi\" /qn
INSTALLDIR=\"[JAVADB_DIR]\"")
...
001d:trace:msi:HANDLE_CustomType34 executing exe L"msiexec.exe /i \"C:\\Program
Files\\Java\\jdk1.6.0_21\\javadb.msi\" /qn INSTALLDIR=\"C:\\Program
Files\\Sun\\JavaDB\\\"" with working directory L"C:\\windows\\system32\\"
...
000d:Call msi.MsiInstallProductW(0013914e L"C:\\Program
Files\\Java\\jdk1.6.0_21\\javadb.msi",00139270 L" INSTALLDIR=\"C:\\Program
Files\\Sun\\JavaDB\\\"") ret=6833da64
000d:trace:msi:MsiInstallProductW L"C:\\Program
Files\\Java\\jdk1.6.0_21\\javadb.msi" L" INSTALLDIR=\"C:\\Program
Files\\Sun\\JavaDB\\\""
000d:trace:msi:MSI_OpenPackageW L"C:\\Program
Files\\Java\\jdk1.6.0_21\\javadb.msi" 0x33fc1c
...
000d:Call KERNEL32.CopyFileW(0013914e L"C:\\Program
Files\\Java\\jdk1.6.0_21\\javadb.msi",0033f9b8
L"C:\\users\\focht\\Temp\\msi58c.tmp",00000000) ret=683b95ab
...
000d:trace:msi:MSI_OpenPackageW Opening relocated package
L"C:\\users\\focht\\Temp\\msi58c.tmp"
000d:trace:msi:MSI_OpenDatabaseW L"C:\\users\\focht\\Temp\\msi58c.tmp" #0002
000d:Call ole32.StgOpenStorage(0033f9b8
L"C:\\users\\focht\\Temp\\msi58c.tmp",00000000,00000012,00000000,00000000,0033f11c)
ret=683880da
000d:Call KERNEL32.CreateFileW(0033f9b8
L"C:\\users\\focht\\Temp\\msi58c.tmp",c0000000,00000000,00000000,00000003,10000080,00000000)
ret=684f87b9
000d:Ret KERNEL32.CreateFileW() retval=00000040 ret=684f87b9
000d:Call KERNEL32.GetFileSize(00000040,00000000) ret=684f87dd
000d:Ret KERNEL32.GetFileSize() retval=00a13d28 ret=684f87dd
...
000d:trace:msidb:enum_stream_names stream 0 -> L"\4840\430f\422f" L"\4840File"
...
000d:trace:msidb:enum_stream_names stream 41 -> L"\0005SummaryInformation"
L"\0005SummaryInformation"
...
000d:trace:msidb:read_stream_data L"_StringPool" ->
L"\4840\3f3f\4577\446c\3e6a\44b2\482f"
...
000d:warn:msidb:read_stream_data read stream failed r = 8003001e!
...
000d:trace:seh:raise_exception code=c0000005 flags=0 addr=0x683d2c6b
ip=683d2c6b tid=000d
000d:trace:seh:raise_exception info[0]=00000000
000d:trace:seh:raise_exception info[1]=00000000
000d:trace:seh:raise_exception eax=00000000 ebx=68400df8 ecx=00000000
edx=00000000 esi=001408dc edi=00000000
000d:trace:seh:raise_exception ebp=0033edf8 esp=0033ede0 cs=0023 ds=002b
es=002b fs=0063 gs=006b flags=00010202
000d:trace:seh:call_vectored_handlers calling handler at 0x68c622d0
code=c0000005 flags=0
000d:trace:seh:call_vectored_handlers handler at 0x68c622d0 returned 0
000d:trace:seh:call_stack_handlers calling handler at 0x7bc856a0 code=c0000005
flags=0
000d:Call KERNEL32.UnhandledExceptionFilter(0033e92c) ret=7bc856ed
Wine: Unhandled page fault on read access to 0x00000000 at address 0x683d2c6b
(thread 000d), starting debugger...
000d:trace:seh:start_debugger Starting debugger "winedbg --auto 11 68"
...
---- snip ---
Using "orca" on the extracted .msi produces the same crash.
The useful "MsiInfo" tool from Platform SDK to verify the integrity of the .msi
files (and dump infos) crashes too if used with no options.
Backtrace doesn't reveal much. The fault caused in msi_destroy_stringtable() is
the result of an earlier failure to read in all OLE streams properly.
When the "verify string pool" option is used, it doesn't crash but shows the
STG_E_READFAULT (0x8003001e) error.
--- snip ---
$ wine msiinfo.exe crash.msi /D
MsiInfo V 4.0
Copyright (c) Microsoft Corporation. All Rights Reserved
String ID size: 2
Code page: 0
Error 0x8003001E. Error Reading Stream
err:ole:CoUninitialize Mismatched CoUninitialize
--- snip ---
--- snip ---
ls -l crash.msi
-rw-rw-r--. 1 focht focht 10566952 2010-08-30 21:52 crash.msi
--- snip ---
>From my investigation it's the stream directly after "_StringPool" stream that
is somehow not processed properly.
Wine's OLE streams reader makes a stream access at file offset 10566656 with
byte count 512 -> past end of file.
You can use another OLE compound storage viewer to verify:
http://www.mitec.cz/ssv.html
It's a nice tool with plugin arch that lets you decode any OLE stream - if you
write plugins for it ;-)
If you open the .msi with the viewer it reports "sharing violation" which is
another Wine bug.
Dismiss the dialog and navigate the treeview with all streams listed.
Between stream #22 with 90701 Bytes (-> _StringPool stream) and #24 with 3984
bytes the 0x8003001e error appears.
The "faulty" stream #23 has a size of 16168 bytes.
Don't know if this worked in earlier Wine versions, could be a regression
though.
Regards
--
Configure bugmail: http://bugs.winehq.org/userprefs.cgi?tab=email
Do not reply to this email, post in Bugzilla using the
above URL to reply.
------- You are receiving this mail because: -------
You are watching all bug changes.
http://bugs.winehq.org/show_bug.cgi?id=15549
Summary: Colobot Demo installer does not fully redraw
installation window during install progress phase
Product: Wine
Version: 1.1.5
Platform: PC
URL: http://www.ceebot.com/download/demo/colobotdemo17e.exe
OS/Version: Linux
Status: UNCONFIRMED
Severity: enhancement
Priority: P2
Component: -unknown
AssignedTo: wine-bugs(a)winehq.org
ReportedBy: nodisgod(a)yahoo.com
Created an attachment (id=16531)
--> (http://bugs.winehq.org/attachment.cgi?id=16531)
Colobot Demo installer window screenshot
With today's Git (wine-1.1.5-507-ge20ef50), in the process of testing bug
13932, I noticed that when the installer is at the file copy progress phase,
some elements of the window are not redrawn properly. A screenshot is attached.
--
Configure bugmail: http://bugs.winehq.org/userprefs.cgi?tab=email
Do not reply to this email, post in Bugzilla using the
above URL to reply.
------- You are receiving this mail because: -------
You are watching all bug changes.
http://bugs.winehq.org/show_bug.cgi?id=23847
Summary: ntdll:
NtQuerySystemInformation(SYSTEM_PROCESSOR_PERFORMANCE_
INFORMATION) should provide NT-style 100ns units (.NET
1.x CLR)
Product: Wine
Version: 1.3.0
Platform: x86
URL: http://www.microsoft.com/DownLoads/details.aspx?family
id=D7158DEE-A83F-4E21-B05A-009D06457787
OS/Version: Linux
Status: NEW
Keywords: dotnet, download, Installer
Severity: normal
Priority: P2
Component: ntdll
AssignedTo: wine-bugs(a)winehq.org
ReportedBy: focht(a)gmx.net
Hello,
after bug 17084 (.NET 1.0: imagehlp.ImageGetDigestStream needs more flesh
(assembly registration fails)) was fixed, the installer still fails.
The first blocker is now the presence of some .NET registry keys that ought to
help Mono but break the MS installer itself (path to v1.0.xxx Microsoft CLR
core library is incorrectly constructed, leading to mscorwks.dll load failure).
You can work around by deleting the following key before running the installer:
--- snip ---
$ wine reg delete "HKLM\Software\Microsoft\.NETFramework"
--- snip ---
Near the end, the installer spawns "regasm.exe" tool several times to register
various assemblies.
Unfortunately the tool crashes with division by zero (+tid,+seh,+relay):
--- snip ---
...
0040:Call ntdll.NtQuerySystemInformation(00000008,031ce960,00000060,00000000)
ret=792cf160
0040:Ret ntdll.NtQuerySystemInformation() retval=00000000 ret=792cf160
0040:trace:seh:raise_exception code=c0000094 flags=0 addr=0x79243177
ip=79243177 tid=0040
0040:trace:seh:raise_exception eax=00000000 ebx=ffffffff ecx=00000000
edx=00000000 esi=00000022 edi=00000001
0040:trace:seh:raise_exception ebp=031ce9f0 esp=031ce940 cs=0023 ds=002b
es=002b fs=0063 gs=006b flags=00010246
--- snip ---
Interestingly there are other calls from the same addresses that don't crash:
--- snip ---
0020:Call ntdll.NtQuerySystemInformation(00000008,0320e960,00000060,00000000)
ret=792cf160
0020:trace:ntdll:NtQuerySystemInformation
(0x00000008,0x320e960,0x00000060,(nil))
000d:Call KERNEL32.SwitchToThread() ret=7929a604
000d:Ret KERNEL32.SwitchToThread() retval=00000001 ret=7929a604
0020:Ret ntdll.NtQuerySystemInformation() retval=00000000 ret=792cf160
0020:Call KERNEL32.Sleep(000001f4) ret=792d00bc
--- snip ---
Using additional "printf" style debugging to dump kernel+user+idle jiffies I
noticed the crashes happen when the values accumulated only small changes in
capture intervals.
It seems the CLR employs some kind of cpu resource utilization calculation
(using certain capture intervals) that breaks if the ticks/time units increment
fall below some threshold.
Windows NT accounts SYSTEM_PROCESSOR_PERFORMANCE_INFORMATION values in 100ns
units.
See: http://msdn.microsoft.com/en-us/library/ms724509.aspx
I fixed dlls/ntdll/nt.c:NtQuerySystemInformation(
SystemProcessorPerformanceInformation class) to convert jiffies to NT-style
100-ns units and it helped to keep the .NET CLR CPU usage calculation happy and
to not let the regasm tool crash anymore (installer succeeded).
Regards
--
Configure bugmail: http://bugs.winehq.org/userprefs.cgi?tab=email
Do not reply to this email, post in Bugzilla using the
above URL to reply.
------- You are receiving this mail because: -------
You are watching all bug changes.
http://bugs.winehq.org/show_bug.cgi?id=21622
Summary: mscoree.dll.DllUnregisterServer stub needed (.NET 1.0
installer)
Product: Wine
Version: 1.1.38
Platform: x86
URL: http://www.microsoft.com/DownLoads/details.aspx?family
id=D7158DEE-A83F-4E21-B05A-009D06457787
OS/Version: Linux
Status: UNCONFIRMED
Severity: normal
Priority: P2
Component: mscoree
AssignedTo: wine-bugs(a)winehq.org
ReportedBy: focht(a)gmx.net
Hello,
due to recent changes in msi (SelfUnregModules standard action is now
implemented and executed), .NET 1.0 installer shows unhandled regsvr32
exception dialog (not critical to installer).
A stub is needed for mscoree.dll DllUnregisterServer():
--- snip ---
002f:trace:msi:ITERATE_SelfUnregModules Unregistering L"regsvr32.exe /u
\"C:\\windows\\system32\\mscoree.dll\""
002f:Call KERNEL32.CreateProcessW(00000000,006fe860 L"regsvr32.exe /u
\"C:\\windows\\system32\\mscoree.dll\"",00000000,00000000,00000000,00000000,00000000,621a0cd2
L"C:\\",0033e578,0033e568) ret=6212f676
...
0039:Call KERNEL32.RaiseException(80000100,00000001,00000002,0033fd98)
ret=200151f1
0039:trace:seh:raise_exception code=80000100 flags=1 addr=0x7b835dc2
ip=7b835dc2 tid=0039
0039:trace:seh:raise_exception info[0]=20015260
0039:trace:seh:raise_exception info[1]=2001542f
wine: Call from 0x7b835dc2 to unimplemented function
mscoree.dll.DllUnregisterServer, aborting
...
--- snip ---
The .NET 1.0 installer doesn't run until the end due to long standing bug 17084
(which is a pity as patch exists for some time now).
Regards
--
Configure bugmail: http://bugs.winehq.org/userprefs.cgi?tab=email
Do not reply to this email, post in Bugzilla using the
above URL to reply.
------- You are receiving this mail because: -------
You are watching all bug changes.
http://bugs.winehq.org/show_bug.cgi?id=16093
Summary: MS AppLocale installer fails
Product: Wine
Version: 1.1.8
Platform: Other
URL: http://www.microsoft.com/globaldev/tools/apploc.mspx
OS/Version: other
Status: NEW
Keywords: download
Severity: normal
Priority: P2
Component: -unknown
AssignedTo: wine-bugs(a)winehq.org
ReportedBy: dank(a)kegel.com
Applocate is a handy way to run apps in a non-system locale. See
http://alcahest.club.fr/perso/apploc/applocale.html
for a description and screenshots.
(Incidentally, there is a similar utility called Winelocale,
see http://cinnamonpirate.com/hobbies/software/winelocale/
Its installation instructions are quite demanding,
and it probably only works for one app at a time,
unlike Applocate. If I understand correctly, anyway.)
Installing applocate on wine fails; +msi shows that the failure
comes after running some external executable:
trace:msi:HANDLE_CustomType2 executing exe L"C:\\windows\\temp\\msic34.tmp -q
C:\\windows\\\\almain.sdb"
...
err:msi:ITERATE_Actions Execution halted, action L"InstallFinalize" returned
1627
--
Configure bugmail: http://bugs.winehq.org/userprefs.cgi?tab=email
Do not reply to this email, post in Bugzilla using the
above URL to reply.
------- You are receiving this mail because: -------
You are watching all bug changes.
http://bugs.winehq.org/show_bug.cgi?id=24196
Summary: oleaut32: typelib registration should not fail
bitness-neutral assemblies (32-bit typelib wrapped in
64-bit PE, x64 .NET 2.0 installer)
Product: Wine
Version: 1.3.1
Platform: x86-64
OS/Version: Linux
Status: NEW
Severity: normal
Priority: P2
Component: oleaut32
AssignedTo: wine-bugs(a)winehq.org
ReportedBy: focht(a)gmx.net
Hello,
another x64 .NET Framework 2.0 installer bug.
The typelib registration fails for some assemblies:
--- snip ---
...
002c:Call KERNEL32.CreateProcessA(00000000,7fffec16f650
"\"C:\\windows\\Microsoft.NET\\Framework64\\v2.0.50727\\regtlibv12.exe\"
\"C:\\windows\\Microsoft.NET\\Framework64\\v2.0.50727\\System.Drawing.tlb\"",00000000,00000000,7fff00000001,00000000,00000000,00000000,7fffec8edfe8,7fffec8eb9e0)
ret=4fc035780
...
002e:Call oleaut32.LoadTypeLib(7ffff143f880
L"C:\\windows\\Microsoft.NET\\Framework64\\v2.0.50727\\System.Drawing.tlb",7ffff143f870)
ret=004027bf
...
002e:Call KERNEL32.LoadLibraryExW(7ffff143f360
L"C:\\windows\\Microsoft.NET\\Framework64\\v2.0.50727\\System.Drawing.tlb",00000000,0000000b)
ret=7ffff105ffb0
002e:Ret KERNEL32.LoadLibraryExW() retval=7fffefad0001 ret=7ffff105ffb0
...
002e:Ret oleaut32.LoadTypeLib() retval=00000000 ret=004027bf
002e:Call oleaut32.RegisterTypeLib(7ffff74d30d0,7ffff143f880
L"C:\\windows\\Microsoft.NET\\Framework64\\v2.0.50727\\System.Drawing.tlb",00000000)
ret=00402808
...
002e:Ret oleaut32.RegisterTypeLib() retval=800288bd ret=00402808
...
002c:Call msi.MsiRecordSetStringW(00000005,00000000,7fffec8ec620
L"RegisterTypeLib of
C:\\windows\\Microsoft.NET\\Framework64\\v2.0.50727\\System.Drawing.tlb failed
: 800288bd") ret=4fc0358bd
--- snip ---
The PE file containing typelib resources "System.Drawing.tlb" is a PE64 binary.
Dumping the typelib resource reveals:
--- snip ---
Offset 0 1 2 3 4 5 6 7 8 9 A B C D E F Ascii
000002B0 4D 53 46 54 02 00 01 00 00 00 00 00 09 04 00 00 MSFT.........
000002C0 00 00 00 00 41 00 00 00 02 00 00 00 00 00 00 00 ....A..........
000002D0 0C 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ...............
--- snip ---
flags: 0x41 -> indicates the typelib itself is 32 bit (SYSKIND = SYS_WIN32)
The folder "c:\windows\Microsoft.NET\Framework64\v2.0.50727\" contains
assemblies with following characteristics:
64-bit PE + 64 bit typelib part (flags = 0x43 -> SYSKIND = SYS_WIN64)
64-bit PE + 32 bit typelib part (flags = 0x41 -> SYSKIND = SYS_WIN32)
I verified that Wine msi correctly installs them into their appropriate 32 bit
and 64 bit folders.
The 32-bit counterparts from "c:\windows\Microsoft.NET\Framework\v2.0.50727\"
are all:
32-bit PE + 32 bit typelib part (flags = 0x41 -> SYSKIND = SYS_WIN32)
===
What causes the embedded typelib to be 32-bit?
Well, the .NET assemblies these typelibs belong to are flagged as "MSIL"
assemblies.
These are bitness-neutral assemblies that are portable and can run under any
platform.
When you look at 64-bit ->
"c:\windows\Microsoft.NET\Framework64\v2.0.50727\RedistList\FrameworkList.xml":
--- snip ---
<File AssemblyName="System.Drawing" Version="2.0.0.0"
PublicKeyToken="b03f5f7f11d50a3a" Culture="neutral"
ProcessorArchitecture="MSIL" FileVersion="2.0.50727.42" InGAC="true" />
--- snip ---
Example for bitness-aware assembly (managed C++ assemblies are automatically
platform specific):
64-bit ->
"c:\windows\Microsoft.NET\Framework64\v2.0.50727\RedistList\FrameworkList.xml":
--- snip ---
<File AssemblyName="System.Data" Version="2.0.0.0"
PublicKeyToken="b77a5c561934e089" Culture="neutral"
ProcessorArchitecture="AMD64" FileVersion="2.0.50727.42" InGAC="true" />
--- snip ---
32-bit ->
"c:\windows\Microsoft.NET\Framework\v2.0.50727\RedistList\FrameworkList.xml":
(the 64 bit .NET Framework 2.0 redist contains both: the 64 bit _and_ 32 bit
runtime)
--- snip ---
<File AssemblyName="System.Data" Version="2.0.0.0"
PublicKeyToken="b77a5c561934e089" Culture="neutral" ProcessorArchitecture="x86"
FileVersion="2.0.50727.42" InGAC="true" />
--- snip ---
I guess Wine should not fail on these bitness-neutral assemblies that contain
32-bit typelibs.
--- snip dlls/oleaut32/typelib.c ---
HRESULT WINAPI RegisterTypeLib(
ITypeLib * ptlib, /* [in] Pointer to the library*/
OLECHAR * szFullPath, /* [in] full Path of the library*/
OLECHAR * szHelpDir) /* [in] dir to the helpfile for the library,
may be NULL*/
{
...
if (ptlib == NULL || szFullPath == NULL)
return E_INVALIDARG;
if (FAILED(ITypeLib_GetLibAttr(ptlib, &attr)))
return E_FAIL;
TRACE("(%s,%d)", debugstr_w(szFullPath), attr->syskind);
#ifdef _WIN64
if (attr->syskind != SYS_WIN64) return TYPE_E_BADMODULEKIND;
#else
if (attr->syskind != SYS_WIN32 && attr->syskind != SYS_WIN16) return
TYPE_E_BADMODULEKIND;
#endif
...
}
--- snip dlls/oleaut32/typelib.c ---
Regards
--
Configure bugmail: http://bugs.winehq.org/userprefs.cgi?tab=email
Do not reply to this email, post in Bugzilla using the
above URL to reply.
------- You are receiving this mail because: -------
You are watching all bug changes.