0

我们使用 InstallShield 2010 通过 InstallScript 方法安装我们的软件。可以根据需要安装一些先决条件。在OnBegin回调中,我们在继续安装之前执行一些逻辑来验证系统。如果用户此时取消安装程序,安装将退出,但不会卸载先决条件。我有几个问题。

1) 是否可以在安装先决条件之前执行我们的自定义验证?根据我所阅读的所有内容,这在 InstallShield 2010 中似乎是不可能的,但我想确认一下。

2)如果用户取消安装,有没有办法强制卸载先决条件?

3) 是否有替代方案可以在OnBegin回调后安装先决条件?我读过一些关于与特定功能相关的先决条件的内容,但不清楚如何在 UI 中执行此操作。

4

2 回答 2

1

1)您的第一个问题的答案也可能是最简单最合理的解决方案。您应该能够通过创建您自己的包含所有自定义验证逻辑的 prq 文件来让您的自定义验证在其他先决条件之前运行。要创建自己的 .prq 文件,您只需复制 SetupPrerequisites 文件夹中的现有 prq 并重命名即可。然后在 InstallShield 中打开 Redistributable 视图。复制/重命名的 .prq 文件现在应该显示在列表中,您可以右键单击并选择Edit Prerequisite. 然后更改Properties, Conditions, Files To Include,Application To Run等。

例如,假设您的验证是一个可执行文件,它根据成功运行并设置注册表项。您可以检查注册表项是否存在作为是否运行先决条件的条件,在选项卡中包含 exe 和任何依赖项,在Files to Include选项卡中运行该可执行文件Application to Run,并在“行为”选项卡中设置启动时会发生什么的下拉列表条件仍未满足Abort the setup

在您对所有先决条件设置感到满意后,再次右键单击并选择Set prerequisite order...并确保您的自定义验证先决条件位于列表顶部。

2) 是的,可能有一种方法可以运行一些自定义操作,以确保在回滚时卸载所有先决条件,但这似乎很复杂,我个人不推荐这样做。如果用户已经在他们的机器上安装了先决条件,然后他们中止了您的安装并卸载了他们已经在他们的机器上安装的软件怎么办?他们可能对此不太高兴。

3)对此并不完全确定,但我认为不可能OnBegin在先决条件运行之前执行该函数。我这么说是因为通常先决条件是由 Setup.exe 或类似的东西在 MSI 执行之外启动的,至少从我的理解来看是这样。然后在先决条件完成后启动 MSI。如果 OnBegin 作为 MSI 执行的一部分运行(我相信它确实如此),则在启动先决条件之前无法启动它。

于 2014-05-28T20:36:06.423 回答
0

较新版本的 InstallShield 中提供的套件和套件/高级 UI 项目可以更直接地处理这个问题,但是如何通过将一个 InstallScript 安装包装在另一个中来放置OnBegin之前呢?OnBegin

关于您的其他子问题...

先决条件以“一劳永逸”的方式处理,旨在安装可能已经存在的东西(在这种情况下跳过安装),因此不直接支持卸载它们。

基本 MSI 项目中提供了功能先决条件。对于 InstallScript 项目,我们鼓励您使用包含LaunchApplication或类似方法的脚本代码,但是如果您不只是启动另一个 InstallScript 安装,则最终可能需要重新实现先决条件式架构。

于 2014-05-29T12:15:35.003 回答