postgreSql随程序打包,服务启动不了

tutage 2012-03-24 04:19:52
pgsql的安装过程(windows)较为复杂,官方使用了pginstaller将pgsql打为一个msi包,单独安装问题不大,但是有以下几个问题:
1、远程桌面安装兼容性差(目前官方的说法是除了win2003都有问题)
2、无法随程序打包
3、安装后的建库工作会受到分区格式的影响
针对以上问题,现给出如下解决方案:
A、在随便一台机器上装好pgsql,并且建好库、导好数据
B、将整个pgsql的安装好的目录复制到一个临时文件夹(例如
d:\temp),应该包括:
bin、data、include、lib、share等,视情况可以考虑加入pgadminIII
C、在临时文件夹中建立dll目录,包括以下5个文件:
libeay32.dll/libiconv-2.dll/libintl-2.dll/libpq.dll/ssleay32.dll
(都可以在安装好的机器中找到)
D、网上去找个ntright.exe文件,放在bin目录里(随便放哪,但是后面安装完成最好删掉)
--修正:网上再去找个Netuser.exe,放在bin目录里
--感谢canders的提醒,之前没考虑到过期问题:)
E、在临时文件夹中建立setup.bat文件,内容如下:
rem 创建postgres用户,用来管理服务
net user postgres [passwd] /add /PASSWORDCHG:NO
rem 让postgres用户不属于users组,官方说不安全,照做
net localgroup users postgres /delete
rem 设置postgres用户密码永不过期
.\bin\netuser postgres /pwnexp:y
rem 拷贝文件,力气活
copy .\dll\*.* %windir%\system32 /Y
rem 赋予postgres用户logon as service权限,技巧!!
rem 插一句废话,ntrights.exe的参数列表里没有我用的这个,:)
.\bin\ntrights.exe -u postgres +r SeServiceLogonRight
rem 以下摘自pginstaller源文件,照做,主要是postgres用户的文件权限
rem 其实是给ntfs用的,xp在fat32格式时会报错,无视!
cacls . /E /T /D postgres
cacls . /E /T /G postgres:R
cacls .\data /E /T /P postgres:C
rem 建立PostgresQL服务,不要像那个台湾人一样加入-L
rem 否则事件查看器将变成windows写情书给你的地方
.\bin\pg_ctl register -N PgSQL -U postgres -P [passwd] -D "%CD%/data"
rem 启动刚才的服务
net start PgSQL
F、把整个临时目录打包分发,解压后只要运行setup.bat就万事大吉
//-----------------------------------------------------------------
服务是创建了,但是启动后自动关闭了
我用rar压缩后到虚拟机里就可以正常启动服务,
但是我用VS2010打包后做成msi后就不能正常启动服务了,是缺少了文件还是打包文件夹权限设置有问题?拜求大神呀~~~
...全文
574 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
iihero 2012-12-05
  • 打赏
  • 举报
回复
嗯,不错的打包步骤。
tutage 2012-03-24
  • 打赏
  • 举报
回复
已解决,因为打包程序默认没把空文件夹创建。所以打包发布的data目录有几个空文件夹缺失,导致postgresql无法运行。
tutage 2012-03-24
  • 打赏
  • 举报
回复
拜求大神呀~~~~~~
PostgreSQL是以加州大学伯克利分校计算机系开发的POSTGRES,现在已经更名为PostgreSQL. PostgreSQL支持大部分SQL标准并且提供了许多其它现代特性:复杂查询、外键、触发器、视图、事务完整性等。 PostgreSQL 是一个免费的对象-关系数据库服务器(数据库管理系统),它在灵活的 BSD-风格许可证下发行。它提供了相对其他开放源代码数据库系统(比如 MySQL 和 Firebird),和专有系统(比如 Oracle、Sybase、IBM 的 DB2 和 Microsoft SQL Server)之外的另一种选择。 事实上, PostgreSQL 的特性覆盖了 SQL-2/SQL-92 和 SQL-3/SQL-99,首先,它包括了可以说是目前世界上最丰富的数据类型的支持,其中有些数据类型可以说连商业数据库都不具备, 比如 IP 类型和几何类型等;其次,PostgreSQL 是全功能的自由软件数据库,很长时间以来,PostgreSQL 是唯一支持事务、子查询、多版本并行控制系统(MVCC)、数据完整性检查等特性的唯一的一种自由软件的数据库管理系统。 Inprise 的 InterBase 以及SAP等厂商将其原先专有软件开放为自由软件之后才打破了这个唯一。最后,PostgreSQL拥有一支非常活跃的开发队伍,而且在许多黑客的努力下,PostgreSQL 的质量日益提高。从技术角度来讲,PostgreSQL 采用的是比较经典的C/S(client/server)结构,也就是一个客户端对应一个服务器端守护进程的模式,这个守护进程分析客户端来的查询请求,生成规划树,进行数据检索并最终把结果格式化输出后返回给客户端。为了便于客户端的程序的编写,由数据库服务器提供了统一的客户端 C 接口。而不同的客户端接口都是源自这个 C 接口,比如ODBC,JDBC,Python,Perl,Tcl,C/C++,ESQL等, 同时也要指出的是,PostgreSQL 对接口的支持也是非常丰富的,几乎支持所有类型的数据库客户端接口。这一点也可以说是 PostgreSQL 一大优点。 本课程作为PostgreSQL数据库管理一,主要讲解以下内容:1.     PostgreSQL安装和环境准备2.     PostgreSQL数据查询3.     PostgreSQL 数据过滤4.     PostgreSQL 多表的联接5.     PostgreSQL数据的分组6.     PostgreSQL合集的操作7.   PostgreSQL 合集的分组

956

社区成员

发帖
与我相关
我的任务
社区描述
PostgreSQL相关内容讨论
sql数据库数据库架构 技术论坛(原bbs)
社区管理员
  • PostgreSQL社区
  • yang_z_1
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