www.mwasoftware.co.uk

Firebird is a relational database offering many ANSI SQL-92 features that runs on Linux, Windows, and a variety of Unix platforms. Firebird offers excellent concurrency, high performance, and powerful language support for stored procedures and triggers. It has been used in production systems, under a variety of names since 1981. Firebird is a commercially independent project of C and C++ programmers, technical advisors and supporters developing and enhancing a multi-platform relational database management system based on the source code released by Inprise Corp (now known as Borland Software Corp and perhaps now CodeGear) under the InterBase Public License v.1.0 on 25 July, 2000.

When InterBase was originally released as an Open Source product, We had been users for the previous five years; supplied it with some of our bespoke software developments, and found it a reliable and powerful relational database engine for both single system and client/server operations. Now that it is Open Source we shall be making even greater use of the product.

We have created our own set of Firebird Merge Modules for use with Windows Installer, and, in the interests of ensuring commonality with other developers, we have made our Merge Modules available for wider use. The most recent set of Merge Modules are made available under the  Initial Developer's Public License.

From Firebird 1.5.4 and 2.0.1 respectively, all of our Firebird Merge Modules are built using a common set of WiX scripts. These scripts ensure a consistent approach for installing Firebird Server (Classic or Super Server) and the Firebird Tools. This is a major upgrade from pervious practice for reasons outlined here.

The Merge Modules can also be used to support Firebird client applications. However, you may want to read this first.

The intended audience for these Merge Modules is Windows developers who want to install Firebird embedded with their applications and use Windows Installer (or one of its front ends e.g. WiX or recent versions of Installshield) to install their application. Not all of the Firebird distribution files are included in the Merge Modules. Specifically, developer tools, and examples are omitted. If you need these files then you need the full Firebird installation

These merge modules support:

  • Installation of either the Classic or Super Server versions of the Firebird Server.
  • Installation under Windows 9X, NT4/2K/XP/Vista.
  • Installation as the Local System User or as a non-privileged user.
  • Automatic configuration of the Windows Firebird (under XP SP2 onwards)
  • Automatic Upgrade of earlier versions.

All Merge Modules, scripts and example installations are made available under the Initial Developer's Public License.

Downloads

Example installations are available for

Note that Firebird 2.1.0 will not run under Windows NT4. 

About the Merge Modules

Separate Merge Modules are provided for

These are described below. See also:

 The Firebird Client (fbxxxClient.msm)

The Firebird Client Merge Module installs the fbclient.dll and the supporting firebird.msg and firebird.conf files. It also creates the Firebird installation registry entry. All other Firebird Merge Modules are dependent on this Merge Module i.e. it must be included in an installation when they are required. It can also be used on its own to support an application that uses the Firebird Client Library. All files are installed into the standard Firebird Installation folder (i.e.. \Program Files\Firebird\Firebird_1_5 or \Program Files\Firebird\Firebird_2_0).

The Firebird bin directory path is also appended to the PATH environment variable. This is useful for locating the fbclient.dll and for running the command line tools (see below).

For Firebird 2.0 onwards, the Merge Module will copy the firebird.conf file from an earlier installation (if present) instead of installing a new version of firebird.conf. The new version of firebird.conf is instead installed as firebird.conf.orig.

 The Firebird Command Line Tools (fbxxxtools.msm)

The Firebird Command Line Tools Merge Modules installs the command line tools (e.g. gbak, gsec, etc.) into the Firebird bin directory. use this Merge Module in installations that require these tools.

The client Merge Module must also be included when the command line tools merge module is included in an installation.

 The Firebird Super Server (fbxxxSuperServer.msm)

The Firebird Super Server Merge Modules installs and starts the Firebird Super Server. Under Windows NT/2K/XP, it is installed as a Service. Under Windows 9X, it is run as an application.

The merge module also installs the security database and "aliases.conf" file.

From Firebird 1.5 onwards, an earlier version of the security database, if found, will be upgraded to the new version and location. The upgrade process uses "gbak" and the embedded server in order to ensure that the integrity of the security database. Firebird 2.0 introduces a new schema for the security database and isql is also used to upgrade security database schema. In all cases, the upgrade utilities are packaged in the merge module as a single self extracting executable.

