1 VMSINSTAL
VMSINSTAL is a procedure which supports the installation of software
products on a VAX/VMS system.  It is used to install both VMS and
optional software products.

The system manager installs software products by logging into the
SYSTEM account and invoking VMSINSTAL:

$ @SYS$UPDATE:VMSINSTAL [product,...] [device] OPTIONS [option,...] -
                        [{alternate root} or {directory} for G option] -
                        [optional qualifiers for G option]

Note: All parameters in [] are optional.  VMSINSTAL will prompt for
      the product, device, and OPTIONS if they are omitted.
2 PRODUCT
The first parameter specifies the product(s) that the user wishes to
install.  VMSINSTAL prompts if this parameter is omitted.  A product
can have one of three forms.

     o facvvu - The particular version/update of the specified product
       is installed.

     o fac - All versions and updates of the specified product are
       installed in order.

     o * - Every product on the distribution volume is installed by
       installing all versions and updates in order.

The products must be separated by commas but the list must NOT have any
spaces.  VMSINSTAL will always install each product alphabetically.  If
more than one version of the same kit is on the same distribution volume
the oldest version will be installed first.
2 DEVICE
The second parameter identifies the device where the distribution volumes
are to be mounted.  VMSINSTAL prompts if this parameter is omitted.  The
device may be one of the following:

     o A device drive that holds the distribution medium; for example,
       the TU58 drive designated CSA1: on a VAX-11/750.

     o A disk directory where the product save set has been transferred
       from the distribution media.

     o A disk directory on another node.
2 OPTIONS
The OPTIONS parameter of the VMSINSTAL procedure can be used to do a number
of interesting things.  The list is as follows:

 A    - Auto-Answer File               L      - Log Switch
 AWD= - Alternate Working Directory    N      - Print Release Notes
 B    - Booting                        O      - Install into SYS$COMMON
 C    - Callback Trace                (P)     - Amend License 
 D    - Debug Switch                   Q      - Quality Assurance
(E)   - Remove History Log entry       R      - Alternate Root
 G    - Get Product savesets           RSP=   - Press RETURN to continue 
(H)   - Turn off History logging       S      - Statistics
 I    - Inhibit initial prompts        SEC    - Security Upgrade  
 K    - Kit Debug Switch               VMSMUP - Manditory Upgrade  
                                          
Note:  When using the OPTIONS [option,...] list, make sure to spell
       out the word OPTIONS fully.  The OPTIONS in ()'s are obsolete.
3 A
This option is documented in the SYSTEM Installation Guide.  The
Auto-Answer file will be created in the SYS$UPDATE directory and
will be named facvvu.ANS.  If the file does not exist, it will be
created.  If the file exists, it will be used to answer the prompts.

This option may only be used if the answers to the prompts are
consistent every time.  If the Auto-Answer file is not in sync
with the questions, an error message will display.
3 AWD=
This option allows you to resotre the "A" saveset to an alternate
directory.  By default, VMSINSTAL will create a temporary sub-
directory using the SYS$UPDATE directory.

Entering AWD=disk:[directory] will force VMSINSTAL to create the
temporary "working" directory in this alternate location.

This option was added in VMS V5.2.
3 B
This is used as part of the crash-recovery procedure.  If the 
system crashes during an installation, VMSINSTAL is invoked with 
the "B" option as part of the system restart (in STARTUP.COM).
3 C
This is an exceptionally useful feature for a developer.  It 
generates a file (SYS$UPDATE:facvvu.CBT) which contains a trace 
of all VMSINSTAL callback routines.
3 D
This option turns on a debug feature.  The most important thing 
it does is to prevent rebooting of the system when an application 
requires it.

Starting with VMS V5.2, turning on vmi$debug (or using OPTIONS D)
will SET VERIFY.
3 E
This option removes an entry properly from the Software History
Log file.

Note: This option was added with VMS V4.4 and removed with VMS V5.0.
3 G
This option allows you to move VMSINSTAL savesets from distribution
media (tapes or floppies) and place them on disk for faster instal-
lations.  This option may also be used to move kits into a common
area for installing kits around a network.
3 H
This option turns off the automatic logging to the Software History
Log.

Note: This option was added with VMS V4.4 and removed with VMS V5.0.
3 I
This option turns off the following initial prompts:

* Do you want to continue [NO]?
* Are you satisfied with your backup [YES]?

