Thread: Problems running PostGreSQL silent install

Problems running PostGreSQL silent install

From
"Greg Quinn"
Date:
I have seen many problems like this in the forum, but cannot see a solution
for mine...

I have created an account with restricted privileges for the service.
Everything works fine until I get an error running the silent install.

Failed to run initdb: 1!

I then check the logfile, and it says

The files belonging to this database system will be owned by user
"postgres2".
This user must also own the server process.

The database cluster will be initialized with locale C.

initdb: directory "C:/Program Files/PostgreSQL/8.1/data" exists but is not
empty
If you want to create a new database system, either remove or empty
the directory "C:/Program Files/PostgreSQL/8.1/data" or run initdb
with an argument other than "C:/Program Files/PostgreSQL/8.1/data".


The problem is, that I am trying to install a second instance of PostGreSQL
on another port in another location my test computer.
Is this possible?

Here is my silent install .bat script file

msiexec.exe /i postgresql-8.1-int.msi /qr INTERNALLAUNCH=1
ADDLOCAL=server,psql BASEDIR="c:\postgres" SERVICEDOMAIN="%COMPUTERNAME%"
SERVICEACCOUNT="postgres2" SERVICEPASSWORD="test" SUPERPASSWORD="o2BS#9798"
LISTENPORT=9092


Re: Problems running PostGreSQL silent install

From
"Magnus Hagander"
Date:
> initdb: directory "C:/Program Files/PostgreSQL/8.1/data"
> exists but is not empty If you want to create a new database
> system, either remove or empty the directory "C:/Program
> Files/PostgreSQL/8.1/data" or run initdb with an argument
> other than "C:/Program Files/PostgreSQL/8.1/data".
>
>
> The problem is, that I am trying to install a second instance
> of PostGreSQL on another port in another location my test computer.
> Is this possible?

No, the MSI instlaler only lets you install once instance on each
machine. (Unless you are talking different versions, that is). You can,
however, install one instance with the MSI installer, and then manually
run initdb and pg_ctl register to set up a second service with a
different data directory.

//Magnus

Re: Problems running PostGreSQL silent install

From
"Greg Quinn"
Date:
Thank you for the reply.
But then are you saying I don't even really need to use the MSI in the first
place?
I can just copy the files to a folder. Then run initdb and pg_ctl?

I am bundling PostGreSQL with my software package. And will be using
Installshield to copy my program files to the client computer.
Now can I just get the PostGresql folder, put it where I want, then
Run initdb and pg_ctl?


-----Original Message-----
From: Magnus Hagander [mailto:mha@sollentuna.net]
Sent: Friday, October 27, 2006 10:22 PM
To: Greg Quinn; pgsql-novice@postgresql.org
Cc: pgsql-general@postgresql.org
Subject: RE: [GENERAL] Problems running PostGreSQL silent install

No, the MSI instlaler only lets you install once instance on each
machine. (Unless you are talking different versions, that is). You can,
however, install one instance with the MSI installer, and then manually
run initdb and pg_ctl register to set up a second service with a
different data directory.

//Magnus



Re: Problems running PostGreSQL silent install

From
"Magnus Hagander"
Date:
> Thank you for the reply.
> But then are you saying I don't even really need to use the
> MSI in the first place?
> I can just copy the files to a folder. Then run initdb and pg_ctl?

Sure. The MSI is just a convenient way to get everything into place, and
to set icons and stuff.


> I am bundling PostGreSQL with my software package. And will
> be using Installshield to copy my program files to the client
> computer.
> Now can I just get the PostGresql folder, put it where I
> want, then Run initdb and pg_ctl?

Yes, certainly. If you just need the backend, you will just need that
and possibly set some permissions. You can look at the code to
pginstaller (http://pgfoundry.org/projects/pginstaller/) to get details
of exactly what it does. Much of the code is to deal with service
account verification and creation - if you already have this solved
elsewhere, you can probably get around things much easier.

//Magnus

Re: Problems running PostGreSQL silent install

From
"Jesus Becerra"
Date:
Un saludo a todos. Pueden probar el siguiente script, el cual me funcionó perfectamente bien para una "silent install" del PostgreSQL 8.1.10:
 

msiexec.exe /i postgresql-8.1-int.msi /log resultado.txt /qr INTERNALLAUNCH=1 ADDLOCAL=server,psql,pgadmin,psqlodbc BASEDIR="c:\postgres" CREATESERVICEUSER=1 SERVICEDOMAIN="%COMPUTERNAME%" SERVICEACCOUNT="postgres" SERVICEPASSWORD="test" SUPERUSER="algun_usuario" SUPERPASSWORD="alguna_contrasena"

Repito: me funcionó muy bien!!!.

Tengan en cuenta que en la sección ADDLOCAL no pude agregar los "docs", ya que obtenía el mensaje "silent installation of 8.3 fails with error code 2711", y en el archivo LOG que se genera se obtuvo la siguiente descripción del error:

DEBUG: Error 2711:  The specified Feature name ('docs') not found in Feature Table.
DEBUG: Error 2867:  The error dialog property is not set
The installer has encountered an unexpected error installing this package. This may indicate a problem with this package. The error code is 2867. The arguments are: , ,
The installer has encountered an unexpected error installing this package. This may indicate a problem with this package. The error code is 2711. The arguments are: docs, ,
MSI (c) (CC:A8) [11:54:11:343]: Product: PostgreSQL 8.1 -- The installer has encountered an unexpected error installing this package. This may indicate a problem with this package. The error code is 2711. The arguments are: docs, ,

Pueden probar con otras opciones para ver si les sigue funcionando, pero les aseguro que con estas líneas me funcionó muy bien!. En tal caso que no les funciones con SERVICEACCOUNT="postgres" y SERVICEPASSWORD="test", prueben con: SERVICEACCOUNT="postgres3" SERVICEPASSWORD="test3", es decir, con un número al final de dichos valores.

Un agradecimiento a los usuarios Greg Quinn y Magnus Hagander, de quienes obtuve ideas para hacer funcionar este script. Saludos!.