title: How can I make sure a downgraded library is installed by my MSI?
body: <p>I have an MSI that setups my application. It has a single component and installs only to %PROGRAMFILES% (no shared binaries). Simplified, it looks like this</p>
  
  <pre><code>Msi file, Monday build:
      Program.exe  (v1.0.0)
      ThirdPartyLibrary.dll  (v2.0.1)
  </code></pre>
  
  <p>Now, if I discover a bug in the program caused by my upgrade of the ThirdPartyLibrary dll from v2.0.0 to v2.0.1, and thus revert the reference to v2.0.0, it seems my MSI doesn't automatically replace the file in the installation directory? </p>
  
  <pre><code>Msi file, Tuesday build:
      Program.exe  (v1.0.0)
      ThirdPartyLibrary.dll  (v2.0)  &lt;- downgraded
  </code></pre>
  
  <p>What is the best practice here to ensure that the program folder always contains exactly the binaries in my setup? Should I a) wipe everything from the setup directory before copying the new files? Is there an option (in Wix) I can use that makes the msi force an overwrite of all files regardless of version? </p>
  
  <p>What if I remove a file from the setup (a file that would cause errors if present at runtime), then the only way to have a working program after the setup, would be if it deleted all files first? </p>