Note: This option was added with VMS V4.4.
3 K
This option sets a switch which allows you to pass a parameter 
to your KITINSTAL procedure.  This may be useful in debugging 
your kit.
3 L
This option is used to cause all invocations of APPEND, BACKUP, 
COPY, CREATE, DELETE, LIBRARY, PURGE, RENAME, SEARCH, and UNLOCK 
to log what they do.  The result is that your console record of 
the installation contains a lot of useful information about what 
was done to your system.
3 N
This option will instruct VMSINSTAL to print the release notes
before actually installing the product.  The installer is allowed
to continue the installation after the release notes have been
printed.

Note: This option was added with VMS V4.4.
3 O
This options will instruct VMSINSTAL to install all SYSTEM files
into the SYS$COMMON root instead of the Site Specific root.

Note: This option was added with VMS V4.5.
3 P
This option will tell VMSINSTAL to amend the license for this
kit.

Note: This option was added with VMS V4.4 and removed with VMS V5.0.
3 Q
This option sets the VMI$QA symbol to TRUE.  This symbol may be 
used to display certain informational messages about the 
installation.

If VMI$QA is true, the initial prompts (as shown below) are also
skipped.

* Do you want to continue [NO]?
* Are you satisfied with your backup [YES]?
3 R
This documented option allows the installation to be done in an 
alternate root.  This can be very useful in a testing 
environment.
3 RSP=
This option calls a "Press RETURN to continue (RSP option)" prompt
at the end or each saveset restore.  If you only specify RSP, the
prompt displays after restoration of the "A" savset.

If you specify RSP=ACD, only the "A", "C", and "D" savesets will
cause the prompt.

If you specify RSP=ALL, the prompt will display after EVERY restore.

NOTE: This will only occur if you use the RESTORE_SAVESET callback.

This option was added in VMS V5.2.
3 S
Selecting this option enables something called the Statistics 
Demon.  This is a command procedure which run a subprocess to 
this installation process.  It compiles all sorts of useful 
statistics about what happened during the installation.  The most 
useful statistics concern disk use.  The statistics demon will 
tell you the peak disk usage and the final disk usage of your 
installation.  The data is put in a file (SYS$UPDATE:facvvu.ANL).
3 SEC
Selecting this option (I assume for a Security Upgrade) forces
VMSINSTAL to define the vmi$no_env_check variable to "TRUE".

This option was added with VMS V5.2.
3 VMSMUP
Selecting this option (I assume for a Manditory Update) sets up
default variables for a Manditory Upgrade.

This option was added with VMS V5.2.
2 ALTERNATE_ROOT
You must select this option if you want to install the product in
an alternate system root and it must be in the following format:

       ddcu:[SYSn.]

       ddcu    Is the device on which the alternate root resides.

       [SYSn.] Is the top-level directory of the alternate root.

If you wish, you may specify a previously defined logical name
for the alternate root.
2 DIRECTORY
This parameter may be specified when using the G option.  If the
directory is not supplied, you will be prompted for it.

The directory will be used to build the VMSINSTAL format savesets.
2 GOALS
o Product kits are composed of BACKUP savesets, which allow files
  larger than a single console volume to be included in the kit.
  Furthermore, BACKUP can recover from media errors in some cases.

o Products may be installed from a wide variety of media, including
  console media, tapes, disks, and the network.

o Multiple products can be included on the same distribution volume.
  This is useful for software specialists and may become a distribution 
  scheme in the future.

o Consistency among software product installations will be increased.

o Software product installation procedures should be more immune to
  changes in VMS from one version to the next.
2 NETWORK
VMSINSTAL can be used across the network as well as at a local node.
This feature must be used with the VMSINSTALable kits on DISK.  To
move the kits from tape to disk, VMSINSTAL can be invoked as shown in
the following example:

$ @SYS$UPDATE:VMSINSTAL VMS052 MSA0: OPTIONS G DUA0:[VMSKITS]

Create the directory DUA0:[VMSKITS] (or similar) before invoking
VMSINSTAL.  The appropriate kit(s) will be moved from tape to disk.

Once the kits are on disk, you may install them using VMSINSTAL from
any node.  If the DUA0:[VMSKITS] directory is on node SYS1 for example,
the command for installing VMS052 on node SYS2 would be as follows:

$ @SYS$UPDATE:VMSINSTAL VMS052 SYS1::DUA0:[VMSKITS]
3 ACCESS
To assure that you have sufficient privilege to access the kits on
the remote node, you may either set the file protection on the kits
to world read access as follows:

$ SET PROT=W=R DUA0:[VMSKITS]*.*

or you may setup a proxy login account on the SYS1 node for access
by the SYSTEM account from SYS2.  This may be done using the
AUTHORIZE utility with the command:

