InstallShield 如何永不覆盖文件

问题描述 投票:0回答:2

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

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

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

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

windows-installer installshield installshield-2009
2个回答
6
投票

两种方法:

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

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

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

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


0
投票

在组件中,您可以将“从不覆盖”标志启用为“是”。

© www.soinside.com 2019 - 2024. All rights reserved.