www.mwasoftware.co.uk

The ibclient.msm Merge Module comprises the following files:

 

  • gds32.dll

The Interbase API

  • interbase.msg

Interbase messages

  • license.txt

Interbase licence conditions (text format)

  • license.htm

Interbase licence conditions (html format)

  • How2GetDocs.txt

Information how to download the Interbase document set

  • ReleaseNotes.pdf

Interbase 6 Release Notes

The Merge Module also includes ‘ibsetup.dll’. This is a set of helper functions used to perform custom actions required to install interbase but not provided as part of the Windows Installer standard actions.

The Merge Module is dependent on the Microsoft ‘C’ Library Merge Module which must also be merged into an installation script when ibclient.msm is merged. This contains the msvcrt.dll file. Note that tools such as Installshield Express 3 automatically detect and resolve this dependency.

 Installation Procedures

When merged into a installation script, the Merge Module adds the following functionality:

  1. Using registry keys and the current Path, a search is made for an existing copy of gds32.dll. If this is found and the version number is 4 or lower, or not present, or a copy of gds32.dll is found anywhere other than the System Folder, then the installation is abandoned with an error message.
  2. The Interbase root directory is determines. This is either <ProgramFiles>\Borland\Interbase (by default) or is the directory specified in the register under:
    • HKEY_LOCAL_MACHINE\Software\Interbase Corp\
      Interbase\CurrentVersion\RootDirectory, or
    • HKEY_LOCAL_MACHINE\Software\Borland\Interbase\CurrentVersion\
      RootDirectory.

with the latter taking precedence. No user interface is provided to amend this choice with is held in the property

IBINSTALLPATH.C796EAF0_E0E0_11d4_87E6_00C0DFE1D3D1

Named according to Microsoft recommendations for Merge Modules. Generally there should be no reason not to accept the value determined above. However, it is permissible to change it as long as Interbase has not already installed on the system when modification could lead to two copies being installed.

  1. On installation, gds32.dll is installed into the System Folder, over-writing a previous version with a lower version number, if any.
  2. interbase.msg is installed into the Interbase folder if and only if a new copy of gds32.dll is installed. Otherwise any existing copy of the file is left unchanged.
  3. Licence.txt, license.html and ReleaseNote.pdf are installed into the Interbase folder overwriting any earlier copies.
  4. How2GetDocs.txt is copied into the Doc subdirectory of the Interbase folder, overwriting any earlier copy. Note that this file is not installed in the component with the component ID ibdocs.D1E95215_E22C_11d4_87E8_00C0DFE1D3D1 is being installed or is already installed. The referenced component ID is for the Interbase 6 Documentation Package and clearly it does not make sense to install this file if the full documentation set is already available.
  5. The System’s "Services" file is searched for the gds_db service name. If not found then an entry is made for gds_db on port 3050/tcp.
  6. Under registry key

HKEY_LOCAL_MACHINE\Software\Borland\Interbase\CurrentVersion\

entries are made for the RootDirectory and Version, set respectively to the Interbase Folder path used for the installation and to "WI-V6.0.0".

7. The "UseCount" values at each level of the registry hierarchy are set and respected.

NNote that the registry value "UseCount" is usually used to identify when the Interbase registry entries can be removed. However, Windows Installer automatically does this but uses the ComponentID instead to control this mechanism. For such reasons, it is usually better to uninstall older versions of Interbase before installing using Windows Installer.

 The ibsetup.dll file

This function library is included in the ibclient.msm Merge Module as a member of the "binary table" under the primary key

IBSetupdll.C796EAF0_E0E0_11d4_87E6_00C0DFE1D3D1

This dll provides the following functions:

 

  • IsIBRunning

Checks to see if the IB Guardian or Server is running and displays an error message and force termination of the installation if either programs is running.

  • CheckGDS32_1

Checks the Version information in the Installation Script Property "GDS32_FN1"which is assumed to be a path to a copy of gds32.dll. Displays an error message if no version information, older than version 5 or the file is not in the SystemFolder.

  • CheckGDS32_2

Checks the Version information in the Installation Script Property "GDS32_FN2"which is assumed to be a path to a copy of gds32.dll. Displays an error message if no version information, older than version 5 or the file is not in the SystemFolder.

  • CheckGDS32_3

Checks the Version information in the Installation Script Property "GDS32_FN3" which is assumed to be a path to a copy of gds32.dll. Displays an error message if no version information, older than version 5 or the file is not in the SystemFolder.

  • Search4GDS32

Searches the paths defined by the PATH environment variable for a copy of gdes32.dll. Displays an error message if any copy found has no version information, is older than version 5 or not in the SystemFolder.

  • AddService

Checks the Services file for th gds_db entry and adds one if not found.

  • IncUseCounts
Creates/Increments the UseCount registry values at each level of the InterBase registry tree.
  • DecUseCounts
Removes/Decrements the UseCount registry values at each level of the InterBase registry tree.

Note that all functions have the same function signature as specified for a Custom Action included in the dll.