It is possible to install a component manually by copying the files using an SFTP client and modifying the database tables. It is more efficient to create a package file in the form on an XML document that will allow the Joomla! Installer to do this for you. This package file contains a variety of information:

  • basic descriptive details about your component (i.e. name), and optionally, a description, copyright and license information.
  • a list of files that need to be copied.
  • optionally, a PHP file that performs additional install and uninstall operations.
  • optionally, an SQL file which contains database queries that should be executed upon install/uninstall

Note: All components must be prefixed with com_.


This XML file just lines out basic information about the template such as the owner, version, etc. for identification by the Joomla! installer and then provides optional parameters which may be set in the Module Manager and accessed from within the module's logic to fine tune its behavior. Additionally, this file tells the installer which files should be copied and installed.

A typical component manifest:

<?xml version="1.0" encoding="utf-8"?>
<install type="component" version="1.5.0">
	<!-- The following elements are optional and free of formatting conttraints -->
	<creationDate>2007 01 17</creationDate>
	<author>John Doe</author>
	<copyright>Copyright Info</copyright>
	<license>License Info</license>
	<!--  The version string is recorded in the components table -->
	<version>Component Version String</version>
	<!-- The description is optional and defaults to the name -->
	<description>Description of the component ...</description>

	<!-- Custom Install Script to execute -->
	<!-- Note: This will be copied from the root of the installation package to the administrator directory automatically -->

	<!-- Custom Uninstall Script to execute -->
	<!-- Note: This will be copied from the root of the installation package to the administrator directory automatically -->

	<!-- Install Database Section -->
			<file driver="mysql" charset="utf8">install.mysql.utf8.sql</file>
			<file driver="mysql">install.mysql.nonutf8.sql</file>

	<!-- Uninstall Database Section -->
			<file driver="mysql" charset="utf8">uninstall.mysql.utf8.sql</file>
			<file driver="mysql">uninstall.mysql.nonutf8.sql</file>

	<!-- Site Main File Copy Section -->

	<!-- Site Main Language File Copy Section -->
		<language tag="en-GB">en-GB.com_test.ini</language>
		<language tag="de-DE">de-DE.com_test.ini</language>
		<language tag="nl-NL">nl-NL.com_test.ini</language>

	<!-- Site Main Media File Copy Section -->
	<media destination="com_test">

		<!-- Administration Menu Section -->
		<menu img="components/com_test/assets/test-16.png">EventList</menu>
			<!-- Note that all & must be escaped to & for the file to be valid XML and be parsed by the installer -->
			<menu link="option=com_helloworld&task=hello&who=world">Hello World!</menu>
			<!-- Instead of link you can specify individual link attributes -->
			<menu img="icon" task="hello" controller="z" view="a" layout="b" sub="c">Hello Again!</menu>
			<menu view="test" layout="foo">Testing Foo Layout</menu>

		<!-- Administration Main File Copy Section -->
		<!-- Note the folder attribute: This attribute describes the folder
				to copy FROM in the package to install therefore files copied
				in this section are copied from /admin/ in the package -->
		<files folder="admin">

		<!-- Administration Language File Copy Section -->
		<languages folder="admin">
			<language tag="en-GB">en-GB.com_test.ini</language>
			<language tag="de-DE">de-DE.com_test.ini</language>
			<language tag="nl-NL">nl-NL.com_test.ini</language>

		<!-- Administration Main Media File Copy Section -->
		<media folder="admin" destination="com_test">

Last modified: