title: How to call an MSI file from another without being a part of the caller installer with WIX
body: <p>I have a little issue which is that I have to call an MSI file from another MSI file.</p>
  
  <p>Both of them are independant meaning that they don't belong to the same installation.</p>
  
  <p>Is it possible to make it with CustomAction ?</p>
  
  <p>I know it's possible if I use bootstrapper but I can't do it this way.</p>
  
  <p>&lt;</p>
  
  <pre><code>?xml version="1.0" encoding="UTF-8"?&gt;
  &lt;Wix xmlns="http://schemas.microsoft.com/wix/2006/wi"&gt;
    &lt;Product Id="*" Name="MySetup" Language="1033" Version="1.0.0.0" Manufacturer="Sofiane" UpgradeCode="c151e7ab-b83a-445f-93b2-2ab7122ea34b"&gt;
      &lt;Package InstallerVersion="200" Compressed="yes" InstallScope="perMachine" /&gt;
  
      &lt;MajorUpgrade DowngradeErrorMessage="A newer version of [ProductName] is already installed." /&gt;
      &lt;MediaTemplate /&gt;
  
      &lt;Property Id="EXEPATH" Secure="yes"/&gt;
  
      &lt;Feature Id="ProductFeature" Title="MySetup" Level="1"&gt;
        &lt;ComponentGroupRef Id="ProductComponents" /&gt;
      &lt;/Feature&gt;
      &lt;Binary Id="InstallTools" SourceFile="$(var.SolutionDir)InstallTools\bin\$(var.Configuration)\InstallTools.CA.dll"/&gt;
      &lt;CustomAction Id="SetupProps" BinaryKey="InstallTools" DllEntry="OpenExeUrl" Execute="immediate" Impersonate="yes" Return="check" /&gt;
      &lt;CustomAction Id="OpenExe" Return="ignore" Directory="exeDirectory"  ExeCommand="&amp;quot;[EXEPATH]&amp;quot;" Impersonate="yes" Execute="deferred"/&gt;
  
      &lt;InstallExecuteSequence&gt;
        &lt;Custom Action="SetupProps" Before="OpenExe"/&gt;
        &lt;Custom Action="OpenExe" After="InstallExecute"/&gt;
      &lt;/InstallExecuteSequence&gt;
    &lt;/Product&gt;
  
    &lt;Fragment&gt;
      &lt;Directory Id="TARGETDIR" Name="SourceDir"&gt;
        &lt;Directory Id="ProgramFilesFolder"&gt;
          &lt;Directory Id="INSTALLFOLDER" Name="MySetup" /&gt;
        &lt;/Directory&gt;
        &lt;Directory Id="exeDirectory" FileSource="@(EXEDIR)" /&gt;
      &lt;/Directory&gt;
    &lt;/Fragment&gt;
  
    &lt;Fragment&gt;
      &lt;DirectoryRef Id="INSTALLFOLDER"&gt;
        &lt;Component Id="myAppFile"&gt;
          &lt;File Source="$(var.MyApplication.TargetPath)" /&gt;
        &lt;/Component&gt;
      &lt;/DirectoryRef&gt;
      &lt;ComponentGroup Id="ProductComponents" Directory="INSTALLFOLDER"&gt;
        &lt;ComponentRef Id="myAppFile" /&gt;
      &lt;/ComponentGroup&gt;
    &lt;/Fragment&gt;
  
  &lt;/Wix&gt;
  </code></pre>
  
  <p>In the custom action OpenExe, EXEPATH is the second MSI file to call.</p>
  
  <p>Any advice please?</p>