title: Wix Patch Bundle Servicing
body: <p>Below is the source code for two very basic burn bootstrappers.   Bootstrapper installs 2 MSI packages and then SP1 performs a major upgrade on the appdata MSI package.  Initially this works very well except that I have several servicing probems.</p>
  
  <ol>
  <li><p>When I remove the parent bootstrapper, it is smart enough to remove the child SP1 patch.  However, when I remove the SP1 update from Add/Remove programs, there isn't any appdata installed at all.  I have to perform a repair on the original Bootstrapper bundle to get the original version of appdata reinstalled.   Is this a bug or have I implemented it wrong?</p></li>
  <li><p>I am able to install the SP1 bundle by itself.  How can I prevent SP1 from being installed if Bootstrapper isn't already installed?</p></li>
  <li><p>If I create a Bootstrapper 2.0 it supersedes Bootstrapper 1.0 and SP1 correctly.  If I run Bootstrapper 1.0 it correctly blocks.  But if I run SP1 it installs.  How can I constrain SP1 to Bootsrapper v1 only?</p></li>
  <li><p>If the first two items aren't currently possible, is it possible to create an SP1 that is not removable? ( Force removal and reinstallation of parent bundle to get back to the original state. ) I see how to use the DisableRemove and DisableModify attributes but then it doesn't show up in Add/Remove Programs at all and the user can still go back to the EXE and use the WiXStdBA to remove the bundle.</p>
  
  <pre><code>&lt;Wix xmlns="http://schemas.microsoft.com/wix/2006/wi"&gt;
      &lt;Bundle Manufacturer="ISWIX" Name="Bootstrapper" UpgradeCode="44a1059e-e7f7-46c7-9627-b720d6417d69" Version="1.0.0.0"&gt;
          &lt;BootstrapperApplicationRef Id="WixStandardBootstrapperApplication.RtfLicense"/&gt;
          &lt;Chain&gt;
              &lt;MsiPackage SourceFile="app-1.0.msi"/&gt;
              &lt;MsiPackage SourceFile="appdata-1.0.msi"/&gt;
          &lt;/Chain&gt;
      &lt;/Bundle&gt;
  &lt;/Wix&gt;
  
  &lt;Wix xmlns="http://schemas.microsoft.com/wix/2006/wi"&gt;
      &lt;Bundle Manufacturer="ISWIX" Name="SP1" ParentName="Bootstrapper" UpgradeCode="44a1059e-e7f7-46c7-9627-b720d6417d69" Version="1.0.0.1"&gt;
          &lt;RelatedBundle Action="Patch" Id="44a1059e-e7f7-46c7-9627-b720d6417d69"/&gt;
          &lt;BootstrapperApplicationRef Id="WixStandardBootstrapperApplication.RtfLicense"/&gt;
          &lt;Chain&gt;
              &lt;MsiPackage SourceFile="appdata-1.1.msi"/&gt;
          &lt;/Chain&gt;
      &lt;/Bundle&gt;
  &lt;/Wix&gt;
  </code></pre></li>
  </ol>