Yeah, this is a bug in WiX v3.0 and WiX v3.5. This is the busted logic:

                    if (null != parent)   // if this is a version
independent ProgId
                    {
                        if (YesNoType.Yes == firstProgIdForClass)
                        {
                            this.core.CreateRegistryRow(sourceLineNumbers,
MsiInterop.MsidbRegistryRootClassesRoot, String.Concat("CLSID\\", classId,
"\\VersionIndependentProgID"), String.Empty, progId, componentId);
                        }

                        this.core.CreateRegistryRow(sourceLineNumbers,
MsiInterop.MsidbRegistryRootClassesRoot, String.Concat(progId, "\\CurVer"),
String.Empty, parent, componentId);
                    }
                    else
                    {
                        if (null == parent)
                        {
                            this.core.CreateRegistryRow(sourceLineNumbers,
MsiInterop.MsidbRegistryRootClassesRoot, String.Concat("CLSID\\", classId,
"\\ProgID"), String.Empty, progId, componentId);
                        }
                    }

I think that second check for "null == parent" should have been
"YesNoType.Yes == firstProgIdForClass".

Do you mind filing a bug?

The work around in WiX v3.0, unfortunately, is to pull the second ProgId out
and set its registry keys using RegistryKey/RegistryValue elements.

On Wed, Jan 6, 2010 at 8:37 PM, Bryan Reich <bryan.re...@microsoft.com>wrote:

> I can confirm that not only does nesting the progIDs not solve the issue,
> it actually produces a build failure.
> Firstly, it appears the wix documentation's claims that nesting of more
> than a single ProgId under another progID creates COM aliases is incorrect
> (or perhaps doesn't apply to advertise="no" nodes) because it tries to treat
> all of them like version independent ProgId entries and fails to compile.
> (Error message: "Version independent ProgIds cannot have Icons. Remove the
> Icon and/or IconIndex attributes from your ProgId element")
>
> Second, it says that ProgId elements can only be nested up to a single
> level deep
> (i.e. only
> <ProgId Id="Prog1">
>    <ProgId Id="VerIndepProg" />
> </ProgId>
> And not
> <ProgId Id="Prog1">
>    <ProgId Id="VerIndepProg" />
>    <ProgId Id="OtherProg2">
>         <ProgId Id="VerIndepOtherProg" />
>    </ProgId>
> </ProgId>
> )
> (error message: "ProgId elements may not be nested more than 1 level
> deep.")
>
> And unfortunately I need to do the latter because a number of the
> same-class associated progIds also have versions and version-independent
> entries.
>
> --
> Bryan
>
> -----Original Message-----
> From: Bryan Reich
> Sent: Wednesday, January 06, 2010 7:41 PM
> To: 'Bob Arnson'; General discussion for Windows Installer XML toolset.
> Subject: RE: [WiX-users] Wix bug when converting class/progID set from
> advertised="yes" to advertised="no"?
>
> I was looking into that very question, but I don't think it yields the same
> affect.
> For one thing, when you nest a progID thusly:
>
> <ProgId Id="MyProgId.12">
>    <ProgId Id="MyProgId" />
> </ProgId>
>
> This indicates that MyProgId is the version independent ProgId for
> MyProgId.12. The wix documentation for the ProgId Element:
> ...
> Chidren
>    Sequence (min: 1, max:1)
>    1. ProgId (min: 0, max: unbounded): The version-independent ProgId must
> be the first child elment of the actual ProgId. Nesting other ProgId
> elements within the Version-independent ProgId will create COM+ aliases, see
> http://support.microsoft.com/kb/305745 for more information.
>
>
> So the first point I should make is that I'm not sure that every ProgId in
> question has a version-independent ProgId to associate with it, in which
> case would mean I have nothing to nest as the first element. Second, the
> successive ProgIds are COM+ aliases, and while the documentation on these is
> terrible as far as I've been able to hunt down, it appears they don't serve
> quite the same purpose as what I am alluding to above. COM+ aliases not only
> generate an alternate ProgID, but also an alternate Class ID associated with
> that ProgId that happens I believe to point to the same server object. That
> being said, not being familiar with COM+ aliases well at all, I could be off
> base here, and I'm not fully sure how this operates in the installer, so
> that might give me something like what I would want, providing the first
> pesky scenario that not every primary ProgId under all of the classes has a
> version-independent ProgId associated with it comes into play.
>
> --
> Bryan
>
>
> -----Original Message-----
> From: Bob Arnson [mailto:b...@joyofsetup.com]
> Sent: Wednesday, January 06, 2010 5:00 PM
> To: General discussion for Windows Installer XML toolset.
> Cc: Bryan Reich
> Subject: Re: [WiX-users] Wix bug when converting class/progID set from
> advertised="yes" to advertised="no"?
>
> On 1/6/2010 7:42 PM, Bryan Reich wrote:
> > What is happening is that WIX, while turning these ProgIds into their
> constituent registry keys, does NOT use the heuristic of "first progID under
> the Class element becomes the CLSID\{myGUID}\ProgID key value" that is used
> when advertise is yes.
>
> I had my COM memories surgically removed years ago, so I'm not
> understanding the details here but can you get the effect you're looking for
> by nesting your ProgIds? What are the HKCR registry values you're expecting?
>
> --
> sig://boB
> http://joyofsetup.com/
>
>
>
>
> ------------------------------------------------------------------------------
> This SF.Net email is sponsored by the Verizon Developer Community
> Take advantage of Verizon's best-in-class app development support
> A streamlined, 14 day to market process makes app distribution fast and
> easy
> Join now and get one step closer to millions of Verizon customers
> http://p.sf.net/sfu/verizon-dev2dev
> _______________________________________________
> WiX-users mailing list
> WiX-users@lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/wix-users
>
>


-- 
virtually, Rob Mensching - http://RobMensching.com LLC
------------------------------------------------------------------------------
This SF.Net email is sponsored by the Verizon Developer Community
Take advantage of Verizon's best-in-class app development support
A streamlined, 14 day to market process makes app distribution fast and easy
Join now and get one step closer to millions of Verizon customers
http://p.sf.net/sfu/verizon-dev2dev 
_______________________________________________
WiX-users mailing list
WiX-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/wix-users

Reply via email to