mirror of
https://github.com/FirebirdSQL/firebird.git
synced 2025-01-22 12:03:03 +01:00
118 lines
5.1 KiB
Plaintext
118 lines
5.1 KiB
Plaintext
|
|
One of the design goals of Firebird 1.5 is to prepare the way for multiple
|
|
installs of the server. This will allow users to run different versions
|
|
side by side. Firebird 1.5 does support this, although it is not well
|
|
documented and very much requires intervention from a skilled user. Future
|
|
versions of Firebird will make this process far less complicated. In the
|
|
meantime Firebird 1.5 needs to prepare the ground. This forces us to
|
|
confront the issue of library installation. At the same time, Microsoft
|
|
have taken their own steps to manage installation of different library
|
|
versions. Taken together these two separate issues mean a new approach to
|
|
library installation for Firebird 1.5 and beyond.
|
|
|
|
1/ Installation of Microsoft system libraries.
|
|
|
|
The problems associated with installing different versions of Microsoft
|
|
system libraries are so notorious that it has acquired the name
|
|
'DLL Hell'.
|
|
|
|
From the release of Windows 2000 onwards Microsoft have made it almost
|
|
impossible to upgrade system dll's. To resolve this Microsoft now
|
|
recommend that each application installs local copies of any system
|
|
libraries that are required.
|
|
|
|
Firebird 1.5 follows this practice for all Microsoft platforms from
|
|
Windows 2000 onwards and places the required libraries in the \bin directory
|
|
along with the server. When installed on older systems (Win 9x, NT) it follows
|
|
the standard practice and attempts to upgrade older versions of the system
|
|
libraries.
|
|
|
|
|
|
2/ Installation of fbclient.dll.
|
|
|
|
Firebird 1.5 and beyond no longer use gds32.dll as the client library.
|
|
It is now called fbclient.dll. Given the problems that Microsoft have
|
|
had with DLL hell it wouldn't make much sense if we continued to store the
|
|
Firebird client library in the <system> directory. And as we want to allow
|
|
installation of multiple engines simultaneously we would be creating our
|
|
own DLL hell if we continued the practice of using the <system> directory
|
|
for the client library. So, from Firebird 1.5 on, the client library resides
|
|
in the \bin directory along with all the other binaries.
|
|
|
|
A new registry key has been added and all Firebird compliant applications
|
|
should now use this to locate the correct version of Firebird that they wish
|
|
to use. The new key is:
|
|
|
|
HKEY_LOCAL_MACHINE\SOFTWARE\Firebird Project\Firebird Server\Instances
|
|
|
|
Firebird will guarantee that one entry under this key always exists. It will
|
|
be known as
|
|
|
|
"DefaultInstance"
|
|
|
|
and will store the path to the root directory of (yes, you've guessed it)
|
|
the default installation. Those that don't care about particular
|
|
installations can alway use the default instance to locate the fbclient.dll.
|
|
|
|
Future versions of Firebird will see other entries under Instances.
|
|
Applications will be able to enumerate the registry entries to determine
|
|
which library instance the wish to load.
|
|
|
|
|
|
3/ Supporting legacy applications and drivers.
|
|
|
|
Traditionally, applications that use InterBase or Firebird have expected to
|
|
load the gds32.dll client library from the <system> directory. Firebird 1.5
|
|
ships a tool named 'instclient.exe' that can install a clone of fbclient.dll
|
|
to the Windows System directory. This clone gets patched on the fly so that
|
|
its file version information starts in "6.3". This is done so because some
|
|
old applications do extra checks on the GDS32.DLL file version. Based on a
|
|
lot of experiments, it has been determined that 6.3 is a safe "compatible"
|
|
version number to use, much better than "1.5".
|
|
|
|
During the installation process the installer checks to see if an
|
|
installation of InterBase or Firebird exists. If nothing is installed
|
|
it will write a patched gds32.dll into the <system> directory. If it detects
|
|
that any possible version of Firebird or InterBase may already be installed
|
|
it will not install the gds32.dll in the <system> directory. However
|
|
you can always do so later by using the new 'instclient.exe' tool.
|
|
|
|
It is intended that future versions of Firebird will not attempt to
|
|
install gds32.dll into the <system> directory and ultimately it will
|
|
be completely removed from the distribution.
|
|
|
|
This 'instclient.exe' tool can also install the FBCLIENT.DLL itself in the
|
|
Windows system directory. This can be preferred by some tools or
|
|
applications and we don't want to miss any use case.
|
|
|
|
instclient
|
|
Usage:
|
|
instclient i[nstall] [ -f[orce] ] library
|
|
q[uery] library
|
|
r[emove] library
|
|
|
|
where library is: fbclient | gds32
|
|
|
|
This utility should be located and run from the 'bin' directory
|
|
of your Firebird installation.
|
|
'-z' can be used with any other option, prints version
|
|
|
|
Purpose:
|
|
This utility manages deployment of the Firebird client library
|
|
into the Windows system directory. It caters for two installation
|
|
scenarios:
|
|
|
|
Deployment of the native fbclient.dll.
|
|
Deployment of gds32.dll to support legacy applications.
|
|
|
|
Version information and shared library counts are handled
|
|
automatically. You may provide the -f[orce] option to override
|
|
version checks.
|
|
|
|
Please, note that if you -f[orce] the installation, you might have
|
|
to reboot the machine in order to finalize the copy and you might
|
|
break some other Firebird or InterBase(R) version on the system.
|
|
|
|
|
|
|