2

我们正在通过 inno setup 安装程序。我们有一个主 exe 文件,它运行我们的实际程序,但我们安装了一些始终在后台运行的其他 exe。

当 main.exe 第一次运行时,它会启动另一个 exe。其他exe一直运行是可以的,其实是必须的。但是,如果 main.exe 通过任务管理器或其他东西停止,则 other.exe 继续运行。当 other.exe 正在运行时,用户无法运行 main.exe。我们怎样才能改变这种行为?

编辑

似乎与 innosetup 无关,所以我将不得不走答案中建议的路线。

再次编辑 问题最终是windows看到main.exe启动了other.exe并认为它是一个子进程。找到一种在 main.exe 之外启动 other.exe 的方法最终是解决方案

4

1 回答 1

1

如果我理解正确,您有两个(或更多)程序(EXE)。如果首先启动 MAIN.EXE,它会启动 OTHER.EXE,这是正确的。如果 OTHER.EXE 首先启动或正在运行并且 MAIN.EXE 停止,则 MAIN.EXE 将不会重新启动,直到 OTHER.EXE 停止。那是对的吗?如果是这样,您需要同时更改 MAIN.EXE 和 OTHER.EXE。在 MAIN.EXE 中,您需要检查 OTHER.EXE 并停止它或告诉用户在启动 MAIN.EXE 之前停止 OTHER.EXE。在启动时的 OTHER.EXE 中,您需要检查 MAIN.EXE。如果它没有运行,请启动它或告诉用户在启动 OTHER.EXE 之前启动它。

阅读其他评论后,我认为我的原始答案不正确。两个程序(APPLICATION.EXE 和 SERVICE.EXE)本身并不共享互斥锁,也不会自动阻止同时运行。你需要看看为什么 SERVICE.EXE 运行时 APPLICATION.EXE 不运行,返回什么错误。这可能有助于确定您需要做什么。您可能仍需要更改 SERVICE.EXE 和 APPLICATION.EXE。

于 2012-04-06T18:12:41.533 回答