A software distribution system comprises building blocks including a preparation
and test site, comprising a software package editor, software package transformation
tools and an AutoPack module for preparing and testing software packages to be
distributed to endpoints. A software package comprises a file including a complete
definition of the actions involved in a software distribution and, once distributed,
when a software package is available to a target endpoint, an engine resident on
the target can be instructed via the management agent to decode the software package
from the file into memory and then to perform various software distribution operations
including installing, removing and modifying the software and configuration of
the endpoint.