MSI does not install all files when RemovePreviousVersion is run

前端 未结 4 1207
佛祖请我去吃肉
佛祖请我去吃肉 2020-12-13 21:45

I have a MSI build using WiX version 3.

All previous installers for the product we are deploying worked fine with the configuration specified (that is: if previous v

4条回答
  •  爱一瞬间的悲伤
    2020-12-13 21:47

    Based on the default custom action sequence, Windows Installer determines which files need to be installed/overwritten before removing any existing versions of software. Windows Installer uses the value of the REINSTALLMODE property to tell it how to make decisions about when to overwrite files. If REINSTALLMODE contains an "o", then it will only install files where the version is different or the file doesn't already exist; non-versioned files will only be installed if the Modified Date of the file is <= the Created Date (i.e. the file is not modified). If the REINSTALLMODE contains an "a", it will always install the file, regardless of any version or date information attached to existing files.

    What is happening in your scenario is most likely the following:

    1. Windows Installer determines which files to install. It decides that some files don't need to be installed (possibly because they already exist and are of the same or newer versions as the ones in the MSI).
    2. The previous version of software is removed, including the files Windows Installer determined didn't need to be installed.
    3. Windows installer installs files for the new installation, but does not install files that it determined did not need to be installed.

    The end result is that a bunch of files are missing after upgrading the software. Setting REINSTALLMODE=amus instead of omus will likely fix your problem, but you should make sure you know how this affects the rest of your installation. If there are any files that you don't want to be overwritten, you will need to mark those components to "Never Overwrite".

提交回复
热议问题