Re: Programmatic method to determine currently installed Windows PostrgreSQL version

From: "Magnus Hagander" <mha(at)sollentuna(dot)net>
To: "Will Wright" <will4wright(at)yahoo(dot)com>, <pgsql-general(at)postgresql(dot)org>
Subject: Re: Programmatic method to determine currently installed Windows PostrgreSQL version
Date: 2005-11-08 18:25:18
Message-ID: 6BCB9D8A16AC4241919521715F4D8BCE92E832@algol.sollentuna.se
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-general

> HKEY_LOCAL_MACHINE\SOFTWARE\PostgreSQL\Installations\{317D0ED1
> > > -8845-40DD-A028-0A3EB8E24F2E}
> > > "Version"="8.1-beta4"
> > >
> > > So it looks like the version number is underneath
> > a key that
> > > changes with every new version (new Product
> > number). And I
> > > am therefore not sure if I can use this knowledge
> > to identify
> > > the installed version.
> >
> > It changes once for each major version, meaning there is
> one for 8.0
> > and 8.1. The whole 8.0.x series share the same id, as will
> the whole
> > 8.1 series (at least that's the plan). It basically changes when
> > initdb is required to upgrade, which is why it also changes between
> > betas.
> >
> > You can safely rely on these once you've seen the ones for
> a release.
> > For example, don't use the beta4 one, wait for the
> > 8.1 release one.
> >
> >
> > > Does anyone have a better idea for a more reliable
> >
> > > identification method?
> >
> > Using these registry keys will reliably identify any PostgreSQL
> > installations done using the MSI installer - it won't pick up any
> > other install methods. For those, you could either search the
> > filesystem, or attempt a connect to the default port etc -
> but I think
> > those would either be too slow or a lot less reliable.
>
> Hi Magnus, thanks for the quick response.
> Unfortunately I still have an issue with this regsitry
> identification method because I'd like to code my installer
> so that it can also identify the postreSQL versions that were
> not available at the time I authored my install check, i.e.
> future versions.
>
> In essence I know that my product works with PostrgeSQL 8.0
> and 8.1 and it my guees is that it will continue to work with
> future PostgreSQL versions. So I'd like my installer to be
> able to check that 8.0 or above is installed.

To do this, enumerate the keys under PostgreSQL\Installations. You can
count on future versions to register there with a different GUID - so if
you enumerate everything that's there, you can look at the Version value
to see the actual version.

//Magnus

Responses

Browse pgsql-general by date

  From Date Subject
Next Message Assad Jarrahian 2005-11-08 18:25:21 Re: Connect to a database in a .sql file
Previous Message Richard Huxton 2005-11-08 18:12:30 Re: Connect to a database in a .sql file