|
||
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:
{
@"foo_en.sis"
@"foo_fr.sis"
@"foo_ge.sis"
},(0x11223344)