Issues in typelib.c with installshield 7

Marcus Meissner marcus at jet.franken.de
Sun Dec 7 16:48:19 CST 2003


On Sun, Dec 07, 2003 at 03:37:17PM +0000, Andrew de Quincey wrote:
> 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)) {

Do you have a sample installer for download?

Ciao, Marcus



More information about the wine-devel mailing list