I have web app, which I want to install on IIS. This app supports plugins architecture. It consists of:
- Core Part
 - Plugin A
 - Plugin B
 
I want to have 2 installers (msi). One for plugin A and other for plugin B. Each installer should also install Core Part. So if I run installer for plugin A it should install Core Part and Plugin A binaries. Then if I run Installer for plugin B it should install only Plugin B binaries. But if run installer for Plugin B as first it should install Core Part and Plugin B binaries.
I used WiX Merge Module project for Core Part and created 2 WiX projects for each installer. But it does not work as I want.
This is how it works:
- I run installer for Plugin A (works fine)
 - I run installer for Plugin B, it detects that product is already installed, shows Remove, Repair, Change page
 - I choose Change and I see "Plugin A" on features tree instead of "Plugin B"
 
You can see sample solution here: https://github.com/bwojdyla/wixplugins Works in Debug configuration. Wix 3.9, VS2012
My merge module (Core part):
<?xml version="1.0" encoding="UTF-8"?>
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi">
    <Module Id="CoreModule" Language="1033" Version="1.0.0.0">
        <Package Id="751e70eb-cf76-413b-b8c8-231a31f9c946" Manufacturer="test" InstallerVersion="200" />
    <Directory Id="TARGETDIR" Name="SourceDir">
      <Directory Id="INSTALLFOLDER" Name="PluginInstaller">
        <Component Id="CoreComp" Guid="{161F78E1-0ABD-4FCD-92FC-6095A45F78B3}">
          <File Id="CoreFile" KeyPath="yes" Source=".\Core.txt" />
        </Component>
      </Directory>
    </Directory>
    </Module>
</Wix>
Plugin A:
<?xml version="1.0" encoding="UTF-8"?>
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi">
    <Product Id="{8E93D1E7-C05F-40A0-B737-C053C1EE3E0A}" Name="PluginInstaller" Language="1033" Version="1.0.0.0" Manufacturer="test" UpgradeCode="eed33233-e773-45c2-87a1-ab349191a30a">
        <Package InstallerVersion="200" Compressed="yes" InstallScope="perMachine" Id="{9C7D28B4-FBAD-4FE6-A204-8F6A11D89792}"/>
        <MajorUpgrade DowngradeErrorMessage="A newer version of [ProductName] is already installed." />
        <Media Id="1" Cabinet="Cab1.cab" EmbedCab="yes" />
    <UIRef Id="WixUI_FeatureTree"/>
    <FeatureRef Id="ProductFeature">
      <Feature Id="PluginA" Title="Plugin A" Level="1" AllowAdvertise="no">
        <ComponentGroupRef Id="ProductComponents" />
      </Feature>
    </FeatureRef>
    </Product>
    <Fragment>
        <Directory Id="TARGETDIR" Name="SourceDir">
            <Directory Id="ProgramFilesFolder">
                <Directory Id="INSTALLFOLDER" Name="PluginInstaller" />
        <Merge Id="CoreModule" Language="1033" SourceFile="..\CoreModule\bin\Debug\CoreModule.msm" DiskId="1" />
            </Directory>
        </Directory>
    </Fragment>
    <Fragment>
        <ComponentGroup Id="ProductComponents" Directory="INSTALLFOLDER">
      <Component Id="PluginAComp" Guid="{7641AF10-B2EF-4639-A0B4-34AE819CAD38}">
        <File Id="PluginAFile" KeyPath="yes" Source=".\PluginA.txt" />
      </Component>
        </ComponentGroup>
    </Fragment>
</Wix>
Plugin B:
<?xml version="1.0" encoding="UTF-8"?>
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi">
  <Product Id="{8E93D1E7-C05F-40A0-B737-C053C1EE3E0A}" Name="PluginInstaller" Language="1033" Version="1.0.0.0" Manufacturer="test" UpgradeCode="eed33233-e773-45c2-87a1-ab349191a30a">
    <Package InstallerVersion="200" Compressed="yes" InstallScope="perMachine" Id="{9C7D28B4-FBAD-4FE6-A204-8F6A11D89792}"/>
    <MajorUpgrade DowngradeErrorMessage="A newer version of [ProductName] is already installed." />
    <Media Id="1" Cabinet="Cab1.cab" EmbedCab="yes" />
    <UIRef Id="WixUI_FeatureTree"/>
    <FeatureRef Id="ProductFeature">
      <Feature Id="PluginB" Title="Plugin B" Level="1" AllowAdvertise="no">
        <ComponentGroupRef Id="ProductComponents" />
      </Feature>
    </FeatureRef>
  </Product>
  <Fragment>
    <Directory Id="TARGETDIR" Name="SourceDir">
      <Directory Id="ProgramFilesFolder">
        <Directory Id="INSTALLFOLDER" Name="PluginInstaller" />
        <Merge Id="CoreModule" Language="1033" SourceFile="..\CoreModule\bin\Debug\CoreModule.msm" DiskId="1" />
      </Directory>
    </Directory>
  </Fragment>
  <Fragment>
    <ComponentGroup Id="ProductComponents" Directory="INSTALLFOLDER">
      <Component Id="PluginBComp" Guid="{D11704D9-9911-483A-B204-B2171DCB0E67}">
        <File Id="PluginBFile" KeyPath="yes" Source=".\PluginB.txt" />
      </Component>
    </ComponentGroup>
  </Fragment>
</Wix>
Or maybe there is other wix feature, which I should use, to achieve this?