# appup

### FILE

appup

### FILE SUMMARY

Application upgrade file.

### DESCRIPTION

The application upgrade file defines how an application is upgraded in a running system.

This file is used by the functions in `systools` when generating a release upgrade file (`relup`).

### FILE SYNTAX

The application upgrade file should be called `Application.appup` where `Application` is the name of the application. The file should be located in the `ebin` directory for the application.

The `.appup` file contains one single Erlang term, which defines the instructions used to upgrade the application. The file has the following syntax:

    {Vsn,
      [{UpFromVsn, Instructions}, ...],
      [{DownToVsn, Instructions}, ...]}.

- `Vsn = string()` is the current version of the application.
- `UpFromVsn = string()` is an earlier version of the application to upgrade from.
- `Instructions` is a list of release upgrade instructions, see below.
- `DownToVsn = string()` is an earlier version of the application to downgrade to.

### RELEASE UPGRADE INSTRUCTIONS

Release upgrade instructions are interpreted by the release handler when an upgrade or downgrade is made. For more information about release handling, refer to SASL User's Guide.

High-level instructions

    {update, Module, Change, PrePurge, PostPurge, [Mod]}
    {update, Module, Timeout, Change, PrePurge, PostPurge, [Mod]}
    {update, Module, ModType, Timeout, Change, PrePurge, PostPurge, [Mod]}
      Module = atom()
      ModType = static | dynamic
      Timeout = int()>0 | default | infinity
      Change = soft | {advanced,Extra}
      PrePurge = PostPurge = soft_purge | brutal_purge
      Mod = atom()

    {load_module, Module, PrePurge, PostPurge, [Mod]}

    {add_module, Module}

    {remove_application, Application}

    {add_application, Application}

    {restart_application, Application}

Low-level instructions

    {load_object_code, {Lib, LibVsn, [Module]}}
      Lib = atom()
      LibVsn = string()
      Module = atom()

    point_of_no_return

    {load, {Module, PrePurge, PostPurge}}
      PrePurge = PostPurge = soft_purge | brutal_purge

    {remove, {Module, PrePurge, PostPurge}}

    {purge, [Module]}

    {suspend, [Module | {Module, Timeout}]}
      Timeout = int()>0 | default | infinity

    {code_change, [{Module, Extra}]}
    {code_change, Mode, [{Module, Extra}]}
      Mode = up | down
      Extra = term()

    {resume, [Module]}

    {stop, [Module]}

    {start, [Module]}

    {sync_nodes, Id, [Node]}
    {sync_nodes, Id, {M, F, A}}
      Id = term()
      M = F = atom()
      A = [term()]

    {apply, {M, F, A}}

    restart_new_emulator

### SEE ALSO

relup(4), release_handler(3), systools(3)

### AUTHORS

Gunilla Hugosson - support@erlang.ericsson.se

sasl 1.9.3
Copyright © 1991-2002 Ericsson Utvecklings AB