Symbian Developer Library



[Index] [Previous] [Next]

Embedding SIS files within other SIS files

A SIS file may contain a number of embedded or nested SIS files. Embedded SIS files are installed and removed together with the embedding SIS file. But note that an embedded SIS file may not be removed if another installed component has declared a dependency upon it, (this depends on the phone's security policy setting, RemoveOnlyWithLastDependent in swipolicy.ini).

Embedding SIS files might be useful for packaging multiple components into a single SIS file, but which can later be removed independently of each other. For example, if a SIS file needs to install an application and a library that is shared with other installed applications, the shared library could be installed as an embedded SIS file, so that when the application is uninstalled, the shared library will remain on the phone if still required by other applications.

The package() function can be used if you only want to install an embedded package if it has not already been installed, for example:

IF NOT package(0x11223344)
; install foo.sis only if not already installed
@"foo.sis", (0x11223344)

In general, nested SIS files are processed as separate installations in an inline fashion. This means that containing (outer) SIS files do not propagate capabilities into contained (inner) SIS files. Essentially, nested SIS files are validated and installed on their own merit, but there is one exception to this rule: It is also possible for a package to be dependent on an embedded SIS file that it contains. Note that if any embedded SIS installation fails, the entire installation fails.

An embedded package may be an upgrade or patch (of type PU or SP), as long as the base package has already been installed on the phone. This implies that if the base package and the upgrade are both embedded in the same SIS file, the statement that installs the base package must occur in the source PKG file before the statement that installs the upgrade or patch.

The PKG file syntax for embedding SIS files is as follows:

@"source-filename", (package-uid)

Language-specific embedded SIS files can be included in a language block, for instance: