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