2011-08-25 169 views
2

我创建了一个带有innosetup的安装程序,我想用它来使用psql.exe创建一个postgresql数据库。 我用这行代码调用psql.exe:多个命令执行

文件名:“{app} \ PostgreSQL \ bin \ psql.exe”;参数:“-W postgres”;

问题是,psql询问用户密码,并且没有选项可以在一次调用中传递它。

是否可以模拟“Enter”键并在刚刚添加密码后? 如果有另一种解决方案,请让我知道。

谢谢。

回答

2

还有就是PGPASSWORD environment variable

PGPASSWORD行为一样口令连接参数。出于安全原因,不建议使用此环境变量,因为某些操作系统允许非root用户通过ps查看进程环境变量;而应考虑使用~/.pgpass文件。

如上所述,还有password file,但环境变量可能会适用于安装程序。无论哪种情况,您都会丢弃-W开关。

你也可以建立一个专用工具直接与PostgreSQL交谈,而不是通过psql.exe

+1

该环境变量也可以通过使用[Win32 SetEnvironmentVariable()函数](http://msdn.microsoft.com/en-us/library/ms686206(v = vs)为Inno(和子量子子进程)设置0.85)的.aspx)。 – Deanna

+0

@Deanna:谢谢,这是有用的信息。我比Inno更熟悉PostgreSQL。 –

+0

我如何使用PGPASSWORD登录? – isoman