











                                     Install-Pro







                                     User's Guide

                                         and

                                   Reference Manual








                       Copyright 1991-1993 DB/Soft Publishing.
                                 All rights reserved.








                                Printed in the U.S.A.

                             Version 3.00, first printing







          Copyright

          This software is protected under  United States Copyright Law and
          International Treaty provisions.  DB/Soft Publishing reserves all
          rights to Install-Pro except for the following:

          A limited license is hereby granted allowing you use and evaluate
          Install-Pro for up  to 30 days.  You may also distribute unregis-
          tered  copies  of  Install-Pro  in its  entirety  to  any parties
          interested provided no modification of the files in the  Install-
          Pro archive occurs.   The maximum transaction related to  selling
          media containing unregistered copies of Install-Pro (eg Shareware
          vendors)  may not exceed $10.00.  Conversion to a more convenient
          archive format is allowed.  All other uses of Install-Pro violate
          this license and are hereby expressly disallowed.

                     Copyright 1991-1993, by DB/Soft Publishing,
                                 All Rights Reserved.

                    3200 Truxel Rd #199, Sacramento, CA 95833 USA

                              Telephone: (916) 927-6951

                                 BBS: (916) 927-2349

          Limited Warranty

          DB/Soft Publishing  grants no warranties, express  or implied, by
          statute  or otherwise,  regarding this  software and  its related
          materials, their fitness for any purpose, their quality, or their
          merchantability.  In  no way shall  DB/Soft Publishing be  liable
          for  any  special, consequential,  other  damages  for breach  of
          warranty.

          This Statement  shall be  construed, interpreted and  governed by
          the laws of the State of California.

          This  warranty will be replaced by a limited 90-day warranty that
          covers the diskette, software and documentation upon registration
          of Install-Pro.   Further, the limited  license will be  replaced
          with a license that  allows royalty-free distribution of Install-
          Pro with your applications.







          Registering Install-Pro

          Install-Pro is an  example of software marketed  under the Share-
          ware concept.  The premise is  simple:  you may evaluate Install-
          Pro  for a  reasonable period  of time  (30 days  maximum) during
          which you  decide if it is  a program worth owning  and using for
          installing your applications.   If so, you must register Install-
          Pro,  using order.doc  for  ordering information.    If, after  a
          reasonable evaluation period, you decide not to register Install-
          Pro, you then must discontinue its use.

          This provides  me with  a way to  market software  with very  low
          advertising  overhead, which  results in  a price  savings passed
          directly on to you.  And, it provides you with a chance to 'play'
          with my product and decide if it meets your needs. 

          As  an  incentive to  speed  the  registration process,  a  minor
          modification  to Install-Pro  processing occurs in  the Shareware
          version.  Prior  to displaying your  opening screen(s), an  order
          information notice  is displayed.  Other than this single modifi-
          cation, all features that are  included in the registered version
          of Install-Pro are available here.


          Getting Help_____________________________________________________

          There are several ways of contacting the author, Jeff Dunlop, for
          technical assistance if you get stuck.  From cheapest and slowest
          to most expensive and fastest:

               - Fidonet's SHAREWRE echo

               - ILink's Shareware conference

               - Fidonet netmail at 1:203/16

               - Compuserve mail at 72147,3055

               - Internet at 72147.3055@compuserve.com

               - The DB/Soft Online at (916) 927-2349

          The best method of  contacting the author depends on the  type of
          assistance you need.   If it's a rather complicated  problem, you
          will probably be far  better served if  you prepare a message  in
          advance and  upload it with the script in question to the DB/Soft
          Online.  We can then test it and offer suggestions.  If it's just
          a  question  or  suggestion about  Install-Pro  capabilities, the







          ILink  or Fidonet  conferences will work  best.   Fidonet netmail
          privileges can be difficult  to get, but offer excellent  timeli-
          ness at very low connect  time.  Check your local Fidonet  BBS if
          interested.







                                  Table of Contents


               Chapter 1 Introduction .................................. 7
                    Features ........................................... 7
                    Requirements ....................................... 9
                    Getting Started .................................... 10
                    Install-Pro Scripts ................................ 10
                    Documentation Conventions .......................... 11

               Chapter 2 Creating the screens .......................... 13
                    BANNER ............................................. 13
                    HELLO .............................................. 14
                    HELLOBREAK ......................................... 14
                    GOODBYE ............................................ 14
                    GOODBYEBREAK ....................................... 15
                    COLORS ............................................. 15

               Chapter 3 Building the entry forms ...................... 17
                    USER ............................................... 17
                    DESCRIBE ........................................... 20

               Chapter 4 Transferring files ............................ 21
                    SUBDIR ............................................. 21
                    FILE ............................................... 22
                    Splitting Files .................................... 24
                    UNZIP .............................................. 25
                    ATTRIBSAVE ......................................... 27

               Chapter 5 Changing Disks and Terminating ................ 28
                    FIRSTDISK .......................................... 28
                    DISK ............................................... 28
                    END ................................................ 28
                    CHAIN .............................................. 29

               Chapter 6 Verifying the target environment .............. 30
                    SPACE .............................................. 30
                    CPU ................................................ 30
                    FPU ................................................ 30
                    RAM ................................................ 30
                    EMS ................................................ 31
                    VCPI ............................................... 31
                    DPMI ............................................... 31
                    XMS ................................................ 31
                    VER ................................................ 32
                    CONFIGFILES ........................................ 32

                                          5







                    PATH ............................................... 33

                    SET ................................................ 33


               Chapter 7 Running external programs and viewing files ... 34
                    RUN ................................................ 34
                    PRERUN ............................................. 36
                    RUNERRNOTIFY ....................................... 37
                    VIEW ............................................... 37

               Chapter 8 Customizing Install-Pro ....................... 38
                    ONERROR ............................................ 38
                    Linking external text .............................. 38

               Chapter 9 Miscellaneous ................................. 40
                    System Variables ................................... 40
                    Command Line Switches .............................. 41
                    Error Messages ..................................... 40
                    Critical Errors .................................... 46



























                                          6







          Chapter 1

          Introduction_____________________________________________________

          Install-Pro is the flexible and affordable solution to the common
          problem of  transferring an application or  information base from
          distribution  media to its  destination directories.   Typically,
          the options  have been to write  a batch file, to  write a custom
          program or to shell out hundreds of dollars for an anemic instal-
          lation utility.  Until Install-Pro.

          Install-Pro is a script driven  professional installation program
          that will automate the  installation process while providing your
          customers  with a  crisp,  easy-to-use interface.   Unlike  other
          script-driven installation  utilities,  Install-Pro is  heavy  on
          features,  intelligent in  its operation,  and light  on resource
          requirements.   Any application can be ready to install to multi-
          ple directories from  multiple  disks in a matter of minutes.   A
          brief list of features includes: 

               -    Professional look  and feel for a  better first impres-
                    sion.
               
               -    You customize  multiple  welcome screens  and  good-bye
                    screens to your own needs. 

               -    Up to 999 installation disks and unlimited installation
                    files.

               -    Comprehensive environment  detection, including minimum
                    CPU,  floating point  processor, installed  RAM, MS-Dos
                    version, EMS, XMS, VCPI and DPMI.

               -    Powerful system variables for CPU, math coprocessor and
                    video  adapter that allow  your installation  to behave
                    differently depending on the target hardware.

               -    Display your readme files  at the end of the  installa-
                    tion in a nifty file viewer.
            
               -    Intelligent  FILES=,  PATH  and  SET  VAR=  update  for
                    Config.sys and Autoexec.bat.
            
               -    All Install-Pro  text strings may  be optionally  rede-
                    fined via an external file.

               -    Files  may be split into up to  9 pieces for huge files
                    spanning multiple disks.
            

                                                                          7







                               Chapter 1, Introduction
          _________________________________________________________________
                                                                           
                    

               -    Files  in the .zip format may be extracted.  All direc-
                    tories stored in a .zip file are automatically created.
                    There is  an .arj  version of Install-Pro  available on
                    the DB/Soft Online for registered users.
            
               -    You define the  directory prompts and  default destina-
                    tion directories that the user sees.

               -    You optionally define the installation disk names (such
                    as "Utilities Disk" or "Install Disk")
            
               -    You  optionally  specify  the disk  space  requirements
                    associated  with  all  portions  of  the  installation,
                    including  optional  portions. (The  user is  given the
                    option to try to continue with installation if short on
                    disk space.)
            
               -    Up to 8 user-defined destination directories.
            
               -    Unlimited programmer-defined directories child to user-
                    defined directories. 
            
               -    Each  destination  directory may  either  be optionally
                    locked or the user may be allowed to change it.
            
               -    "Run"  commands  allow  your  installation  to  include
                    custom  auxiliary programs  or batch files  to complete
                    special tasks. The installation  diskette directory(s),
                    any  of  the  user-defined directories,  and  any other
                    arguments you  choose can be specified  anywhere on the
                    command line.
            
               -    Portions of an installation may be specified as option-
                    al, prompting  the user  whether  the optional  portion
                    should be installed.
            
               -    Multi-Module installations handled seamlessly.
            
               -    Files may be automatically overwritten, prompted before
                    overwriting  a newer file,  prompted before overwriting
                    any file or protected completely from overwrite.
            
               -    Supports VGA/EGA 50/43 line text modes if detected.
            

          8




                               Chapter 1, Introduction
          _________________________________________________________________
                                                                           
                    

               -    Robust  error  handling,  including  a  custom critical
                    error handler that won't scare the  dickens out of your
                    users, and  including descriptive fatal  error messages
                    (no "error  14 at xxxx:yyyy" found in this program!)


          Requirements_____________________________________________________

          Install-Pro runs  under PC-DOS and MS-DOS versions 3.0 and above.
          A minimum of 220K of  RAM is required.  More memory  is desirable
          if  external  programs  are run  from  Install-Pro,  or if  large
          scripts are processed.

          There is virtually no limit to the size of script files.

          Script preparation  will  require a  text  editor that  does  not
          insert formatting codes into the text.































                                                                          9




                               Chapter 1, Introduction
          _________________________________________________________________
                                                                           
                    

          Getting Started__________________________________________________

          Before you can really  build an installation script, you  need an
          application that needs to  be installed.  Gather enough  disks to
          hold  your  installation, format  them  if needed,  and  copy the
          application files over  to the disks.   Record what files  are on
          which disks for later  reference, and while you're at  it, record
          the  order that the disks are to  be installed.  Included on your
          Install-Pro  disk  are two  files to  aid  you in  recording this
          information.   They are  named MASTER.DOC  and DISKWKS.DOC.   For
          each installation you  should print out  one copy of  MASTER.DOC,
          and  a copy of DISKWKS.DOC  for every disk  in your installation.
          If you'll  be installing your application  from compressed files,
          then  you want to compress your files before transferring them to
          diskettes.

          If  you have huge files that will  need to be split onto multiple
          disks, you may want to take  a peek at the separate documentation
          for split.exe.   All that you  really need to know  is that split
          will  split filename.ext  into filename.ex1,  filename.ex2, etc.,
          and that  filename.ex1 must not  be copied  to a  higher-numbered
          disk than filename.ex2.

          Once you have  a good idea of what files  need to be transferred,
          then you're ready to start planning your installation.


          Install-Pro Scripts______________________________________________

          Install-Pro is script-driven.  That is to say, it looks onto your
          distribution  disks  for instructions  about  how  you want  your
          installation  to behave.  The  required instructions are found in
          script files,  one to a  disk.  The  script file  on Disk One  is
          named  INSTALL.001; the  script file  on the  next disk  is named
          INSTALL.002, and so on.  

          Install-Pro is also largely global in nature.  That is,  it reads
          the  entire script  on the  current distribution  diskette before
          doing  any processing.    Because of  this,  there are  very  few
          restrictions  on the location of most commands.  The major excep-
          tion  is that USER commands  must appear before  any command that
          references  a  label defined  in  that  USER command.    However,
          Install-Pro's  execution  is very  strictly  defined  and can  be
          described as follows:

          Disk 1
          ------

          10




          Equipment checks are performed.
          The opening screen(s) are displayed.
          The optional segments form is displayed.
          The main user entry form is displayed.
          PRERUN commands.
          FILE commands.
          UNZIP commands.
          VIEW commands.
          RUN commands.

          Disk 2 through Disk n - 1 (n = number of disks in installation)
          ---------------------------------------------------------------

          PRERUN commands.
          FILE commands.
          UNZIP commands.
          VIEW commands.
          RUN commands.

          Last Disk
          ---------

          PRERUN commands.
          FILE commands.
          UNZIP commands.
          VIEW commands.
          RUN commands.
          The closing screen(s) are displayed.
          Install-Pro either chains to a new copy of Install-Pro or ends.

          Because  of  this  strict   order  of  operations,  USER,  HELLO,
          HELLOBREAK and  Equipment commands  are legal but  meaningless on
          any  disk other than the  first disk.   GOODBYEBREAK commands are
          legal on any disk, but not processed until the end of the instal-
          lation.


          Documentation conventions________________________________________

          In  general,  command parameters  appear in  three  forms.   If a
          paremeter  appears in square brackets  ( [] ),  that parameter is
          optional.   If it  appears in angle  brackets (  <> ), it  is re-
          quired.   If it appears in quotes ( "" ), it is both required and
          must be surrounded  by quotation marks.  The text that appears in
          brackets may  either be  a sub-command or  a variable  parameter.
          The proper use of  the parameter is determined by looking  up the
          documentation  for  that  particular  parameter  below  the  main
          heading for the command.

          Throughout  the text,  commands  appear as  all capital  letters.
          This is to  remove any ambiguity as to whether  a particular word
          is the name of a command or is being used  in some other context.

                                                                         11




          However, Install-Pro is not case sensitive.  Commands, labels and
          directory  paths can appear in any combination of upper and lower
          case.


















































          12




          Chapter 2

          Creating the Opening and Closing screens_________________________

          All commands that define the opening screen(s), BANNER, HELLO and
          HELLOBREAK,  must appear in a file named INSTALL.001 on the first
          diskette of your installation set.  These commands usually appear
          at the top of INSTALL.001.

          The format of the opening screen is similar to the following:


      ±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±
      ±±±±±±±±±ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿±±±±±±±±±
      ±±±±±±±±±³Welcome to the Install-Pro Installation Program ³±±±±±±±±±
      ±±±±±±±±±ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ±±±±±±±±±
      ±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±
      ±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±
      ±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±
      ±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±
      ±ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿±
      ±³ This program is going to transfer the Install-Pro files from   ³±
      ±³ the installation diskette to the directory(s) that you enter   ³±
      ±³ on the screen to follow.                                       ³±
      ±³                                                                ³±
      ±³                  Press a key to continue.                      ³±
      ±ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ±
      ±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±


          The top message that you see is created with the  BANNER command.
          The  bottom message is created  with a series  of HELLO commands.
          If multiple  HELLO screens are  defined, then each  keypress will
          display the following screen until all have been shown.


          BANNER___________________________________________________________

          Syntax:  BANNER "Any text enclosed in quotes"
            
          The BANNER command identifies the line of text to be shown to the
          user as the program name on the opening screen.  Up to 71 charac-
          ters are allowed, and a box surrounding the text auto-sizes for a
          neat appearance.  If the particular text used  creates unbalanced
          sides, insert  an extra space on  the errant side to  even things
          out.
            
          If quotes are  omitted, only the first word  after BANNER will be
          detected. If  no text is detected after  BANNER, Install-Pro will
          abort with an error  message.  The BANNER command must be defined
          in install.001 to have any effect.
            

                                                                         13




                           Chapter 2, Creating the screens
          _________________________________________________________________

          HELLO____________________________________________________________

          Syntax:  HELLO  "Any text enclosed in quotes"
            
          The HELLO  command identifies a line  of text to be  shown to the
          user on  the welcome screen.  Each line may have a maximum length
          of  71 characters.  Characters in excess of 71 are ignored (trun-
          cated.)  All  of the HELLO text lines are  displayed in the order
          detected in a single window, which automatically  sizes itself to
          the length and height of the combined HELLO display.  If you want
          empty  lines included, indicate this  with a set  of empty quotes
          ("").
            
          Up to 13 HELLO lines will  fit on a single screen.  If  more than
          13  HELLO lines  are defined  without any  intervening HELLOBREAK
          commands  (described below),  the subsequent  lines will  be dis-
          played on the  next screen.   Any number of  HELLO screens  (each
          autosizing, with  a capacity of  up to 13  lines) can be  defined
          within the confines of available memory.
            

          HELLOBREAK_______________________________________________________

          Syntax:  HELLOBREAK
            
          This  command signifies that the following HELLO command is to be
          displayed on  a new screen.  Use this if you have special format-
          ting needs that require fewer than 13 lines to a screen.

          The format of the closing screen is similar to the following:

                   ±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±
                   ±ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿±
                   ±³ The installation has completed normally.   ³±
                   ±³                                            ³±
                   ±³          Press a key to exit...            ³±
                   ±ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ±
                   ±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±

          This  message that  you  see here  is  created with  a  series of
          GOODBYE  commands.   If multiple-screen  messages  are necessary,
          they can be separated if needed with GOODBYEBREAK commands.


          GOODBYE__________________________________________________________
            
          Syntax: GOODBYE "So-long text goes here"
            


          14




                           Chapter 2, Creating the screens
          _________________________________________________________________

          This  command is  used  to  build  an end-of-install  message  to
          display to  your users  after successful completion  of installa-
          tion.  It  can be up  to 71 characters  long, and like  the HELLO
          lines, the GOODBYE  text is displayed  in an auto-sizing  window.
          If you want to specify an  empty line, use GOODBYE "".  Somewhere
          near the bottom of the GOODBYE text, you should include something
          to the effect that a keypress will exit the program.
            
          Any  number  of GOODBYE  lines can  be  defined, anywhere  in the
          script  file(s). After  14  GOODBYE lines  have been  encountered
          without  an intervening GOODBYEBREAK command (described below), a
          page break is automatically inserted by Install-Pro.
            
          When  an install.??? file is processed that is terminated with an
          END  command, after all  transfers have taken  place, the GOODBYE
          messages are displayed, after which the program terminates.  

          There are two events  that can occur that will  cause the closing
          screen to  not be displayed.   One is if you  choose to terminate
          with a  CHAIN command, which would  load a new installation.   In
          this instance, the closing screen defined with the last installa-
          tion processed  would be the one  displayed.  The other  is if an
          unrecoverable error  occurs.    In  this instance  the  error  is
          described to the extent possible, and Install-Pro terminates (see
          Chapters 8 and 9 for details).
            

          GOODBYEBREAK_____________________________________________________
            
          Syntax: GOODBYEBREAK
            
          This command tells Install-Pro that the next GOODBYE line defined
          in the script is to appear at the top of a new page.

                                New with version 3.00

          COLORS___________________________________________________________

          Syntax: COLORS <Reg Fore>  <Reg Back> <Err Fore> <Err  Back> <Ent
          Fore>  <Ent  Back>  <Bottom  Fore> <Bottom  Back>  <Shadow  Fore>
          <Shadow Back> <Background Fore> <Background Back>

          The COLORS  command requires  exactly twelve  hexadecimal digits,
          from 0 to F, where 0 through F represent the following colors:

          BLACK           0
          BLUE            1
          GREEN           2
          CYAN            3

                                                                         15




          RED             4
          MAGENTA         5
          BROWN           6
          LIGHTGREY       7
          DARKGREY        8
          LIGHTBLUE       9
          LIGHTGREEN      A
          LIGHTCYAN       B
          LIGHTRED        C
          LIGHTMAGENTA    D
          YELLOW          E
          WHITE           F

          The default  COLORS setting for Install-Pro is COLORS 7 1 7 4 0 7
          9 7 8 0 7 1 and is interpreted as:

          Regular Windows, Light Grey on Blue
          Error Windows, Light Grey on Red
          Entry Fields, Black on Light Grey
          Bottom Line, Light Blue on Light Grey
          Shadows, Dark Grey on Black
          Background, Light Grey on Blue

          Each  background color (that is, each second number in the COLORS
          command) must be in the range of 0 through 7.  This is  a limita-
          tion in IBM PC video architecture.



























          16




          Chapter 3

          Building the Entry Forms_________________________________________

         ±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±
         ±ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿±
         ±³             Optional Installation Selection               ³±
         ±ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ±
         ±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±
         ±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±
         ±ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿±
         ±³Please press your spacebar to check any of these optional  ³±
         ±³installation segments that you wish to include.            ³±
         ±³                                                           ³±
         ±³           ( ) Sample Files                                ³±
         ±³                                                           ³±
         ±ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ±
         ±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±

    ±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±
    ±±±±±±±±±±±±±±±±ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿±±±±±±±±±±±±±±±±
    ±±±±±±±±±±±±±±±±³     Destination Directory Entry       ³±±±±±±±±±±±±±±±±
    ±±±±±±±±±±±±±±±±ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ±±±±±±±±±±±±±±±±
    ±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±
    ±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±
    ±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±
    ±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±
    ±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±
    ±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±
    ±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±
    ±ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿±
    ±³                                                                     ³±
    ±³Program Files            C:\INSTPRO\                                 ³±
    ±³Document Files           C:\INSTPRO\                                 ³±
    ±³Sample Files             C:\INSTPRO\SAMPLE\                          ³±
    ±³                                                                     ³±
    ±ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ±
    ±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±


          The USER command, which is used to build the Destination Directo-
          ry Entry  form   (and its  accompanying Optional  Selection form)
          must  appear in Install.001 on the first diskette of your instal-
          lation set.

            
          USER_____________________________________________________________
            
          Syntax: [OPTION or ATTACH]  USER <label> "prompt" [default direc-
          tory] [NOMOD]



                                                                         17




                         Chapter 3, Building the Entry Forms
          _________________________________________________________________

          This command  is the  workhorse of Install-Pro.   It  is used  to
          assign a  prompt and  a default  destination to a  label that  is
          specified by you, as well as specify if the files associated with
          it are to  overwrite existing targets.  When the  user inputs his
          destination directory it will be associated with this label name.
          This command also creates the workspace inside Install-Pro needed
          for FILE, RUN and SUBDIR commands to function.

          A discussion of each component of the USER command follows:
            

          [OPTION]
            
          Before he  is shown the  destination directory Entry  Screen, all
          OPTION USER  (and ATTACH USER) lines  will be resolved by  a form
          similar  to the top form shown above.   This form allows the user
          to toggle on or  off any or all of the  optional portions of your
          installation.

          To give  the user the chance  to not install an  unneeded part of
          your application (tutorials, etc.) you only need to prefix a USER
          command with OPTION.  

          [ATTACH]

          Warning:   The  ATTACH  USER command  is  best classified  as  an
          advanced topic.  Neophyte  Install-Pro script-writers might  best
          steer  clear  until the  other  aspects of  Install-Pro  are well
          understood. 

          When using an ATTACH USER command, the syntax is slightly differ-
          ent:

          Syntax: ATTACH USER <label> "prompt" <parent label> [NOMOD]

          Before  he is shown  the destination directory  Entry Screen, all
          ATTACH USER  (and OPTION USER) lines  will be resolved by  a form
          similar to the  top form shown above.  This  form allows the user
          to toggle  on or off any or all of  the optional portions of your
          installation.

          The  way that  ATTACH  differs from  OPTION  is that  instead  of
          displaying a data entry line on the destination directory screen,
          the label instead gets its path from the path associated with the
          parent label.   The  best way to  understand this  is through  an
          example:

          Assume  that  you  want  your  main  program  files  to  go  into
          C:\PROGSYS.  Further, assume you want optional sample files to go

          18




                         Chapter 3, Building the Entry Forms
          _________________________________________________________________

          into  C:\PROGSYS\SAMPLE.  But, you want no chance that the sample
          files  might end up in some other directory, unaccessible to your
          application.  To do that:

          USER prog_files "Program Files" C:\PROGSYS
          ATTACH USER sample_files "Sample Files" prog_files

          SUBDIR sample_files \SAMPLE

          FILE prog_files filename
          FILE sample_files samplefilename

          In  a  line-by-line  synopsis,  and assuming  the  defaults  were
          accepted  by the  user, the  user is  first shown  a radio-button
          screen asking if he wants  to install the sample files.   If yes,
          then all actions with the label sample_files will  occur.  If no,
          none of  those actions occur.   Now, the  user is shown  an entry
          screen  WITH ONLY ONE ENTRY  LINE, for prog_files.   Whatever the
          user types in for that path  will be stored into both  prog_files
          AND sample_files.   Next,  the SUBDIR  command  creates a  SAMPLE
          subdirectory and finally, the FILE commands transfer filename and
          samplefilename over to their respective directories.

          In  a nutshell,  ATTACH USER  commands  allow optional  events to
          occur in  non-optional directories.   In comparison,  OPTION USER
          commands, if  accepted, create  an additional directory  in which
          events are to occur.

          It is illegal to attempt to specify an OPTION USER command as the
          parent label  to an  ATTACH USER command.   The reason  is fairly
          obvious:   if the  OPTION USER  is declined  but the  ATTACH USER
          isn't, there is no way to determine a path to store in the ATTACH
          USER label.

          <label>:

          The label  portion of  the USER  command is  nothing more  than a
          tagname to assign to the information stored by  this command.  In
          some of the other commands you will want to refer to the destina-
          tion directory that this  command creates, but you won't  know if
          that directory will have been changed  by the user.  So, we refer
          to it with  a label instead.  Common labels  might be prog_files,
          help_files, etc.


          "prompt"

          In the above form, "Program  Files", "Sample Files" and "Document
          Files" were the prompt portions of the USER commands that created

                                                                         19




                         Chapter 3, Building the Entry Forms
          _________________________________________________________________

          the  form.   Each line  of the  Destination Directory  Entry form
          consists of a prompt and its corresponding entry field.  


          [default directory]

          If you  want the user  to be presented  with a default  directory
          when the Destination Directory Entry  form is displayed, then you
          can do so.  It must be in  the form of a legal DOS path.  In  the
          above form, the default directories were C:\INSTPRO  (twice)  and
          C:\INSTPRO\SAMPLE.   A default  directory is optional  unless you
          want to specify a NOMOD directory (described next).


          [NOMOD]

          Sometimes, you are going to want a specific directory path not to
          be  changed by the user  during installation.   For instance, you
          may  want  a \SYS  directory to  exist  on the  installation hard
          drive.  NOMOD makes this possible.  If  you tack NOMOD on the end
          of a USER command, the entry form displays "The directory portion
          of this field  cannot be  changed" whenever the  user is  editing
          this USER entry.  Since it is not possible to  know ahead of time
          what drive letters a  target computer will have available,  it is
          not allowed to freeze the destination drive, only the destination
          directory.

                                New with version 3.00

          DESCRIBE_________________________________________________________

          Syntax: DESCRIBE <label_name> "Description for this label"

          The  DESCRIBE command allows  you to dedicate  a line of  text to
          describe what class  of files the specified  label will transfer.
          As a typical example:

          USER prog_files "Program Files" c:\progsys
          DESCRIBE prog_files "These are the main program files"

          In both the OPTION USER pre-entry  form and main entry form,  the
          DESCRIBE text  is popped up in a one-line window at the bottom of
          the screen whenever the user is accessing that particular line of
          the form.  In most cases you will either want to  describe all of
          the lines of your forms  or none of them, but consistency  is not
          required.




          20




          Chapter 4

          Transferring and Decompressing Files

          SUBDIR___________________________________________________________
            
          Syntax: SUBDIR <label_name> <dirname>
            
          When you define an entry form with USER commands, the directories
          that the  user enters during the  installation will automatically
          be created by Install-Pro.  However, if you have directories that
          you want created child to the user-defined directories, you build
          them  with SUBDIR commands.  The components of the SUBDIR command
          are now discussed:


          <label_name>:
            
          The  label name specified here  MUST have been previously defined
          with a USER command.  The subdirectory will be created as a child
          to the  directory entered by  the user  on the line  of the  form
          associated with this label.


          <dirname>:
            
          This is the name of  the child subdirectory.  It does  not matter
          how long  it is (as long  as the total directory  length is below
          the DOS maximum of 65 characters)  or how many directories are in
          the chain.  That is, \SUB1\SUB2\SUB3 is a legal directory name if
          you wanted a  long chain  created child to  a main  subdirectory.
          There is no requirement that the directory(s) begin or end with a
          backslash.

          SUBDIR lines may exist anywhere in any install.??? file, but must
          precede the  first use  of its created  directory or  Install-Pro
          will be unable to continue.

          Example 1:
            
          USER label_1 "Data Files" C:\MYAPP\DATA
          SUBDIR label_1 \MOREDATA
            
          If  the user  accepted the  default, the  C:\MYAPP\DATA directory
          would be  created.  Also,  as a  result of the  SUBDIR line,  the
          C:\MYAPP\DATA\MOREDATA directory would be created.
            
            
          Example 2:
            
          USER label_1 "Data Files" C:\MYAPP\DATA
          SUBDIR label_1 \DATA1\DATA2\DATA3

                                                                         21




                            Chapter 4, Transferring Files
          _________________________________________________________________

            
          If the  user accepted the  default above, C:\MYAPP\DATA  would be
          first created,  and then the -entire-  chain of DATA1\DATA2\DATA3
          would be created as a child.  The resultant chain would thus be
            
          C:\MYAPP\DATA\DATA1\DATA2\DATA3
            
          CAUTION:  The DOS limit for subdirectory length is 65 characters,
          including drive and colon.  Keep in mind the maximum user-entered
          directory is up to 40 characters, leaving you up to 24 characters
          with  any margin of safety.   If the total exceeds 65 characters,
          DOS returns a directory creation error.
            

          FILE_____________________________________________________________

          Syntax: FILE <label_name> <filename> [UPGRADE, VERIFY or PROTECT]

          This  command  transfers a  file  from  the current  installation
          diskette to the directory  associated with labelname.  Since  the
          file must be on the current diskette, this command must appear in
          the script on  the same diskette.   Thus, if you  want a file  on
          diskette  #2 to be transferred,  the FILE command  must appear in
          install.002 on that diskette.  The components of FILE are:

            
          <label_name>:
            
          The label  name specified  here MUST  already  have been  created
          with a USER command.  This determines the destination directory.


          <filename>:
            
          The filespec  can take  one of  two forms.   First,  it can be  a
          regular dos filename, in which case it will be transferred to the
          directory associated with the specified label.  Alternatively, it
          can include  an optional directory  chain child to  the directory
          associated with the  specified label,  in which case  it will  be
          transferred to that child directory.  For that child directory to
          exist,  it must  first  be created  a  SUBDIR command,  described
          previously. 


          [UPGRADE]:
            
          This  modifier indicates that any files newer than the file being
          transferred  are to be overwritten only with permission  from the


          22




                            Chapter 4, Transferring Files
          _________________________________________________________________

          user.  Therefore the  user's machine must have a  functional (and
          accurate) clock.


          [VERIFY]:
            
          This modifier directs Install-Pro  to verify all file overwrites,
          even if the file being overwritten is older than the installation
          file.

                                New with version 3.00

          [PROTECT]:

          This modifier prevents an existing file from being overwritten by
          Install-Pro.  If the file exists, the copy does not occur.


          Example:
           
          USER label_1 "Data Files" C:\DATA
          FILE label_1 main.exe
          FILE label_1 main2.exe
            
          This partial  script would  transfer main.exe and  main2.exe from
          the root  directory of the  current installation diskette  to the
          directory that the user entered when prompted  with "Data Files",
          perhaps the default directory presented to him, "C:\DATA".
            
          Now, consider this more advanced example:
            
          USER label_1 "Data Files" C:\DATA
          SUBDIR label_1 \HELP
          FILE label_1 main.exe  
          FILE label_1 main2.exe
          FILE label_1 help\help.dat
            
          Assuming that the user  accepts the default C:\DATA, this  script
          will transfer main.exe  and main2.exe from the  root directory of
          the  current  installation diskette  to C:\DATA,  just as  in the
          previous  example.  Also, as child  to the user-entered directory
          will  be created a help  directory, to which  will be transferred
          help.dat.
            
          The final structure if all defaults are accepted by the user is:
            
          C:\DATA\MAIN.EXE
          C:\DATA\MAIN2.EXE
          C:\DATA\HELP\HELP.DAT

                                                                         23




                            Chapter 4, Transferring Files
          _________________________________________________________________

          If the destination file already exists, its attribute is  changed
          to  read/write  before  the transfer  is  attempted.    After the
          transfer  has completed,  if ATTRIBSAVE  has been  specified, the
          attribute of the destination file is changed to match the attrib-
          ute of the source file.
            

          Splitting Files__________________________________________________
            
          If  you have  files  that just  cannot  fit onto  a  distribution
          diskette,  Install-Pro has  the  ability to  handle split  files.
          First an example of how to tell Install-Pro what you want:
            
          FILE label_1 main.ex1e
          FILE label_1 main.ex2e
            
          These two FILE commands lines would cause Install-Pro to create a
          file  called main.exe in  the label_1  directory, from  TWO files
          main.ex1 and main.ex2.   What Install-Pro does is looks to see if
          an extra character has been added to a  filename.  If there is an
          extra character:
            
          1. The source (distribution disk) filename is assigned  an exten-
          sion of the  first three characters of the  filename's extension.
          This file should exist on the current distribution diskette.
            
          2. The destination filename has the third character replaced with
          the fourth, and the fourth character is removed.
            
            
          Please note that:
            
          1.  main.ex1e and main.ex2f would  not cause an  append to occur.
          The filenames (with  the exception  of the third  character of  a
          four-character  extension) MUST  match.   In this  case, main.exe
          would  be created from main.ex1, but main.exf would NOT be creat-
          ed.
            
          2. The  files MUST have the  same label name assigned  to each of
          them.  If main.ex1e and main.ex2e were assigned different labels,
          \directory1\main.exe would be  created, but  \directory2\main.exe
          would NOT.
            
            
          The append/create decision is resolved as follows:
            
          1. If  third character of the  extension is a '1'  and the fourth
          character exists, the file is CREATED.
            

          24




                            Chapter 4, Transferring Files
          _________________________________________________________________

          2. If the third character is greater than a '1', then Install-Pro
          checks to make  sure that the preceding portion   of the file was
          copied before proceeding.  If so, the file is APPENDED.  

          3.  If the third  character is a number,  but no fourth character
          exists, no split-file decision occurs - the file will be created.
            
          This type of  file transfer can be especially touchy if the order
          of  files transferred  and then  appended is  incorrect.   If you
          split files,  I strongly  recommend  that you  debug your  script
          carefully and compare the  created file with the original  (using
          the DOS program 'COMP') to be sure that they are identical before
          releasing your application.

          There  is an  accompanying  utility called  split.exe which  will
          split  your large files for you if needed.  It comes with its own
          documentation.


          UNZIP____________________________________________________________

          Syntax: UNZIP <labelname> <zipfile> [VERIFY, UPGRADE or PROTECT]

          This  command specifies a zip file that needs to be decompressed.
          The following assumptions are made with this command:

          1.  If the zip  file is in  a destination  directory it is  to be
          deleted  after  decompression.   (Under  no  circumstances is  it
          possible to delete a zip file on the distribution disk.)

          2. The  base destination  for the  extracted files  is to  be the
          directory associated  with  labelname.    That  is,  subdirectory
          information stored  in the zip file is to be used relative to the
          current zip file directory.

          3. The filename's default extension is 'zip'.

          4. The file was  compressed with a supported version  of PKWare's
          PKZip  or 100%  compatible.   Currently, all  compression methods
          through 2.04c are supported.  See the read.me file for updates on
          more recent releases.

          5. The file was NOT encrypted with a password.

          6. The file is not part of a multiple-volume archive.


          The  components of  the UNZIP  command should  be interpreted  as
          follows:

                                                                         25




                            Chapter 4, Transferring Files
          _________________________________________________________________


          <labelname>:

          The  labelname,  which must  be  previously defined  with  a USER
          command, defines the base directory for the decompression.


          <zipfile>:

          The zipfile may be  transferred first with a FILE command,  or it
          may be decompressed from  the installation diskette.  In  perfor-
          mance, both  methods are identical.   However, if  you decompress
          from the  diskette, extra care must  be taken to  ensure that the
          UNZIP  command occurs in the script on  the current diskette.  If
          you  transfer with a file command and decompress from the instal-
          lation directory, then  the UNZIP command can come anytime after-
          wards, even on the last diskette.


          [UPGRADE]:

          This modifier indicates that any files newer than the file  being
          transferred  are to be overwritten only  with permission from the
          user.  This modifier is  reliant on the user's machine   having a
          functional clock,  and  that  the files  on  the  user's  machine
          reflect actual dates.


          [VERIFY]:

          This modifier directs Install-Pro to verify all file overwrites.

          Any  directory information packed in an zip file is automatically
          created as needed during the unzip process. Under no circumstanc-
          es will a file stored in a zip file with subdirectory information
          be unpacked into the current directory.

                                New with version 3.00

          [PROTECT]:

          This modifier prevents any file in the destination directory from
          being overwritten by a file in the .zip file.  


          Example:

          UNZIP label1 zipfile


          26




                            Chapter 4, Transferring Files
          _________________________________________________________________

          would unzip zipfile.zip in the directory associated with label1.

          If  UNZIP refers to an OPTIONal label,  the UNZIP will only occur
          if the user chose to include that part of the installation.

          Since  an error  extracting  a zip  file  must be  considered  as
          dangerous  as an error copying an installation file, crc or other
          unzip errors must be treated as fatal errors, with program abort,
          so double-check the integrity of your .zip files before distribu-
          tion.

          If the destination file already  exists, its attribute is changed
          to  read/write  before  the transfer  is  attempted.   After  the
          transfer  has completed,  if ATTRIBSAVE  has been  specified, the
          attribute of the destination file is changed to match the attrib-
          ute of the source file.


          ATTRIBSAVE_______________________________________________________

          Syntax: ATTRIBSAVE

          This command states that you want attributes assigned to files on
          your  distribution  disks and  attributes  of  files within  your
          compressed  archives to  be preserved  after they  have  been in-
          stalled in the destination directories.  Even if you install
          read-only files, however, Install-Pro will be able to overwrite
          them during subsequent installs.                                 






















                                                                         27




          Chapter 5

          Changing Disks and Terminating___________________________________


          FIRSTDISK________________________________________________________

          Syntax: FIRSTDISK [disk name]

          This command allows you  to name the first disk  of the installa-
          tion something  besides the default  "Disk 1" (for  example, "In-
          stall Disk").  Other than slightly changing screen appearance and
          prompts, this  command does not affect the  physical operation of
          Install-Pro in any  way.   If no argument  follows the  FIRSTDISK
          command, the default of "Disk 1" will be used.  

          FIRSTDISK MUST appear in install.001 to have any affect.


          DISK_____________________________________________________________
            
          Syntax: DISK [disk name]
            
          This command specifies that when  processing for the current disk
          has  finished, the  user  is to  be prompted  to insert  the next
          numbered disk (as opposed to terminating the installation).   The
          extension  of the  script  file increments  with each  successive
          disk.  For example, if the disk being processed is disk 1 with i-
          nstall.001, specifying DISK  would cause the user  to be prompted
          to insert disk #2.  If the user presses enter and the disk in the
          drive in which  install.exe exists does  not have install.002  in
          the  current directory, the user will be instructed to try again.
          This  loop repeats  until the  user inserts  the correct  disk or
          until the user presses Escape, which would terminate the program.
            
          The  optional [disk name] argument allows you to name the follow-
          ing  disk something besides "Disk n".  Common uses are "Utilities
          Disk","Fonts  Disk"  or what-have-you.    If  you adopt  this  or
          another naming  convention,  be sure  to  look up  the  FIRSTDISK
          command for instructions on naming the FIRST disk (since the DISK
          command always names the FOLLOWING disk.)
            

          END______________________________________________________________

          Syntax: END
            
          This command  indicates  that the  end of  the last  installation
          script has been reached.  Just like DISK, END forces all informa-
          tion stored in all labels to be processed.  However, unlike DISK,
          when this processing has been completed, the program displays the
          GOODBYE messages and exits.

          28




                       Chapter 5, Changing Disks & Terminating
          _________________________________________________________________

            
          This command is mutually exclusive of the DISK command.  Whichev-
          er  is encountered first on  any given diskette  will dictate the
          processing that will occur, and the other will be ignored.


          CHAIN____________________________________________________________

          Syntax: CHAIN
            
          This command  indicates that  the end  of  the last  installation
          script  has been reached,  just like END.   When this  command is
          reached, all work accumulated is processed.  Unlike END, however,
          CHAIN  is a  conditional  installation terminator.   The  user is
          presented  with "Do you wish to install another module (Yes/No)".
          If the user selects NO, then the GOODBYE  screen is displayed and
          Install-Pro terminates.
            
          If  the user  selects YES,  then  he is  prompted  to insert  the
          Install Disk of the next module and Install-Pro transfers control
          to another copy of itself  on the new diskette, and the  old copy
          of Install-Pro in memory  is discarded.  Any GOODBYE  screen will
          be handled by the new copy of Install-Pro.
            
          The actual filename that  is looked for with CHAIN is the identi-
          cal path and filename of the currently executing process.  So, if
          you have renamed one copy of Install-Pro to INSTALL.EXE, they all
          must be renamed that way.
            
          The traditional use for this type  of termination is in the  case
          of integrated accounting software, where it is unknown at runtime
          how  many modules  (General Ledger,  System Manager,  Accounts R-
          eceivable,etc.) have been purchased.

















                                                                         29




          Chapter 6

          Verifying the target environment_________________________________


          SPACE____________________________________________________________

          Syntax: SPACE <label_name> <nnnnn>
            

          If you  would like  the destination  drive checked  for available
          disk  space before proceeding (often a good idea) you define your
          space requirements with this command.  It is not foolproof, since
          it is  possible that the  installation will go  on top of  an old
          one, but  it provides you with an opportunity to warn the user if
          his disk is almost full.

          Each SPACE command must  reference a defined label (via  the USER
          command.)    After the  user  chooses his  destination  drive and
          directories  in the  entry screen,  all labels  that access  each
          drive are added together  to determine if enough free  disk space
          exists.
            
          The disk check(s) occur directly after the user has finished with
          the destination  directory entry screen.   Any OPTIONal installa-
          tion segments that are declined by the user are not counted  when
          determining adequate disk space.


          CPU______________________________________________________________

                              486 new with version 3.00

          Syntax: CPU <86, 286, 386 or 486>

          This command can be used to warn the  user that his machine has a
          processor that will not run your application.  This is treated as
          a warning,  and the user is  allowed to try to  continue.  Please
          note that this  detection is  not 100% reliable  due to the  huge
          number of computers available.


          FPU______________________________________________________________

          Syntax: FPU
            
          This command will  warn the  user that your  application needs  a
          math  co-processor installed to function.   This is  treated as a
          warning, and the user is allowed to try to continue.


          RAM______________________________________________________________

          30




                           Verifying the Target Environment
          _________________________________________________________________

            
          Syntax: RAM <nnn>

                          Changed starting with version 3.00

          This command will warn  the user if the installation  machine has
          less  ram (in kilobytes) available than would be required by your
          application.   This  is  handled by  Install-Pro calculating  its
          program  size  and adding  the amount  of  free ram  available to
          Install-Pro.  It is  fairly safe to assume that  this calculation
          will be accurate if  your application had been loaded  instead of
          Install-Pro.


          EMS______________________________________________________________

          Syntax: EMS <nnnn>

                                New with version 3.00

          This command will warn  the user if less available EMS  (LIM 3.0-
          compatible  expanded memory,  in kilobytes)  is detected  than is
          required by your application.


          VCPI_____________________________________________________________

          Syntax: VCPI

                                New with version 3.00

          This command  will warn the  user if there  is not a  VCPI server
          installed.


          DPMI_____________________________________________________________

          Syntax: DPMI <nnn>

                                New with version 3.00

          This  command will warn  the user if  there is not  a DPMI server
          installed greater than  or equal  to the version  specified.   If
          your application requires DPMI 0.90  or newer, you would indicate
          this with DPMI 090 (or just 90).  That is, two decimal points are
          implied in the version specified.


          XMS______________________________________________________________

                                                                         31




                           Verifying the Target Environment
          _________________________________________________________________

          Syntax: XMS <nnnn>

                                New with version 3.00

          This command will warn  the user if less available  XMS (extended
          memory,  in  kilobytes) is  detected  than  is  required by  your
          application.
           

          VER______________________________________________________________

          Syntax: VER <n.nn>
            
          This command will  warn the user if the version  of MS-Dos on the
          installation machine  is less than required  by your application.
          This is treated as  a warning, and the user is allowed  to try to
          continue.


          CONFIGFILES______________________________________________________

          Syntax: CONFIGFILES <nn>
            
          This command follows the following logic:

            
          1.   Attempt to determine the boot disk.  

          2.   If the boot disk is found, try to find Config.sys.

          3.   If Config.sys has been found, read the FILES= statement.  

          4.   If Config.sys  cannot be  found, or if  Config.sys has  been
               found but with FILES=  too low, ask the user  for permission
               to update  Config.sys.   If permission  is granted,  ask the
               user  for the path  to Config.sys if  Config.sys hasn't been
               found.

          5.   Modify Config.sys if given permission.

          Please note that the goal here is to:
            
          1.   Only  disturb the user if unable to determine that FILES= is
               okay.

          2.   Never modify Config.sys without permission.

          3.   Don't  access  a  Bios-reported floppy  diskette  unless the
               user inputs it as the boot disk.

          32




                           Verifying the Target Environment
          _________________________________________________________________

            
          A message  is displayed  notifying the  user  whether the  update
          occurred, or whether it wasn't needed after all.


          PATH_____________________________________________________________

          Syntax: PATH <labelname>

          This command allows a path associated with a label to be inserted
          into  the path statement in Autoexec.bat.  If the particular path
          entry  is found in the PATH statement in Autoexec.bat, no attempt
          is made to add it again.  Like with Config.Sys, the user  is only
          disturbed if  Install-Pro is unable  to determine  that the  PATH
          setting is okay.


          SET______________________________________________________________

          Syntax: SET <ENVVAR>=<value>

                                New with version 3.00

          This command  allows you  to place  any value you  wish into  the
          user's  Autoexec.bat.   <ENVVAR> is your  environmental variable.
          <value> is the  value you wish to place in  the environment.  All
          instances of a label name prepended with an exclamation point (eg
          !label_name) are directly  replaced with the  path that the  user
          types  in for the USER  command associated with  that label name.
          Trailing  backslashes on  that  path are  always stripped  before
          passed to the SET command.

          If <ENVVAR> is already  in Autoexec.bat, it is replaced  with the
          new value.  
















                                                                         33





          Chapter 7

          Running External Programs________________________________________


          RUN______________________________________________________________

          Syntax: RUN "any command line in quotes" [log-to directory]
            
          This command defines  a command line to  be built to  execute any
          special programs or batch  files that are needed to  customize an
          installation.  One  use for  this might  be to  run a  config.exe
          program that  will bring the  user straight into  configuring the
          application he is  installing.   Another use might  be to  create
          application  menu  definition files  that  couldn't  be built  at
          install-time otherwise.

                                New with version 3.00

          [Optional Directory]

          If an  optional directory is specified, then Install-Pro will log
          onto that directory (it can even be  on a different drive) before
          executing the  command.   If  you want  to log  onto  one of  the
          directories  entered by the user  on the entry  form, indicate it
          with  an  exclamation  point  followed  by  the  label  name  (eg
          !prog_files).   If you  want an  absolute directory logged  onto,
          just specify the directory  verbatim (eg c:\progsys).  Specifying
          an absolute directory is risky, as there is  no guarantee that it
          exists!
            

          "any command line in quotes"

          Run works by one of two methods.  If the command specified on the
          command line has the  extension ".EXE" or ".COM", the  program is
          executed directly by Install-Pro.   If no .EXE or  .COM extension
          is specified, your command is run by invoking a command processor
          shell and  passing it the command  line that you specify.   There
          must be enough memory to load both your  program or command shell
          in addition to that used by Install-Pro.
            
          Run command  lines of  longer than one  word MUST be  enclosed in
          quotes.  
            
          Further, the  directory(s) that  the user  enters at  runtime are
          available on the  RUN command  lines.  Simply  specify any  label
          with  a  preceding exclamation  point  (!)  and the  user-entered
          directory will  be directly substituted  for that portion  of the
          text.   The directory is inserted without any leading or trailing


          34




                         Chapter 7, Running External Programs
          _________________________________________________________________

          spaces, but the  spaces on  the RUN command  line are  UNTOUCHED.
          Some examples follow:
            
          RUN "dir !label_1"
          RUN "!label_1\myprog.exe" !label_1

          This example would first  change to the directory entered  by the
          user for label_1 before executing myprog.exe.

          RUN "copy !label_1\this.fil !label_2"

          RUN "anydir\anyprog.exe" c:\progsys

          This  example would log into c:\progsys  before attempting to run
          c:\progsys\anydir\anyprog.exe.  
            
          Finally, a  special sequence, !home,  signifies that you  wish to
          specify the installation directory of the installation disk.  For
          obvious reasons,  don't create any labels called  'home' with the
          USER command, or  the !home sequence will no longer  point at the
          home directory, but rather  at the directory entered by  the user
          for this labelname.
            
          RUN "!home\myprog.exe"

            
          would  execute  myprog from  the  installation  directory of  the
          installation disk.
            
          When a RUN command is executed,  the screen is saved and  cleared
          first.  After it has completed, the screen is restored.
            
          If the command shell attempt fails, the user will  be notified of
          the reason (usually  memory) but the INSTALLATION WILL NOT ABORT.
          If there is a critical part of your installation occurring with a
          RUN command, be sure  to document it in your  manual installation
          instructions for the user.
            
          A few points to keep in mind:
            
          1.   The error trapping is much more solid if Install-Pro direct-
               ly executes your program.   This is due to the fact  that if
               the command  shell is used instead,  success constitutes the
               shell having successfully loaded.  Whether enough ram exist-
               ed for your program or your program was found is not detect-
               able by Install-Pro.   What's  worse, in the  case of  older
               versions  of  the alternative  command  processor  4Dos, the
               command shell load process  occurs in two parts.   The first


                                                                         35




                         Chapter 7, Running External Programs
          _________________________________________________________________

               part of 4dos can load successfully but fail to load the rest
               of itself and still return success to Install-Pro.
            
          2.   Memory requirements  for command  shell RUN commands  can be
               significantly  higher,  especially  if  COMMAND.COM  is  the
               target of COMSPEC (about 27k).
            
          3.   A single RUN  command in .EXE mode is allowed  up to 9 argu-
               ments. Additional  arguments are ignored.   In command shell
               mode, there is no limit to the number of arguments allowed.
            
          4.   A single  RUN command in .EXE mode is allowed a length of up
               to 256 characters.  The length of any single argument is re-
               stricted to  128 characters.   If argument zero  (the direc-
               tory,  path and filename of the executing program) is longer
               than  128 characters, DOS will  return an error message back
               to  Install-Pro.  If any  other argument is  longer than 128
               characters, the argument will be truncated.
            
          5.   A  single RUN  command in  command shell  mode is  allowed a
               total length of up to 256 characters,  but keep in mind that
               the  widely-used command  interpreter COMMAND.COM  will only
               allow  128 characters total.  4dos,  among others, allows up
               to 256 characters.
            
          6.   RUN commands  MAY access OPTIONal directories.   However, if
               any of the optional directories listed in a RUN command line
               were not accepted by the user (even if the directory already
               exists),  the command  will  be ignored.    This allows  RUN
               commands to  be conditional  on whether  an OPTION  has been
               accepted.   If an OPTION is  declined, you can be  sure that
               the associated RUN commands will not be executed.


          PRERUN___________________________________________________________

          Syntax: PRERUN "any command-line in quotes" [log-to directory]

                                New with version 3.00

          This command is identical to the  RUN command, except that it  is
          processed BEFORE  any  FILE, UNZIP  or  VIEW commands  have  been
          executed.   If you have a task  that needs to be completed before
          any  work  has been  actually started  on  the current  disk, use
          PRERUN.  For example, if you would like to back some files before
          installing  an  upgrade,  you  could  do  so  with  this command.
          RUNERRNOTIFY affects PRERUN just as it does RUN.



          36




          RUNERRNOTIFY_____________________________________________________

          Syntax: RUNERRNOTIFY

                                New with version 3.00

          Ordinarily,  Install-Pro only  notices whether  or not  a program
          executed  with a  RUN command  successfully loaded,  ignoring the
          return value.  Including  RUNERRNOTIFY notifies Install-Pro  that
          you want any non-zero errorlevel exits of your RUN commands to be
          flagged as an error.  Thus,  you can force non-zero exits to have
          the  same warning message displayed that is shown on program load
          errors.  Just like regular RUN error processing, the installation
          still attempts to continue.


          VIEW_____________________________________________________________

          Syntax: VIEW [filename]

                                New with version 3.00

          This command allows a very nice scrollable window to be popped up
          with your read.me files.  Just like  with the RUN command, labels
          can be used  in the path.   For example, to  view read.me on  the
          distribution diskette:

          VIEW !HOME\READ.ME

          Just as  a side note:   the functionality of the  VIEW command is
          generally  available to C  programmers through DB/Soft's ViewLib,
          which  is  a library  that brings  flexible  report viewing  to C
          object-compatible programs.  An evaluation version of ViewLib can
          be downloaded from the DB/Soft Online.



















                                                                         37





          Chapter 8

          Customizing Install-Pro__________________________________________


          ONERROR__________________________________________________________

          Syntax: ONERROR "Any text in quotes"

          If an error occurs, you may have a specific suggestion that you'd
          like to  present your customer, for example a number to call.  If
          ONERROR is defined in install.001, the unrecoverable message text
          "Please  refer to  your manual  installation instructions  if the
          problem cannot be corrected."  is directly replaced with whatever
          text you specify.   The text in quotes  may be up to  200 charac-
          ters.


          Linking external text____________________________________________

          Distributed with Install-Pro  comes a  file called  EXTERNAL.LNG.
          This  optional file,  if found  in the Install-Pro  directory, is
          used  to  replace the  internally  defined  text strings.    This
          feature allows  total prompt  redefinition for  specialized needs
          such as foreign language translations.  The linkage occurs before
          ONERROR text  is read  into memory, so  ONERROR takes  precedence
          over its counterpart in the redefinition file.
            
          If  EXTERNAL.LNG is  found,  Install-Pro inserts  the text  found
          directly into the  program space, and  will behave as  if it  had
          been developed with that text.   The file is read on a one-to-one
          correspondence  to internal  string space.   That  is, each  line
          replaces  a specific string of text.  In  the case of some of the
          longer  strings, you may specify a line continuation with the '\'
          (backslash) character.  Thus, 
           
          "String definition 1 " \
          "String definition continued"
            
          would be treated as the following single definition:
            
          "String definition 1 String definition continued"
            
          Don't forget that you  probably want a space character  after the
          last word of  continued string definitions.  The quotations marks
          are mandatory.   Please be  aware that there is  a slight perfor-
          mance penalty involved in reading the definition file.  If you do
          not  want redefinition  to take  place, remove  external.lng from
          your Install-Pro directory.



          38




                          Chapter 8, Customizing Install-Pro
          _________________________________________________________________

          Lines beginning  with a  semicolon  or empty  lines are  ignored.
          Liberal use  of semicolon-preceded comments will  greatly aid the
          redefinition  process, especially  when translating  between lan-
          guages.
            
          Some of the string definitions are included with %s or  %d format
          specifiers.   If you are  not familiar with  the programming lan-
          guage C, these  are used to insert variable text into the string.
          When  you redefine  a string,  you must  remember to  include the
          format specifiers in  a similar position in  the new string.   If
          you include  more format specifiers in the string than originally
          defined, garbage will display in your string at runtime.  If  you
          display fewer format specifiers,  important information will  not
          be displayed to your users.
            
          Some of the text strings are menu items (they are labeled as such
          in external.lng.)  They  must be preceded with a  space character
          (e.g. " Yes " for the menu hotkeys to work correctly.
            
          The order of  the string  definitions is significant.   You  must
          redefine all of the text if you redefine any of it.
            
          When  redefining text, I strongly suggest  that the original text
          definitions provided in the  sample be commented out and  left in
          the file for reference.   Generally, the new definitions  need to
          be  approximately the same length as the originals.  Where possi-
          ble (e.g. some of the longer messages) I  have allowed some extra
          leeway  by implementing  word-wrap  in  the  message box  and  by
          leaving  extra space.  Generally,  if a text  redefinition is too
          long, the part that is  too long will either be truncated  or run
          into menu selection bars.  If  you cannot satisfactorily redefine
          a line, please contact us.


















                                                                         39




          Chapter 9

          Miscellaneous____________________________________________________


          System Variables_________________________________________________

          For  all  of  Install-Pro's  flexibility, there  are  still  some
          decisions  that  cannot be  made ahead  of  time.   The following
          system  variables  are defined  at runtime,  and  can be  used to
          modify the  installation depending  on the  destination hardware.
          The system variables available are:

          IS86   - True if the processor is a 8088 or 8086.
          IS286  - True if the processor is a 80286.
          IS386  - True if the processor is a 80386 or higher.
          IS486  - True if the processor is a 80486 or higher.
          ISFPU  - True if a math coprocessor is installed.
          ISMONO - True if the video adapter is monochrome.
          ISVGA  - True if the video adapter is EGA, VGA or higher.
          ISCGA  - True if not ISMONO and not ISVGA.

          The four processor variables are mutually exclusive.  That is, it
          will never be the case that more than one is true.  Similarly, it
          is  never the case that more than  one of the three video adapter
          system variables will be true.

          Using system variables is easy: just precede ANY command with the
          appropriate  system  variable,  and  that command  will  only  be
          executed if the system variable is TRUE.  Assume as an example:

          IS386 FILE prog_files progfile.zip
          IS386 UNZIP prog_files progfile

          If this were  run on  a 80386  computer, both  of these  commands
          would be executed.  On any other computer, neither  of them would
          be. 

          Further,  the complement of each of these system variables can be
          achieved with  the keyword NOT.   For instance, if you  wanted to
          transfer  a file to the  destination directory only  if the video
          hardware is not monochrome, you would use a command like this:

          NOT ISMONO FILE prog_files colorset.dat

          Note  that a NOT <sysvar> <command> in conjunction with an accom-
          panying <sysvar> <command> provides 100% coverage of the hardware
          in question -- video, processor or math coprocessor.  

          Also note that it is not usually necessary and often dangerous to
          precede a USER command with a  [NOT] <sysvar> prefix.  The reason
          is  that the USER command disappears if  the prefix is false.  If

          40




                                    Miscellaneous
          _________________________________________________________________

          the USER command disappears, then ANY command that accesses  that
          USER  command's  label  is illegal  unless  the  command  has the
          identical prefix that the USER command has. 

          It  is legal  to  stack multiple  system  variables on  a  single
          command, for instance:

          IS286 NOT ISVGA <command>

          would be exceuted on a computer with a 80286 processor and no VGA
          adapter installed.  

          If  you have candidates for other system variables that you would
          like considered, please notify us.


          Command Line Switches____________________________________________

          The following command line switches are supported:

          -m - use black and white colors.  

          Install-Pro should display correctly on all video adapter/monitor
          combinations.   It  has been  tested with  a wide  combination of
          adapters, including  CGA lcd  laptops and VGA  mono workstations,
          and the display has always proved  to be crisp and readable (even
          if by  chance  Install-Pro thinks  it's using  a color  monitor).
          But, if a customer reports to  you that he is unable to  read the
          text,  this switch  will throw  Install-Pro into black  and white
          regardless of the adapter it is  writing to.  This switch  should
          be mentioned in the installation literature that accompanies your
          application whenever possible.   Selecting -m disables any COLORS
          command in  your script, which  is just  as well as  it was  your
          COLORS  command  that made  the  screen unreadable  in  the first
          place.  The -m switch does NOT affect the ISMONO system variable.


          -a=root - use alternate script file name.

          The  syntax  supported  has  a  certain  degree  of  flexibility.
          /A=root,  /a=root, /a:root and -a:root will all work.  Use which-
          ever style you are most comfortable with.  You cannot specify the
          extension of your  scriptfiles (they always  start with .001  and
          continue), but you can specify the root (base) name  of the file.
          Some examples might be  NETINST or UPGRADE.   This gives you  the
          flexibility of containing multiple installation procedures on the
          same  distribution diskettes.   For  instance, you  might include
          instructions  for  current  users  of your  application  to  type
          A:UPGRADE  instead  of  A:INSTALL,  and  in a  batch  file  named

                                                                         41




                                    Miscellaneous
          _________________________________________________________________

          UPGRADE.BAT on  your distribution disk you  yourself could handle
          the syntax INSTPRO -a=upgrade. 


          Error Messages___________________________________________________

          The following are the standard error messages built into Install-
          Pro.  The  nature of these errors is such that Install-Pro cannot
          continue, so these error messages  can probably be classified  as
          Fatal Errors.   The message the  user sees is similar  to the one
          that follows:

                ±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±
                ±ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
                ±³ The following unrecoverable error has  occurred:  ³
                ±³                                                   ³
                ±³             Error opening install.001             ³
                ±³                                                   ³
                ±³                                                   ³
                ±³ Please refer to your documentation for manual     ³
                ±³ installation instructions if the problem cannot   ³
                ±³ corrected                                         ³
                ±³                                                   ³
                ±³              Press a key to terminate...          ³
                ±ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ
                ±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±

          As previously mentioned, the instructions can be modified with an
          ONERROR command.
            

          DOS version 3.0 or higher required
            
          A  DOS version prior to  3.0 was detected.   Install-Pro requires
          MS-DOS 3.0 or later.

            
          Error opening install.001
            
          INSTALL.001 was not found  in the same directory  as Install-Pro,
          or there were no file handles available.

            
          Token was expected but not found: line nn

          A token  was expected but not  found on the  indicated line. This
          usually means that one or more words is missing on this line.



          42




                                    Miscellaneous
          _________________________________________________________________

          Memory allocation error

          A request for more memory was denied.  This is extremely unlikely
          to occur, as Install-Pro requires under 200k of free RAM.


          Error copying xxxxxxx

          DOS returned  an  error while  trying to  transfer the  indicated
          file.


          Cannot copy a file onto itself

          The user specified the installation diskette as the destination.


          Error creating directory: zzzzzzz

          DOS  returned  an  error while  trying  to  create  the indicated
          directory.  The most likely cause is if the user tries to install
          the  application to  a  directory that  is  the same  name as  an
          existing file.


          Authorization Error

          Install-Pro detected an authorization code that did not match the
          accompanying script  file (install.001).   Run  Install-Pro again
          with your key to authorize your script.
            

          Executable integrity error - bad executable

          Install-Pro detected  internal  errors in  its  executable  file.
          This usually means that  the file has become corrupted.   Restore
          an original from your backup and retry.


          Label not found: xxxxx, line nn

          The token in the <label name> position on the specified line does
          not  correspond to a previously defined label name created with a
          USER command.


          Invalid Disk Space Number



                                                                         43




                                    Miscellaneous
          _________________________________________________________________

          Either  no token,  or an  invalid token,  was detected  after the
          SPACE command.


          Unexpected EOF - AUTHORIZATION, END, CHAIN or DISK expected

          If Install-Pro parses to the end of a script without finding some
          indication of how to terminate, it returns this error.


          Zip output file creation error

          An error was detected while trying to create a file imbedded in a
          zip file.  The usual causes are out of disk space, network rights
          insufficient, or an existing directory of the same name.
            

          Zip file open error

          The zip file was not found, or no file handles were available. 


          Invalid zip file header

          An inconsistency was detected in the zip file.


          Zip file corrupted

          An extracted file's crc did not match its reported crc.


          Zip file encrypted

          Encrypted zip  files (and the  inherent password needed  to build
          the decryption key) are not supported.


          Error chaining to new program

          An error  was encountered  while trying  to load  a  new copy  of
          Install-Pro. Possible causes are  insufficient memory or file not
          found.


          System Error - current directory not available

          Install-Pro requested from DOS the name of the current directory,
          but DOS returned an error.

          44




                                    Miscellaneous
          _________________________________________________________________


          System Error - change directory failed

          An  attempt  by Install-Pro  to change  to another  directory (to
          unzip a file) failed.
            

          Unexpected end of file

          The  end of  an  zip file  was  encountered unexpectedly.    This
          usually means the file is damaged.


          Disk Write Error - target disk full?

          The majority of disk write errors are a full disk, but they could
          also be caused by hard disk  failure or logical errors in the FAT
          table.
            

          Directories must be 65 characters or less

          The  path entered  by the  user  plus the  SUBDIR attached  to it
          exceeded DOS'  maximum.   Don't  define  SUBDIRs longer  than  20
          characters to be safe.


          Unsupported ZIP version

          A  ZIP version of  higher than 2.04  was detected in  a zip file.
          Since  no  release version  of  ZIP greater  than  2.04 currently
          exists, this error may likely indicate zip file corruption.


          Invalid command

          The first token encountered  on the indicated line in  the script
          was not a valid command.












                                                                         45




                                    Miscellaneous
          _________________________________________________________________

          Critical Errors__________________________________________________

          Should a  disk door  be left  open (or  any other critical  error
          trapped by DOS, for  that matter) a Critical Error  handler built
          into  Install-Pro will take control  and provide the  user with a
          menu similar to this one:

                     ±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±
                     ±ÚÄÄÄÄÄÄÄÄÄÄ[DOS Critical Error]ÄÄÄÄÄÄÄÄÄÄ¿±
                     ±³                                        ³±
                     ±³   [Abort]  [Retry]  [Ignore]  [Fail]   ³±
                     ±³                                        ³±
                     ±ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ±
                     ±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±

          If the user  accepts retry, he  will be in  most cases safe.   Of
          course, if his  computer picked  the exact moment  that he's  in-
          stalling  your application to  crash its hard  drive, no Critical
          Error handler is going to recover very gracefully.































          46