$ SET DEFAULT SYS$SYSTEM
$ RUN AUTHORIZE
UAF> CREATE /PROXY
UAF> ADD /PROXY *::SYSTEM SYSTEM
UAF> EXIT
2 SYMBOLS
Symbols are used throughout VMSINSTAL and are defined when the
kit's installation procedure (KITINSTAL.COM) is invoked.

NOTE: When using the ASK callback, make sure not to define the symbol
      name again in the procedure.  The ASK defined symbol is a global
      symbol.  Since your local symbol would override this symbol, you
      could create a problem for your installation.
3 BACKUP
o Defined as BACKUP /NOASSIST
3 DEFINE
o Defined as DEFINE /NOLOG
3 FALSE
o TRUE and FALSE - Symbolic constants which can be used to assign
  boolean values to symbols.
3 TRUE
o TRUE and FALSE - Symbolic constants which can be used to assign
  boolean values to symbols.
3 VMI$CALLBACK
o Defined as running the procedure that called it (i.e. VMSINSTAL).
3 VMI$_FAILURE
o VMI$_FAILURE - the failure status returned by callbacks and by the
  kit's procedure.  It has a severity of warning.
  Defined as %x10f50000
3 VMI$FIND
o VMI$FIND - @SYS$UPDATE:VMSINSTAL FIND_FILE
3 VMI$INSTALLING
o Defined as TRUE.
3 VMI$MSG
o VMI$MSG - @SYS$UPDATE:VMSINSTAL MESSAGE VMSINSTAL
3 VMI$NO_ERROR
o VMI$NO_ERROR - DEFINE /USER SYS$ERROR NL:
3 VMI$NO_OUTPUT
o VMI$NO_OUTPUT - DEFINE /USER SYS$OUTPUT NL:
3 VMI$QA
o Defined as TRUE or FALSE depending on finding the "Q" char. in
the P4 symbol.
3 VMI$QA_FAIL
o Defined as FALSE.
3 VMI$_SUCCESS
o Defined as %x10f50001
3 VMI$INSTALLATION_STATUS
o Defined as VMI$_SUCCESS.
3 VMI$_UNSUPPORTED
o Defined as %x10f50008
3 VMI$PID
o Defined as your process PID number.
3 VMI$MARKER
o Defined to point to the VMIMARKER + PID + .DAT
3 VMI$UPDATE_MARKER
o Defined as a OPEN/READ/WRITE vmi$marker_file ...
3 W
o Defined as the current system version
3 W2
o Defined as the current version w/o the first char.
3 VMI$DEFER_FILE
o VMI$DEFER_FILE - VMI$KWD:VMIDEFER.COM
3 VMI$FREE_BLOCKS
o VMI$FREE_BLOCKS - Free blocks on vmi$root
3 VMI$IVP
o VMI$IVP - Global boolean symbol.  If TRUE then run IVP
  (initially false).
3 VMI$PLACE
o VMI$PLACE - distribution volume (MTA0:)
3 VMI$PRETTY
o VMI$PRETTY - VMS V5.2
3 VMI$PRODUCT
o VMI$PRODUCT - VMS052
3 VMI$PURGE
o VMI$PURGE - Global boolean symbol.  If true files are purges
  as they are moved.
3 VMI$REBOOT
o VMI$REBOOT - Global boolean symbol.  If true the system will
  reboot after the installation.
3 VMI$REMOUNT
o VMI$REMOUNT - Local Boolean symbol.  If true the distribution device
  must be remounted.
3 VMI$ROOT
o VMI$ROOT - Process logical.  SYS$SYSROOT unless R option is used.
3 VMI$SAFETY
o VMI$SAFETY - Global boolean symbol.  If true executing in safety
  mode.
3 VMI$STARTUP
o VMI$STARTUP - Global symbol.  Startup procedure name.
3 VMI$ALTERNATE_ROOT
o VMI$ALTERNATE_ROOT - A boolean symbol which specifies whether
  or not the product is being installed to an alternate root.
3 VMI$COMMON_ROOT
o VMI$COMMON_ROOT - A boolean symbol which specifies whether or
  not the product is being installed to a common system root.
3 VMI$CONSOLE
o VMI$CONSOLE - A boolean symbol which specifies whether or not the
  distribution device is a console device.
3 VMI$DEVICE
o VMI$DEVICE - The distribution device as an ASCII string.

If the distribution device is a network directory, this symbol will be
set to null.

If the distribution device is a local disk:[directory], this symbol will
be set to the local disk.

If the distribution device is a magtape, this symbol will be set to
the magtape device.
3 VMI$PLACE
o VMI$PLACE - The location of the distribution volume as an ASCII string.
3 VMI$PRODUCT
o VMI$PRODUCT - The product identification in the standard format
  facvvu.
