WiX - install the same file in two different places

In my installer, I have two additional functions that are plugins for versions 5 and 6 of the same software. They install the same file (the same name, the same binary content) in the plugins folder of applications.

But I have the following error:

C: \ Users \ FooBar \ Documents \ project \ project.wxs (281): error LGHT0204: ICE30: target file "0egx-0x3.dll | appv5plugin.dll" set to '[TARGETDIR] \ plugins \' with two different components on LFN system: "Comp_ThisAppV5_plugin" and 'Comp_ThisAppV6_plugin. This disrupts component reference counting.

I tried:

  • Using the same file and both componentsuse it asSource
  • Copy a file to two subfolders of projects, one for each component

But still, WiX refuses to build.

Details of the wxs file:

  • Install directories for TheApp v5 and v6 can be found 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 installation directories:

    <SetDirectory Id="DIR_APPV5" Value="[PROP_APPV5PATH]" /> 
    <SetDirectory Id="DIR_APPV6" Value="[PROP_APPV6PATH]" /> 
    
  • Two separate functions

    <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>
    
+4
source share
2 answers

After providing all components with unique GUIDs and each file with a unique Id and ShortName, I still got all these errors. I “fixed” it by suppressing the ICE confirmation of ICE30. I have not tested it yet, so I'm not sure if it will work correctly when installing and removing my plugin for several versions of the application ...

Note. The option to ignore ICE errors is located in the project properties on the Tool Options tab.

+1
source

ShortName ( , ). , . MSI?

0

Source: https://habr.com/ru/post/1618862/


All Articles