Super Prev Next

Installer


Super Prev Next

Installer

There are two possible ways of installation:

If a project contains an installation callback DLL or a post-installation runnable, or both, they are invoked in the following order:

For the functions above, the return value of integer type means: zero — no error, installation may proceed, any non-zero value — there is an error, installation must be aborted.


Super Prev Next

Uninstaller

An Excelsior Delivery package may include an uninstaller executable, which removes installed package files , shortcuts and registry keys on user request. If the user runs the executable, e.g. via the shortcut placed in Program Folder of Start Menu, GUI uninstallation wizard appears.

The uninstallation acts as follows:

To perform uninstallation in the unattended mode, the user should specify the /batch option on the command line of the uninstaller executable.

Uninstallation is cumulative, that is, it removes the initially installed package along with all updates that were possibly installed later.


Super Prev

Callback DLLs

The install callback DLL should export the two functions:

 int __stdcall PreInstall (char* installation_folder_name)  int __stdcall PostInstall (char* installation_folder_name)

where the installation_folder_name parameter is the absolute pathname of the installation directory. The uninstall callback DLL should export the function

 int __stdcall PreUninstall (void)

Return value of the functions is a return code. If they return a non-zero value, the (un)installation process will be terminated and a dialog displaying the respective message and the return code, will appear. The installer/uninstaller invokes the functions in the order described in sections Installer and Uninstaller.

Though the declarations are given in the notation of the C language, you can create the DLLs using another programming language provided that it has equivalent types and its implementation supports the __stdcall calling convention.

Note: when building the DLLs, enable the static linking mode so that they do not depend on any other DLLs except those implementing the system API.