http://bugs.winehq.org/show_bug.cgi?id=30420
Bug #: 30420 Summary: pyjamas desktop (python26 + python-comtypes MSHTML.DLL from IE8) fails due to unsupported ReadTypeLib header Product: Wine Version: 1.3.37 Platform: x86 OS/Version: Linux Status: UNCONFIRMED Severity: normal Priority: P2 Component: -unknown AssignedTo: wine-bugs@winehq.org ReportedBy: lkcl@lkcl.net Classification: Unclassified
amazingly, IE8 works. python26 works. python-comtypes barfs for the sole reason that (as can be seen below) LoadTypeLibEx fails.
what python-comtypes does is find the dll, extract its typelibrary and auto-generates python code which caches all the COM functions.
an strace shows that atl.dll is correctly being located, but the fact that the function fails makes it impossible to proceed.
however - and this is the absolutely amazing bit - if i comment out the line of python code (line 39 below), GetModule('atl.dll'), then ALL OTHER GetModule CALLS WORK!
this is just absolutely stunning. pyjamas-desktop - a highly sophisticated application that relies heavily on python COM bindings to MSHTML.DLL, actually bloody well works.
the only other thing i spotted was that in the conversion process, one of the GetModule calls threw these errors:
fixme:ole:ITypeInfo_fnGetRefTypeInfo Can't find pRefType for ref 3e8 fixme:ole:ITypeInfo_fnGetRefTypeInfo Can't find pRefType for ref 3e8 fixme:ole:ITypeInfo_fnGetRefTypeInfo Can't find pRefType for ref 10b30 fixme:ole:ITypeInfo_fnGetRefTypeInfo Can't find pRefType for ref 1142c fixme:ole:ITypeInfo_fnGetRefTypeInfo Can't find pRefType for ref 3e8
other than that, this is a staggeringly-impressive result.
C:\pyjamas\examples\helloworld>python Hello.py fixme:ole:TLB_ReadTypeLib Header type magic 0x00405a4d not supported. err:ole:TLB_ReadTypeLib Loading of typelib L"atl.dll" failed with error 0 Traceback (most recent call last): File "Hello.py", line 1, in <module> import pyjd # this is dummy in pyjs. File "C:\Python26\lib\site-packages\pyjd__init__.py", line 43, in <module> from mshtml import * File "C:\Python26\lib\site-packages\pyjd\mshtml.py", line 39, in <module> GetModule('atl.dll') File "C:\Python26\lib\site-packages\comtypes\client_generate.py", line 97, in GetModule tlib = comtypes.typeinfo.LoadTypeLibEx(tlib) File "C:\Python26\lib\site-packages\comtypes\typeinfo.py", line 480, in LoadTypeLibEx _oleaut32.LoadTypeLibEx(c_wchar_p(szFile), regkind, byref(ptl)) File "_ctypes/callproc.c", line 924, in GetResult WindowsError: [Error -2147312566] Windows Error 0x80029C4A
C:\pyjamas\examples\helloworld>