Postgresql Inno设置-等待Postgres数据库启动

Postgresql Inno设置-等待Postgres数据库启动,postgresql,inno-setup,Postgresql,Inno Setup,在下面的示例中,我希望延迟createuser命令的执行,直到Postgres服务器启动并运行 如果Exec('pg_ctl','start-D C:\ProgramData\PostgresQL\data','',SW_SHOW,ewWaitUntilIdle,ResultCode),则 开始 睡眠(10000); //创建我们的数据库用户 如果Exec('createuser','-w-d-R-S testdb','',软件显示,EWWaitUnterminated,结果代码) 不幸的是,

在下面的示例中,我希望延迟
createuser
命令的执行,直到Postgres服务器启动并运行

如果Exec('pg_ctl','start-D C:\ProgramData\PostgresQL\data','',SW_SHOW,ewWaitUntilIdle,ResultCode),则
开始
睡眠(10000);
//创建我们的数据库用户
如果Exec('createuser','-w-d-R-S testdb','',软件显示,EWWaitUnterminated,结果代码)
不幸的是,使用任意的
Sleep()
是我实现这一目标的唯一方法。
exWaitUntilIdle
标志不起作用,延迟执行的时间足够长(如果有的话),这并不奇怪


那么,是否有人有更可靠的方法来确保在Postgres(
pg_ctl start
)服务器命令运行、空闲并准备接受命令之前不执行
createuser

使用
ewwaitunFilterminated
标志,其中包括:

等待启动或关闭完成。等待是关机的默认选项,但不是启动
pg_ctl
根据启动或关闭成功返回退出代码


为什么不使用
EWAitUnterminated
?Martin pg_ctl未终止。它启动一台服务器,在所有后续命令执行之前,该服务器必须保持运行。
pg_ctl
在后台启动服务器,不是吗?根据文档:服务器在后台启动,其标准输入附加到/dev/null(或Windows上的nul)。文档明确指出,默认情况下,
pg_ctl
甚至不等待服务器启动。