WineHQ
Bug Tracking Database – Bug 30785

 Bugzilla

 

Last modified: 2016-04-29 11:47:10 CDT  

MS Office 2007 reports msxml5 as not installed (WoW64)

Bug 30785 - MS Office 2007 reports msxml5 as not installed (WoW64)
MS Office 2007 reports msxml5 as not installed (WoW64)
Status: NEW
AppDB: Show Apps affected by this bug
Product: Wine
Classification: Unclassified
Component: msi
1.5.5
x86-64 Linux
: P2 minor
: ---
Assigned To: Mr. Bugs
: Installer, win64
: 32456 32683 35143 (view as bug list)
Depends on:
Blocks:
  Show dependency tree
 
Reported: 2012-05-28 01:05 CDT by jpxsat
Modified: 2016-04-29 11:47 CDT (History)
13 users (show)

See Also:
Regression SHA1:
Fixed by SHA1:
Distribution: ---
Staged patchset:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description jpxsat 2012-05-28 01:05:16 CDT
Installed just Word, Excel & Powerpoint.
It opens, runs and all.
At closing things get crazy: MS Office tells that msmxl 5 is not installed, then crashes.
I've read that msmxl 5 is part of MS Office 2007, something went wrong during the install?
Have not tried a full install though, I just want those components.
Tell me what test do I have to run, if during install or something else...
Comment 1 Rosanne DiMesio 2012-05-28 08:06:25 CDT
I can't reproduce this.

Was this a clean install? The installer should work out of the box--no winetricks or other tweaks while installing, and the only override to set after installing is for riched20.
Comment 2 grum.rick 2012-06-07 20:15:58 CDT
I also have the same problem with MS Word in Office 2007 Enterprise, Wine 1.5.5, Ubuntu 12.04 (64 bits). When trying to close Word get "This feature requires MSXML 5.0 to be installed. Run Setup and click Repair to restore the component". Running Setup/Repair fails to fix it.
Comment 3 jpxsat 2012-06-07 22:32:31 CDT
Sorry, my report is for 64bits structure (changed)
Comment 4 Dan Kegel 2012-06-07 22:53:48 CDT
http://support.microsoft.com/kb/324460 indicates that msxml 5 is a special
version that comes with office.

