http://bugs.winehq.org/show_bug.cgi?id=32052
Bug #: 32052 Summary: Microsoft SQL Server 2000 Desktop Engine (MSDE 2000) Release A installer creates incorrect registry entry Product: Wine Version: 1.5.15 Platform: x86 URL: http://www.microsoft.com/download/en/details.aspx?id=2 2661 OS/Version: Linux Status: UNCONFIRMED Severity: normal Priority: P2 Component: msi AssignedTo: wine-bugs@winehq.org ReportedBy: djelinski1@gmail.com Classification: Unclassified
To reproduce: Download and run the MSDE installer MSDE2000A.EXE This will unpack to directory c:\MSDERelA. Go to that directory, then run wine setup.exe blanksapwd=1 disablenetworkprotocols=0 At some point it will start MSSQLServer service. The service should start listening on both named pipes and TCP, however it starts only on TCP. That is because ProtocolList entry in HKLM\SOFTWARE\Microsoft\MSSQLServer\MSSQLServer\SuperSocketNetLib is created incorrect: under Wine it is of type REG_SZ and contains tcp, under Windows it is REG_MULTI_SZ and contains both tcp and np.
http://bugs.winehq.org/show_bug.cgi?id=32052
Daniel Jelinski djelinski1@gmail.com changed:
What |Removed |Added ---------------------------------------------------------------------------- Keywords| |download, Installer
http://bugs.winehq.org/show_bug.cgi?id=32052
--- Comment #1 from Daniel Jelinski djelinski1@gmail.com 2012-10-24 14:39:13 CDT --- Created attachment 42251 --> http://bugs.winehq.org/attachment.cgi?id=42251 +msi log of installer
The installer writes to registry the value of a property. The property is set some time before, however some parser logic seems to corrupt its value:
trace:msi:ACTION_PerformUIAction Performing action (L"SetRefreshProtocolListNTRegValue.2D02443E_7002_4C0B_ABC9_EAB2C064397B") trace:msi:MSI_DatabaseOpenViewW L"SELECT * FROM `CustomAction` WHERE `Action` = 'SetRefreshProtocolListNTRegValue.2D02443E_7002_4C0B_ABC9_EAB2C064397B'" 0x33f93c trace:msi:MSI_ParseSQL Parse returned 0 trace:msi:MSI_ViewExecute 0x44fc58 (nil) trace:msi:MSI_ViewFetch 0x44fc58 0x33f938 trace:msi:msi_view_get_row 0x12e308 0x44fcb0 0 0x33f938 trace:msi:MSI_ViewClose 0x44fc58 trace:msi:msiobj_release object 0x44fc58 destroyed trace:msi:ACTION_CustomAction Handling custom action L"SetRefreshProtocolListNTRegValue.2D02443E_7002_4C0B_ABC9_EAB2C064397B" (33 L"ProtocolListNTRegValue.2D02443E_7002_4C0B_ABC9_EAB2C064397B" L"[~]np") trace:msi:MSI_FormatRecordW 0x151378 0x44fc58 (nil) 0x33f94c trace:msi:MSI_FormatRecordW (L"[~]np") trace:msi:MSI_FormatRecordW 0x151378 0x44fc58 0x4418c8 0x33f94c trace:msi:MSI_FormatRecordW (L"[~]np") trace:msi:msiobj_release object 0x44fc58 destroyed trace:msi:msi_set_property 0x12e308 L"ProtocolListNTRegValue.2D02443E_7002_4C0B_ABC9_EAB2C064397B" L"" ... trace:msi:ITERATE_WriteRegistryValues Setting value L"ProtocolList" of L"HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSSQLServer\MSSQLServer\SuperSocketNetLib" (original: L"[ProtocolListNTRegValue.2D02443E_7002_4C0B_ABC9_EAB2C064397B]") ... trace:msi:ACTION_PerformUIAction Performing action (L"SetRefreshProtocolListRegValue.2D02443E_7002_4C0B_ABC9_EAB2C064397B") trace:msi:MSI_DatabaseOpenViewW L"SELECT * FROM `CustomAction` WHERE `Action` = 'SetRefreshProtocolListRegValue.2D02443E_7002_4C0B_ABC9_EAB2C064397B'" 0x33f93c trace:msi:MSI_ParseSQL Parse returned 0 trace:msi:MSI_ViewExecute 0x44d1d0 (nil) trace:msi:MSI_ViewFetch 0x44d1d0 0x33f938 trace:msi:msi_view_get_row 0x12e308 0x44fcb0 0 0x33f938 trace:msi:MSI_ViewClose 0x44d1d0 trace:msi:msiobj_release object 0x44d1d0 destroyed trace:msi:ACTION_CustomAction Handling custom action L"SetRefreshProtocolListRegValue.2D02443E_7002_4C0B_ABC9_EAB2C064397B" (33 L"ProtocolListRegValue.2D02443E_7002_4C0B_ABC9_EAB2C064397B" L"tcp[~]") trace:msi:MSI_FormatRecordW 0x151378 0x44d1d0 (nil) 0x33f94c trace:msi:MSI_FormatRecordW (L"tcp[~]") trace:msi:MSI_FormatRecordW 0x151378 0x44d1d0 0x44da18 0x33f94c trace:msi:MSI_FormatRecordW (L"tcp[~]") trace:msi:msiobj_release object 0x44d1d0 destroyed trace:msi:msi_set_property 0x12e308 L"ProtocolListRegValue.2D02443E_7002_4C0B_ABC9_EAB2C064397B" L"tcp" ... trace:msi:ITERATE_WriteRegistryValues Setting value L"ProtocolList" of L"HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSSQLServer\MSSQLServer\SuperSocketNetLib" (original: L"[ProtocolListRegValue.2D02443E_7002_4C0B_ABC9_EAB2C064397B]")
I slightly modified ITERATE_WriteRegistryValues to trace what it's supposed to write.
http://bugs.winehq.org/show_bug.cgi?id=32052
--- Comment #2 from Hans Leidekker hans@meelstraat.net 2012-10-24 15:15:02 CDT --- The "[~]np" format denotes a string with an embedded null. It is parsed correctly but the result is not preserved because pretty much all our code assumes that strings are regular zero-terminated strings.
I'll work on some patches.
http://bugs.winehq.org/show_bug.cgi?id=32052
--- Comment #3 from Daniel Jelinski djelinski1@gmail.com 2012-10-30 02:27:54 CDT --- Thank you for your patches Hans! Quite impressive. Unfortunately something is still missing, because the created registry entry is still the same. I didn't have time to get a new log yet.
http://bugs.winehq.org/show_bug.cgi?id=32052
--- Comment #4 from Hans Leidekker hans@meelstraat.net 2012-10-30 15:11:07 CDT --- (In reply to comment #3)
Thank you for your patches Hans! Quite impressive. Unfortunately something is still missing, because the created registry entry is still the same. I didn't have time to get a new log yet.
Yep, the next bug is that we don't handle REG_MULTI_SZ values correctly in the WriteRegistryValues action.
http://bugs.winehq.org/show_bug.cgi?id=32052
Daniel Jelinski djelinski1@gmail.com changed:
What |Removed |Added ---------------------------------------------------------------------------- Fixed by SHA1| |7d3f903db17e69dde66bedd53a2 | |3f8bf0a5a2ed0 Status|UNCONFIRMED |RESOLVED Resolution| |FIXED
--- Comment #5 from Daniel Jelinski djelinski1@gmail.com 2012-11-06 01:25:15 CST --- Thank you again Hans, now the registry entry in question is created correctly.
http://bugs.winehq.org/show_bug.cgi?id=32052
Alexandre Julliard julliard@winehq.org changed:
What |Removed |Added ---------------------------------------------------------------------------- Status|RESOLVED |CLOSED
--- Comment #6 from Alexandre Julliard julliard@winehq.org 2012-11-09 13:00:02 CST --- Closing bugs fixed in 1.5.17.