http://bugs.winehq.org/show_bug.cgi?id=30681
Bug #: 30681 Summary: Microsoft SQL Server Management Studio Express 2008 installer fails Product: Wine Version: 1.5.4 Platform: x86 URL: http://www.microsoft.com/en-us/download/details.aspx?i d=7593 OS/Version: Linux Status: UNCONFIRMED Severity: normal Priority: P2 Component: -unknown AssignedTo: wine-bugs@winehq.org ReportedBy: djelinski1@gmail.com Classification: Unclassified
Created attachment 40173 --> http://bugs.winehq.org/attachment.cgi?id=40173 log of SQLManagementStudio_x86_ENU.exe - steps as described.
Installation fails with message: SQL Server Setup has encountered the following error:
Method not found: 'Void System.Xml.Xsl.Xslt.Compiler..ctor(System.Xml.Xsl.XsltSettings, Boolean, System.String)'..
Prerequisites: a version of winetricks that supports dotnet35sp1 is required (currently only svn) winetricks dotnet35sp1 mspatcha
To reproduce: wine SQLManagementStudio_x86_ENU.exe
go to Installation, then New SQL Server stand-alone installation. After a while the above message is displayed and the installation is interrupted.
http://bugs.winehq.org/show_bug.cgi?id=30681
Daniel Jelinski djelinski1@gmail.com changed:
What |Removed |Added ---------------------------------------------------------------------------- Keywords| |dotnet, download, Installer
http://bugs.winehq.org/show_bug.cgi?id=30681
Anastasius Focht focht@gmx.net changed:
What |Removed |Added ---------------------------------------------------------------------------- Status|UNCONFIRMED |NEW CC| |focht@gmx.net Component|-unknown |msi Summary|Microsoft SQL Server |Microsoft SQL Server |Management Studio Express |Management Studio Express |2008 installer fails |2008 installer fails (some | |.NET assemblies are not | |updated/patched by .NET | |service packs containing | |.msp) Ever Confirmed|0 |1
--- Comment #1 from Anastasius Focht focht@gmx.net 2012-05-15 15:58:21 CDT --- Hello,
confirming. For unattended/silent install you can use:
--- snip --- $ SQLManagementStudio_x86_ENU.exe /q /FEATURES=SSMS /ACTION=Install --- snip ---
If you want to see progress, you can replace the /q option with /qs.
This is the culprit in log:
--- snip --- Method not found: 'Void System.Xml.Xsl.Xslt.Compiler..ctor(System.Xml.Xsl.XsltSettings, Boolean, System.String)'. --- snip ---
The "System.Xml.Xsl.Xslt.Compiler" class ought to live in "System.Data.SqlXml.dll" assembly.
The assembly info after executing all .NET recipes:
--- snip --- Location: Z:\home\focht.wine\drive_c\windows\assembly\GAC_MSIL\System.Data.SqlXml\2.0.0.0__b77a5c561934e089\System.Data.SqlXml.dll Name: System.Data.SqlXml, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 Type: Library
// Assembly System.Data.SqlXml, Version 2.0.0.0
[assembly: AssemblyVersion("2.0.0.0")] [assembly: AssemblyDescription("System.Data.SqlXml.dll")] [assembly: AllowPartiallyTrustedCallers] [assembly: AssemblyDefaultAlias("System.Data.SqlXml.dll")] [assembly: AssemblyTitle("System.Data.SqlXml.dll")] [assembly: CLSCompliant(true)] [assembly: ComVisible(false)] [assembly: Debuggable(DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints)] [assembly: CompilationRelaxations(8)] [assembly: AssemblyDelaySign(true)] [assembly: NeutralResourcesLanguage("en-US")] [assembly: AssemblyCompany("Microsoft Corporation")] [assembly: Dependency("System.Xml,", LoadHint.Always)] [assembly: RuntimeCompatibility(WrapNonExceptionThrows=true)] [assembly: AssemblyKeyFile(@"f:\RTM\Tools\devdiv\EcmaPublicKey.snk")] [assembly: AssemblyInformationalVersion("2.0.50727.42")] [assembly: AssemblyProduct("Microsoft\x00ae .NET Framework")] [assembly: SatelliteContractVersion("2.0.0.0")] [assembly: InternalsVisibleTo("System.Xml, PublicKey=00000000000000000400000000000000")] [assembly: AssemblyFileVersion("2.0.50727.42")] [assembly: AssemblyCopyright("\x00a9 Microsoft Corporation. All rights reserved.")] [assembly: SecurityPermission(SecurityAction.RequestMinimum, SkipVerification=true)] --- snip ---
Dumping the assembly using .NET reflector reveals it defines this class but with a different constructor signature:
--- snip --- public Compiler(XsltSettings settings);
Declaring Type: System.Xml.Xsl.Xslt.Compiler Assembly: System.Data.SqlXml, Version=2.0.0.0 --- snip ---
A typical Microsoft ... although the assembly version remains the same (even with newest .NET Frameworks) public API/classes were restructured.
At some point the constructor signature changed to "ctor(System.Xml.Xsl.XsltSettings, Boolean, System.String)" and this what SSMS imports.
The obvious thing is the very low assembly file version "2.0.50727.42". This is from original .NET 2.0 Framework. Almost any other assembly (reference and GAC) has a much higher version - of course there are several newer .NET Frameworks/Service Packs applied.
Using ORCA to dump the original 2.0 Framework installer .msi gives:
--- snip --- c:\Windows\Installer\1236.msi (original .NET 2.0 Framework) --- snip ---
--- snip --- FL_System_Data_SqlXml_dll_____X86.3643236F_FC70_11D3_A536_0090278A1BB8 SYS_DATA_SQLXML_DLL_____X86.3643236F_FC70_11D3_A536_0090278A1BB8 173281|System.Data.SqlXml.dll 716800 2.0.50727.42 1033 17408 295 --- snip ---
Unfortunately ORCA currently crashes under Wine when trying to load a .msp (patch) file on top of a base .msi file (I remember this worked).
Dumping manually in hex editor gives:
From .NET 2.0 SP1: NetFX_Core.msp
--- snip --- 173281 System.Data.SqlXml.dll 2.0.50727.1433 1033 --- snip ---
From .NET 2.0 SP2: NetFX_Core.msp:
--- snip --- 173281 System.Data.SqlXml.dll 2.0.50727.3053 1033 --- snip ---
So the .NET 2.x service packs definitely patch this assembly.
Tracing .NET 2.0 SP1 install gives:
--- snip --- 0029:Call version.GetFileVersionInfoW(01a8bdd0 L"C:\windows\Microsoft.NET\Framework\v2.0.50727\System.Data.SqlXml.dll",00000000,0000078c,026695f8) ret=7d689ee1 ... 0029:trace:msi:calculate_install_state new L"2.0.50727.1433" old 2.0.50727.42 ... 005f:Call version.GetFileVersionInfoW(026321e0 L"C:\windows\assembly\tmp\2BRZ7GOY\System.Data.SqlXml.dll",00000000,0000078c,02623938) ret=7a00706d ... 005f:Call version.GetFileVersionInfoSizeW(02632418 L"C:\windows\assembly\GAC_MSIL\System.Data.SqlXml\2.0.0.0__b77a5c561934e089\System.Data.SqlXml.dll",028dc920) ret=7a006ed3 ... 005f:Call KERNEL32.MoveFileW(028dc0cc L"C:\windows\assembly\GAC_MSIL\System.Data.SqlXml\2.0.0.0__b77a5c561934e089",028dc2d8 L"C:\windows\assembly\temp\M7Q9TCVFYH") ret=7a126499 005f:Ret KERNEL32.MoveFileW() retval=00000001 ret=7a126499 ... 005f:Call KERNEL32.SetFileAttributesW(028dbea0 L"C:\windows\assembly\temp\M7Q9TCVFYH\System.Data.SqlXml.dll",00000080) ret=7a164ecc 005f:Ret KERNEL32.SetFileAttributesW() retval=00000001 ret=7a164ecc 005f:Call KERNEL32.DeleteFileW(028dbea0 L"C:\windows\assembly\temp\M7Q9TCVFYH\System.Data.SqlXml.dll") ret=79f9a1ff 005f:Ret KERNEL32.DeleteFileW() retval=00000001 ret=79f9a1ff ... 005f:Call KERNEL32.CreateDirectoryW(028dc750 L"C:\windows\assembly\GAC_MSIL\System.Data.SqlXml",00000000) ret=7a1648cd 005f:Ret KERNEL32.CreateDirectoryW() retval=00000001 ret=7a1648cd ... 005f:Call KERNEL32.MoveFileW(02631fd4 L"C:\windows\assembly\tmp\2BRZ7GOY",028dd3fc L"C:\windows\assembly\GAC_MSIL\System.Data.SqlXml\2.0.0.0__b77a5c561934e089") ret=7a126499 005f:Ret KERNEL32.MoveFileW() retval=00000001 ret=7a126499 ... 005f:Call advapi32.RegCreateKeyExW(80000002,026239c8 L"Software\Microsoft\Fusion\References\System.Data.SqlXml, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089, processorArchitecture=MSIL\{2EC93463-B0C3-45E1-8364-327E96AEA856}",00000000,00000000,00000000,00020006,00000000,028dd454,028dd44c) ret=79ee231d 005f:Ret advapi32.RegCreateKeyExW() retval=00000000 ret=79ee231d ... 005f:Call KERNEL32.RemoveDirectoryW(02631fd4 L"C:\windows\assembly\tmp\2BRZ7GOY") ret=7a1437a8 005f:Ret KERNEL32.RemoveDirectoryW() retval=00000000 ret=7a1437a8 ... 005f:Call msi.MsiRecordSetStringW(00000001,00000000,0105a3c8 L"05/15/12 00:19:26 DDSet_Status: Assembly '[2]' successfully added to the cache") ret=0103052d ... 005f:trace:msi:MSI_ProcessMessage (nil) 0x3a0b01b5 0x39e64ac4 7fdf 10 L"1: 0 2: C:\windows\Microsoft.NET\Framework\v2.0.50727\System.Data.SqlXml.dll 3: 2.0.50727.1433 4: 3 5: 6: 7: 8: 9: 10: " ... --- snip ---
Even if the messages indicate an update - it's still .42 instead of .1433
The reference assembly in "C:\windows\Microsoft.NET\Framework\v2.0.50727\System.Data.SqlXml.dll" and in GAC are not replaced/patched by newer versions in SP1 installer.
For many other assemblies one can see "cabinet_copy_file" after transforms applied to replace the target but not for this one (and few others which probably also suffer from this bug). Just a guess: maybe this is a problem of Wine msi not supporting patch ordering/sequencing.
Regards
http://bugs.winehq.org/show_bug.cgi?id=30681
--- Comment #2 from Anastasius Focht focht@gmx.net 2012-05-15 16:06:13 CDT --- Created attachment 40186 --> http://bugs.winehq.org/attachment.cgi?id=40186 msi verbose log for .NET 2.0 SP2 installer
Hello,
using Bingoogle one can find many msi verbose logs for .NET 2.0/SPx installers.
Attached is a utf16 to ascii converted + compressed log of the .NET 2.0 SP2 install process. Maybe this gives some insight .. the patch ordering/sequencing messages are unfortunately pretty sparse :|
Regards
http://bugs.winehq.org/show_bug.cgi?id=30681
--- Comment #3 from Anastasius Focht focht@gmx.net 2012-05-15 17:51:35 CDT --- Created attachment 40188 --> http://bugs.winehq.org/attachment.cgi?id=40188 WINEDEBUG=+tid,+seh,+loaddll,+process,+msi,+msidb bash winetricks -q dotnet20sp2 >>log.txt 2>&1
Hello,
attached is a trace log from 'winetricks -q dotnet20sp2' on existing 'winetricks -q dotnet20' WINEPREFIX.
140 MiB uncompressed.
--- snip --- $ pwd /home/focht/.wine/drive_c/windows/Microsoft.NET/Framework/v2.0.50727
$ ls -g ... -rw-rw-r--. 1 focht 425984 Jul 25 2008 System.configuration.dll -rw-rw-r--. 1 focht 81920 Jul 25 2008 System.Configuration.Install.dll -rw-rw-r--. 1 focht 2933248 Jul 25 2008 System.Data.dll -rw-rw-r--. 1 focht 486400 Jul 25 2008 System.Data.OracleClient.dll -rw-rw-r--. 1 focht 716800 Sep 23 2005 System.Data.SqlXml.dll -rw-rw-r--. 1 focht 970752 Jul 25 2008 System.Deployment.dll -rw-rw-r--. 1 focht 5062656 Jul 25 2008 System.Design.dll -rw-rw-r--. 1 focht 401408 Jul 25 2008 System.DirectoryServices.dll -rw-rw-r--. 1 focht 188416 Jul 25 2008 System.DirectoryServices.Protocols.dll -rw-rw-r--. 1 focht 3149824 Jul 25 2008 System.dll ... --- snip ---
(year 2005 -> orginal 2.0, 2008 -> 2.0 sp2)
--- snip --- 0027:trace:msidb:msi_get_transform_record row -> 0027:trace:msidb:MSI_RecordSetStringW 0x1793370 1 L"FL_System_Data_SqlXml_dll_____X86.3643236F_FC70_11D3_A536_0090278A1BB8" 0027:trace:msidb:msi_get_transform_record field 1 [L"FL_System_Data_SqlXml_dll_____X86.3643236F_FC70_11D3_A536_0090278A1BB8"] 0027:trace:msidb:MSI_RecordSetStringW 0x1793370 2 L"SYS_DATA_SQLXML_DLL_____X86.3643236F_FC70_11D3_A536_0090278A1BB8" 0027:trace:msidb:msi_get_transform_record field 2 [L"SYS_DATA_SQLXML_DLL_____X86.3643236F_FC70_11D3_A536_0090278A1BB8"] 0027:trace:msidb:MSI_RecordSetStringW 0x1793370 3 L"173281|System.Data.SqlXml.dll" 0027:trace:msidb:msi_get_transform_record field 3 [L"173281|System.Data.SqlXml.dll"] 0027:trace:msidb:MSI_RecordSetInteger 0x1793370 4 745472 0027:trace:msidb:msi_get_transform_record field 4 [0x800b6000] 0027:trace:msidb:MSI_RecordSetStringW 0x1793370 5 L"2.0.50727.3053" 0027:trace:msidb:msi_get_transform_record field 5 [L"2.0.50727.3053"] 0027:trace:msidb:MSI_RecordSetStringW 0x1793370 6 L"1033" 0027:trace:msidb:msi_get_transform_record field 6 [L"1033"] 0027:trace:msidb:MSI_RecordSetInteger 0x1793370 7 1024 0027:trace:msidb:msi_get_transform_record field 7 [0x8400] 0027:trace:msidb:MSI_RecordSetInteger 0x1793370 8 315 0027:trace:msidb:msi_get_transform_record field 8 [0x8000013b] --- snip ---
SP2 should update to "2.0.50727.3053"
Regards
http://bugs.winehq.org/show_bug.cgi?id=30681
--- Comment #4 from Daniel Jelinski djelinski1@gmail.com 2012-10-18 15:02:46 CDT --- Still present in wine 1.5.15/winetricks 20120308. Awesome analysis, by the way.
http://bugs.winehq.org/show_bug.cgi?id=30681
--- Comment #5 from Daniel Jelinski djelinski1@gmail.com 2012-12-24 17:33:25 CST --- It is possible to work around this bug by manually extracting System.Data.SqlXml.dll from .NET 2.0 SP2 installer. The SQL Server Management Studio installer then runs into bug 15804 (culture name ga-ie not supported).
http://bugs.winehq.org/show_bug.cgi?id=30681
Daniel Jelinski djelinski1@gmail.com changed:
What |Removed |Added ---------------------------------------------------------------------------- Blocks| |32535
http://bugs.winehq.org/show_bug.cgi?id=30681
Dan Kegel dank@kegel.com changed:
What |Removed |Added ---------------------------------------------------------------------------- CC| |dank@kegel.com
--- Comment #6 from Dan Kegel dank@kegel.com 2013-01-04 10:06:20 CST --- So, think winetricks dotnet20sp2 should extract that the hard way as a workaround?
http://bugs.winehq.org/show_bug.cgi?id=30681
--- Comment #7 from Daniel Jelinski djelinski1@gmail.com 2013-01-05 17:07:56 CST --- (In reply to comment #6)
So, think winetricks dotnet20sp2 should extract that the hard way as a workaround?
Yes, that would help. I had no problems with the extracted one. You'll find it in NetFX_Core.msp, file name FL_System_Data_SqlXml_dll_____X86.3643236F_FC70_11D3_A536_0090278A1BB8
http://bugs.winehq.org/show_bug.cgi?id=30681
--- Comment #8 from Daniel Jelinski djelinski1@gmail.com 2013-05-06 15:38:32 CDT --- Still present in wine-1.5.29-102-g6cc0e70.
http://bugs.winehq.org/show_bug.cgi?id=30681
--- Comment #9 from Daniel Jelinski djelinski1@gmail.com 2013-06-07 17:55:07 CDT --- The file is not updated because disk_id check fails: http://source.winehq.org/git/wine.git/blob/b36a26d65a36625af0081024ea3ec0410...
In that line f->disk_id=30003, disk_id=30004. I have already checked that removing that condition results in correct installation. However, I have absolutely no idea if changing it this way makes any sense.
http://bugs.winehq.org/show_bug.cgi?id=30681
Daniel Jelinski djelinski1@gmail.com changed:
What |Removed |Added ---------------------------------------------------------------------------- Fixed by SHA1| |a2307a3339ddc630cfc249bc34b | |834aec8334f1f Status|NEW |RESOLVED Resolution| |FIXED
--- Comment #10 from Daniel Jelinski djelinski1@gmail.com 2013-06-11 23:40:46 CDT --- Works now.
http://bugs.winehq.org/show_bug.cgi?id=30681
Alexandre Julliard julliard@winehq.org changed:
What |Removed |Added ---------------------------------------------------------------------------- Status|RESOLVED |CLOSED
--- Comment #11 from Alexandre Julliard julliard@winehq.org 2013-06-14 13:24:50 CDT --- Closing bugs fixed in 1.6-rc2.