In my installer, I have two optional features, which are plugins for versions 5 and 6 of the same software. They install the same file (same name, same binary content) into the "plugins" folder of the applications.
But I have the following error:
C:\Users\FooBar\Documents\project\project.wxs(281) : error LGHT0204 : ICE30: The target file '0egx-0x3.dll|appv5plugin.dll' is installed in '[TARGETDIR]\plugins\' by two different components on an LFN system: 'Comp_ThisAppV5_plugin' and 'Comp_ThisAppV6_plugin'. This breaks component reference counting.
I have tried:
- Using the same file, and both
components
use it asSource
- Copying the file into two project subfolders, one for each
component
But stills, WiX refuses to build.
wxs file details:
Install directories for TheApp v5 and v6 are searched for in the registry:
<Property Id="PROP_APPV5PATH"> <RegistrySearch Id='RegSearch_AppV5Path' Type='raw' Root='HKLM' Key='SOFTWARE\TheCompany\TheApp\5.0' Name='Installdir' Win64="yes"/> </Property> <Property Id="PROP_APPV6PATH"> <RegistrySearch Id='RegSearch_3AppV6Path' Type='raw' Root='HKLM' Key='SOFTWARE\TheCompany\TheApp\6.0' Name='Installdir' Win64="yes"/> </Property>
Separate components:
<Directory Id="DIR_APPV5"> <Directory Id="Dir_AppV5Plugins" Name="plugins"> <Component Id="Comp_ThisAppV5_plugin" Guid="*"> <File Id="appv5plugin_dll" Source="files\plugins\appv5\app_plugin.dll" KeyPath="yes"/> </Component> </Directory> </Directory> <Directory Id="DIR_APPV6"> <Directory Id="Dir_AppV6Plugins" Name="plugins"> <Component Id="Comp_ThisAppV6_plugin" Guid="*"> <File Id="appv6plugin_dll" Source="files\plugins\appv6\app_plugin.dll" KeyPath="yes"/> </Component> </Directory> </Directory>
Two install directories:
<SetDirectory Id="DIR_APPV5" Value="[PROP_APPV5PATH]" /> <SetDirectory Id="DIR_APPV6" Value="[PROP_APPV6PATH]" />
Two separate features
<Feature Id="Feat_ThisAppV5_plugin" Title="Plugin for App V5" ConfigurableDirectory="DIR_APPV5" Level="1000" AllowAdvertise='no' InstallDefault='local' Absent='allow'> <ComponentRef Id="Comp_ThisAppV5_plugin"/> </Feature> <Feature Id="Feat_ThisAppV6_plugin" Title="Plugin for App V6" ConfigurableDirectory="DIR_APPV6" Level="1000" AllowAdvertise='no' InstallDefault='local' Absent='allow'> <ComponentRef Id="Comp_ThisAppV6_plugin"/> </Feature>
[TARGETDIR]\plugins
. It means thatRegistrySearch
hasn't find anything and both properties ended up empty, and hence both directories got resolved to[TARGETDIR]\plugins
, and thus it really attempts to install those components into the same folder. You might want to have some default values for those properties in case nothing is found in the registry (initial install). Besides, it referencesappv5plugin.dll
, while the sources say the file names are different... Rebuild the MSI? – Yan Sklyarenko