在次要更新中轻松添加/删除文件

时间:2013-11-02 20:56:08

标签: installshield

我一直在玩我想要如何使用Installshield创建应用程序安装的升级,使用基本的MSI项目。

我不支持任何其他功能/组件,大多数升级只是在默认组件中添加/删除文件/文件夹。

创建升级时,我似乎很难删除文件/文件夹。我通过复制/粘贴原始setup.ism(即我的安装版本1)创建升级,以便我拥有原始安装的所有文件/文件夹,然后我只添加/删除任何更改。它是否正确?或者upgrade.ism是否只包含新添加/删除的文件夹?

我首先尝试了一次小升级。我想出了如何删除文件(右键单击 - 删除,然后在RemoveFiles编辑器中添加一个条目),但我还没弄清楚如何删除文件夹。我不想手动将每个文件添加到RemoveFiles表,因为它们可能有数百个。如何升级删除文件夹及其所有子文件?

我也尝试过Major升级,这非常简单,因为我不必担心因首先卸载而删除文件/文件夹。但是后来我没有得到告知用户它实际上是升级的对话框。

1 个答案:

答案 0 :(得分:1)

您可以使用UpgradeTable中定义的Action属性来检测主要升级是否正在向用户显示不同的UI元素。

大多数人永远不需要轻微的升级和/或补丁。对于大多数应用程序而言,主要升级是最简单的维护方法,并且整个包装的运输缺点很小。它只适用于向数千或数百万客户发货的真正大型安装商,这成为一个问题。

要在次要升级期间删除文件,您需要“刺穿”该组件。您将其编写为传递(InstallShield condition reevaluate = true)并为其指定一个始终返回false的表达式。结帐:

Uninstall a component during minor upgrade

删除组件并在RemoveFile表中创建规则的方法不正确。这会破坏组件规则和引用计数。

了解小型升级如何工作以及您能做什么和不能做什么是个好主意,但如果您发现自己更倾向于主要升级,请不要感到惊讶。