如何通过msi安装更新特定文件

时间:2009-02-17 05:22:15

标签: installation windows-installer

我想进行一次安装,可以是新安装和更新安装。 当它用作更新安装时,我想要更新一些文件,无论版本和修改日期时间如何。有些文件永远不会更新。

我尝试了什么: 将“REINSTALLMODE”设置为“amus”。并将永不更新文件组件的“永不覆盖”属性设置为“是”。

我得到了什么: 它不起作用。具有“Never overwrite = yes”的组件仍会以某种方式更新。

我的问题: 这是正确的吗? REINSTALLMODE的优先级高于组件的“永不覆盖”属性? 如何处理这个部分更新问题?

提前致谢。

2 个答案:

答案 0 :(得分:1)

MSI具体File replacement logic

我会考虑做一个Major upgrade

假设这些是未版本控制的文件(例如text / xml配置文件,而不是程序集),我会在我想要永远更新的任何文件上手动设置文件版本(手动设置的版本将覆盖已安装的文件),并且单独留下文件替换逻辑应忽略的其他文件。

以下是关于REINSTALLMODE=amus的文档,其中提到“a”表示忽略文件版本控制规则并更新所有内容。不是你想要的。此外,我相信REINSTALLMODE通常用于“修复”操作,而不是安装/升级。

答案 1 :(得分:0)

我们这样做......

  1. 将文件安装到程序文件
  2. 将默认配置安装到所有用户appdata
  3. 如果找不到每用户配置,则将默认配置复制到每用户appdata。
  4. 这意味着如果应用更新,则会重置默认配置,但不会重置每用户配置。在MSI更新期间保存所有设置等,不会覆盖。

    根据您尝试“不更新”的文件,我怀疑您可能会沿着类似的路线做些什么。