Re: Programmatic method to determine currently installed Windows PostrgreSQL version

Поиск
Список
Период
Сортировка
От Magnus Hagander
Тема Re: Programmatic method to determine currently installed Windows PostrgreSQL version
Дата
Msg-id 6BCB9D8A16AC4241919521715F4D8BCE92E82A@algol.sollentuna.se
обсуждение исходный текст
Ответ на Programmatic method to determine currently installed Windows PostrgreSQL version  (Will Wright <will4wright@yahoo.com>)
Ответы Re: Programmatic method to determine currently installed Windows PostrgreSQL version
Список pgsql-general
> Hi,
>
> I'm in the process of creating an Windows installation
> package for a product that uses PostgreSQL.
>
> During the installation I would like to check if PostgreSQL
> is installed and if it is, which version.
>
> I think that I can infer that PostgreSQL is installed by
> searching for the \HKLM\SOFTWARE\PostgreSQL\Services or
> HLKM\SOFTWARE\PostrgreSQL\Installations registry keys.
>  However I am not so sure about the version number identification.
>
> I note that with v8.0.x the following ValueName
> exists:
> HKEY_LOCAL_MACHINE\SOFTWARE\PostgreSQL\Installations\{5AA3FA26
> -72A2-4D06-9BFE-98E650A37B6D}
> "Version"="8.0"
>
> And with 8.1 beta the following:
> 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.

//Magnus

В списке pgsql-general по дате отправления:

Предыдущее
От: Scott Marlowe
Дата:
Сообщение: Re: Changing ids conflicting with serial values?
Следующее
От: Will Wright
Дата:
Сообщение: Re: Programmatic method to determine currently installed Windows PostrgreSQL version