How can I configure a Software Delivery Package to show success on a particular non-zero exit code?

Document ID : KB000050655
Last Modified Date : 14/02/2018
Show Technical Document Details

Description:

There are certain 'error codes' returned by a Software Package that are acceptable and mean that the Software did actually complete installation successfully.

For example:

MSI Exit code "3010", means that the software installed successfully, but a reboot is required to complete the installation.

Since the codes are something other than 0 however, it is considered as failures in ITCM by default. ITCM does provide for this and can be configured to look for certain return codes and mark the installation valid instead.

Solution:

To set a specific acceptable exit code or a range of acceptable exit codes follow the steps below.

  1. Go to the desired unsealed Software Package in your Software Package Library in the DSM Explorer.

  2. Expand the package and go to "Procedures" and right click on the install Procedure you would like to set this for and select "Properties".

    (Please note that the Software Package must be "Unsealed" in order to make any changes to the install procedures, if it has already been sealed and deployed, you cannot unseal the package. You can however right click on "Procedures" and select "New->Added Procedure.." and create a new install procedure.)

  3. Then click on the "Embedded File" tab

  4. In the "Parameters" Field, select the ">" button and select "Job Related Macros\$#ec:Exitcode Check for Success"

    You can also just manually type "$ec:" as shown below.

  5. You can set a range of acceptable exit codes or just a specific error code, according to the guidelines listed below.

    $#ec:xx
    Overrides the usual exit code interpretation (where exit code=0 means OK, otherwise error). You can change this by an explicit specification of the exit code interpretation. The specification can be done in any of the following four ways (and the specifications can be concatenated).

    $#ec:a-b
    where a denotes the start of the interval (range) and b the stop.

    $#ec:a-
    where a denotes the start of the interval (which is open upwards and starts with a number 0 or higher).

    $#ec:-b
    where b denotes the stop of the interval (which is open downwards).

    $#ec:b
    where b denotes the specific exit code.

    Examples:

    $#ec:3010 $#ec:0-100. Here exit code 3010 and all codes in the interval 0 to 100 are interpreted as OK

    The example in the screen shot below would accept the exit code 3010 and 0 as a success

    Figure 1

  6. Once Set, click "OK" to save the settings for the procedure, then right on the package and select "seal".