首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如果安装已取消,请删除InstallShield必备组件

如果安装已取消,请删除InstallShield必备组件
EN

Stack Overflow用户
提问于 2014-05-29 00:58:01
回答 2查看 1.6K关注 0票数 0

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

1)是否可以在安装必备组件之前执行自定义验证?根据我所读到的所有内容,这在InstallShield 2010中似乎是不可能的,但我希望得到证实。

2)如果用户取消安装,有没有办法强制卸载系统必备组件?

3)有没有可以在OnBegin回调之后安装必备组件的替代方案?我读到一些关于绑定到特定功能的前提条件,但不清楚如何在UI中做到这一点。

EN

回答 2

Stack Overflow用户

发布于 2014-05-29 04:36:06

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
EN

Stack Overflow用户

发布于 2014-05-29 20:15:35

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

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

系统必备组件是以“一发即忘”的方式处理的,并且被设计为安装可能已经存在的东西(在这种情况下跳过安装),因此不直接支持卸载它们。

基本MSI项目中提供了功能前提条件。对于InstallScript项目,鼓励您使用包括LaunchApplication或类似方法的脚本代码,但是,如果您不只是启动另一个InstallScript安装,这最终可能需要重新实现必备样式的体系结构。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23917658

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档