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
[email protected]
https://lists.sourceforge.net/lists/listinfo/wix-users