http://bugs.winehq.org/show_bug.cgi?id=30078
Bug #: 30078 Summary: Many installers fail to detect MSXML6 component (Wine doesn't advertise its own MSXML6) Product: Wine Version: 1.4-rc6 Platform: x86 OS/Version: Linux Status: NEW Severity: normal Priority: P2 Component: -unknown AssignedTo: wine-bugs@winehq.org ReportedBy: focht@gmx.net Classification: Unclassified
Hello,
many installers require MSXML 6.0 component. It might be useful in future to have Wine advertise its builtin by default instead of 'winetricks -q msxml6' (considering some maturity of Wine's own).
There are different methods to detect the presence of MSXML6. One of the most used ones which is also suggested by Microsoft is using registry data.
Example prerequisite check from bug 19223 (Microsoft SQL Server Management Studio Express (SSMSE)):
--- snip --- ... 0024:trace:msi:iterate_appsearch L"MSXML6PRESENT" L"MSXML6PRESENTREG" 0024:trace:msi:ACTION_AppSearchGetSignature package 0x15b348, sig 0x32f8ec ... 0024:trace:msi:ACTION_AppSearchGetSignature failed to query signature for L"MSXML6PRESENTREG" 0024:trace:msi:ACTION_AppSearchComponents L"MSXML6PRESENTREG" ... 0024:trace:msi:ACTION_AppSearchComponents failed to query CompLocator for L"MSXML6PRESENTREG" 0024:trace:msi:ACTION_AppSearchReg L"MSXML6PRESENTREG" ... 0024:Call advapi32.RegOpenKeyW(80000002,00790e88 L"SOFTWARE\Microsoft\MSXML60\Setup",0032f818) ret=7ecb5ea4 0024:Ret advapi32.RegOpenKeyW() retval=00000002 ret=7ecb5ea4 ... 0024:trace:msi:ACTION_AppSearchReg RegOpenKeyW returned 2 ... 0024:trace:msi:ACTION_AppSearchIni L"MSXML6PRESENTREG" ... 0024:trace:msi:ACTION_AppSearchIni failed to query IniLocator for L"MSXML6PRESENTREG" 0024:trace:msi:ACTION_AppSearchDr L"MSXML6PRESENTREG" ... 0024:trace:msi:ACTION_AppSearchDr failed to query DrLocator for L"MSXML6PRESENTREG" ... 0024:trace:msi:MSI_ProcessMessage (nil) (nil) (nil) 0 200 L"Property: MSXML6PRESENT, Signature: MSXML6PRESENTREG" ... 0024:trace:msi:ACTION_CustomAction Handling custom action L"MISSINGPREREQERROR.6D658EB9_E2B8_429A_92C4_84337700878E" (33 L"MISSINGREDISTPREREQERROR" L"[RedistPreReqErrorPrefix][MISSINGREDISTPREREQS][NewLine][NewLine][RedistPreReqErrorSuffix]") ... 0024:trace:msi:ACTION_CustomAction Handling custom action L"CA_ErrorMissingPreReqs" (13 (null) L"[MISSINGREDISTPREREQERROR]") ... 0024:trace:msi:msi_get_property returning L"Setup is missing prerequisites:\n- MSXML6\n\nGo to http://go.microsoft.com/fwlink/?LinkId=54583" for property L"MISSINGREDISTPREREQERROR" ... 0024:Call user32.MessageBoxW(00000000,007910a0 L"Setup is missing prerequisites:\n- MSXML6\n\nGo to http://go.microsoft.com/fwlink/?LinkId=54583%22,00000000,00000000) ret=7ecc7a4d --- snip ---
Dump of "SQLServer2005_SSMSEE.msi" using "ORCA" tool:
"InstallExecuteSequence" table:
--- snip --- MISSINGMSXML6.6D658EB9_E2B8_429A_92C4_84337700878E (EnableMSXML6PreReq=1) AND (NOT MSXML6PRESENT) AND (VersionNT < 600) 402 --- snip ---
"RegLocator" table:
--- snip --- MSXML6PRESENTREG 2 SOFTWARE\Microsoft\MSXML60\Setup Uninstall 2 --- snip ---
"Installing and Redistributing MSXML 6.0":
http://msdn.microsoft.com/en-us/library/windows/desktop/cc507436%28v=vs.85%2...
--- quote --- When MSXML 6.0 is installed for the first time, the following registry key is created with an initial value.
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSXML60\Setup] "Uninstall"="{11111111-1111-1111-1111-111111111111}"
Subsequently, whenever MSXML 6.0 is redistributed by some application, the product code for that application is appended to the registry key shown above. --- quote ---
Following that suggestion, running prior installer in clean WINEPREFIX:
--- snip --- $ wine reg add "HKLM\Software\Microsoft\MSXML60\Setup" /v Uninstall /t REG_SZ /d "{11111111-1111-1111-1111-111111111111}" /f --- snip ---
With that registry key present, "MSXML 6.0" is considered installed.
Regards