3 VMI$REMOTE
o VMI$REMOTE - A boolean symbol which specifies whether or not the
  distribution volume is on a remote node.
3 VMI$VERSION
o VMI$VERSION - The version of VMS which is currently running.
2 VMI$CALLBACKs
This chapter describes the callbacks provided by VMSINSTAL.  The
syntax of each callback is presented in the standard pseudo-BNF
format.  Some of the metalinguistic symbols require further
explanation.
3 format
All callbacks return an exit status.  VMI$_SUCCESS is returned
if the callback could be completed without error.  VMI$_FAILURE,
a warning, is returned if anything went wrong.
4 KEYWORDS
o KEYWORDS - Keywords are specified in upper case.  They must not
  be abbreviated in any way.
4 Logical
o Logical - A logical name to be defined by the callback.  These
  logical names must begin with the facility prefix fac$.  By
  convention, use the logical name consisting simply of the
  prefix if it will never be referenced after being specified
  in the callback
4 symbol
o symbol - A global symbol to be equated by the callback.
  Global symbols must begin with the facility prefix fac$.
  Use just the prefix if the symbol is never referenced.
4 dd
o dd - A disk and directory specification.  References to
  the kit's working directory are made using the logical name
  VMI$KWD.  References to system directories are made using
  the logical name VMI$ROOT and an explicit directory, such
  as VMI$ROOT:[SYSLIB].  Other references must specify an
  explicit device logical name (not device number) and a
  directory.  A logical name may be used for the entire
  specification.  At the time of reference, the disk must
  be mounted and the directory must exist.
4 nt
o nt - A file name and type.  The type is always required,
  but no version may be specified.  Neither logical names nor
  wildcarding are allowed.
4 ddnt
o ddnt - A complete file specification, consisting of a disk,
  directory, name, and type.  A logical name may be used, but
  wildcarding is not allowed.
4 options
o options - All options are specified as a comma-separated list
  of single-character codes.  Embedded spaces are not allowed.
3 CONTROL_Y
This callback must be invoked when the user enters CTRL/Y. The
first command in every installation procedure must either be as
specified below, or it must go to a label which performs cleanup
and then the CONTROL_Y callback.

$ ON CONTROL_Y THEN VMI$CALLBACK CONTROL_Y
3 FIND_FILE
This callback is used by VMSINSTAL whenever it must locate a
file specified in another callback.  You must use FIND_FILE
itself when you need to reference a system file for some
purpose not supported by a callback.  Files in the kit's
working directory may be referenced directly.

$ VMI$CALLBACK FIND_FILE logical file-spec [default-spec] -
	locate-list [symbol]

W - kit work directory
O - system specific directory
S - system directories
E - error msg if not found
3 MOVE_FILE
This callback is used to move a file to target.

$ VMI$CALLBACK MOVE_FILE logical full-spec [options]

C - use COPY instead of RENAME to move file
I - add sharable image to IMAGELIB
K - keep old versions
I - reinstall image before purging
O - system specific directory
3 ASK
This callback is used to ask the user a question and obtain a
valid answer.  It also supports the question mark help feature
of VMSINSTAL.

$ VMI$CALLBACK ASK symbol prompt [default] [options] [help]
4 symbol
symbol - The name of a global symbol to be equated to the
answer.  The answer will be blank compressed, blank trimmed,
uncommented, and upcased.
4 prompt
prompt - A quoted string containing the question to be asked.
Do not include any trailing punctuation or whitespace; this
is formatted automatically.
4 default
default - The default answer.  If not specified, the user must
enter an answer.  Specify the default for boolean questions as
"YES" or "NO".
4 options
options - A comma-sperated list of single-character options.

o A - Auto answer off

o B - Boolean. The user must answer YES or NO.  The integer 1
  or 0 is returned as the answer.

o D - Double space.  A line is skipped before asking the
  question.

o H - Help first.  The help information is displayed before
  the question is asked.  This is useful in very complicated
  questions.

o I - Integer.  The user must answer with an integer.

o L - Edit response to lowercase (VMS V5.2).

o M - Maintain input case of response (VMS V5.2).

o N - Null answer.  A null answer is allowed.  This only
  makes sense when a string is requested and no default
  is provided.

o R - Ring Bell.  The terminal bell is run before the
  question is provided.

o S - String.  The answer can be any character string.
  This is the default data type.

o U - Edit response to uppercase (default) (VMS V5.2).

