[wix-users] Duplicate Autogen GUID for components using registry keypath?
Rob Mensching
rob at firegiant.com
Mon Aug 15 09:29:00 PDT 2016
They look like the same registry value, the default value under that registry key.
_____________________________________________________________
Short replies here. Complete answers over there: http://www.firegiant.com/
-----Original Message-----
From: wix-users [mailto:wix-users-bounces at lists.wixtoolset.org] On Behalf Of Foster, Richard - PAL
Sent: Monday, August 15, 2016 8:14 AM
To: wix-users at lists.wixtoolset.org
Subject: [wix-users] Duplicate Autogen GUID for components using registry keypath?
Greetings all,
We have a common requirement in our installations for menu and data folders associated with the product. Currently, the definitions for these folders are being duplicated in product-specific files. I was hoping to be able to use bind-time variables to define these common items in a fragment (or set of fragments) that could be shared by all the products, but I'm running into a situation where WiX reports that there are duplicate GUID's for the associated components.
The two affected fragments look like this.
Fragment 1:
<Fragment Id="ApplicationDataFolder">
<DirectoryRef Id="CompanyAppDataFolderDir">
<Directory Id="ProductAppDataFolderDir" Name="!(wix.product)">
<Component Id="ApplicationDataFolder" Permanent="yes">
<RegistryKey Root="HKCU" Key="SOFTWARE\!(wix.manufacturer)\!(wix.product) V!(bind.property.ProductVersion.Major).!(bind.property.ProductVersion.Minor).!(bind.property.ProductVersion.Build)">
<RegistryValue Type="string" Value='ApplicationDataFolder_Component' KeyPath='yes' />
</RegistryKey>
<CreateFolder>
<Permission GenericWrite="yes" GenericRead="yes" GenericAll="yes" User="Everyone" />
</CreateFolder>
</Component>
</Directory>
</DirectoryRef>
</Fragment>
Fragment 2:
<Fragment Id="CompanyMenuFolder">
<Feature Id="CompanyMenuFolder">
<ComponentRef Id="CompanyMenuFolder" />
</Feature>
<DirectoryRef Id="TARGETDIR">
<Directory Id="ProgramMenuFolder" ShortName="Programs">
<Directory Id="CompanyMenuFolder" Name="!(wix.manufacturer)">
<Component Id="CompanyMenuFolder">
<RegistryKey Root="HKCU" Key="SOFTWARE\!(wix.manufacturer)\!(wix.product) V!(bind.property.ProductVersion.Major).!(bind.property.ProductVersion.Minor).!(bind.property.ProductVersion.Build)">
<RegistryValue Type="string" Value='CompanyMenuFolder_Component' KeyPath='yes' />
</RegistryKey>
<CreateFolder/>
<RemoveFolder Id="RemoveCompanyMenuFolder" On="uninstall" />
</Component>
</Directory>
</Directory>
</DirectoryRef>
</Fragment>
As far as I can tell, the two keypaths should be different (while the RegistryKey is the same, the RegistryValue elements are not), and as a result I was expecting a different GUID. Instead, I'm getting the same GUID ( {4CA050B1-A167-594F-AD68-E169A0204531}). Any ideas what I'm doing wrong?
I did consider using another bind-time variable to hold the component lD, but that doesn't work either - bind-time variables appear not to be supported as component ID's, presumably because they don't immediately resolve to a valid GUID.
For now, I'll simply continue the practice of duplicating the items in each product, but I prefer to avoid such duplication. Is that possible?
Thanks in advance for any comments & suggestions, Regards, Richard
____________________________________________________________________
WiX Toolset Users Mailing List provided by FireGiant http://www.firegiant.com/
More information about the wix-users
mailing list