1

当 InstallShield 执行时,我们让它启动一个单独的安装程序(在它的安装阶段之前),该安装程序安装一个对程序至关重要的小型 SQL 服务器。仅供参考,SQL 服务器是 Firebird SQL。当用户重新安装程序时,我们需要终止 Firebird SQL 服务器,它只是作为后台可执行文件运行。我们研究了强制终止 exe 的影响,没有遇到任何负面影响。

所以我的问题是,在 InstallShield 中,我们如何确定外部程序是否正在运行并在运行时终止该程序?我想检测它是否正在运行的唯一原因是避免在安装过程中出现任何可能阻碍或引发错误的错误。如果这不是问题,我可以不在乎我们是否确定它是否正在运行。

编辑:实际上,我们只想杀死 exe,因为我们正在重新安装它。因此,如果可能的话,有没有办法告诉 InstallShield 在另一个 exe 正在运行时跳过执行一个 exe?

4

2 回答 2

0

将 Firebird 安装为服务,然后使用 ServiceControl 表停止该服务。我无法想象终止 SQL 服务器引擎会带来什么好处。

如果您真的想杀死它(希望您随后复制一个新的数据文件,因此损坏不是问题)然后查看http://www.installsite.org/上的示例“列出并关闭正在运行的应用程序”页面/en/isp_ext.htm

于 2011-09-20T15:01:23.843 回答
0

这个问题有两种方法:

  1. 如果第二个产品(您的 SQL 服务器)正在运行,则跳过它。为此,您可以使用自定义操作来检测正在运行的进程并根据结果设置安装程序属性。然后可以使用该属性来调节第二个安装程序。

  2. 第二种方法是在执行修复时完全卸载并重新安装第二个产品:

    • 添加卸载第二个产品的自定义操作
    • 将其设置为仅用于修复运行(使用REINSTALL属性)
    • 在首次安装期间安装产品的自定义操作之前安排它
    • 修改安装自定义操作条件以也支持修复,例如:

未安装或重新安装

于 2011-09-21T11:01:08.380 回答