A +module log might be interesting.
Comment 5 jpxsat 2012-06-08 09:44:05 CDT
Just tell me how to do it and it'll be done shortly ;)
Comment 6 Rosanne DiMesio 2012-06-08 14:18:59 CDT
(In reply to comment #3)
> Sorry, my report is for 64bits structure (changed)

You mean WoW64? Office needs a pure 32 bit wineprefix. Create one with WINEARCH=win32 and install to that.
Comment 7 Dan Kegel 2012-06-08 14:33:19 CDT
He probably was using a 32 bit wineprefix already.

To get a +module log, see http://wiki.winehq.org/FAQ#get_log
Comment 8 Rosanne DiMesio 2012-06-08 14:58:50 CDT
(In reply to comment #7)
> He probably was using a 32 bit wineprefix already.
> 

Don't think so. I just tested a WoW64 install, and got that exact behavior.

I thought there already was a bug filed for Office/WoW64 issues, but I can't find one, so confirming this one. 

Console output includes the following: 

err:ole:COMPOBJ_DllList_Add couldn't load in-process dll L"C:\\Program Files (x86)\\Common Files\\Microsoft Shared\\OFFICE11\\msxml5.dll"

even though that file is installed in that location.

Setting severity to minor as there's an easy workaround (install to a 32 bit wineprefix).
Comment 9 Dan Kegel 2012-06-08 15:02:35 CDT
I wonder if this is related to 30713?
Comment 10 Rosanne DiMesio 2012-06-08 16:38:16 CDT
(In reply to comment #9)
> I wonder if this is related to 30713?

I don't think so, at least not if I'm reading that bug correctly. That bug seems to be about 64 bit files being mistakenly put in a directory meant for 32 bit files.  Office 2007 is only available as a 32 bit app, and msxml5.dll is installed to the right place in a WoW64 wineprefix, but for some reason Wine can't load it.
Comment 11 IsItATroll? 2012-06-13 11:37:28 CDT
I confirm that creating a win32 prefix fixes that issue. 
I was having it on Fedora 16 x64. 

the following command did the trick:
WINEARCH=win32 WINEPREFIX=/path/to/wineprefix winecfg
Comment 12 _ 2012-07-14 17:43:51 CDT
Bug still present on 1.5.8

Ubuntu 12.04 x86_64
Comment 13 Rosanne DiMesio 2012-12-15 17:53:32 CST
*** Bug 32456 has been marked as a duplicate of this bug. ***
Comment 14 Hans Leidekker 2013-01-08 03:48:44 CST
*** Bug 32683 has been marked as a duplicate of this bug. ***
Comment 15 Rosanne DiMesio 2013-12-16 11:54:27 CST
*** Bug 35143 has been marked as a duplicate of this bug. ***
Comment 16 Rosanne DiMesio 2014-03-05 13:47:20 CST
Still present in 1.7.13.
Comment 17 Nikolay Sivov 2014-03-05 13:58:13 CST
Could you attach a +relay,+loaddll,+module,+tid log? Interesting part starts from LoadLibraryExW() and ends with "couldn't load in-process dll".
Comment 18 Rosanne DiMesio 2014-03-05 16:52:42 CST
The console output no longer contains the line in comment 5, but instead now has:

err:ole:CoGetClassObject class {88d969ef-f192-11d4-a65f-0040963251e5} not registered
err:ole:CoGetClassObject no class object {88d969ef-f192-11d4-a65f-0040963251e5} could be created for context 0x1

so I used those lines as the end of the "interesting part" of the log, which is still too big to attach here, even compressed. I've uploaded it to https://drive.google.com/file/d/0B98fpwZrfFafSVJfZjA2UEllZzg/edit?usp=sharing.

I still have the full log, so let me know if you need it.
Comment 19 Nikolay Sivov 2014-03-05 21:41:38 CST
---
0009:Call ole32.CoCreateInstance(32035758,00000000,00000001,32035768,0259852c) ret=3204ce3f
0009:Call KERNEL32.FindActCtxSectionGuid(00000001,00000000,00000004,32035758,00330b70) ret=7ea8d784
0009:Ret  KERNEL32.FindActCtxSectionGuid() retval=00000000 ret=7ea8d784
0009:Call ntdll.RtlInitUnicodeString(00330a40,00330a86 L"CLSID\\{88D969EF-F192-11D4-A65F-0040963251E5}") ret=7ea89ebe
0009:Ret  ntdll.RtlInitUnicodeString() retval=00000058 ret=7ea89ebe
0009:Call ntdll.NtOpenKey(00330a80,00020019,00330a48) ret=7ea89eda
0009:Ret  ntdll.NtOpenKey() retval=c0000034 ret=7ea89eda
0009:Call ntdll.RtlNtStatusToDosError(c0000034) ret=7ea89ee5
0009:Ret  ntdll.RtlNtStatusToDosError() retval=00000002 ret=7ea89ee5
0009:err:ole:CoGetClassObject class {88d969ef-f192-11d4-a65f-0040963251e5} not registered
---

c0000034 -> STATUS_OBJECT_NAME_NOT_FOUND

So it looks like it's not registered properly. Could you search registry for 'msxml5.dll' string? And please check that msxml5.dll is actually installed in a 32 bit path. It all seems to be installation issue.
Comment 20 Rosanne DiMesio 2014-03-05 22:38:58 CST
It appears twice in the registry:

[HKEY_CLASSES_ROOT\TypeLib\{F5078F18-C551-11D3-89B9-0000F81FE221}\5.0\0\win32]
@="C:\\Program Files (x86)\\Common Files\\Microsoft Shared\\OFFICE11\\msxml5.dll"

[HKEY_LOCAL_MACHINE\Software\Classes\TypeLib\{F5078F18-C551-11D3-89B9-0000F81FE221}\5.0\0\win32]
@="C:\\Program Files (x86)\\Common Files\\Microsoft Shared\\OFFICE11\\msxml5.dll"

The file is in that location.
Comment 21 Nikolay Sivov 2014-03-05 22:59:48 CST
That's a typelib registration info, it's not enough to create an object. It should be registered in CLSID key, like this:

---
HKEY_CLASSES_ROOT\CLSID\{88D969EF-F192-11D4-A65F-0040963251E5}
---

or maybe in WoW node. Anyway '88D969EF-F192-11D4-A65F-0040963251E5' string should be somewhere. It's not present, right?
Comment 22 Rosanne DiMesio 2014-03-06 06:00:27 CST
It's not present.
Comment 23 Anastasius Focht 2014-12-26 09:57:44 CST
Hello folks,

confirming.

The 32-bit bootstrap installer executes both, 32-bit and 64-bit components/product install parts on the 32-bit msi client side.

* 64-bit components are put into wrong directories, causing the 32-bit product install part to not overwrite binaries
* 32-bit registry view vs. 64-bit registry view issues

This might be doable/fixable on the msi client side, unlike Windows msi which tends to hand over to 64-bit msi server process for 64-bit parts.
There is an exception though, 64-bit custom actions need to be run in 64-bit server process anyway.

See also https://bugs.winehq.org/show_bug.cgi?id=30713#c2 which is about the same/similar issue.

Cabinets carrying the payloads for 32-bit and 64-bit MSXML5 component:

--- snip ---
$ cabextract -l OWOW64WW.cab | grep msxml

   2460936 | 26.10.2006 13:41:16 | msxml5.dll.E8CC1EEC_B775_41B0_9B11_C1D71DDB47A7
...
--- snip ---

--- snip ---
$ cabextract -l EnterWW.cab | grep msxml

...
   1422088 | 26.10.2006 13:41:16 | msxml5.dll.AB5E1073_AD9B_48DF_B07F_3E445B5A45CF
--- snip ---

Some 32-bit component product installs are done first, with 64-bit Office 2007 components product install mixed in between.

--- snip ---
...
0025:Call msi.MsiInstallProductW(0107dbf8 L"C:\\MSOCache\\All Users\\{90120000-0030-0000-0000-0000000FF1CE}-C\\Office64WW.msi",01176540 L"ADDLOCAL=MsoInstalledPackagesScoped,OfficeExample64bitFilesA,SetupXmlFiles,SetupControllerFiles,PPTXmlEditVerb64,SearchFilters64Files,XDocsXmlEditVerb64,Gimme_OnDemandData,ProductNonBootFiles64,ExcelXmlEditVerb64,ProductFiles64,OneNote64Files,WordXmlEditVerb64,MsoCommonShellHandler64bit,OfficeExample"...) ret=006e79c6 
...
0025:trace:msi:load_component Loading Component L"MSXML_DLL.E8CC1EEC_B775_41B0_9B11_C1D71DDB47A7"
...
0025:Call KERNEL32.GetSystemDirectoryW(126bc88c,00000104) ret=7e15454f
0025:Ret  KERNEL32.GetSystemDirectoryW() retval=00000013 ret=7e15454f
...
0025:trace:msi:msi_set_property 0x116c310 L"System64Folder" L"C:\\windows\\system32\\" -1
...
0025:Call KERNEL32.GetSystemWow64DirectoryW(126bc88c,00000104) ret=7e1545a3
0025:Ret  KERNEL32.GetSystemWow64DirectoryW() retval=00000013 ret=7e1545a3
...
0025:trace:msi:msi_set_property 0x116c310 L"SystemFolder" L"C:\\windows\\syswow64\\" -1 
...
0025:Call shell32.SHGetFolderPathW(00000000,00000026,00000000,00000000,126bc88c) ret=7e15460f
0025:Call advapi32.RegCreateKeyW(80000002,7e6e8f20 L"Software\\Microsoft\\Windows\\CurrentVersion",126bc298) ret=7e69c7e9
0025:Ret  advapi32.RegCreateKeyW() retval=00000000 ret=7e69c7e9
0025:Call advapi32.RegQueryValueExW(000000dc,7e6e9820 L"ProgramFilesDir",00000000,126bc294,126bc2e8,126bc290) ret=7e69c841
0025:Ret  advapi32.RegQueryValueExW() retval=00000000 ret=7e69c841
0025:Call advapi32.RegCloseKey(000000dc) ret=7e69c928
0025:Ret  advapi32.RegCloseKey() retval=00000000 ret=7e69c928
...
0025:Ret  shell32.SHGetFolderPathW() retval=00000000 ret=7e15460f
...
0025:trace:msi:msi_set_property 0x116c310 L"ProgramFiles64Folder" L"C:\\Program Files (x86)\\" -1 
...
0025:trace:msi:set_target_path file L"msxml5.dll.E8CC1EEC_B775_41B0_9B11_C1D71DDB47A7" is named L"msxml5.dll"
...
0025:trace:msi:set_target_path resolves to L"C:\\Program Files (x86)\\Common Files\\Microsoft Shared\\OFFICE11\\msxml5.dll"
0025:Call KERNEL32.GetFileAttributesW(013ec138 L"C:\\Program Files (x86)\\Common Files\\Microsoft Shared\\OFFICE11\\msxml5.dll") ret=7e0f9b5d
0025:Ret  KERNEL32.GetFileAttributesW() retval=ffffffff ret=7e0f9b5d
...
0025:trace:msi:msi_set_property 0x1159e88 L"CostingComplete" L"1" -1 
...
0025:trace:msi:MSI_SetFeatureStates component L"MSXML_DLL.E8CC1EEC_B775_41B0_9B11_C1D71DDB47A7" (installed 2 request 3 action 3)
...
0025:trace:msi:ACTION_ProcessComponents Component L"MSXML_DLL.E8CC1EEC_B775_41B0_9B11_C1D71DDB47A7" (L"F922466D24AFC3E448E6F527DE13D42F") Keypath=L"C:\\Program Files (x86)\\Common Files\\Microsoft Shared\\OFFICE11\\msxml5.dll" RefCount=1 Clients=1 Action=3
...
0025:Call KERNEL32.GetFileAttributesW(013ec138 L"C:\\Program Files (x86)\\Common Files\\Microsoft Shared\\OFFICE11\\msxml5.dll") ret=7e132a0c
0025:Ret  KERNEL32.GetFileAttributesW() retval=ffffffff ret=7e132a0c
0025:trace:msi:calculate_install_state file L"msxml5.dll.E8CC1EEC_B775_41B0_9B11_C1D71DDB47A7" is missing
...
0025:trace:msi:cabinet_copy_file extracting L"msxml5.dll.E8CC1EEC_B775_41B0_9B11_C1D71DDB47A7" -> L"C:\\Program Files (x86)\\Common Files\\Microsoft Shared\\OFFICE11\\msxml5.dll"
0025:Call KERNEL32.CreateFileW(0134e060 L"C:\\Program Files (x86)\\Common Files\\Microsoft Shared\\OFFICE11\\msxml5.dll",c0000000,00000000,00000000,00000002,00000080,00000000) ret=7e140e9e
0025:Ret  KERNEL32.CreateFileW() retval=00002228 ret=7e140e9e 
...
0025:trace:msi:ITERATE_WriteRegistryValues setting value (null) of L"HKEY_LOCAL_MACHINE\\SOFTWARE\\Classes\\TypeLib\\{F5078F18-C551-11D3-89B9-0000F81FE221}\\5.0" type 1 
...
0025:trace:msi:ITERATE_WriteRegistryValues setting value (null) of L"HKEY_CLASSES_ROOT\\Msxml2.DSOControl.5.0" type 1 
...
0025:trace:msi:ITERATE_WriteRegistryValues setting value (null) of L"HKEY_CLASSES_ROOT\\Msxml2.DSOControl.5.0\\CLSID" type 1 
...
0025:trace:msi:ITERATE_WriteRegistryValues setting value (null) of L"HKEY_CLASSES_ROOT\\CLSID\\{88D969E7-F192-11D4-A65F-0040963251E5}" type 1 
...
0025:trace:msi:ITERATE_WriteRegistryValues setting value (null) of L"HKEY_CLASSES_ROOT\\CLSID\\{88D969E7-F192-11D4-A65F-0040963251E5}\\InProcServer32" type 1 
...
--- snip ---

This obviously can't work if run within 32-bit installer process:

http://source.winehq.org/git/wine.git/blob/98ae03ff4d1d8b1292301486b5ea30988de6fa51:/dlls/msi/package.c#l903

--- snip ---
903     else if (sys_info.u.s.wProcessorArchitecture == PROCESSOR_ARCHITECTURE_AMD64)
904     {
...
917         SHGetFolderPathW( NULL, CSIDL_PROGRAM_FILES, NULL, 0, pth );
918         PathAddBackslashW( pth );
919         msi_set_property( package->db, szProgramFiles64Folder, pth, -1 );
--- snip ---

You would need to access the 64-bit registry view for these which is kinda ugly since you can't do it from this place without replicating shell32 registry code in msi.

--- snip ---
$ pwd
/home/focht/wine64/drive_c/Program Files (x86)/Common Files/Microsoft Shared/OFFICE11

$ file *.dll
msxml5.dll: PE32+ executable (DLL) (GUI) x86-64, for MS Windows
--- snip ---

The registry part of 64-bit COM inproc server is correct (using KEY_WOW64_64KEY).

64-bit registry view with 'wine64 regedit':

--- snip ---
[HKEY_CLASSES_ROOT\CLSID\{88D969E7-F192-11D4-A65F-0040963251E5}]
@="XML Schema Cache 5.0"

[HKEY_CLASSES_ROOT\CLSID\{88D969E7-F192-11D4-A65F-0040963251E5}\InProcServer32]
@="C:\\Program Files (x86)\\Common Files\\Microsoft Shared\\OFFICE11\\msxml5.dll"
"ThreadingModel"="Both"

[HKEY_CLASSES_ROOT\CLSID\{88D969E7-F192-11D4-A65F-0040963251E5}\ProgID]
@="Msxml2.XMLSchemaCache.5.0"

[HKEY_CLASSES_ROOT\CLSID\{88D969E7-F192-11D4-A65F-0040963251E5}\TypeLib]
@="{F5078F18-C551-11D3-89B9-0000F81FE221}"

[HKEY_CLASSES_ROOT\CLSID\{88D969E7-F192-11D4-A65F-0040963251E5}\Version]
@="5.0"
--- snip ---

The 32-bit product install part:

--- snip ---
...
0025:Call msi.MsiInstallProductW(010e5cc8 L"C:\\MSOCache\\All Users\\{90120000-0030-0000-0000-0000000FF1CE}-C\\EnterpriseWW.msi",013c96c8 L"ADDLOCAL=PPTPresentationTemplates,OfficeOLESupport,VisioPreviewerFiles,ThemesAdditionalFiles,OneNoteToIEAddin,WORDBibliographyFiles,PPTFiles,OfficeAppSupport,ACCESSNonBootMiscFullFiles,DeveloperWizards,MsoInstalledPackagesScoped,ProductFiles_B2TR,XDOCSEditorFiles,OutlookDVOrg97Files,WordConverter12Fi"...) ret=006e79c6 
...
0025:trace:msi:MSI_SetFeatureStates component L"MSXML_DLL.AB5E1073_AD9B_48DF_B07F_3E445B5A45CF" (installed 2 request 3 action 3)
...
0025:trace:msi:ACTION_ProcessComponents Component L"MSXML_DLL.AB5E1073_AD9B_48DF_B07F_3E445B5A45CF" (L"D3AFE80AA038F8147B1AB826F0BD1F16") Keypath=L"C:\\Program Files (x86)\\Common Files\\Microsoft Shared\\OFFICE11\\msxml5.dll" RefCount=2 Clients=1 Action=3 
...
...
0025:trace:msi:set_target_path resolves to L"C:\\Program Files (x86)\\Common Files\\Microsoft Shared\\OFFICE11\\msxml5.dll"
0025:Call KERNEL32.GetFileAttributesW(023b7378 L"C:\\Program Files (x86)\\Common Files\\Microsoft Shared\\OFFICE11\\msxml5.dll") ret=7e0f9b5d
0025:Ret  KERNEL32.GetFileAttributesW() retval=00000020 ret=7e0f9b5d
...
0025:trace:msi:calculate_install_state new L"5.20.1072.0" old 5.20.1072.0
0025:trace:msi:calculate_install_state destination file version equal or greater, not overwriting
...
0025:trace:msi:ITERATE_WriteRegistryValues setting value (null) of L"HKEY_CLASSES_ROOT\\CLSID\\{88D969E5-F192-11D4-A65F-0040963251E5}\\InProcServer32" type 1 
...
--- snip ---

The 32-bit msxml5 dll is not installed here since the target is "blocked" by previous 64-bit dll (version check match).

The registry data for the 32-bit COM inproc server is incorrectly written into 64-bit registry view (you must not use KEY_WOW64_64KEY here).
You don't find anything in the 32-bit registry view:

--- snip ---
[HKEY_LOCAL_MACHINE\Software\Wow6432Node\Classes\CLSID\{88D969E5-F192-11D4-A65F-0040963251E5}]
--- snip ---

The MS Office main binaries (.exe, .dll) are 32-bit hence will instantiate the 32-bit COM inproc server which can't work due to the mishaps.

--- snip ---
$ pwd
/home/focht/wine64/drive_c/Program Files (x86)/Microsoft Office/Office12

$ file WINWORD.EXE 
WINWORD.EXE: PE32 executable (GUI) Intel 80386, for MS Windows
--- snip ---

$ wine --version
wine-1.7.33-84-gfecbc88

Regards


Hosted By CodeWeavers