根据我之前的问题,我现在正在尝试通过NSIS代码执行批处理文件,以便在解压后成功设置postgres安装。批处理文件包含初始化数据库的命令,但由于权限限制而失败。我使用Win7 x64 PC。我的用户帐户是管理员,并使用以管理员身份运行
选项启动Setup.exe。这是我得到的错误:
C:\Program Files (x86)\Poker Assistant>cd "pgsql\bin" C:\Program Files (x86)\Poker Assistant\pgsql\bin>initdb -U postgres -A password --pwfile "pwd.txt" -E utf8 -D "..\data" 此数据库系统所属的文件将由用户"Mandarinite"拥有。
此用户还必须拥有服务器进程。
数据库群集将使用地区设置为"Bulgarian_Bulgaria.1251"。 initdb:找不到适合的文本搜索配置以供地区"Bulgarian_ Bulgaria.1251"使用 默认的文本搜索配置将设置为"simple"。
数据页校验和已禁用。
创建目录../data ... initdb:无法创建目录"../data":拒绝访问
编辑:在调整了安装程序后,我更深入地了解了问题的根源。无论如何,当安装在Program Files文件夹中时,我都不能执行以下命令:
initdb -U postgres -A password --pwfile "pwd.txt" -E utf8 -D "..\data"
我尝试使用 .bat 文件和 .cmd 文件。我尝试在命令提示符中手动操作并以管理员身份启动。所有尝试都导致了“权限被拒绝”的错误。
编辑2: 我没有找到任何解决问题的方法,所以我想出了一个变通方法。现在我已经预先初始化了 postgres 的数据目录,然后只需要创建服务并启动即可。
%PROGRAMDATA%\MyApp\postgres\data
或类似位置中创建 datadir,因为这是 Microsoft 表示应将数据共享给机器上所有应用程序用户的位置。%PROGRAMDATA%
是一个环境变量。 - Craig Ringer