Postgresql – How to reinstall PostgreSQL over an existing installation

postgresqlpostgresql-9.4

I am trying to upgrade an installer created with NSIS that installs postgresql. It used to install postgresql 8.3 but we want to upgrade the DB to 9.4.4.

The old version on of the DB used to be an MSI installer but they have switched to a Windows EXE with the later version. The old version was able to install over a existing installation. The new version breaks and gives me a very general error that I can't use to pinpoint the issue.

Error:

The installation directory must be an absolute path, containing only
letters, numbers and the characters '-', '/', '.' and '_', and must be
writable.

This is my install command:

postgresql-9.4.4-1-windows-x64.exe –prefix "C:\postgres" –datadir
"C:\postgres\data" –enable_acledit 1 –install_runtimes 0
–serverport 5432 –superpassword "XXXX" –servicepassword "XXXX" –unattendedmodeui minimal –mode unattended –debuglevel 0 –serviceaccount "postgres" –create_shortcuts 0

The Bitrock installer only provides the above error with no path detail or anything to act on.

Any clues or suggestions? (Thanks)

Best Answer

Actually I've found out the problem. At least at my end with the same error.

I was creating an installer for my software with NSIS and it uses the postgresql database, in order to use the postgresql silent install I previously installed it on the target machine to test which parameters I should use, after tested it successfully I then uninstalled it so it could be installed by my software.

Then problem appears when I run my installer and the same error shows:

The installation directory must be an absolute path, containing only letters, numbers and the characters '-', '/', '.' and '_', and must be writable.

I start to test everything from users, to user permissions, folder permissions, length of folder names.

Then I went to windows registry and found out the my first installation of postgresql left some registries for it even though I uninstalled it from the control panel also it left the postgres user on the machine.

So I delete all postgresql (Edit->find->postgresql) entries from the registry and also deleted the Windows user (postgres) and then everithing works great.

The only problem now is how to do it through the NSIS program.

Hope it helps.