1

我一直在尝试如何为我使用 Installshield 创建的应用程序安装设置升级,使用基本的 MSI 项目。

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

创建升级时,我似乎难以删除文件/文件夹。我通过复制/粘贴原始 setup.ism(即我的安装版本 1)来创建我的升级,以便我拥有原始安装的所有文件/文件夹,然后我只需添加/删除任何更改。这个对吗?还是应该 upgrade.ism 只包含新添加/删除的文件夹?

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

我还尝试了主要升级,这非常容易,因为我不必担心会因为先卸载而删除文件/文件夹。但是后来我没有收到通知用户它实际上是升级的对话框。

4

1 回答 1

1

您可以使用 UpgradeTable 中定义的 Action 属性来检测是否正在发生重大升级并向您的用户呈现不同的 UI 元素。

大多数人永远不需要小的升级和/或补丁。对于大多数应用程序而言,主要升级是最简单的维护方法,并且运输整个软件包的不利影响很小。仅对于运送给成千上万或数百万客户的真正大型安装程序,这才成为一个问题。

要在次要升级期间删除文件,您需要“刺穿”组件。您将其创作为可传递的(InstallShield 条件重新评估=true)并为其提供始终返回 false 的表达式。查看:

在次要升级期间卸载组件

您在 RemoveFile 表中删除组件和编写规则的方法不正确。这打破了组件规则和引用计数。

了解次要升级的工作原理以及您可以做什么和不能做什么是一个好主意,但如果您发现自己更倾向于进行重大升级,请不要感到惊讶。

于 2013-11-03T03:28:08.063 回答