For Firebird 2.0 onwards, the Merge Module will also copy the aliases.conf file from an earlier installation (if present) instead of installing a new version of aliases.conf. The new version of aliases.conf is instead installed as aliases.conf.orig.

This merge module also provides a configurable interface that may be used to control how the server is stopped before and uninstall or upgrade. By default, the server is stopped automatically and without user intervention. A single configurable parameter is used "FirebirdServerStop" (Display Name "Server Manual Stop"). If this is set to "yes" then the automatic stop feature is disabled and, instead:

  • If the installer is run with a reduced User Interface then the install/uninstall will be aborted if the server is running, with an error message telling the user to stop the Firebird Server before restarting the install/uninstall.
  • If the installer is run with the full User Interface, then a dialog is displayed informing the user that a server is still running and giving the user the option of aborting the install/uninstall or allowing the operation to continue with the server automatically stopped as before.

This feature may be useful for operational sites where stopping a Firebird Server unintentionally could lose user data, and gives the user the chance to organise a graceful close down if needed.

When installing the Firebird Server under Windows XP SP2 or later, the Windows firewall is automatically configured to allow remote access to the Firebrid Server.

If an earlier version of Firebird or InterBase is detected then the install is abandoned an error message is displayed telling the user to uninstall this version first. This behaviour is necessary because the Merge Module does not necessarily know how to uninstall the previous version.

 The Firebird Classic Server (fbxxxClassicServer.msm)

This Merge Module is identical to the Super Server Merge Module except that it installs the classic server binary instead of the Super Server.

Note that when "Server Manual Stop" is used and the Classic Server is installed as a service, there is no Firebird Control Panel applet. Instead, the Computer Management console has to be used to stop the server manually. The API used to detect the Classic Server is not available under Windows NT and for Windows NT a Classic Server is always automatically stopped regardless of the "Server Manual Stop" setting.

 The Lock Down Super Server (fbxxxLDSuperServer.msm)

This variant of the Super Server Merge Module additionally creates a local machine user (FIREBIRDSQL) if it does not already exist and installs the Firebird Server as a service logged in under this user. The FIREBIRDSQL user is also given write permission to the firebird security database and the Firebird installation folder. A Personal Folder (\Documents and Settings\FIREBIRDSQL) is also created for the FIREBIRDSQL user.

The benefit of this approach is that it mimises the risk to the rest of the system from any security holes that may be found in Firebird in the future. The downside is that databases can only be created in folders for which the FIREBIRDSQL user has write permission. On installation, this is only true for "\Documents and Settings\FIREBIRDSQL" and subfolders. On the other hand, these folders should be inaccessible to other users of the system.

This merge module will not install on Windows 9X, NT or Windows XP Home. This is because neither of these versions of Windows support the required security API. Windows XP Home is deliberately crippled in this respect. If an attempt is made to install this merge module on any of these versions of Windows, a meaningful error messasge is displayed and the installed is aborted.

 The Lock Down Classic Server (fbxxxLDClassicServer.msm)

This Merge Module is identical to the Lock Down Super Server Merge Module except that it installs the classic server binary instead of the Super Server.

Note that when "Server Manual Stop" is used and the Classic Server is installed as a service, there is no Firebird Control Panel applet. Instead, the Computer Management console has to be used to stop the server manually. The API used to detect the Classic Server is not available under Windows NT and for Windows NT a Classic Server is always automatically stopped regardless of the "Server Manual Stop" setting.

 Known Issues and Bugs

When using the Firebird 2.0.3 merge modules for an installation that upgrades a Firebird 2.0.1 installation also installed using these merge modules on Windows XP/SP2 or later, the Windows Firewall may no longer be open for the Firebird Server. This is due to a missing condition in the 2.0.1 Merge Module. To avoid this problem, you must either:

  1. Tell your users to uninstall Firebird 2.0.1 Servers before upgrading to Firebird 2.0.3, or
  2. Ensure that your installation script schedules the "RemoveExistingProducts" action before the DoOpenFirewall action imported from the Merge Module. This is readily achieved by scheduling the "RemoveExistingProducts" action before the "InstallFinalize" action and after an "InstallExecute" action.