https://bugs.winehq.org/show_bug.cgi?id=44475
Bug ID: 44475 Summary: Microsoft SQL Server 2008 Express Edition installer fails install .NET assemblies into GAC Product: Wine Version: 3.1 Hardware: x86-64 OS: Linux Status: NEW Severity: normal Priority: P2 Component: msi Assignee: wine-bugs@winehq.org Reporter: focht@gmx.net Distribution: ---
Hello folks,
continuation of bug 34627
Download:
https://download.microsoft.com/download/c/2/8/c28cc7df-c9d2-453b-9292-ae7d24...
Prerequisite:
* 'winetricks -q mspatcha' (bug 12501) * 'winetricks -q dotnet40' (needed since it's run without Visual Studio main installer)
Microsoft SQL Server 2008 Express Edition is an optional part of Visual Studio 2010 Express full installer. The (sub) installer for Microsoft SQL Server 2008 Express Edition fails. A C++/managed CLR exception is thrown, complaining about missing .NET assemblies.
To reproduce, kill everything at the point of the crash dialog to avoid rollback ('wineserver -k'). Restart the bootstrap installer again from:
'C:\Program Files\Microsoft SQL Server\100\Setup Bootstrap\Release\x86\'
--- snip --- $ wine ./setup100.exe ... 0009:fixme:shell:URL_ParseUrl failed to parse L"WindowsBase" 0009:fixme:shell:URL_ParseUrl failed to parse L"Microsoft.SqlServer.Chainer.Infrastructure" 0009:fixme:shell:URL_ParseUrl failed to parse L"System" 0009:fixme:console:GetConsoleProcessList (0xdb8bd4,1): stub 0009:fixme:shell:URL_ParseUrl failed to parse L"Microsoft.SqlServer.Configuration" 0009:fixme:shell:URL_ParseUrl failed to parse L"System.Xml" 0009:fixme:shell:URL_ParseUrl failed to parse L"Microsoft.NetEnterpriseServers.ExceptionMessageBox" 0009:fixme:msi:MsiProvideAssemblyW L"Microsoft.NetEnterpriseServers.ExceptionMessageBox, Version=10.0.0.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91, processorArchitecture=MSIL" L"C:\Program Files\Microsoft SQL Server\100\Setup Bootstrap\Release\x86\setup100.exe.config" 00000000 00000000 0x33c740 0x33c73c 0009:fixme:msi:MsiProvideAssemblyW L"Microsoft.NetEnterpriseServers.ExceptionMessageBox, Version=10.0.0.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91, processorArchitecture=MSIL" (null) 00000000 00000000 0x33c740 0x33c73c
Unhandled Exception: System.IO.FileNotFoundException: Could not load file or assembly 'Microsoft.NetEnterpriseServers.ExceptionMessageBox, Version=10.0.0.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91' or one of its dependencies. File not found. at Microsoft.SqlServer.Chainer.Setup.Setup.PreloadAssemblies() at Microsoft.SqlServer.Chainer.Setup.Setup.Main() --- snip ---
Trace log of the part where it tries to preload/locate the .NET assemblies from GAC:
--- snip --- ... 0071:0072:Call KERNEL32.CreateProcessW(003361e0 L"C:\Program Files\Microsoft SQL Server\100\Setup Bootstrap\Release\x86\setup100.exe",0032c3c4 L""C:\Program Files\Microsoft SQL Server\100\Setup Bootstrap\Release\x86\setup100.exe" /ACTION=INSTALL /MEDIASOURCE="c:\bd487f1735de2c1c339b6b49ac55\\" /ACTION=INSTALL /WORKFLOW=INSTALL /TIMESTAMP=20180205_120409 /LOGMARKER= /MEDIASOURCE="c:\bd487f1735de2c1c339b6b49ac55\\" /INSTALL"...,00000000,00000000,00000001,00000020,00000000,00000000,0032c35c,0032c3a8) ret=01011bfc ... 0156:0157:Call KERNEL32.__wine_kernel_init() ret=7bc6a1b2 ... 0145:0146:Call KERNEL32.lstrlenW(00178738 L"Microsoft.NetEnterpriseServers.ExceptionMessageBox,fileVersion="10.0.2531.0",version="10.0.0.0000",culture="neutral",publicKeyToken="89845DCD8080CC91",processorArchitecture="MSIL"") ret=79179ec4 0145:0146:Ret KERNEL32.lstrlenW() retval=000000b3 ret=79179ec4 .. 0156:0157:Call shlwapi.UrlGetPartW(0018ad20 L"Microsoft.NetEnterpriseServers.ExceptionMessageBox",0018c1c0,0033cf10,00000001,00000000) ret=79181013 0156:0157:fixme:shell:URL_ParseUrl failed to parse L"Microsoft.NetEnterpriseServers.ExceptionMessageBox" 0156:0157:Ret shlwapi.UrlGetPartW() retval=00000001 ret=79181013 ... 0156:0157:Call KERNEL32.GetFileAttributesW(0033ae2c L"C:\windows\Microsoft.Net\assembly\GAC_MSIL\policy.10.0.Microsoft.NetEnterpriseServers.ExceptionMessageBox") ret=791de214 0156:0157:Ret KERNEL32.GetFileAttributesW() retval=ffffffff ret=791de214 ... 0156:0157:Call KERNEL32.GetFileAttributesW(0033c4bc L"C:\windows\assembly\GAC\Microsoft.NetEnterpriseServers.ExceptionMessageBox\10.0.0.0__89845dcd8080cc91\Microsoft.NetEnterpriseServers.ExceptionMessageBox.dll") ret=791de214 0156:0157:Ret KERNEL32.GetFileAttributesW() retval=ffffffff ret=791de214 --- snip ---
'Microsoft.NetEnterpriseServers.ExceptionMessageBox.dll' is indeed nowhere present in the WINEPREFIX.
The app installer log itself mentions the assemblies in question but nothing suspicious:
--- snip --- ... 1: {D441BD04-E548-4F8E-97A4-1B66135BAAA8} 2: {DABDC208-7DD5-4A0A-B5E9-53C857F7802D} 3: <\Microsoft.NetEnterpriseServers.ExceptionMessageBox,fileVersion="10.0.2531.0",version="10.0.0.0000",culture="neutral",publicKeyToken="89845DCD8080CC91",processorArchitecture="MSIL" 1: {D441BD04-E548-4F8E-97A4-1B66135BAAA8} 2: {A72EDA2D-14E7-40C7-BAA8-25961F369C5A} 3: <\Microsoft.SqlServer.CustomControls,fileVersion="10.0.2531.0",version="10.0.0.0000",culture="neutral",publicKeyToken="89845DCD8080CC91",processorArchitecture="MSIL" 1: {D441BD04-E548-4F8E-97A4-1B66135BAAA8} 2: {4CC7BE4F-04E1-4302-95CD-C0C29B6598B9} 3: <\Microsoft.SqlServer.WizardFrameworkLite,fileVersion="10.0.1600.22",version="10.0.0.00000",culture="neutral",publicKeyToken="89845DCD8080CC91",processorArchitecture="MSIL" ... File: Microsoft.NetEnterpriseServers.ExceptionMessageBox.dll, Directory: GAC_32 File: Microsoft.SqlServer.Configuration.Repl_ConfigExtension.dll, Directory: CurrentSetupBootstrap_32 File: Microsoft.SqlServer.CustomControls.dll, Directory: GAC_32 File: Microsoft.SqlServer.WizardFrameworkLite.dll, Directory: GAC_32 ... File: Microsoft.NetEnterpriseServers.ExceptionMessageBox.dll, Directory: GAC_32, Size: 132968 File: Microsoft.SqlServer.Configuration.Repl_ConfigExtension.dll, Directory: CurrentSetupBootstrap_32, Size: 51048 File: Microsoft.SqlServer.CustomControls.dll, Directory: GAC_32, Size: 42840 File: Microsoft.SqlServer.WizardFrameworkLite.dll, Directory: GAC_32, Size: 594968 ... Action start 11:44:49: MsiPublishAssemblies. Application Context:, Assembly Name:Microsoft.SqlServer.GridControl,fileVersion="10.0.2531.0",version="10.0.0.0000",culture="neutral",publicKeyToken="89845DCD8080CC91",processorArchitecture="x86" Application Context:, Assembly Name:Microsoft.NetEnterpriseServers.ExceptionMessageBox,fileVersion="10.0.2531.0",version="10.0.0.0000",culture="neutral",publicKeyToken="89845DCD8080CC91",processorArchitecture="MSIL" Application Context:, Assembly Name:Microsoft.SqlServer.CustomControls,fileVersion="10.0.2531.0",version="10.0.0.0000",culture="neutral",publicKeyToken="89845DCD8080CC91",processorArchitecture="MSIL" Application Context:, Assembly Name:Microsoft.SqlServer.WizardFrameworkLite,fileVersion="10.0.1600.22",version="10.0.0.00000",culture="neutral",publicKeyToken="89845DCD8080CC91",processorArchitecture="MSIL" Action ended 11:44:49: MsiPublishAssemblies. Return value 1. ... --- snip ---
The problem becomes visible when doing full trace and additional debugging.
--- snip --- $ WINEDEBUG=+pid,+seh,+relay,+msi wine ./SQLExpr32_x86_enu.exe >>log.txt 2>&1 ... 00c7:00c8:trace:msi:ACTION_CostFinalize Calculating file cost ... 00c7:00c8:trace:msi:set_target_path file L"RepairWizard_XML_32" resolves to L"C:\Program Files\Microsoft SQL Server\100\Setup Bootstrap\Release\x86\RepairWizard.xml" 00c7:00c8:Call KERNEL32.GetFileAttributesW(0524e268 L"C:\Program Files\Microsoft SQL Server\100\Setup Bootstrap\Release\x86\RepairWizard.xml") ret=7d173b71 00c7:00c8:Ret KERNEL32.GetFileAttributesW() retval=ffffffff ret=7d173b71 ... 00c7:00c8:Call KERNEL32.GetTempFileNameW(05262cd0 L"C:\users\focht\Temp\",7d1f0bf8 L"msi",00000002,05252740) ret=7d173875 00c7:00c8:Ret KERNEL32.GetTempFileNameW() retval=00000002 ret=7d173875 00c7:00c8:Call KERNEL32.CreateDirectoryW(05252740 L"C:\users\focht\Temp\msi2.tmp",00000000) ret=7d17389b 00c7:00c8:Ret KERNEL32.CreateDirectoryW() retval=00000001 ret=7d17389b ... 00c7:00c8:trace:msi:set_target_path file L"Repl_ExceptionMessageBox_dll_32" resolves to L"C:\users\focht\Temp\msi2.tmp\Microsoft.NetEnterpriseServers.ExceptionMessageBox.dll" .... 00c7:00c8:trace:msi:set_target_path file L"REPL_Microsoft_SqlServer_Configuration_Repl_ConfigExtension_dll_32" resolves to L"C:\Program Files\Microsoft SQL Server\100\Setup Bootstrap\Release\x86\Microsoft.SqlServer.Configuration.Repl_ConfigExtension.dll" 00c7:00c8:Call KERNEL32.GetFileAttributesW(0524e3e0 L"C:\Program Files\Microsoft SQL Server\100\Setup Bootstrap\Release\x86\Microsoft.SqlServer.Configuration.Repl_ConfigExtension.dll") ret=7d173b71 00c7:00c8:Ret KERNEL32.GetFileAttributesW() retval=ffffffff ret=7d173b71 ... 00c7:00c8:trace:msi:calculate_install_state installing L"Repl_ExceptionMessageBox_dll_32" (missing) ... 00c7:00c8:trace:msi:msi_resolve_file_source Working to resolve source of file L"Repl_ExceptionMessageBox_dll_32" 00c7:00c8:trace:msi:msi_resolve_source_folder working to resolve L"GAC_32" ... 00c7:00c8:trace:msi:msi_resolve_source_folder already resolved to L"c:\bd487f1735de2c1c339b6b49ac55\PCUSOURCE\x86\setup\1033\Windows\Gac\" ... 00c7:00c8:Call KERNEL32.GetFileAttributesW(05468fc8 L"c:\bd487f1735de2c1c339b6b49ac55\PCUSOURCE\x86\setup\1033\Windows\Gac\_yafabdp.dll") ret=7d1a61f3 00c7:00c8:Ret KERNEL32.GetFileAttributesW() retval=00000020 ret=7d1a61f3 ... 00c7:00c8:trace:msi:msi_resolve_file_source file L"Repl_ExceptionMessageBox_dll_32" source resolves to L"c:\bd487f1735de2c1c339b6b49ac55\PCUSOURCE\x86\setup\1033\Windows\Gac\_yafabdp.dll" 00c7:00c8:trace:msi:ACTION_InstallFiles copying L"c:\bd487f1735de2c1c339b6b49ac55\PCUSOURCE\x86\setup\1033\Windows\Gac\_yafabdp.dll" to L"C:\users\focht\Temp\msi2.tmp\Microsoft.NetEnterpriseServers.ExceptionMessageBox.dll" 00c7:00c8:trace:msi:copy_install_file Copying L"c:\bd487f1735de2c1c339b6b49ac55\PCUSOURCE\x86\setup\1033\Windows\Gac\_yafabdp.dll" to L"C:\users\focht\Temp\msi2.tmp\Microsoft.NetEnterpriseServers.ExceptionMessageBox.dll" 00c7:00c8:Call KERNEL32.CopyFileW(05468fc8 L"c:\bd487f1735de2c1c339b6b49ac55\PCUSOURCE\x86\setup\1033\Windows\Gac\_yafabdp.dll",0524e328 L"C:\users\focht\Temp\msi2.tmp\Microsoft.NetEnterpriseServers.ExceptionMessageBox.dll",00000000) ret=7d1a5bcc 00c7:00c8:Ret KERNEL32.CopyFileW() retval=00000001 ret=7d1a5bcc 00c7:00c8:Call KERNEL32.SetFileAttributesW(0524e328 L"C:\users\focht\Temp\msi2.tmp\Microsoft.NetEnterpriseServers.ExceptionMessageBox.dll",00000080) ret=7d1a5bfa 00c7:00c8:Ret KERNEL32.SetFileAttributesW() retval=00000001 ret=7d1a5bfa ... 00c7:00c8:Call KERNEL32.WideCharToMultiByte(00000000,00000000,0539c958 L"Action start 12:08:59: MsiPublishAssemblies.",ffffffff,00000000,00000000,00000000,00000000) ret=7d1c6352 ... 00c7:00c8:trace:msi:ACTION_MsiPublishAssemblies publishing L"Repl_ExceptionMessageBox_dll_32" ... 00c7:00c8:Call advapi32.RegCreateKeyW(80000000,7d1fabc0 L"Installer\Assemblies\Global",0033e7f8) ret=7d187623 ... 00c7:00c8:Call advapi32.RegSetValueExW(0000047c,056a5ab8 L"Microsoft.NetEnterpriseServers.ExceptionMessageBox,fileVersion="10.0.2531.0",version="10.0.0.0000",culture="neutral",publicKeyToken="89845DCD8080CC91",processorArchitecture="MSIL"",00000000,00000007,0033e792,00000056) ret=7d1878d3 ... 00c7:00c8:Call KERNEL32.WideCharToMultiByte(00000000,00000000,05265aa0 L"Action ended 12:08:56: InstallFiles. Return value 1.",ffffffff,00000000,00000000,00000000,00000000) ret=7d1c6352 ... 00c7:00c8:Call KERNEL32.DeleteFileW(0524e328 L"C:\users\focht\Temp\msi2.tmp\Microsoft.NetEnterpriseServers.ExceptionMessageBox.dll") ret=7d1c1b09 00c7:00c8:Ret KERNEL32.DeleteFileW() retval=00000001 ret=7d1c1b09 ... --- snip ---
Although Wine MSI does publish(!) the assemblies in registry, the global shared assemblies are never installed into GAC.
Debug session of "install files" action (attach with debugger to sub-process):
--- snip --- Wine-dbg>bt
Backtrace: =>0 0x7d12b5a0 ACTION_InstallFiles+0x308(package=0x69a1440) [/home/focht/projects/wine/wine.repo/src/dlls/msi/files.c:415] in msi (0x0033e888) 1 0x7d106c2f ACTION_HandleStandardAction+0x154(package=0x69a1440, action="InstallFiles") [/home/focht/projects/wine/wine.repo/src/dlls/msi/action.c:7874] in msi (0x0033ea58) 2 0x7d106dc7 ACTION_PerformAction+0x67(package=0x69a1440, action="InstallFiles", script=0xffffffff) [/home/focht/projects/wine/wine.repo/src/dlls/msi/action.c:7902] in msi (0x0033ea98) 3 0x7d0f4fd7 ITERATE_Actions+0xf2(row=0x699f140, param=0x69a1440) [/home/focht/projects/wine/wine.repo/src/dlls/msi/action.c:513] in msi (0x0033eae8) 4 0x7d1443b2 MSI_IterateRecords+0x82(view=0x699ecb8, count=0x0(nil), func=0x7d0f4ee4, param=0x69a1440) [/home/focht/projects/wine/wine.repo/src/dlls/msi/msiquery.c:188] in msi (0x0033eb18) 5 0x7d0f524b ACTION_ProcessExecSequence+0xe8(package=0x69a1440) [/home/focht/projects/wine/wine.repo/src/dlls/msi/action.c:578] in msi (0x0033eb58) 6 0x7d1012a9 ACTION_ExecuteAction+0x342(package=0x69a1440) [/home/focht/projects/wine/wine.repo/src/dlls/msi/action.c:5638] in msi (0x0033eb98) 7 0x7d101506 ACTION_INSTALL+0x76(package=0x69a1440) [/home/focht/projects/wine/wine.repo/src/dlls/msi/action.c:5695] in msi (0x0033ebb8) 8 0x7d106c2f ACTION_HandleStandardAction+0x154(package=0x69a1440, action="INSTALL") [/home/focht/projects/wine/wine.repo/src/dlls/msi/action.c:7874] in msi (0x0033ed88) 9 0x7d106dc7 ACTION_PerformAction+0x67(package=0x69a1440, action="INSTALL", script=0xffffffff) [/home/focht/projects/wine/wine.repo/src/dlls/msi/action.c:7902] in msi (0x0033edc8) 10 0x7d10735f MSI_InstallPackage+0x3ad(package=0x69a1440, szPackagePath="c:\4d5a3e54918d6b5956e0665f28e2\PCUSOURCE\x86\setup\1033\SqlSupport.msi", szCommandLine="ADDLOCAL = "SupportFiles" REBOOT = "ReallySuppress" MEDIAPACKAGEPATH = "\x86\setup\1033"") [/home/focht/projects/wine/wine.repo/src/dlls/msi/action.c:8047] in msi (0x0033ee28) 11 0x7d139588 MsiInstallProductW+0xbd(szPackagePath=<couldn't compute location>, szCommandLine=<couldn't compute location>) [/home/focht/projects/wine/wine.repo/src/dlls/msi/msi.c:251] in msi (0x0033ee68) 12 0x066efe74 (0x0033eec0)
...
Wine-dbg>info locals
0x7d12b5a0 ACTION_InstallFiles+0x308: (0033e888) MSIPACKAGE* package=0x69a1440 (parameter [EBP+8]) MSIMEDIAINFO* mi=0x5570ab8 (local [EBP-20]) UINT rc=0 (local [EBP-12]) MSIFILE* file=0x68e9ba8 (local [EBP-16]) WCHAR* source="c:\4d5a3e54918d6b5956e0665f28e2\PCUSOURCE\x86\setup\1033\Windows\Gac_yafabdp.dll" (local [EBP-40])
Wine-dbg>s
msi_is_global_assembly () at /home/focht/projects/wine/wine.repo/src/dlls/msi/action.c:2187 2187 {
Wine-dbg>n 2188 return comp->assembly && !comp->assembly->application;
Wine-dbg>p *comp {entry={next=0x68d7b98, prev=0x68d77a8}, Component="Repl_ExceptionMessageBox_dll_32", ComponentId="{DABDC208-7DD5-4A0A-B5E9-53C857F7802D}", Directory="GAC_32", Attributes=0x800, Condition=0x0(nil), KeyPath="Repl_ExceptionMessageBox_dll_32", Installed=INSTALLSTATE_ABSENT, ActionRequest=INSTALLSTATE_LOCAL, Action=INSTALLSTATE_LOCAL, ForceLocalState=0, Enabled=0x1, Cost=0x20768, RefCount=0x1, FullKeypath="<\Microsoft.NetEnterpriseServers.ExceptionMessageBox,fileVersion="10.0.2531.0",version="10.0.0.0000",culture="neutral",publicKeyToken="89845DCD8080CC91",processorArchitecture="MSIL"", AdvertiseString=0x0(nil), assembly=0x68d7488, num_clients=0x1, anyAbsent=0, hasAdvertisedFeature=0, hasLocalFeature=0x1, hasSourceFeature=0}
Wine-dbg>p *comp->assembly {feature="SupportFiles", manifest="Repl_ExceptionMessageBox_dll_32", application=0x0(nil), attributes=0, display_name="Microsoft.NetEnterpriseServers.ExceptionMessageBox,fileVersion="10.0.2531.0",version="10.0.0.0000",culture="neutral",publicKeyToken="89845DCD8080CC91",processorArchitecture="MSIL"", tempdir="C:\users\focht\Temp\msi2.tmp", installed=0, clr_version={0, 0, 0, 0}}
Wine-dbg>p *file
{entry={next=0x68e9f10, prev=0x68e9980}, File="Repl_ExceptionMessageBox_dll_32", Component=0x68d7968, FileName="Microsoft.NetEnterpriseServers.ExceptionMessageBox.dll", ShortName="_yafabdp.dll", LongName="Microsoft.NetEnterpriseServers.ExceptionMessageBox.dll", FileSize=0x20768, Version="10.0.2531.0", Language="0", Attributes=0, Sequence=0x8a, state=msifs_installed, TargetPath="C:\users\focht\Temp\msi2.tmp\Microsoft.NetEnterpriseServers.ExceptionMessageBox.dll", IsCompressed=0, hash={dwFileHashInfoSize=0, dwData={0, 0, 0, 0}}, disk_id=0x1} --- snip ---
Source:
https://source.winehq.org/git/wine.git/blob/f9181daa1ddc2c10d3b6ddd4610bc142...
--- snip --- ... 437 LIST_FOR_EACH_ENTRY( file, &package->files, MSIFILE, entry ) 438 { 439 MSICOMPONENT *comp = file->Component; 440 441 if (!msi_is_global_assembly( comp ) || comp->assembly->installed || 442 (file->state != msifs_missing && file->state != msifs_overwrite)) continue; 443 444 rc = msi_install_assembly( package, comp ); 445 if (rc != ERROR_SUCCESS) 446 { 447 ERR("Failed to install assembly\n"); 448 rc = ERROR_INSTALL_FAILURE; 449 break; 450 } 451 file->state = msifs_installed; 452 } --- snip ---
'file->state' was already set to 'installed' in the file install part (main loop of 'ACTION_InstallFiles') hence the global .NET assembly installation part is not executed due to line 441/442 "or" condition.
With that part fixed, the installer succeeds.
--- snip --- ... 00c6:00c7:Call KERNEL32.CreateFileW(0644a3a8 L"C:\users\focht\Temp\msi2.tmp\Microsoft.NetEnterpriseServers.ExceptionMessageBox.dll",80000000,00000001,00000000,00000003,08000000,00000000) ret=603be944 00c6:00c7:Ret KERNEL32.CreateFileW() retval=000003fc ret=603be944 ... 00c6:00c7:trace:msi:msi_install_assembly installing assembly L"C:\users\focht\Temp\msi2.tmp\Microsoft.NetEnterpriseServers.ExceptionMessageBox.dll" ... 00c6:00c7:Call KERNEL32.CopyFileW(066efe40 L"C:\users\focht\Temp\msi2.tmp\Microsoft.NetEnterpriseServers.ExceptionMessageBox.dll",066f0320 L"C:\windows\assembly\GAC_MSIL\Microsoft.NetEnterpriseServers.ExceptionMessageBox\10.0.0.0__89845dcd8080cc91\Microsoft.NetEnterpriseServers.ExceptionMessageBox.dll",00000000) ret=7d41bc50 00c6:00c7:Ret KERNEL32.CopyFileW() retval=00000001 ret=7d41bc50 ... --- snip --
Interestingly these .NET assemblies get installed in 'c:\windows\Microsoft.NET\assembly' (GAC location prior .NET 4.0) - despite only .NET 4.0 Framework/CLR being present in the prefix.
--- snip --- $ tree --charset=ANSI windows/assembly/ windows/assembly/ |-- GAC_32 | `-- Microsoft.SqlServer.GridControl | `-- 10.0.0.0__89845dcd8080cc91 | `-- Microsoft.SqlServer.GridControl.dll `-- GAC_MSIL |-- Microsoft.NetEnterpriseServers.ExceptionMessageBox | `-- 10.0.0.0__89845dcd8080cc91 | `-- Microsoft.NetEnterpriseServers.ExceptionMessageBox.dll |-- Microsoft.SqlServer.CustomControls | `-- 10.0.0.0__89845dcd8080cc91 | `-- Microsoft.SqlServer.CustomControls.dll `-- Microsoft.SqlServer.WizardFrameworkLite `-- 10.0.0.0__89845dcd8080cc91 `-- Microsoft.SqlServer.WizardFrameworkLite.dll
10 directories, 4 files --- snip ---
This seems ok, the 'Target Runtime' property in these assemblies is indeed set to v2.0.5027 (can be also viewed using 'ILSpy', 'Reflector' etc.).
$ sha1sum SQLEXPR32_x86_ENU.exe 5f6c9597a592df4a5d969259a8e1592ecf838515 SQLEXPR32_x86_ENU.exe
$ du -sh SQLEXPR32_x86_ENU.exe 62M SQLEXPR32_x86_ENU.exe
$ wine --version wine-3.1
Regards