o Z - CTRL/Z returned.  If the user enters CTRL/Z, it
  is returned as a string of the form "^Z".  Without
  this option, CTRL/Z is ignored.
4 help
Help information.  This can be a quoted string containing the
help, or a quoted procedure invocation.  If a procedure invocation,
it must begin with a (@) and may invoke any procedure in the kit.
Typically it would invoke the KITINSTAL.COM and pass it a request
code, as follows:

  "@VMI$KWD:KITINSTAL HELP_WHATEVER"

Because the request code does not begin with a VMI$, it can't conflict
with a request code passed by VMSINSTAL.
3 ADD_SYSLDBL
Add a loadable image description to the indexed file.
3 CHECK_LICENSE
This callback has been added for the VMS V5.0 release but will not be
used until later.  This callback will allow for the registration
of software on the system.
4 format
$ VMI$CALLBACK CHECK_LICENSE symbol product producer version rel-date
3 CHECK_NET_UTILIZATION
This callback is used to check that there are enough free blocks
on the system disk to successfully complete the installation.
The net block usage for a product must be obtained using the
statistics option.

$ VMI$CALLBACK CHECK_NET_UTILIZATION symbol blocks

This callback has been modified in VMS V5.2 in case you have used the
OPTIONS AWD=disk:[directory].
3 CHECK_NETWORK
This callback checks the NET0: device.  If the device exists and is mounted,
the callback variable is returned as "TRUE".

$ VMI$CALLBACK CHECK_NETWORK network_exits

This callback is supported starting with VMS V5.2.
3 CHECK_PRODUCT_VERSION
This callback will allow you to check the version of the current product.

$ VMI$CALLBACK CHECK_PRODUCT_VERSION image min_version product

This callback was added with VMS V5.2.
3 CHECK_VMS_VERSION
This callback is obsolete but is retained in VMSINSTAL for
compatibility with V3.  Use the VMI$VMS_VERSION global symbol
for these checks.

This callback allows you to check the version of the running
VMS system, in the event that your product has some dependency
on the version.  A test is performed to determine if the
specified version requirements are met.
4 format
$ VMI$CALLBACK CHECK_VMS_VERSION symbol minimum_version -
	[option] [maximum_version]

F - Field Test

minimum/maximum_version = format vvu (e.g. 050)

RELEASED - SDC version
UPDATE FT - Field Test (supported)
UPGRADE FT - Baselevel (unsupported)
3 CLEAR_VMSINSTAL_FLAG
Allow files to be moved into system specific directories.
3 CONFIRM_LICENSE
Confirm that a license exists.
4 format
$ VMI$CALLBACK CONFIRM_LICENSE symbol product producer -
	version rel-date
3 COMPARE_IMAGE
This callback allows you to compare two images using the new VMS V5.2
callback GET_IMAGE_ID.

$ VMI$CALLBACK COMPARE_IMAGE current_image new_image

This callback was added with VMS V5.2.
3 CREATE_ACCOUNT
This callback is used to create a new account in SYSUAF.DAT.
It should be used sparingly, if ever.

$ VMI$CALLBACK CREATE_ACCOUNT username qualifiers
3 UPDATE_ACCOUNT
This callback us used to update an account in SYSUAF.DAT.  It should 
be used sparingly if ever.

$ VMI$CALLBACK UPDATE_ACCOUNT username qualifiers
3 ADD_IDENTIFIER
This callback was added with VMS V5.0 and is used to create a
rights identifier to the rights database (SYS$SYSTEM:RIGHTSLIST.DAT).

$ VMI$CALLBACK ADD_IDENTIFIER id_name qualifiers

Note: This callback was added with VMS V5.0.
4 id_name
Use the parameter (P2) id_name to specify the name of the identifier
you are creating.
4 qualifiers
Use the parameter (P3) qualifiers to specify qualifiers.  You
can specify any of the qualifiers for the AUTHORIZE utility
ADD/IDENTIFIER command.  The list of qualifiers must be enclosed
in quotation marks.
4 example
The following is an example of a command line that invokes the
ADD_IDENTIFIER callback:

$ VMI$CALLBACK ADD_IDENTIFIER node$ident "/ATTRIBUTES=(RESOURCE)"
3 CREATE_DIRECTORY
Using the CREATE_DIRECTORY callback, you can now create system
specific directories.  System directories are always created in
the system root of the installing system, even if the installing
system shares a common system disk.

To create s system-specific directory, use this command line
format:

$ VMI$CALLBACK CREATE_DIRECTORY {SYSTEM hierarchy}
                                {USER directory}
                                {SPECIFIC directory}
                                {COMMON directory} (VMS V5.2)
