如果安装已取消,请删除InstallShield先决条件

时间:2014-05-28 16:58:01

标签: installation install installshield installscript installshield-2010

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

1)是否可以在安装先决条件之前执行自定义验证?根据我读过的所有内容,这在InstallShield 2010中看起来不可行,但我希望确认这一点。

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

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

2 个答案:

答案 0 :(得分:1)

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

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

的启动条件,会发生什么情况

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

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

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

答案 1 :(得分:0)

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

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

先决条件以防火方式处理,旨在安装可能已存在的内容(并在此情况下跳过安装),因此无法直接支持卸载它们。

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