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