I am seeing the following:

Previously there was:

<Class Id="{myGUID}" advertise="yes"...>
    <ProgId Id="MyProgid1.14" Advertise="yes" ... />
    <ProgId Id="MyOtherProgId.14" Advertise="yes" .../>
</Class>

This was working fine. When installed, the class had entries for the prog ID 
that was first in the list of progIDs that were its children. Each progId had a 
clsid that was its class parent. This is what we want.

For reasons I won't go into, we need to now change these entries to 
advertise="no" (note that this is even recommended by current WIX 
documentation).
<Class Id="{myGUID}" advertise="no"...>
    <ProgId Id="MyProgid1.14" Advertise="no" ... />
    <ProgId Id="MyOtherProgId.14" Advertise="no" .../>
</Class>

The result of doing this is an error building the MSI saying there are 
duplicate IDs in the registry table.
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. Instead it generates:

CLSID\{myGUID}\ProgID = MyProgid1.14
And
CLSID\{myGUID}\ProgID = MyOtherProgId.14

In the registry table, and since the keys are exactly the same (except for the 
value written) and belong to the same component, the generated primary key is 
the same and you end up with duplicate primary keys in the registry table. Note 
that I would expect advertise="no" to behave the same as advertise="yes" (with 
the exception of supporting COM triggered IOD) except that the entries end up 
as registry table entries instead of entries in the Class and ProgId tables; 
however it would appear the conversion is not correct here. We would not want 
to see, nor expect to see, the "MyOtherProgId.14" entry in the registry table.

Is this a bug in Wix? Is there a work-around other than tearing down the entire 
Class->ProgId hierarchy and converting them into individual registry keys 
myself? (Note that I have obviously created a simplified example above in which 
doing such a work-around would not be cost prohibitive. In reality my scenario 
is very complex with many many classes and many many progIDs across an entire 
app suite, so doing that approach would be nearly impossible, and would be 
EXTREMELY risky given our current schedule).

--
Bryan

------------------------------------------------------------------------------
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