4 COMMON
When you enter the keyword COMMON in this parameter (P2), the
product directory is created in the common root for the
installing system.  When you specify COMMON, omit the disk
designation in the name parameter (P3).
4 SPECIFIC
When you enter the keyword SPECIFIC in this parameter (P2), the
product directory is created in the system-specific root for the
installing system.  When you specify SPECIFIC, omit the disk
designation in the name parameter (P3).
4 directory
Use the parameter (P3) name to specify the name of the system-
specific directory.  The callback recognizes the keyword SPECIFIC
and makes the directory a rooted directory.  Therefore, do not
specify the system device designation, and do not include the
brackets usually used in directory name specifications.
4 qualifiers
Use the parameter (P4) qualifiers to specify one or more or the
CREATE /DIRECTORY command qualifiers: /OWNER_UIC, /PROTECTION,
and /VERSION_LIMIT.  The entire parameter must be specified as
a character string enclosed by quotation marks.
4 example
For example, to create a system-specific directory called
OLDPRODUCT, enter this command line:

$ VMI$CALLBACK CREATE_DIRECTORY SYSTEM OLDPRODUCT -
	"/OWNER_UIC=[SMITH]"
3 DELETE_FILE
This callback is used to delete an obsolete file created by
a previous installation.  Remember, BYPASS privilege is not
enabled.
4 format
$ VMI$CALLBACK DELETE_FILE full-spec
3 DISABLE_LICENSE
Use of this callback is not recommended. This callback is used
by the VMSLICENSE.COM utility.
3 GENERATE_SDL_DEFINITIONS
This callback is used to generate SDL definitions.  The
generated files will be located in the kit's working directory
with the language specific file extensions.
4 format
$ VMI$CALLBACK GENERATE_SDL_DEFINITIONS module_file language -
                                        [optquals] [options]
3 GET_IMAGE_ID
This callback allows you to extract the image id.

$ VMI$CALLBACK GET_IMAGE_ID image

This callback was added with VMS V5.2.
3 GET_SYSTEM_PARAMETER
This callback is used to obtain the current value of a system
parameter.
4 format
$ VMI$CALLBACK GET_SYSTEM_PARAMETER symbol/filename-type -
	name [options]

T - Table driven
3 INSTALL_LICENSE
Use of this callback is not recommended. This callback is used
by the VMSLICENSE.COM utility.
4 format
$ VMI$CALLBACK INSTALL_LICENSE VMI$_DO_LICENSE -
	[REGISTER or AMEND]
3 INSTALL_ARC_LICENSE
Use of this callback is not recommended. This callback is used
by the VMSLICENSE.COM utility.
4 format
$ VMI$CALLBACK INSTALL_ARC_LICENSE vmi$arc_product -
	vmi$arc_producer
3 MESSAGE
This callback is used to display a message in the standard
VMS format.

$ VMI$CALLBACK MESSAGE [VMSINSTAL] severity id -
	(text1,text2,text3)

For example:  %VMS-I-MOVEFILES, Moving files into...
              [%header-severity-id, text]

Notes:

It is not necessary to use this callback when displaying large
blocks of explanatory text.  You should use it when displaying
important messages about the status of the installation.
4 header
This defaults to VMSINSTAL although you may use the product
code for the product you are installing.  i.e.

%VMS-... instead of %VMSINSTAL-...
4 severity
The severity of the message.  Use the standard codes S, I, W, and
E.  you may not generate a fatal error using the VMSINSTAL header.
4 id
The mnemonic identification of the message.  This allows cross-
referencing in your installation guide.
4 text
The actual text of the message(s).  You can specify up to three
message lines, the first of which will be prefixed with a percent
sign (%) and the reminder with a hyphen (-).  Each line must
be entered as a P1 parameter in quotes.
3 MODIFY_STARTUP_DB
Use of this callback is not recommended by Digital.
4 format
$ VMI$CALLBACK MODIFY_STARTUP_DB function file-name -
	[phase] [mode] [params]

Function - [ADD or REMOVE]
File-name - filename of the startup file to be executed.
Phase - [LPBEGIN, LPMAIN, LPBETA, END]
Mode - [DIRECT, BATCH, SPAWN]
Params - Parameters to be passed to a command procedure.
3 PATCH_IMAGE
This callback is used to patch an existing native-mode image.
4 format
$ VMI$CALLBACK PATCH_IMAGE logical patch-name-type -
	[image-spec] [options]

