One of the few Windows programs I use is Delorme's MapNGo (versions 4 and 6). Under older versions of Wine wherein I could use the native Windows OLE/COM implementation it worked fairly well, but with the new Wine it does not.
The symptoms are that the program cannot create the initial document object - this ususally is an indication that the DLLS implementing the COM classes for the MapNGo object are not registered correctly with the system. However, I have taken a system running an older version of Wine that could successfully run Mng6 and upgraded it to the latest CVS of Wine, and it broke the app.
Not being a wiz at COM, I am not sure where to go from here, other than to report the results of tracing the run:
WINDEBUG=+ole,+com wine ./Mng6 fixme:ole:CoRegisterMessageFilter stub err:msg:DispatchMessageW BeginPaint not called on WM_PAINT for hwnd 0x1003a! [wowbaggr@surfer AAAMNG6]$ [wowbaggr@surfer AAAMNG6]$ WINDEBUG=+ole,+com wine ./Mng6.mdb wine: cannot determine executable type for L"D:\AAAMNG6\Mng6.mdb" [wowbaggr@surfer AAAMNG6]$ WINDEBUG=+ole,+com wine ./mng mng6.cnt mng6.exe mng6.hlp mngfeat.hlp [wowbaggr@surfer AAAMNG6]$ WINDEBUG=+ole,+com wine ./mng6.exe fixme:ole:CoRegisterMessageFilter stub err:msg:DispatchMessageW BeginPaint not called on WM_PAINT for hwnd 0x1003a! [wowbaggr@surfer AAAMNG6]$ [wowbaggr@surfer AAAMNG6]$ WINDEBUG=+all wine ./mng6.exe fixme:ole:CoRegisterMessageFilter stub err:msg:DispatchMessageW BeginPaint not called on WM_PAINT for hwnd 0x1003a! [wowbaggr@surfer AAAMNG6]$ [wowbaggr@surfer AAAMNG6]$ WINEDEBUG=+ole,+com wine ./mng6.exe trace:ole:DllMain 0x40c00000 0x1 0x1 trace:ole:DllMain (0x40e30000,1,0x1) trace:ole:CoInitializeEx ((nil), 2) trace:ole:CoInitializeEx () - Initializing the COM libraries trace:ole:RunningObjectTableImpl_Initialize () trace:ole:OleInitialize ((nil)) trace:ole:CoInitializeEx ((nil), 2) trace:ole:OleInitialize () - Initializing the OLE libraries trace:ole:OLEClipbrd_Initialize () fixme:ole:CoRegisterMessageFilter stub trace:ole:WINE_StringFromCLSID 0x49d964->{F4B4E540-7F32-11CE-AC56-0000C0496D91} trace:ole:WINE_StringFromCLSID 0x487530->{D97A6266-C342-11D2-A562-A313798CEB30} trace:ole:WINE_StringFromCLSID 0x4071f3bc->{D97A6266-C342-11D2-A562-A313798CEB30} trace:ole:CoGetClassObject CLSID: {d97a6266-c342-11d2-a562-a313798ceb30}, IID: {b196b28f-bab4-101a-b69c-00aa00341d07} trace:ole:COMPOBJ_DLLList_Add trace:ole:CoInitializeEx ((nil), 2) trace:ole:WINE_StringFromCLSID 0x5f8a41b8->{00025E15-0000-0000-C000-000000000046} trace:ole:CoGetClassObject CLSID: {00025e15-0000-0000-c000-000000000046}, IID: {b196b28f-bab4-101a-b69c-00aa00341d07} trace:ole:COMPOBJ_DLLList_Add trace:ole:CreateErrorInfo (0x4071f38c): stub: trace:ole:IErrorInfoImpl_QueryInterface (0x40252658)->( IID: {22f03340-547d-101b-8e65-08002b2bd119},0x4071f38c) trace:ole:ICreateErrorInfoImpl_AddRef (0x40252658) trace:ole:IErrorInfoImpl_AddRef (0x40252658)->(count=1) trace:ole:IErrorInfoImpl_QueryInterface -- Interface: (0x4071f38c)->(0x4025265c)trace:ole:IErrorInfoImpl_Release (0x40252658)->(count=2) trace:ole:ICreateErrorInfoImpl_QueryInterface (0x40252658) trace:ole:IErrorInfoImpl_QueryInterface (0x40252658)->( IID: {1cf2b120-547d-101b-8e65-08002b2bd119},0x4071f390) trace:ole:IErrorInfoImpl_AddRef (0x40252658)->(count=1) trace:ole:IErrorInfoImpl_QueryInterface -- Interface: (0x4071f390)->(0x40252658)trace:ole:ICreateErrorInfoImpl_SetGUID (0x40252658)->({00000000-0000-0000-0000-000000000000}) trace:ole:ICreateErrorInfoImpl_SetSource (0x40252658) trace:ole:ICreateErrorInfoImpl_SetDescription (0x40252658) trace:ole:ICreateErrorInfoImpl_SetHelpContext (0x40252658) trace:ole:SetErrorInfo (0, 0x40252658) trace:ole:IErrorInfoImpl_AddRef (0x40252658)->(count=2) trace:ole:IErrorInfoImpl_Release (0x40252658)->(count=3) trace:ole:ICreateErrorInfoImpl_Release (0x40252658) trace:ole:IErrorInfoImpl_Release (0x40252658)->(count=2) err:msg:DispatchMessageW BeginPaint not called on WM_PAINT for hwnd 0x1003a!
(this last message usually happens when Mng tries to show an error dialog at startup.)
When I've tried re-installing Mng6, I get messages from Wine about "Registering a non-oleautomation interface" - I do not know if this is significant or not.
So, any pointers on where to go from here?
On Sat, 07 Aug 2004 11:11:52 -0500, David D. Hagood wrote:
0x5f8a41b8->{00025E15-0000-0000-C000-000000000046} trace:ole:CoGetClassObject CLSID: {00025e15-0000-0000-c000-000000000046}, IID: {b196b28f-bab4-101a-b69c-00aa00341d07}
This is MS DAO. I do not know why your program has regressed but these traces don't show why native DCOM doesn't work.
Are you running Wine in NT mode by any chance? If so then there was a regression there lately if you use 9x DCOM but I think it's fixed now. Easy enough to fix if not.
Mike Hearn wrote:
This is MS DAO. I do not know why your program has regressed but these traces don't show why native DCOM doesn't work.
OK, that checks - I know the program does use DAO.
As to native DCOM - when I tried to install it, it barfed. But...
Are you running Wine in NT mode by any chance? If so then there was a
Yes, I am - I was under the impression that would give a better shot at compatability since, when there is a mutually exclusive choice between the 9X and the NT way, Wine tends to follow the NT way.
regression there lately if you use 9x DCOM but I think it's fixed now. Easy enough to fix if not.
So you are suggesting that I attempt to re-install the Win98 DCOM package? Should I change the ole* overrides to "native,builtin", and if so, should I do so before or after installing the DCOM package? Should I also change the Winver to 98, and if so, should I do so for all programs, just the DCOM installer, or for the DCOM install + Mng6?
On Sat, 2004-08-07 at 16:02 -0500, David D. Hagood wrote:
Yes, I am - I was under the impression that would give a better shot at compatability since, when there is a mutually exclusive choice between the 9X and the NT way, Wine tends to follow the NT way.
No, 9x mode is recommended. Programs tend to stress the system harder when run in NT mode, they use NT only APIs and such we may not implement and don't get as much testing.
regression there lately if you use 9x DCOM but I think it's fixed now. Easy enough to fix if not.
So you are suggesting that I attempt to re-install the Win98 DCOM package? Should I change the ole* overrides to "native,builtin", and if so, should I do so before or after installing the DCOM package? Should I also change the Winver to 98, and if so, should I do so for all programs, just the DCOM installer, or for the DCOM install + Mng6?
Install it all as Win98 if possible, and native DCOM like this:
WINEDLLOVERRIDES=ole32,oleaut32,rpcrt4=n wine DCOM98.EXE
thanks -mike
Mike Hearn wrote:
Install it all as Win98 if possible, and native DCOM like this:
WINEDLLOVERRIDES=ole32,oleaut32,rpcrt4=n wine DCOM98.EXE
Well, having done so, and having tried setting all the OLE* and RPC* DLLs to native, I am still having the same problem with that app - so I am forced to conjecture that it is not a direct problem with OLE but some other aspect of the program.
On Sun, 2004-08-08 at 10:56 -0500, David D. Hagood wrote:
Mike Hearn wrote:
Install it all as Win98 if possible, and native DCOM like this:
WINEDLLOVERRIDES=ole32,oleaut32,rpcrt4=n wine DCOM98.EXE
Well, having done so, and having tried setting all the OLE* and RPC* DLLs to native, I am still having the same problem with that app - so I am forced to conjecture that it is not a direct problem with OLE but some other aspect of the program.
That sounds likely. The OLE trace you provided didn't show much activity.