Issues in typelib.c with installshield 7
Andrew de Quincey
adq_dvb at lidskialf.net
Sun Dec 7 09:37:17 CST 2003
Hi, today I've been trying to get an Installshield 7 installer going. I think
I've seen reports from other people about having problems as well.
The problems I've been having stem from the implementation of
ITypeLib/ITypeInfo/etc in oleaut32. The first problem is as follows:
Installshield has a TLB which contains a type hiererachy as follows:
IDispatch
: ISomething
: : ISomething2
An instance of ISomething2 is created. Installshield attempts to look up a
method which is only defined in ISomething. The lookup fails. This is because
ISomething and ISomething2 inherit from IDispatch, and are marked as
TKIND_DISPATCH in the typelib. However in the code, an upwards traversal of
the type hierarchy is only done for the TKIND_INTERFACE.
I've experimented with modifying the code so that it also does an upward
traversal for TKIND_DISPATCH as well (as they are still interfaces which can
inherit). It now finds the methods/values properly. (It still doesn't work as
there are then reference count problems, but I'm looking into that.)
However, can anyone confirm if my experimental modification is the correct
behaviour?
e.g. in ITypeInfo_fnGetIDsOfNames, I have changed it to
if(This->TypeAttr.cImplTypes &&
(This->TypeAttr.typekind==TKIND_INTERFACE ||
This->TypeAttr.typekind==TKIND_DISPATCH)) {
More information about the wine-devel
mailing list