			Blaise Install Library for Delphi

Blaise Install (BIL) is a library containing functions for creating
windows install programs in Borland Delphi. BIL includes instructions 
& functions for:

	- Creating directories
	- Decompressing files
	- Adding Drivers/Aliases to Borland Database Engine (BDE)
	- Modifying INI files including
		ODBC.INI, ODBCINST.INI, WIN.INI
   - Add Program Items/Groups to the Windows Program manager

Blaise Install Demo can be retrieved from Compuserve Borland Delphi
Forum/Library Section (3rd Party Products).  The demo version includes:  

	- General instructions on how to use library
	- Limited library of install functions
	- Demo of install functions

A more comprehensive version of Blaise Install is available which
includes the above and the following:

	- Complete library of install functions
	- Source code for library
	- Examples of install programs created in Delphi

To purchase Blaise Install send $25.00 to:

		Blaise Install Library
		P.O. Box 7701
		Wilton, CT 06897-7701

   NOTE: CT residents include 6% sales tax
         US customers add $2.00 for shipping & handling
         International customers add $5.00 for shipping & handling

Support questions should be directed to Compuserve account 73112,2544.


   Delphi is a Trade Mark of Borland International Inc
   Visual Basic is a Trade Mark of Microsoft Corporation                      
   Visual C++ is a Trade Mark of Microsoft Corporation                      
   CompuServe is a Registered Trade Mark of CompuServe Incorporated


   Model:  bAdd2ProgMan( 
              DdeClientConv1: TDdeClientConv;
              sGroup: string; 
              sItem: string;
              sFile:string ):
                 Boolean

   Desc:   Creates a Program Group & Item.

   Params:    DdeClientConv1: TDdeClientConv;
                                   create by clicking on the System tab 
                                   on the visual controls,  then clicking 
                                   on the DdeClientConv 
              sGroup: string;      The Program Group Description
              sItem: string;       The Program Item Description
              sFile:string         The Program executable

   Returns:   True if added successfully

   Warning:   This function will do nothing if one of the bInstallFile
              functions was cancelled by the user.
-----------------------------------------------------------------------
   Model:  bBDEAddAlias(
              sItem: string; 
              TListParams: TStringList):
                 boolean

   Desc:      Add a BDE Alias to IDAPI.CFG

   Params:    sItem: string                The Alias you want to add
              TListParams: TStringList     A string list of all parameters
                                           that are needed for the Alias

   Returns:   True if alias was added properly

   Example:
      TListParams:= TStringList.create;
      TListParams.Add( 'DB INFO');
      TListParams.Add( 'TYPE=ODBC_XYZ' );
      TListParams.Add( 'PATH=' );
      TListParams.Add( 'DB OPEN' );
      TListParams.Add( 'USER NAME=' );
      TListParams.Add( 'ODBC DSN=MYDSN' );
      TListParams.Add( 'OPEN MODE=READ/WRITE' );
      TListParams.Add( 'SCHEMA CACHE SIZE=8' );
      TListParams.Add( 'SQLQRYMODE=' );
      TListParams.Add( 'LANGDRIVER=' );
      TListParams.Add( 'SQLPASSTHRU MODE=' );
      bBDEAddAlias('CTF',TListParams);
      TListParams.Clear;

   See Also:

   Warning:   This function will do nothing if one of the bInstallFile
              functions was cancelled by the user.

   Model:  bBDEAddDriver(
              sItem: string; 
              TListParams: TStringList):
                 boolean;

   Desc:      Add a BDE Driver to IDAPI.CFG

   Params:
              sItem: string                The Driver you want to add
              TListParams: TStringList     A string list of all parameters
                                           that are needed for the driver

   Returns:   True if Driver was added properly

   Example:
      TListParams:= TStringList.create;
      TListParams.Add( 'INIT' );
      TListParams.Add( 'VERSION=1.0' );
      TListParams.Add( 'TYPE=SERVER' );
      TListParams.Add( 'DLL=IDODBC01.DLL' );
      TListParams.Add( 'ODBC DRIVER=MY ODBC DRIVER' );
      TListParams.Add( 'DRIVER FLAGS=' );
      TListParams.Add( 'DB OPEN' );
      TListParams.Add( 'USER NAME=' );
      TListParams.Add( 'ODBC DSN=MYDSN' );
      TListParams.Add( 'OPEN MODE=READ/WRITE' );
      TListParams.Add( 'SCHEMA CACHE SIZE=8' );
      TListParams.Add( 'SQLQRYMODE=' );
      TListParams.Add( 'LANGDRIVER=' );
      TListParams.Add( 'SQLPASSTHRU MODE=' );
      bBDEAddDriver('ODBC_XYZ',TListParams);
      TListParams.Clear;

   Warning:   This function will do nothing if one of the bInstallFile
              functions was cancelled by the user.
