|
From: SourceForge.net <no...@so...> - 2005-05-11 06:56:13
|
Bugs item #1169765, was opened at 2005-03-24 02:14 Message generated for change (Comment added) made by robmen You can respond by visiting: https://sourceforge.net/tracker/?func=detail&atid=642714&aid=1169765&group_id=105970 >Category: candle Group: None >Status: Closed >Resolution: Wont Fix Priority: 5 Submitted By: Graham Harwood (gharwo) >Assigned to: Rob Mensching (robmen) Summary: Nested ProgID causes duplicate Registry Initial Comment: Using ProgID to create a version independent ProgID is not currently possible because a ProgID child of a ProgID element is rejected in Light with the error: 'fatal error LGHT0003: primary key 'reg5355A2229ECFA5B7680256FCC8354B54' in column 'Registry' are duplicated in table 'Registry' Example XML fragment: Here is an example with GUIDs removed to make lines shorter. <Component Id="AFCore" Guid="{GUID}"> <Condition>Privileged</Condition> <ProgId Id="BEECO.AutofireNotify" Description="BEECO Fire Notifications" Advertise="no"/> <ServiceControl Id="AOStopExisting" Name="Beeco fire" Remove="both" Wait="yes"/> <File Id="SrvMain" Name="AutoFr~1.exe" LongName="AutoFireSrv.exe" src="$(env.VSBUILDPATH \AutoFireSrv.exe" Vital="yes"> <TypeLib Id="{GUID}" Advertise="no" Description="autofire 2.0 Type Library" MajorVersion="2" MinorVersion ="0" Language="1033"> <AppId Id="{GUID}" Description="Barco.AutoFireService"> <Class Id="{GUID}" Advertise="no" Description="BEECO Auto fire" Context="LocalServer32" Version="1.0"> <ProgId Id="BEECO.AutofireNotify.1"> <ProgId Id="BEECO.AutofireNotify"/> </ProgId> <Interface Id="{GUID}" Name="IAutofireNotify" ProxyStubClassId="{GUID}" ProxyStubClassId32="{GUID}"/> </Class> <Class Id="{GUID}" Advertise="no" Description="BEECO Auto fire" Context="LocalServer32" Version="2.0"> <ProgId Id="BEECO.AutofireNotify.2"> <ProgId Id="BEECO.AutofireNotify"/> </ProgId> <Interface Id="{GUID}" Name="IAutofireNotifyMachine" ProxyStubClassId="{GUID}" ProxyStubClassId32="{GUID}"/> </Class> </AppId> </TypeLib> </File> <File Id="AFConsole" Name="AutoFc~1.com" LongName="AutoFireCon.com" src="$(env.VSBUILDPATH)\AutoFireCon.com"/> ... ... ---------------------------------------------------------------------- >Comment By: Rob Mensching (robmen) Date: 2005-05-10 23:56 Message: Logged In: YES user_id=991639 From Adam: The problem is that the two version independent ProgIds conflict when they are converted to registry keys. Consider the layout: HKCR\<CLSID.V1>\ProgID = <ProgId.V1> HKCR\<CLSID.V1>\VersionIndependentProgId =<ProgId> HKCR\<CLSID.V2>\ProgID = <ProgId.V2> HKCR\<CLSID.V2>\VersionIndependentProgId = <ProgId> HKCR\<ProgId>\CurVer = ??? In the sample provided in the bug, it is indeterminate which version should become the CurVer. Intuitively, it should be the AutofireNotify.2 and not AutofireNotify.1, but without an enforced naming system, that is just guess work. Wixs behavior is to add both registry keys to the list of keys to be installed, and their names collide during link. Note that two different components carrying classes with conflicting version independent ProgIds will not fail during link because the component id is included in the naming scheme. The fix *would* be to allow progid-refs, so that the version independent progid could be defined once, including the winning versioned progid, and the individual classes could reference the version independent progid. ---------------------------------------------------------------------- You can respond by visiting: https://sourceforge.net/tracker/?func=detail&atid=642714&aid=1169765&group_id=105970 |