Bugs item #1752713, was opened at 2007-07-12 15:37
Message generated for change (Comment added) made by mikedimmick
You can respond by visiting:
https://sourceforge.net/tracker/?func=detail&atid=642714&aid=1752713&group_id=105970
Please note that this message will contain a full copy of the comment thread,
including the initial issue submission, for this request,
not just the latest update.
Category: candle
Group: None
Status: Open
Resolution: None
Priority: 5
Private: No
Submitted By: Adrian Wilkins (dr_barnowl)
Assigned to: Nobody/Anonymous (nobody)
Summary: [EMAIL PROTECTED] is not mandatory
Initial Comment:
When using self-registration to generate registry keys for COM classes,
@Context will not appear for classes that are marked as PublicNotCreateable in
VB6 projects. Because instances can only be created by private code, the
execution context is not required. The self-registry of these classes does not
generate this element.
The absence of Context is however precluded by the validity checking code in
Compiler.cs, and the schema in wix.xsd, but because heat uses the self registry
routines to determine the content, it can generate Class elements with no
@Context when processing VB6 libraries with PublicNotCreateable classes, a
common construct in more advanced code (this is the closest you'll get to
having a dedicated "Interface" concept in VB6, for example).
Suggest:
* Change [EMAIL PROTECTED] to optional in schema
* Remove the following code from Compiler.cs
if (0 == context.Count)
{
this.core.OnMessage(WixErrors.ExpectedAttribute(sourceLineNumbers, node.Name,
"Context", classId));
}
Tested this on a local build and it seems to work fine for the discussed case.
----------------------------------------------------------------------
Comment By: Mike Dimmick (mikedimmick)
Date: 2007-07-12 20:29
Message:
Logged In: YES
user_id=1040952
Originator: NO
If it's PublicNotCreatable, why is the class registered with COM? It
shouldn't be, since COM cannot create it. Sounds like a bug in VB. The
class _interface_ has to be registered, so that the automation marshaller
can find the typelib in order to marshal calls across context boundaries
(COM+/MTS, cross-apartment, cross-process).
Class/@Context controls the key under which the binary appears:
InprocServer, InprocServer32, LocalServer, LocalServer32. It's my view that
this should not be a space-separated list but instead just a standard
attribute - it's incredibly rare that you would register the same binary
for more than one of these, because different things are expected:
respectively, a 16-bit DLL, a 32-bit or 64-bit PE DLL, a 16-bit New
Executable EXE, a 32-bit or 64-bit PE EXE.
----------------------------------------------------------------------
You can respond by visiting:
https://sourceforge.net/tracker/?func=detail&atid=642714&aid=1752713&group_id=105970
-------------------------------------------------------------------------
This SF.net email is sponsored by DB2 Express
Download DB2 Express C - the FREE version of DB2 express and take
control of your XML. No limits. Just data. Click to get it now.
http://sourceforge.net/powerbar/db2/
_______________________________________________
WiX-devs mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/wix-devs