The component installer adapter provides Joomla! with the ability to install components. Components are one of the largest extensions that can be installed into a Joomla! instance. Components support all install adapter operations available in Joomla! 1.6
The install function handles copying the files into the administrator and the site extension locations, copying any media associated with the extension into the shared media folder, copying language files into the common languages folder if the language pack is installed, running SQL queries, creating the menu items and running the Joomla! 1.6 installer triggers and legacy 1.5 component custom install options. Additionally this function registers the extension in the extensions table generating a manifest cache of the XML file.
The uninstall function is the reverse of the install function. All operations that would occur in an install occur backwards in an uninstall. This includes running uninstall triggers, uninstall SQL, removing administrator menu items and removing any files that were created or copied during install. The final task of uninstall is to unregister the extension from the extensions table.
The update function handles updating the extension. This involves overwriting any files (at present files are not deleted), running any update SQL scripts, rebuilding the administrator menu and executing the update triggers. This process also updates the extensions table entry with new values and a new manifest cache.
The discover attempts to find components in either the site components directory or administrator extension directory that have a valid XML definition file. If there is no XML file in these directories the extension is not discovered.
The discover install function behaves in a similar way to the regular install function behaves with the noted exception that it doesn't handle copying files except for media files. It will also attempt to run any installation SQL that is specified. The language tags are not supported by the discover install, the 1.6 method for handling languages should be used.