Installation 在Inno Setup[运行]部分中运行另一个程序之前,请等待(web)服务器启动

Installation 在Inno Setup[运行]部分中运行另一个程序之前,请等待(web)服务器启动,installation,inno-setup,cherrypy,Installation,Inno Setup,Cherrypy,我的Inno安装程序包含一个小型Web服务器和一个桌面应用程序。这两个都是独立的可执行文件。在安装时,我希望在启动桌面应用程序之前启动Web服务器,使其处于运行状态。我试图在Inno安装脚本的[Run]部分实现这一点,如下所示: [Run] Filename: "{app}\Server\{#ServerExeName}"; \ Description: "{cm:LaunchProgram,{#StringChange(ServerName, '&', '&&'

我的Inno安装程序包含一个小型Web服务器和一个桌面应用程序。这两个都是独立的可执行文件。在安装时,我希望在启动桌面应用程序之前启动Web服务器,使其处于运行状态。我试图在Inno安装脚本的
[Run]
部分实现这一点,如下所示:

[Run]
Filename: "{app}\Server\{#ServerExeName}"; \
    Description: "{cm:LaunchProgram,{#StringChange(ServerName, '&', '&&')}}"; \
    Flags: waituntilidle runascurrentuser
Filename: "{app}\App\{#AppExeName}"; \
    Description: "{cm:LaunchProgram,{#StringChange(AppName, '&', '&&')}}"; \
    Flags: nowait postinstall
如果安装程序没有正确完成,操作系统将挂起等待服务器(
ServerExeName
)。我猜这是在等待服务器进入空闲状态,而这并没有发生。(同样的事情也适用于“WaitUnterminated”标志,因为服务器将终止,也不应终止)。在继续(启动其他应用程序)之前,确保服务器已启动的首选Inno安装方式是什么


我正在运行Inno Setup 5.6.1u,但如果需要,我可以升级。web服务器是使用PyInstaller绑定到exe的CherryPy web服务器。该应用程序是定制的基于wxWidgets的GUI。

waituntilidle
是非常具体的东西。它内部使用。阅读更多关于它的信息,了解它何时可以使用

如果它不适合您的服务器应用程序,您将不得不在其中实现某种信号,Inno安装程序可以寻找这种信号。在*nix系统上,pidfile通常用于此目的。或者使用互斥或其他类似机制


更简单的方法可能是向应用程序(而不是服务器)添加一个函数/开关,使其等待服务器运行