-----------------------------------------------------------------------
   Model:     bCopyFile( 
                 sFromFile: string; 
                 sToFile: string ): 
                 boolean;

   Desc:      Copy a file from sFromFile to sToFile

   Params:
              sFromFile: string          The file to copy from
              sToFile: string            The file to copy to

   Returns:   True is file was successfully copied otherwise false

   Warning:   This function will do nothing if one of the bInstallFile
              functions was cancelled by the user.

   Model:     bCreateDirectory( 
                 sDirectory ): 
                    boolean     

   Desc:      Create a file directory

   Params:    sDirectory    The directory to create

   Returns:   True if the directory was created successfully

   Example:
         bCreateDirectory( 'C:\MyDir' );

   See Also:
-----------------------------------------------------------------------
   Model:     bDeleteFile( 
                 sFile: string ): 
                 boolean;

   Desc:      Delete the file sFile

   Params:
              sFile: string        The file to delete

   Returns:   True if the file was deleted

   Example:
              bDeleteFile( 'C;\Junk\Junk.TXT' )

   See Also:

   Warning:   This function will do nothing if one of the bInstallFile
              functions was cancelled by the user.

   Model:     bInstallFile( 
                   sFromFile: string; 
                   sToFile: string; 
                   iCopyType: Integer;
                   sDir: string )
                   :Boolean;

   Desc:      This function decompresses sFromFile into a file sToFile.
              It gets sFromFile from the drive/directory specified in
              SetInstallFromDir().  

              Acceptable values for iCopyType are:
                  fiSameDateTimeIgnore       If the files are the same
                                             date/time don't decompress
                  fiExistsIgnore             If the file exists don't 
                                             overwrite it
                  fiExistsOverwrite          If the file exists 
                                             overwrite it


              The file is put into a directory based on the value put 
              in sDir:

                  sDir           Directory
                  -----          ----------
                  'P'            The program directory  ( based on 
                                 value supplied in SetInstallToDir() )
                  'I'            The IDAPI Directory
                  'L'            The IDAPI Language Drivers Directory
                  'W'            The Windows Directory
                  'S'            The Windows System Directory
                  Path String    A string that represents a path to put
                                 the file into


   Params:
              sFromFile: string  The compressed file name
              sToFile: string    The decompressed file name
              iCopyType: Integer Integer code that tells when to copy
              sDir: string       A string that tells you where to put 
                                 the new file.

   Returns:   True if files match when completed

   Note:      This function decompresses files. To create a compressed 
              file you can use compress.exe.  This program can be 
              obtained from either:
                       Microsoft Visual Basic
                       Microsoft Visual C++
                       Download from CompuServe
                           MSSNA/3RD PTY-UNSUPPORTED Forum/Library
 
   Example:

      - Decompress A:\ODBC.DL_ to the windows system directory ODBC.DLL
        (ex: C:\WINDOWS\SYSTEM\ODBC.DLL)  

      SetInstallFromDir( 'A:\' );
      bInstallFile( 'ODBC.DL_', 'ODBC.DLL', fiSameDateTimeIgnore, 'S');

      - Decompress A:\MyProg.EX_ to the program directory 
        (C:\MyDir\MyProg.EXE)

      SetInstallToDir( 'C:\MyDir' );
      SetInstallFromDir( 'A:\' );
      bInstallFile( 'MyProg.EX_', 'MyProg.EXE', fiSameDateTimeIgnore, 'P');

   See Also:

       SetInstallToDir
       SetInstallFromDir

   Warning:   This function will do nothing if one of the bInstallFile
              functions was cancelled by the user.
-----------------------------------------------------------------------
   Model:     bWriteProfile( 
                 sFile: string;  
                 sGroup: string; 
                 sItem: string; 
                 sValue: string):
                    Boolean

   Desc:      Put a value (sValue) into an INI file (sFile) in a group
              (sGroup) with an Item Key

   Params: 
                 sFile: string      The INI file to edit
                 sGroup: string     The group to edit
                 sItem: string      The Item to edit
                 sValue: string     The value to give to the item

   Returns:   True if added successfully, otherwise false.

   Example:
              bWriteProfile( 'c:\MyProg\MyProg.INI',
                            'DATABASE',
                            'MYDATABASE'
                            'C:\MyProg\MyProg.DAT');

              This line puts the following into c:\MyProg\MyProg.INI
              [DATABASE]
              MYDATABASE=C:\MyProg\MyProg.DAT

   Warning:   This function will do nothing if one of the bInstallFile
              functions was cancelled by the user.

   Model:         sBackUpByNumber( cFile: String):
                               String

   Desc:          Backup a file. The backup files name is the same as
                  the file that is being backed up.  The extension is
                  a sequential number.

   Params:        cFile          A file to backup

   Returns:       The backedup file name

   Example:       
         cIDAPI := sReadProfile( sGetWinDir + '\WIN.INI',
                                 'IDAPI', 'CONFIGFILE01', '');
         sBackUpByNumber( cIDAPI );

         will return 'C:\WINDOWS\WIN.1' the first time it is run
         will return 'C:\WINDOWS\WIN.2' the second time it is run

   See Also:

-----------------------------------------------------------------------
   Model:     SetInstallFromDir( 
                 sInstallFrom: String );

   Desc:      Sets the install from directory to sInstallFrom.
              This is the Drive/Directory where the install programs
              come from.

              This function sets a static variable that will be used by
              the bInstallFile function. This static varable will tell
              bInstallFile() where to get files it is copying.

   Params:    sInstallFrom  The new directory you are copying program
                            files from.

   Example:

      - Set directory to a directory supplied in a Edit Box
      SetInstallFromDir( EditInstallFrom.Text );

      - Set Directory to directory in a string
      SetInstallFromDir( 'A:\' );


   See Also:

       bInstallFile

   Model:     SetInstallToDir( 
                 sInstallTo: String );

   Desc:      Sets the install to directory to sInstallTo.
              This is the Drive/Directory where programs are copied to.

              This function sets a static variable that will be used by
              the bInstallFile function. This static varable will tell
              bInstallFile() where to put program files it is copying.

   Params:    sInstallTo    The new directory you are copying program
                            files to.

   Example:

      - Set directory to a directory supplied in a Edit Box
      SetInstallToDir( EditInstallTo.Text );

      - Set Directory to directory in a string
      SetInstallToDir( 'C:\MYDIR' );

   See Also:

       bInstallFile
-------------------------------------------------------------------------
   Model:         sGetPath( cFile: String):
                               String

   Desc:          Returns a path from a fully qualified file name

   Params:        cFile          A file name

   Returns:       The path of the file name

   Example:       Get directory exe is running
               
                  sGetPath(Application.ExeName);

   See Also:

-----------------------------------------------------------------------
   Model:         sGetProgDir

   Desc:          Returns a string that represents the Program
                  Drive & Directory.

                  The Program Directory is set with the SetInstallToDir
                  function.

   Params: 

   Returns:       sGetProgDir

   Example:

   See Also:

       SetInstallToDir

   Model:         sGetSysDir

   Desc:          Returns a string that represents the Windows
                  System Drive & Directory.

   Params: 

   Returns:       sGetSysDir

   Example:

   See Also:
-----------------------------------------------------------------------
   Model:         sGetWinDir

   Desc:          Returns a string that represents the Windows
                  Drive & Directory.

   Params: 

   Returns:       sGetWinDir

   Example:

   See Also:
-----------------------------------------------------------------------
   Model:     sReadProfile( 
                 sFile: string;  
                 sGroup: string; 
                 sItem: string; 
                 sDefault: string):
                    String

   Desc:      Get a value string in an INI file (sFile) in a group
              (sGroup) with an Item Key. If no value is found return
               the default value.

   Params: 
                 sFile: string      The INI file to read
                 sGroup: string     The group to read
                 sItem: string      The Item to read
                 sDefault: string   The default value to give to the item

   Returns:   The string in the INI file

   Example:
              sReadProfile( 'c:\MyProg\MyProg.INI',
                            'DATABASE',
                            'MYDATABASE'
                            '');

              This call gets c:\MyProg\MyProg.DAT from the following 
              example in c:\MyProg\MyProg.INI

              [DATABASE]
              MYDATABASE=C:\MyProg\MyProg.DAT

   Warning:   This function will do nothing if one of the bInstallFile
              functions was cancelled by the user.

   Model:     sTempFile: 
                 string;

   Desc:      Create a temporary file name.  This file name is located
              in the directory described in the TEMP enviromental 
              variable.

   Params:

   Returns:   A temporary File Name

   Example:

   See Also:

   Warning:   This function will do nothing if one of the bInstallFile
              functions was cancelled by the user.

               LIMITED WARRANTY

THIS PROGRAM, INSTRUCTION MANUAL, AND REFERENCE MATERIALS ARE SOLD 
"AS IS," WITHOUT WARRANTY AS TO THEIR PERFORMANCE, MERCHANTABILITY, 
OR FITNESS FOR ANY PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE 
RESULTS AND PERFORMANCE OF THIS PROGRAM IS ASSUMED BY Y0U.

HOWEVER, TO THE ORIGINAL PURCHASER ONLY, THE PUBLISHER WARRANTS THE 
MAGNETIC DISKETTE ON WHICH THE PROGRAM IS RECORDED TO BE FREE FROM 
DEFECTS IN MATERIALS AND FAULTY WORKMANSHIP UNDER NORMAL USE FOR A 
PERIOD OF NINETY DAYS FROM THE DATE OF PURCHASE. IF DURING THIS 
NINETY-DAY PERIOD THE DISKETTE SHOULD BECOME DEFECTIVE, IT MAY BE 
RETURNED TO THE PUBLISHER FOR A REPLACEMENT WITHOUT CHARGE, PROVIDED 
YOU HAVE PREVIOUSLY SENT IN OUR LIMITED WARRANTY REGISTRATION CARD TO 
THE PUBLISHER OR SEND PROOF OF PURCHASE OF THE PROGRAM.

YOUR SOLE AND EXCLUSIVE REMEDY IN THE EVENT OF A DEFECT IS EXPRESSLY 
LIMITED TO REPLACEMENT OF THE DISKETTE AS PROVIDED ABOVE. IF FAILURE 
OF A DISKETTE HAS RESULTED FROM ACCIDENT OR ABUSE, THE PUBLISHER SHALL 
HAVE NO RESPONSIBILITY TO REPLACE THE DISKETTE UNDER THE TERMS OF THIS 
LIMITED WARRANTY.

ANY IMPLIED WARRANTIES RELATING TO THE DISKETTE, INCLUDING ANY IMPLIED 
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ARE 
LIMITED TO A PERIOD OF NINETY DAYS FROM DATE OF PURCHASE. PUBLISHER SHALL 
NOT BE LIABLE FOR INDIRECT, SPECIAL, OR CONSEQUENTIAL DAMAGES RESULTING 
FROM THE USE OF THIS PRODUCT. SOME STATES DO NOT ALLOW THE EXCLUSION OR 
LIMITATION OF INCIDENTAL OR CONSEQUENTIAL DAMAGES, SO THE ABOVE 
LIMITATIONS MIGHT NOT APPLY TO YOU. THIS WARRANTY GIVES YOU SPECIFIC 
LEGAL RIGHTS, AND YOU MAY ALSO HAVE OTHER RIGHTS WHICH VARY FROM STATE 
TO STATE.

-------------------------------------------------------------------------

                      WARRANTY REGISTRATION CARD

NAME:

COMPANY:

ADDRESS:

CITY:

STATE:

ZIP CODE:

TYPE OF BUSINESS:

PROGRAM PURCHASE:

SERIAL NUMBER:

DATE PURCHASED:

COMPUTER BRAND:


