InstallShield如何永不覆盖文件

时间:2012-02-13 21:59:40

标签: windows-installer installshield installshield-2009

我的文件结构(FireBird数据库)中有一个文件,一旦第一次安装,就不应再被覆盖了。这似乎是一项足够简单的任务,但是我浪费了大量的时间来毫无结果地找到答案。

如果右键单击该文件并选择“属性”,则只有“始终覆盖”复选框。我只是保持版本号相同,我被告知会阻止文件被覆盖,但在我的情况下这可能是危险的,并且在实际的文件属性中,tere甚至无法放置一个版本号。

我原以为这会有相当直接的解决方案,但我当然还没找到。

提前感谢您的帮助,伙计们。你摇滚。

1 个答案:

答案 0 :(得分:6)

两种方法:

1)InstallShield永远不会覆盖文件的“最简单”方法是让它永远不会安装它。安装它作为a.txt并让你的应用程序在第一次运行时将其复制到b.txt,我nstallShield首先甚至都不会知道b.txt。

2)在InstallShield中创建一个组件,并将您的数据库添加为密钥文件。据推测,数据库的内容将随着时间的推移而改变,并导致创建日期和修改日期不同。在这种情况下,InstallShield(实际上是Windows Installer)默认文件版本控制规则(OMUS)规定不会覆盖该文件。

3)如果#2仍然无法正常工作,则将组件上的Never Overwrite属性设置为Yes。

请记住,文件成本核算基于KeyFile。无论密钥文件是什么,组件中的所有其他文件都会对覆盖做同样的事情。 “Always Overwrite”是“版本说谎”,我们错误地告诉MSI文件Verison是65535.0.0.0,因此Createed Modtation规则被Versioned取代了非版本化文件规则。