Inno setup Inno安装程序不允许一个exe在另一个exe已经运行时运行。我如何改变这种行为?

Inno setup Inno安装程序不允许一个exe在另一个exe已经运行时运行。我如何改变这种行为?,inno-setup,Inno Setup,我们正在通过inno安装程序安装程序。我们有一个主exe文件,它运行我们的实际程序,但我们安装了一些其他exe,它们总是在后台运行 当main.exe第一次运行时,它会启动另一个exe。其他exe可以一直运行,这实际上是必要的。但是,如果main.exe通过任务管理器停止,或其他某些程序停止,则.exe将继续运行。运行other.exe时,用户无法运行main.exe。我们如何改变这种行为 编辑 似乎与innosetup无关,因此我必须按照答案中建议的路线进行操作 再次编辑 问题最终在于wind

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

当main.exe第一次运行时,它会启动另一个exe。其他exe可以一直运行,这实际上是必要的。但是,如果main.exe通过任务管理器停止,或其他某些程序停止,则.exe将继续运行。运行other.exe时,用户无法运行main.exe。我们如何改变这种行为

编辑

似乎与innosetup无关,因此我必须按照答案中建议的路线进行操作

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

如果我理解正确,您有两个(或更多)程序(exe)。如果MAIN.EXE首先启动,则它会启动OTHER.EXE,这是正确的。如果OTHER.EXE先启动或正在运行,并且MAIN.EXE已停止,则在OTHER.EXE停止之前,MAIN.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

假设您有
Application.exe
Service.exe
。当有人在任务管理器中杀死
Application.exe
时,
Service.exe
会继续运行,但您无法运行
Application.exe
。那么,你是在问如何从InnoSetup中杀掉
Service.exe
?我是在问为什么在Service.exe运行时我不能运行Application.exe,以及我需要做什么更改才能允许Application.exe与Service.exe不共享互斥锁(或任何东西),这样无论Service.exe发生什么情况,它都可以启动和停止。谢谢!我明白了,实际上我不认为这与InnoSetup有关。在这种情况下,您可能会问的唯一问题是如何杀死
Service.exe
。否则这个问题很难回答,因为我们不知道
Application.exe
Service.exe
以及它们之间的共享内容。好的,谢谢。。。既然你们两个都说这不是innosetup,我会试着弄清楚。两个前男友都是通过innosetup安装的,所以他们不会共享互斥锁吗?似乎这与innosetup无关,所以我接受你的答案。谢谢不,互斥是用于进程之间的同步,它们通常用于仅保持某个应用程序的一个运行实例,但它们将由
application.exe
和/或
Service.exe
创建,而不是由InnoSetup创建。它的工作方式是应用程序创建具有特定名称的系统对象(互斥体)。如果然后尝试运行第二个实例,它会检查是否已经创建了具有该特定名称的互斥体,如果已经创建了互斥体,则不会启动。也许你的
Service.exe
创建了一个,而
Application.exe
在有这样的互斥时不会运行。