J - journal
K - keep old versions
A - PATCH/ABSOLUTE
3 PRINT_FILE
This callback is used to queue a file to SYS$PRINT for
printing.
4 format
$ VMI$CALLBACK PRINT_FILE full-spec [copies]
3 PRODUCT
This callback provides a simple facility for adding product-
specific callbacks to VMSINSTAL's callback repertoire.  When
a set of products forma a logical grouping (e.g. VAX
Information Architecture, RSX/VAX), there may very well be
some additional callbacks which the products in the group would
like to share.  In this case, the base product in the group 
(e.g., CDD, RSX) can provide a command procedure containing 
additional callback logic.  the PRODUCT callback is the 
window through which installation procedures obtain the 
services of that procedure.
4 format
$ VMI$CALLBACK PRODUCT procedure:callback parameter ...
3 PROVIDE_DCL_COMMAND
This callback is used to add a DCL command to the DCL 
command tables.  If the command already exists, it is 
replaced.
4 format
$ VMI$CALLBACK PROVIDE_DCL_COMMAND name-type
3 PROVIDE_DCL_HELP
This callback is used to insert help into the DCL help 
library.  If the help already exists, it is replaced.
4 format
$ VMI$CALLBACK PROVIDE_DCL_HELP name-type
3 PROVIDE_FILE
This callback is used to provide a complete new file as part 
of the software product.  If the file already exists, a new 
version is created.
4 format
$ VMI$CALLBACK PROVIDE_FILE logical name-type -
	directory [options]

C - use COPY instead of rename to move the file
K - keep old versions
O - put in system specific root
T - table driven
3 PROVIDE_IMAGE
This callback is used to provide a complete new image as 
part of the software product.  If the image already exists, 
a new version is created.
4 format
$ VMI$CALLBACK PROVIDE_IMAGE logical name-type -
	directory [options] [eco-list]

C - use COPY instead of RENAME to move the file
E - set specified ECOs
I - put in IMAGELIB
K - keep old versions
O - put in system specific root
T - table driven
3 RELEASE_NOTES
This callback examines the VMI$KWD for any files with the
extension .RELEASE_NOTES.  If the file is found, you are
given three options for examining and printing the file.

Note: This option was added with VMS V4.4.
4 format
$ VMI$CALLBACK RELEASE_NOTES logical
3 REMOVE_SYSLDBL
Delete a loadable image description from the indexed file.
4 format
$ VMI$CALLBACK REMOVE_SYSLDBL prodmnm image
3 RENAME_FILE
This callback is used to rename a file which was created by 
a previous installation.  The file name and type can be 
changed, but the file cannot be moved from one directory to 
another.
4 format
$ VMI$CALLBACK RENAME_FILE ddnt new-nt
3 RESTORE_SAVESET
This callback is used by VMSINSTAL to restore the primary 
kit saveset.  You may also use it to restore savesets other 
than the primary one.
4 format
$ VMI$CALLBACK RESTORE_SAVESET saveset [options]

N - saveset begins on next volume
3 RUN_IMAGE
Execute an image from the KITINSTAL.COM file.
4 format
$ VMI$CALLBACK RUN_IMAGE image-spec [input-file]
3 SECURE_FILE
This callback is used to alter the security information 
associated with files.  It should only be used by a product 
for which security is a major feature, such as a hospital 
application.  In most cases, the default system security if 
fine.
4 format
$ VMI$CALLBACK SECURE_FILE full-spec [owner-uic] [protection]
3 SET
This callback can be modified with several options as shown 
below.
4 ACL
This callback is used to set an ACL on an object.

$ VMI$CALLBACK SET ACL [DEVICE, DIRECTORY, FILE] -
	acl_list device_name qualifiers
4 IVP
This callback is used to determine whether or not the 
product's IVP is run after the installation.

$ VMI$CALLBACK SET IVP {YES} [options]
                       {NO}
                       {ASK}
4 LICENSE
This callback is used with VMS licensing.

$ VMI$CALLBACK SET LICENSE [keyword-symbol or filename] -
	value [options]
4 PURGE
This callback is used to specify whether or not files 
replaced by this installation are to be purged during or 
after the installation.

$ VMI$CALLBACK SET PURGE {YES} [options]
                         {NO}
                         {ASK}
4 REBOOT
This callback is used to specify that a system reboot is 
necessary after the installation.  This callback is reserved 
for VMS updates and upgrades.  Layered products should never 
reboot.

$ VMI$CALLBACK SET REBOOT {YES}
                          {NO}
4 SAFETY
This callback is used to specify the safety level of the 
installation.

$ VMI$CALLBACK SET SAFETY {YES         peak}
                          {CONDITIONAL peak}
                          {NO}
