5

我的文件结构(FireBird 数据库)中有一个文件,一旦第一次安装,就永远不会再被覆盖。这似乎是一个很容易的任务,但我浪费了大量的时间来尝试寻找答案,但徒劳无功。

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

我原以为这将是一个相当简单的解决方案,但我当然还没有找到一个。

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

4

1 回答 1

6

两种方法:

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

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

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

请记住,文件成本计算基于 KeyFile。无论密钥文件如何评估,组件中的所有其他文件都将执行相同的覆盖操作。“总是覆盖”是“版本谎言”,我们错误地告诉 MSI 文件 Verison 是 65535.0.0.0,因此创建/修改规则被版本化胜过非版本化文件规则所取代。

于 2012-02-13T22:11:35.213 回答