https://bugs.winehq.org/show_bug.cgi?id=50371
Bug ID: 50371 Summary: Multiple games and applications need 'mfc70.dll' Product: Wine Version: 6.0-rc3 Hardware: x86-64 OS: Linux Status: NEW Severity: normal Priority: P2 Component: mfc Assignee: wine-bugs@winehq.org Reporter: focht@gmx.net Distribution: ---
Hello folks,
to track applications that don't bundle it. Also to advertise the workaround via 'winetricks' recipe that doesn't exist yet.
This bug is a placeholder - not for actual implementation. If you start wasting time on this I'm not gonna talk to you anymore ;-)
Filter to search for existing MFC versions (different VC++ runtime versions):
https://bugs.winehq.org/buglist.cgi?component=mfc&product=Wine
---
Overview of several VC++ Runtime versions:
https://web.archive.org/web/20190916113215/http://www.tmurgent.com/AppVirt/V...
https://web.archive.org/web/20201021070215/https://www.tmurgent.com/appv/en/...
Part of Visual Studio (.NET) 2002.
Mentioned at least once in bug 2944 ("Gatan Digital Micrograph (non-demo) won't work with wine 20050419").
All 'GDILeaks' example applications from bug 50369 - Multiple tools for viewing GDI handles/resources list and GDI leak detection require support for PEB->GdiSharedHandleTable (GDIView, GDILeaks) also need this.
* https://docs.microsoft.com/en-us/archive/msdn-magazine/2003/january/detect-a... ("Detect and Plug GDI Leaks in Your Code with Two Powerful Tools for Windows XP")
Stable download link via Internet Archive:
https://web.archive.org/web/20170911002438/http://download.microsoft.com/dow...
---
Fortunately I found the runtime libs are part of following downloads:
'Microsoft Visual Studio .NET 2002 Service Pack 1':
https://www.microsoft.com/en-us/download/details.aspx?id=22709
https://web.archive.org/web/20060509134332/http://download.microsoft.com/dow...
---
'Visual Studio .NET 2002 Service Pack 1 MFC70.DLL Security Update':
https://www.microsoft.com/en-us/download/details.aspx?id=3644
https://web.archive.org/web/20200618132846/https://download.microsoft.com/do...
These installers require .NET Framework 1.1 but currently don't work due to Wine bugs and also requiring a "fake" VS.NET 2002 installation.
The wrapper extracts a single .NET installer binary which contains all the .CABs and metadata (patcher manifest etc.) in the assembly resources. It uses .NET 'Microsoft.WindowsInstaller.Package' module for installation/extraction.
--- snip --- ... at XStart.get_CabinetType () [0x00042] in <ad988f7701c54d98909e21aba2c9011f>:0 at XStart.GetCabFiles (System.IO.Stream cabStream) [0x00007] in <ad988f7701c54d98909e21aba2c9011f>:0 at XStart.GetEmbeddedFileStream (System.String fileName) [0x000aa] in <ad988f7701c54d98909e21aba2c9011f>:0 at XStart.GetEmbeddedFileBytes (System.String fileName) [0x00000] in <ad988f7701c54d98909e21aba2c9011f>:0 at XStart.ResolveResourceAssembly (System.Object sender, System.ResolveEventArgs args) [0x0006b] in <ad988f7701c54d98909e21aba2c9011f>:0 at System.AppDomain.DoAssemblyResolve (System.String name, System.Reflection.Assembly requestingAssembly, System.Boolean refonly) [0x00075] in <7713cb95b33244ed9608bf0b23fbdce9>:0 at (wrapper managed-to-native) System.AppDomain.LoadAssembly(System.AppDomain,string,System.Security.Policy.Evidence,bool,System.Threading.StackCrawlMark&) at System.AppDomain.Load (System.String assemblyString, System.Security.Policy.Evidence assemblySecurity, System.Boolean refonly, System.Threading.StackCrawlMark& stackMark) [0x00021] in <7713cb95b33244ed9608bf0b2 3fbdce9>:0 at System.AppDomain.Load (System.String assemblyString) [0x00002] in <7713cb95b33244ed9608bf0b23fbdce9>:0 at (wrapper remoting-invoke-with-check) System.AppDomain.Load(string) at System.Reflection.Assembly.Load (System.String assemblyString) [0x00005] in <7713cb95b33244ed9608bf0b23fbdce9>:0 at XStart.Main (System.String[] args) [0x00000] in <ad988f7701c54d98909e21aba2c9011f>:0 --- snip ---
To avoid installer prerequisites mess and multiple workarounds I provide you with a simple command to extract the needed .CAB from the wrapped executables.
===
'Visual Studio .NET 2002 Service Pack 1':
--- snip --- $ dd if=VS7.0sp1-KB837234-X86.exe of=files.cab skip=8167252 count=78272283 bs=1M iflag=skip_bytes,count_bytes --- snip ---
Cabinet listing, filtered:
--- snip --- $ cabextract -l files.cab | grep -i mfc70.*_dll
1024000 | 20.01.2005 17:32:34 | FL_mfc70_dll_____X86.3643236F_FC70_11D3_A536_0090278A1BB8 40960 | 20.01.2005 17:38:14 | FL_mfc70chs_dll_____X86.3643236F_FC70_11D3_A536_0090278A1BB8 45056 | 20.01.2005 17:38:14 | FL_mfc70cht_dll_____X86.3643236F_FC70_11D3_A536_0090278A1BB8 61440 | 20.01.2005 17:38:12 | FL_mfc70deu_dll_____X86.3643236F_FC70_11D3_A536_0090278A1BB8 57344 | 20.01.2005 17:38:14 | FL_mfc70enu_dll_____X86.3643236F_FC70_11D3_A536_0090278A1BB8 61440 | 20.01.2005 17:38:14 | FL_mfc70esp_dll_____X86.3643236F_FC70_11D3_A536_0090278A1BB8 61440 | 20.01.2005 17:38:12 | FL_mfc70fra_dll_____X86.3643236F_FC70_11D3_A536_0090278A1BB8 61440 | 20.01.2005 17:38:14 | FL_mfc70ita_dll_____X86.3643236F_FC70_11D3_A536_0090278A1BB8 49152 | 20.01.2005 17:38:14 | FL_mfc70jpn_dll_____X86.3643236F_FC70_11D3_A536_0090278A1BB8 49152 | 20.01.2005 17:38:14 | FL_mfc70kor_dll_____X86.3643236F_FC70_11D3_A536_0090278A1BB8 1017344 | 20.01.2005 17:49:18 | FL_mfc70u_dll_____X86.3643236F_FC70_11D3_A536_0090278A1BB8 2067456 | 20.01.2005 17:33:02 | FL_mfc70ud_dll_____X86.3643236F_FC70_11D3_A536_0090278A1BB8 2072576 | 20.01.2005 17:31:56 | mfc70d_dll_1_____X86.3643236F_FC70_11D3_A536_0090278A1BB8 --- snip ---
'Visual Studio .NET 2002 Service Pack 1 Security update':
--- snip --- $ dd if=VS7.0sp1-KB924642-X86.exe of=files2.cab skip=843993 count=64442759 bs=1M iflag=skip_bytes,count_bytes --- snip ---
--- snip --- $cabextract -l files2.cab | grep -i mfc70.*_dll
1024000 | 25.08.2006 23:07:50 | FL_mfc70_dll_____X86.3643236F_FC70_11D3_A536_0090278A1BB8 40960 | 25.08.2006 23:15:46 | FL_mfc70chs_dll_____X86.3643236F_FC70_11D3_A536_0090278A1BB8 45056 | 25.08.2006 23:15:46 | FL_mfc70cht_dll_____X86.3643236F_FC70_11D3_A536_0090278A1BB8 61440 | 25.08.2006 23:15:44 | FL_mfc70deu_dll_____X86.3643236F_FC70_11D3_A536_0090278A1BB8 57344 | 25.08.2006 23:15:46 | FL_mfc70enu_dll_____X86.3643236F_FC70_11D3_A536_0090278A1BB8 61440 | 25.08.2006 23:15:46 | FL_mfc70esp_dll_____X86.3643236F_FC70_11D3_A536_0090278A1BB8 61440 | 25.08.2006 23:15:44 | FL_mfc70fra_dll_____X86.3643236F_FC70_11D3_A536_0090278A1BB8 61440 | 25.08.2006 23:15:46 | FL_mfc70ita_dll_____X86.3643236F_FC70_11D3_A536_0090278A1BB8 49152 | 25.08.2006 23:15:44 | FL_mfc70jpn_dll_____X86.3643236F_FC70_11D3_A536_0090278A1BB8 49152 | 25.08.2006 23:15:46 | FL_mfc70kor_dll_____X86.3643236F_FC70_11D3_A536_0090278A1BB8 1017344 | 25.08.2006 23:28:02 | FL_mfc70u_dll_____X86.3643236F_FC70_11D3_A536_0090278A1BB8 2067456 | 25.08.2006 23:08:16 | FL_mfc70ud_dll_____X86.3643236F_FC70_11D3_A536_0090278A1BB8 2072576 | 25.08.2006 23:07:14 | mfc70d_dll_1_____X86.3643236F_FC70_11D3_A536_0090278A1BB8 --- snip ---
NOTE: It's 32-bit only by design.
I guess it makes sense to use the newer dlls from the 2006 security update in the newly-to-be-created winetricks recipe. The update is also smaller.
$ sha1sum VS7.0sp1-KB* 7cad96556ca3bdc4b99e89937ea01552f2cb6a32 VS7.0sp1-KB837234-X86.exe 3b045ff8e64c2f78701a33ae09316c3b49238d9d VS7.0sp1-KB924642-X86.exe
$ du -sh VS7.0sp1-KB* 83M VS7.0sp1-KB837234-X86.exe 63M VS7.0sp1-KB924642-X86.exe
$ wine --version wine-6.0-rc3
Regards
https://bugs.winehq.org/show_bug.cgi?id=50371
Anastasius Focht focht@gmx.net changed:
What |Removed |Added ---------------------------------------------------------------------------- URL| |https://web.archive.org/web | |/20170911002438/http://down | |load.microsoft.com/download | |/c/0/b/c0b7c8fa-58f1-4815-a | |ae7-ed18a4dc3f08/GDILeaks.e | |xe Keywords| |download
https://bugs.winehq.org/show_bug.cgi?id=50371
--- Comment #1 from Anastasius Focht focht@gmx.net --- Hello folks,
the corresponding ticket in 'winetricks' project:
https://github.com/Winetricks/winetricks/issues/1674
Regards
https://bugs.winehq.org/show_bug.cgi?id=50371
Gijs Vermeulen gijsvrm@gmail.com changed:
What |Removed |Added ---------------------------------------------------------------------------- Summary|Multiple games and |Multiple games and |applications need |applications need |'mfc70.dll' |'mfc70.dll' ('winetricks -q | |mfc70' is a workaround)
--- Comment #2 from Gijs Vermeulen gijsvrm@gmail.com --- A winetricks version was added in https://github.com/Winetricks/winetricks/commit/b1cb7dff9fb98ad0bd0e607ccc0cba174e1bb005.
Adjusting title.