http://bugs.winehq.org/show_bug.cgi?id=11742
Summary: Small .net 1.1 app (FastMD5 1.3) fails to start up Product: Wine Version: CVS/GIT Platform: Other URL: http://www.paehl.de/fastmd5.zip OS/Version: other Status: NEW Keywords: download Severity: normal Priority: P2 Component: shlwapi AssignedTo: wine-bugs@winehq.org ReportedBy: dank@kegel.com
Now that bug 10134 is fixed, and .net 1.1's installer runs to completion, you can install the .net 1.1 version of fastmd5. But you can't start it; it complains fixme:shell:URL_ParseUrl failed to parse L"mscorlib" fixme:shell:URL_ParseUrl failed to parse L"System" ...
This was investigated and tracked down to an extra '' by A.F. in http://bugs.winehq.org/show_bug.cgi?id=10134#c20
Copying his comments here, since that bug was about dotnetfx install failure:
Registering assemblies into GAC and pre JIT-ing (ngen tool) doesn't work right now due to a bug in shlwapi's UrlCombineW().
Because of this bug, .NET 1.x fusion loader won't find any referenced assemblies on app startup, leading to rather cryptic "resource not found" error message.
--- snip trace --- .. 001f:Call shlwapi.UrlCombineW(005436d8 L"C:\windows\Microsoft.NET\Framework\v1.1.4322/",0053b590 L"C:\windows\Microsoft.NET\Framework\v1.1.4322\System.dll",00544728 L"hS\0108S",0033e320,00000000) ret=7904e23d .. 001f:Ret shlwapi.UrlCombineW() retval=00000000 ret=7904e23d 001f:Call shlwapi.UrlIsW(00544728 L"file:///C:/windows/Microsoft.NET/Framework/v1.1.4322/System.dll/",00000003) ret=7904e250 001f:Ret shlwapi.UrlIsW() retval=00000001 ret=7904e250 001f:Call shlwapi.UrlUnescapeW(00544728 L"file:///C:/windows/Microsoft.NET/Framework/v1.1.4322/System.dll/",00542688,0033e35c,00000000) ret=7904e267 001f:Ret shlwapi.UrlUnescapeW() retval=00000000 ret=7904e267 .. --- snip trace ---
The returned combined URL/path is invalid. Fusion internally re-verifies paths before mapping dlls and rejects it.
reduced: "c:\test/" + "c:\test\mylib.dll"
wine -> "file:///c:\test\mylib.dll/" (wrong) windows -> "file:///c:\test\mylib.dll" (correct, I wrote a small test case and tested with Windows XP SP2).
So get that bug fixed and apps/fusion will find the requested assemblies.
--
For trace/logging purposes you can enable fusion's verbose logging:
--- snip --- [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Fusion] "ForceLog"=dword:00000001 "LogResourceBinds"=dword:00000001 "LogFailures"=dword:00000001 "LogPath"="C:\Temp\FusionLogs" --- snip ---
That will get you detailed CLR assembly search and loader logs. Handy for diagnosing assembly loading problems.
http://bugs.winehq.org/show_bug.cgi?id=11742
Dan Kegel dank@kegel.com changed:
What |Removed |Added ---------------------------------------------------------------------------- Blocks| |8178 Target Milestone|--- |1.0.0
--- Comment #1 from Dan Kegel dank@kegel.com 2008-02-26 13:05:57 --- .net 1.1 is required by a lot of apps, and this problem is understood, so nominating for 1.0.
http://bugs.winehq.org/show_bug.cgi?id=11742
--- Comment #2 from Dan Kegel dank@kegel.com 2008-02-26 17:06:16 --- Maarten sent in a patch for the CombineURL bug, http://winehq.org/pipermail/wine-patches/2008-February/050725.html
but curiously when I run fastmd5 1.3 myself, I never seem to see a call to that function. With or without the patch, it crashes, saying it can't find System.Windows.Forms. It seems to search only the app, doesn't search c:\windows\microsoft.net as it should?
If I copy stuff into the app dir, e.g. cp ../../windows/Microsoft.NET/Framework/v1.1.4322/System.Windows.Forms* . it gets a little further, but still crashes, saying it couldn't load something (but it doesn't say what).
And I still see fixmes like this, fwiw: 0009:Call shlwapi.UrlGetPartW(006342a0 L"mscorlib",00634340,0033f688,00000001,00000000) ret=79045b81 fixme:shell:URL_ParseUrl failed to parse L"mscorlib" 0009:Ret shlwapi.UrlGetPartW() retval=80070057 ret=79045b81
I did enable the fusion log as suggested by A.F.; I'll attach it.
http://bugs.winehq.org/show_bug.cgi?id=11742
--- Comment #3 from Dan Kegel dank@kegel.com 2008-02-26 17:07:00 --- Created an attachment (id=10996) --> (http://bugs.winehq.org/attachment.cgi?id=10996) fusion log from fastmd5 failing to load
http://bugs.winehq.org/show_bug.cgi?id=11742
Yolande Haneder yolande@haneder.biz changed:
What |Removed |Added ---------------------------------------------------------------------------- CC| |yolande@haneder.biz
--- Comment #4 from Yolande Haneder yolande@haneder.biz 2008-02-27 10:20:56 --- Dan,
There was a change in the GIT of 20.2 after which the .NET 2 in my case is sending messages that it can't load gatucil.exe and mscorwks.dll. Are these files of importance for the .NET 1?
http://bugs.winehq.org/show_bug.cgi?id=11742
--- Comment #5 from Anastasius Focht focht@gmx.net 2008-02-29 15:12:13 --- Created an attachment (id=11046) --> (http://bugs.winehq.org/attachment.cgi?id=11046) shell script which fixes .NET 1.1 GAC problem (caused by MsiPublishAssemblies stub)
Hello,
Fusion log shows that none of the crucial system assemblies are registered in global assembly cache (GAC): $WINEPREFIX/drive_c/windows/assembly/GAC -> empty Even if the system (strong named) assemblies are pre-JIT'd with ngen.exe (into $WINEPREFIX/drive_c/windows/assembly/NativeImages1_v1.1.4322) they must be first registered into GAC to be recognized.
The important msi installer step that usually takes care of this is MsiPublishAssemblies() - currently a stub. Depending on assembly type (.NET or C/C++ runtime), assemblies get either registered/installed into GAC or SxS. For .NET assemblies, the Fusion API is used to register them into GAC (documented here: http://support.microsoft.com/kb/317540 )
MsiPublishAssemblies() probably remains a stub for indeterminate time - it requires some work to get it right. For the meantime I present a workaround.
Another way to get shared assemblies into GAC is the "gacutil" tool (which is nothing more than a command line wrapper for Fusion API). Unfortunately this program is considered a developer tool and not shipped with .NET redistributables by default. You would have to download the .NET 1.1 SDK (106 MB) only to get the tool... Fortunately there was an oversight: .NET 1.1 SP1 redistributable accidentally shipped this tool.
Installing .NET 1.1 SP1 on top of .NET 1.1 doesn't work because parts of the installer (patcher) requires .NET functionality present (all assemblies missing from GAC). A chicken and egg problem. Therefore I wrote a little script that takes care of this (parts taken from winetricks).
Basically it downloads .NET 1.1 SP1 after .NET 1.1 install and cabextracts the contents, copying the required GAC tool into right place. It then registers all assemblies (*.dll) found in $WINEPREFIX/drive_c/windows/Microsoft.NET/Framework/v1.1.4322/GAC into system wide GAC. Some assemblies are not really to be registered into GAC - that's why I didn't use winetricks try() on some steps (errors are expected).
After script end you will see new assemblies in GAC subdirs. "gacutil -l" can be used to list all registered assemblies.
The script serves only as base to be incorporated into official winetricks (relevant parts).
.NET 1.1 SP1 installer has some issues on it's own which I didn't bother to evaluate yet due to lack of time. That's why the install step of SP1 is omitted (only used to extract the gacutil tool).
---
Any .NET 1.1 application installer that use msi.MsiPublishAssemblies() to register shared assemblies into GAC needs to be worked around this way. Fortunately that happens not too often...
---
Stay tuned...
Regards
http://bugs.winehq.org/show_bug.cgi?id=11742
Anastasius Focht focht@gmx.net changed:
What |Removed |Added ---------------------------------------------------------------------------- CC| |focht@gmx.net
--- Comment #6 from Anastasius Focht focht@gmx.net 2008-02-29 15:55:40 --- Hello,
after fixing the .NET 1.x GAC problem, more steps need to be taken to get that app running.
================== Gdiplus: wine loader problem with "native over builtin" and absolute (invalid) paths
Either copy the "C:\windows\Microsoft.NET\Framework\v1.1.4322\gdiplus.dll" into system32 or use 'sh winetricks gdiplus' You must set the load order of this library to "native" only (not "native then builtin").
The reason is the .NET CLR uses its own load strategies. It first tries to load this library with absolute path (built from referencing assembly) but the file doesn't exist in that path.
--- snip --- 0043:Call KERNEL32.LoadLibraryExW(0034e3d8 L"c:\windows\assembly\gac\system.drawing\1.0.5000.0__b03f5f7f11d50a3a\gdiplus.dll",00000000,00000008) ret=791b7b63 ... 0043:trace:module:load_dll looking for L"c:\windows\assembly\gac\system.drawing\1.0.5000.0__b03f5f7f11d50a3a\gdiplus.dll" in L"c:\windows\assembly\gac\system.drawing\1.0.5000.0__b03f5f7f11d50a3a;.;C:\windows\system32;C:\windows\system;C:\windows;C:\windows\system32;C:\windows" 0043:trace:module:get_load_order looking for L"C:\windows\assembly\gac\system.drawing\1.0.5000.0__b03f5f7f11d50a3a\gdiplus.dll" 0043:trace:module:get_load_order_value got standard key n,b for L"gdiplus" 0043:trace:module:load_builtin_dll Trying built-in L"gdiplus.dll" .. 0043:trace:module:load_dll Found L"C:\windows\system32\KERNEL32.dll" for L"kernel32.dll" at 0x7b820000, count=-1 0043:trace:module:load_builtin_callback loaded gdiplus.dll 0x158ba0 0x73e30000 0043:trace:loaddll:load_builtin_dll Loaded L"C:\windows\system32\gdiplus.dll" at 0x73e30000: builtin 0043:trace:module:load_dll Loaded module L"C:\windows\assembly\gac\system.drawing\1.0.5000.0__b03f5f7f11d50a3a\gdiplus.dll" (builtin) at 0x73e30000 0043:trace:module:process_attach (L"gdiplus.dll",(nil)) - START 0043:trace:module:MODULE_InitDLL (0x73e30000 L"gdiplus.dll",PROCESS_ATTACH,(nil)) - CALL 0043:trace:module:MODULE_InitDLL (0x73e30000,PROCESS_ATTACH,(nil)) - RETURN 1 0043:trace:module:process_attach (L"gdiplus.dll",(nil)) - END 0043:trace:seh:raise_exception code=80000100 flags=1 addr=0x7b841560 0043:trace:seh:raise_exception info[0]=73e4eec0 0043:trace:seh:raise_exception info[1]=73e4fe25 wine: Call from 0x7b841560 to unimplemented function gdiplus.dll.GdipGetFamily, aborting --- snip ---
Offending code
--- snip dlls/ntdll/loader.c --- static NTSTATUS load_dll( LPCWSTR load_path, LPCWSTR libname, DWORD flags, WINE_MODREF** pwm ) .. case LO_NATIVE_BUILTIN: if (!handle) nts = STATUS_DLL_NOT_FOUND; else { nts = load_native_dll( load_path, filename, handle, flags, pwm ); if (nts == STATUS_INVALID_FILE_FOR_SECTION) /* not in PE format, maybe it's a builtin */ nts = load_builtin_dll( load_path, filename, handle, flags, pwm ); } if (nts == STATUS_DLL_NOT_FOUND && loadorder == LO_NATIVE_BUILTIN) nts = load_builtin_dll( load_path, filename, 0, flags, pwm ); break;
.. --- snip dlls/ntdll/loader.c ---
Because of absolute (invalid) load path, load_builtin_dll() is triggered causing the builtin dll to be loaded leading to unimplemented stubs problem - despite native dll present in default search path.
If you set the load order to "native", the LoadLibraryW/load_dll call fails and the .NET CLR then tries to load the library a second time using the standard way, picking up the right (native) one.
--- snip --- 002a:Call KERNEL32.LoadLibraryExW(0034e3d8 L"c:\windows\assembly\gac\system.drawing\1.0.5000.0__b03f5f7f11d50a3a\gdiplus.dll",00000000,00000008) ret=791b7b63 002a:trace:module:load_dll looking for L"c:\windows\assembly\gac\system.drawing\1.0.5000.0__b03f5f7f11d50a3a\gdiplus.dll" in L"c:\windows\assembly\gac\system.drawing\1.0.5000.0__b03f5f7f11d50a3a;.;C:\windows\system32;C:\windows\system;C:\windows;C:\windows\system32;C:\windows" 002a:trace:module:get_load_order looking for L"C:\windows\assembly\gac\system.drawing\1.0.5000.0__b03f5f7f11d50a3a\gdiplus.dll" 002a:trace:module:get_load_order_value got standard key n for L"gdiplus" 002a:warn:module:load_dll Failed to load module L"c:\windows\assembly\gac\system.drawing\1.0.5000.0__b03f5f7f11d50a3a\gdiplus.dll"; status=c0000135 002a:Ret KERNEL32.LoadLibraryExW() retval=00000000 ret=791b7b63 002a:Call KERNEL32.LoadLibraryExW(0034e130 L"gdiplus.dll",00000000,00000000) ret=791b7b63 002a:trace:module:load_dll looking for L"gdiplus.dll" in L"C:\Program Files\FASTMD5;.;C:\windows\system32;C:\windows\system;C:\windows;C:\windows\system32;C:\windows" 002a:trace:module:load_dll Found L"C:\windows\system32\Gdiplus.dll" for L"gdiplus.dll" at 0x39800000, count=2 002a:Ret KERNEL32.LoadLibraryExW() retval=39800000 ret=791b7b63 --- snip ---
For this special case of invalid absolute load path, I'd prefer trying native first before builtin (as the load order implies) to give native version a second chance with *default* search path.
Regards
http://bugs.winehq.org/show_bug.cgi?id=11742
--- Comment #7 from Anastasius Focht focht@gmx.net 2008-02-29 16:29:07 --- Created an attachment (id=11051) --> (http://bugs.winehq.org/attachment.cgi?id=11051) patch which implements mscoree shim interop ReadXXX and WriteXXX
Hello again,
the next step is essentially the same as the .NET 2.0 fonts problem. I documented it in http://bugs.winehq.org/show_bug.cgi?id=10467#c2
appdb .NET 2.0 howto:
--- snip --- 3. Copy all fonts from a windows partition (from c:\WINDOWS\Fonts) to ~/.wine/drive_c/windows/fonts 4. Save this file http://bugs.winehq.org/attachment.cgi?id=9204 and do "regedit fonts.reg" --- snip ---
After that the app needs one more fix because of native .NET shim (mscoree) insufficiency.
--- snip managed debugger callstack --- System.EntryPointNotFoundException: Unable to find an entry point named ND_WU1 in DLL mscoree.dll. at System.Runtime.InteropServices.Marshal.WriteByte(Object ptr, Int32 ofs, Byte val) at System.Drawing.Font.ToLogFont(Object logFont, Graphics graphics) at System.Drawing.Font.ToLogFont(Object logFont) at System.Drawing.Font.ToHfont() at System.Windows.Forms.FontHandleWrapper..ctor(Font font) at System.Windows.Forms.Control.GetDefaultFontHandleWrapper() at System.Windows.Forms.Control.get_FontHandle() at System.Windows.Forms.Control.get_FontHandle() at System.Windows.Forms.Control.OnHandleCreated(EventArgs e) at System.Windows.Forms.ComboBox.OnHandleCreated(EventArgs e) at System.Windows.Forms.Control.WmCreate(Message& m) at System.Windows.Forms.Control.WndProc(Message& m) at System.Windows.Forms.ComboBox.WndProc(Message& m) at System.Windows.Forms.ControlNativeWindow.OnMessage(Message& m) at System.Windows.Forms.ControlNativeWindow.WndProc(Message& m) at System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam) --- snip managed debugger callstack ---
If one looks at wine trace
--- snip --- 0009:Call KERNEL32.GetProcAddress(60b80000,79ba98f7 "ND_RI2") ret=00660ce5 0009:Ret KERNEL32.GetProcAddress() retval=00000000 ret=00660ce5 .. *boom*
0027:Call KERNEL32.GetProcAddress(618c0000,79ba98c7 "ND_RU1") ret=791e0ce5 0027:Ret KERNEL32.GetProcAddress() retval=00000000 ret=791e0ce5 .. *boom* --- snip ---
Wine's mscoree needs some interop stubs - fleshed out of course. You could use native mscoree override but I tend to minimize the native mess as possible.
System.Runtime.InteropServices.Marshal.ReadByte -> ND_RU1 System.Runtime.InteropServices.Marshal.ReadInt16 -> ND_RI2 System.Runtime.InteropServices.Marshal.ReadInt32 -> ND_RI4 System.Runtime.InteropServices.Marshal.ReadInt64 -> ND_RI8
(same goes for WriteXXX -> ND_Wxx)
Thanks to the managed stack frame one can implement these quickly.
With that patch applied this example .NET 1.1 application finally starts successfully. ;-)
Regards
http://bugs.winehq.org/show_bug.cgi?id=11742
--- Comment #8 from Dan Kegel dank@kegel.com 2008-02-29 17:37:32 --- Jeez. Can't you leave a little mystery in the world? You've gone and explained everything :-)
Thanks, I hope we can follow your lead without too much delay.
http://bugs.winehq.org/show_bug.cgi?id=11742
Louis Lenders xerox_xerox2000@yahoo.co.uk changed:
What |Removed |Added ---------------------------------------------------------------------------- CC| |xerox_xerox2000@yahoo.co.uk
--- Comment #9 from Louis Lenders xerox_xerox2000@yahoo.co.uk 2008-03-01 00:32:34 --- I've added a howto in the appdb. Away with Obama and Clinton, Focht for president!
http://bugs.winehq.org/show_bug.cgi?id=11742
Alan Jackson ajackson@bcs.org.uk changed:
What |Removed |Added ---------------------------------------------------------------------------- CC| |ajackson@bcs.org.uk
http://bugs.winehq.org/show_bug.cgi?id=11742
--- Comment #10 from Dan Kegel dank@kegel.com 2008-03-14 15:33:36 --- I've rolled up the workaround script from A.F. into winetricks. You can now run this app easily if you do rm -rf .wine wget kegel.com/wine/winetricks sh winetricks dotnet11
That's a workaround, not a fix... we can't close this bug until MsiPublishAssemblies is working.
http://bugs.winehq.org/show_bug.cgi?id=11742
Anastasius Focht focht@gmx.net changed:
What |Removed |Added ---------------------------------------------------------------------------- Attachment #11046|0 |1 is obsolete| |
--- Comment #11 from Anastasius Focht focht@gmx.net 2008-03-15 05:04:04 --- (From update of attachment 11046) Hello,
obsoleting my script, steps have been incorporated into winetricks.
Regards
http://bugs.winehq.org/show_bug.cgi?id=11742
--- Comment #12 from Anastasius Focht focht@gmx.net 2008-03-15 05:45:07 --- Hello again,
Louis can you change the .NET 1.1 appdb howto to reflect the merge of script into winetricks?
http://appdb.winehq.org/objectManager.php?sClass=version&iId=4278
Replace steps 3-7 with winetricks dotnet11. Include hint that users should update their winetricks to newest version.
Besides native gdiplus override, mscoree is overridden too (otherwise http://bugs.winehq.org/attachment.cgi?id=11051 needed) so there is no patching involved at all.
Though the wine loader problem (gdiplus) and mscoree insufficiencies should not be forgotten... the less native overrides the better.
Regards
http://bugs.winehq.org/show_bug.cgi?id=11742
--- Comment #13 from Dan Kegel dank@kegel.com 2008-03-15 07:28:14 --- Thanks for the reminder. I've improved the comments in winetricks a bit to make this clearer http://code.google.com/p/winezeug/source/diff?r=15&path=/trunk/winetrick... and updated the howto in the appdb.
http://bugs.winehq.org/show_bug.cgi?id=11742
--- Comment #14 from Dan Kegel dank@kegel.com 2008-03-15 14:42:22 --- See also bug 7098, which seems to recapitulate the original bug here. Duplicate?
http://bugs.winehq.org/show_bug.cgi?id=11742
--- Comment #15 from Dan Kegel dank@kegel.com 2008-03-25 15:24:47 --- A.J. committed the helpers asked for in #7, http://winehq.org/pipermail/wine-cvs/2008-March/041660.html
http://bugs.winehq.org/show_bug.cgi?id=11742
--- Comment #16 from Dan Kegel dank@kegel.com 2008-05-01 08:53:56 --- MsiPublishAssemblies is in, could you look at this again? FWIW, when I install .net 1.1 and fastmd5, and then start fastmd5, it fails with
Failed to load resources from resource file Please check your Setup
I'll attach a log.
http://bugs.winehq.org/show_bug.cgi?id=11742
--- Comment #17 from Dan Kegel dank@kegel.com 2008-05-01 08:54:41 --- Created an attachment (id=12619) --> (http://bugs.winehq.org/attachment.cgi?id=12619) +relay,+fusion,+module,+file,+text,+seh log of fastmd5 failing to start
http://bugs.winehq.org/show_bug.cgi?id=11742
--- Comment #18 from Anastasius Focht focht@gmx.net 2008-05-01 10:30:11 --- Hello,
sorry but I can't reproduce your problem. Works fine with wine-0.9.60-580-gad79873 and clean .wine - though still needs gdiplus override.
James did an excellent job on fusion so far. Besides the .NET 1.1 installer, VS.NET installs will greatly benefit from James work on fusion and MsiPublishAssemblies because many startup/run issues are due to skipped assembly installation steps.
If the problem persists, outline the exact steps and versions used. Otherwise I'll close this bug.
BTW ... I don't need any rzip/bzip logs (even if they have correct mime type *g*). Usually I'm quicker tracking things down by myself than reading large logs.
Regards
http://bugs.winehq.org/show_bug.cgi?id=11742
--- Comment #19 from Dan Kegel dank@kegel.com 2008-05-10 11:39:18 --- Dang, with wine-1.0rc1 it's crashing differently on startup. I removed the GAC kludge from winetricks, then did rm -rf .wine sh winetricks dotnet11 wine fastmd5-1.3/setup cd .wine/drive_c/Program Files/FASTMD5 wine fastmd5 and it crashed with a dialog Application has generated an exception that could not be handled
http://bugs.winehq.org/show_bug.cgi?id=11742
--- Comment #20 from Louis Lenders xerox_xerox2000@yahoo.co.uk 2008-05-10 14:15:24 --- Hi Dan, the app starts fine for me doing:
rm ~/.wine winetricks corefonts wine dotnetfx1.1.exe (the .net 1.1 instalation executable) winetricks gdiplus (otherwise fastmd5 crashes into unimplemented gdiplus function) wine setup.exe ( and then start fastmd5)
As far as i can see this bug can be closed, the only thing is it still needs the corefonts and gdiplus, but that's covered ny other bugs i guess.
http://bugs.winehq.org/show_bug.cgi?id=11742
--- Comment #21 from Dan Kegel dank@kegel.com 2008-05-10 15:57:36 --- Not for me, sadly. And how are you getting past bug 13115? I have to retry .net 1.1 install several times...
http://bugs.winehq.org/show_bug.cgi?id=11742
Dan Kegel dank@kegel.com changed:
What |Removed |Added ---------------------------------------------------------------------------- Status|NEW |RESOLVED Resolution| |FIXED
--- Comment #22 from Dan Kegel dank@kegel.com 2008-05-11 08:31:24 --- winetricks now applies all the needed font kludges (at least for me) and doesn't do the GAC kludge anymore.
So, at least when installing dotnet11 with winetricks, all is well. Marking fixed, since the font problems are really bugs in either linux or .net...?
http://bugs.winehq.org/show_bug.cgi?id=11742
Alexandre Julliard julliard@winehq.org changed:
What |Removed |Added ---------------------------------------------------------------------------- Status|RESOLVED |CLOSED
--- Comment #23 from Alexandre Julliard julliard@winehq.org 2008-05-23 10:37:01 --- Closing bugs fixed in 1.0-rc2.
http://bugs.winehq.org/show_bug.cgi?id=11742
Austin English austinenglish@gmail.com changed:
What |Removed |Added ---------------------------------------------------------------------------- Version|CVS/GIT |unspecified
http://bugs.winehq.org/show_bug.cgi?id=11742
Anastasius Focht focht@gmx.net changed:
What |Removed |Added ---------------------------------------------------------------------------- Fixed by SHA1| |6e5bc73b8d58c79a39595c20b28 | |0d94ec70f0e75 Component|shlwapi |mscoree Version|unspecified |0.9.56.
http://bugs.winehq.org/show_bug.cgi?id=11742
Anastasius Focht focht@gmx.net changed:
What |Removed |Added ---------------------------------------------------------------------------- Keywords| |dotnet Hardware|Other |x86 OS|other |Linux