Search code examples
installationwindows-installer

How to update specific files via msi installation


I want to make a installation which can be both new installation and update installation. When it was used as an update installation, I want some files to be updated regardless the version and modified datetime. And some files would never be updated.

What I tried: Set the "REINSTALLMODE" to "amus". And set the "Never overwrite" property of never updated files' components to be "Yes".

What I get: It doesn't work. Those components with "Never overwrite = yes" are still updated somehow.

My question: Is this right? REINSTALLMODE has the higher priority than component's "Never overwrite" property? How to deal with this partial updates issue?

Thanks in advance.


Solution

  • MSI has specific File replacement logic (Archived link).

    I would look into doing a Major upgrade.

    Assuming these are unversioned files (for example text/xml config files, not assemblies) I would manually set the File Version on any file I wanted to always be updated (the manually set version will override what is already installed), and leave alone the others which the file replacement logic should ignore.

    Here is a doc about REINSTALLMODE=amus which mentions the 'a' means ignore file versioning rules and update everything. not what you want. Also, I believe REINSTALLMODE is generally for 'repair' operations, not install/upgrade anyways.