4 STARTUP
This callback is used to specify your product-specific 
startup procedure so that it can be invoked after the 
installation and before the IVP is run.  this callback does 
not put the installation procedure in SYS$MANAGER; use a 
PROVIDE_FILE callback for this purpose.  This callback does 
not tell the system manager about the procedure.

$ VMI$CALLBACK SET STARTUP [filename-type or SYSMAN]
4 ASK
This callback is used to define the handling of strings using the
VMI$CALLBACK ASK callback.

$ VMI$CALLBACK SET ASK UPPER,LOWER,MAINTAIN

This callback was added with VMS V5.2.
4 POSTINSTALL
This callback defines the symbol vmi$postinstall to "YES" or "NO".

$ VMI$CALLBACK SET POSTINSTAL {YES or NO}

YES - Use this option if you want to enable the postinstall phase.

NO  - Use this option if you want to disable the postinstall phase.

If the option parameter is omitted, the default is NO.

This callback wwas added with VMS V5.2.
3 SUMSLP_TEXT
This callback us used to edit an existing text file or 
library member with the SUMSLP editor.

$ VMI$CALLBACK SUMSLP_TEXT logical command-name-type -
    [{file-spec FILE} old-checksum [new-checksum] [options]}
     {lib-spec,member type}

K - keep old versions
3 TELL_QA
When the installation is done in QA mode, information specified by
TELL_QA is displayed on the terminal.  When run normally, such as at a 
customer site, this information is not displayed.

$ VMI$CALLBACK TELL_QA message
3 UNWIND
The UNWIND callback provides a quick way to exit the installation.
When UNWIND is invoked, VMSINSTAL run through its cleanup code,
signals that the installation has failed, and executes a STOP
command to return control to you.

You can use the UNWIND callback to exit the installation after
errors or CONTROL_Y interrupts, where the installation is several
levels deep into DCL; you do not have to return status back up
a list of invoked command procedures.

Note: This callback was added with VMS V5.0.
4 example
Use the following command line to invoke the UNWIND callback:

$ VMI$CALLBACK UNWIND
3 UPDATE_FILE
This callback us used to update a existing file.  It us only used when 
updating the file in place, that is, performing an update that 
modifies an existing copy of the file.  First issue the UPDATE_FILE 
callback, and then reference and modify the file via the logical name.

$ VMI$CALLBACK UPDATE_FILE logical full-spec [options]

K - keep file in VMI$KWD
3 UPDATE_IDENTIFIER
This callback allows you to update a rights identifier.

$ VMI$CALLBACK UPDATE_IDENTIFIER identifier username

This callback was added with VMS V5.2.
3 UPDATE_LIBRARY
This callback is used to update an existing library.

$ VMI$CALLBACK UPDATE_LIBRARY logical full-lib-spec -
	type qualifiers [wild-full-spec]
2 V44
VMS V4.4 made the following changes to VMSINSTAL:

o The PREREQUISITE_SOFTWARE callback was added
o The RELEASE_NOTES callback was added
o The SOFTWARE_HISTORY callback was added
o The "E" OPTION was added
o The "H" OPTION was added
o The "I" OPTION was added
o The "N" OPTION was added

These changes are documented fully in this help file.
2 V45
VMS V4.5 made the following changes to VMSINSTAL:

o The "O" OPTION was added

These changes are documented fully in this help file.
2 V50
VMS V5.0 made the following changes to VMSINSTAL:

o The ADD_IDENTIFIER callback was added
o The SET_ACL (or SET ACL) callback was added
o The CREATE_DIRECTORY callback was changed
o The UNWIND callback was added
o The CHECK_LICENSE callback was added
o The INSTALL_LICENSE callback was added
o The "P" OPTION was removed
o The "E" OPTION was removed
o The "H" OPTION was removed
o The SOFTWARE_HISTORY callback was removed
o The PREREQUISITE_SOFTWARE callback was removed

These changes are documented fully in this help file.
2 V52
VMS V5.2 made the following changes to VMSINSTAL:

o The CHECK_NETWORK callback was added
o The CHECK_PRODUCT_VERSION callback was added
o The COMPARE_IMAGE callback was added
o The GET_IMAGE_ID callback was added
o The UPDATE_IDENTIFIER callback was added
o The SET callback was changed
o The CHECK_NET_UTILIZATION callback was changed
o The CREATE_DIRECTORY callback was changed
o The ASK callback was changed
o The "AWD=" OPTION was added
o The "RSP=" OPTION was added
o The "VMSMUP" OPTION was added
o The "SEC" OPTION was added
o The "L" OPTION was added
o The "M" OPTION was added
o The "U" OPTION was added
