Inno Setup - 等待Postgres数据库启动

时间:2016-04-25 14:56:05

标签: postgresql inno-setup

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

if Exec('pg_ctl', 'start -D C:\ProgramData\PostgresQL\data', '', SW_SHOW, ewWaitUntilIdle, ResultCode) then
begin
   Sleep(10000);
   // Create our database  user
   if Exec('createuser', '-w -d -R -S testdb', '', SW_SHOW, ewWaitUntilTerminated, ResultCode)

不幸的是,使用任意Sleep()是我设法实现这一目标的唯一方法。毫无疑问,exWaitUntilIdle标志并没有做到这一点,并且延迟了执行的时间(如果有的话)。

在Postgres(createuser)服务器命令运行,空闲并准备接受命令之前,是否有人有更强大的方法确保pg_ctl start不会被执行?

1 个答案:

答案 0 :(得分:2)

ewWaitUntilTerminated使用pg_ctl标记:

  

等待启动或关闭完成。等待是关闭的默认选项,但不是启动。 ... var graph_module = require("org/arangodb/general-graph"); graph_module._drop("social", true); 根据启动或关闭成功返回退出代码。