title: How to make an MSI that simply wraps an EXE file
body: <p>After way too many experiments, I've come to the conclusion that Windows Installer is simply bad technology. But the customers want MSI files.</p>
  
  <p>So, how can I create an MSI file that extracts an EXE file to a temporary directory and runs it with options same or similar as were passed to the EXE file?</p>
  
  <p>Options to an MSI are explained in <em><a href="http://technet.microsoft.com/en-us/library/cc759262.aspx" rel="noreferrer">Msiexec (command-line options)</a></em> (low level "run" of an MSI is msiexec option package.msi).</p>
  
  <p>EDIT: mjmarsh's WiX solution looks like it works. I just haven't had a chance to try it yet (crunch time). If it works, I'll be accepting it.</p>
  
  <p>EDIT: it does not work. Missing piece: attended/unattended does not seem to be available.</p>
  
  <p>Anyway, the only to make this work at all would be for the custom action to kill its parent process!</p>
  
  <p>EDIT: So somebody posted as a further answer wrapping the whole thing as a post-install custom action. Theoretically possible but since a reboot may be required (thanks MS for .NET 4 requiring a reboot sometimes) we have to do further hackery. So from the matrix of advantages:</p>
  
  <pre><code>Transparency: No. One big custom action.
  Customizability: No.
  Standardization: No. 
  Management and reporting: No. Appears to work but will not.
  Security: No benefit.
  Validation: No. The hackery required to survive reboot makes this sure to not work.
  Resiliency: Completely defeated.
  Rollback: No. Rollback didn't work when we were using MSI anyway.
  Patching &amp; Updates: No. We have a local solution anyway.
  Logging: No. Appears to work but will not.
  </code></pre>
  
  <p>No point.</p>