title: Why doesn't my new Windows Installer file (MSI) install properly over an older version of the MSI?
body: <h3>Symptoms</h3>
  <p>I have newly created setup package (MSI) that installs a new version of my application.</p>
  <p>I have a new ProductCode for my installation but I have left the UpgradeCode the same.</p>
  <p>So when I execute the new MSI it first uninstalls the old version correctly. Even the Program Files\MyProduct directory is removed.</p>
  <p>But after uninstalling the old version the installer then only partially installs the new version. If I repair the damaged new installation (Using Add Remove Programs-&gt;Modify Installation-&gt;Repair), everything is fixed.</p>
  <p>If I first uninstall the old version using Add Remove Programs and then install the new version everything works great. The problem only occurs when I install the new version over top of the old version.</p>
  <h3>Possible Cause</h3>
  <p>The version numbers for various dlls and exes in the old version were messed up. The old exe version is 4.11.1234. The version for the new exe is 4.5.1234. According to the &quot;File Versioning Rules&quot; the new file will not overwrite the old file. The reason why I am scratching my head is that by the time the InstallFiles action executes the destination file no longer resides on the disk.</p>
  <h3>Other Information</h3>
  <p>I'm targeting Windows Installer 3.1.</p>
  <p>My installation execution sequence is roughly:</p>
  <pre><code>...
  InstallValidate
  RemoveExistingProducts
  InstallInitialize
  ...
  InstallFiles
  ...
  InstallExecute
  InstallFinalize
  ....
  </code></pre>
  <p>If this context doesn't make the question clear, let me know...</p>
  <p>Thanks!</p>