How Joomla Extensions Upgrade Process Works

Joomla 1.6 and higher versions use new update system. All extensions uploaded to JED (Joomla Extensions Directory) after 10th January 2017 are required to use the Joomla Update System.

Extensions are linked to the source, via the extension manifest, to a feed of available updates.

There are two parts of an install or update.

  1. Files: During an update, Joomla completely replaces the files of the existing version with the files of the new version. There is no incremental file update.
  2. Database: During an extension update, Joomla can execute SQL commands to incrementally modify the database.

How to Create an Update Server

By adding an update server listing to your extension's manifest, developers enable users to update their extensions via the Extension Manager's Update view with only a few clicks.

First, an update server must be defined in extension's manifest:

<extension>
<...>
<updateservers>
<server type="collection">http://example.com/list.xml</server>
<server type="extension" priority="2" name="My Extension's Updates">http://example.com/extension.xml</server>
</updateservers>
</extension>

Server Types

Collection

The collection server type allows to define an extension's manifest to pull updates from a collection. This type of server can be used to define all the extension's updates in a single file (not recommended) or if extension has multiple sub-extensions which are not distributed or updated at the same time (such as a package extension type).

Extension

The extension server type allows to define an extension's manifest to pull updates from a single extension's manifest. All collection manifests eventually point to this XML file. All updates in this file must be defined after an <updates> tag at the beginning of the file.

<update>
<name></name>
<description></description>
<element></element>
<type></type>
<version></version>
<infourl title=""></infourl>
<downloads>
<downloadurl type="full" format="zip"></downloadurl>
</downloads>
<tags>
<tag></tag>
</tags>
<maintainer></maintainer>
<maintainerurl></maintainerurl>
<section></section>
<targetplatform name="joomla" version="1.6"/>
</update>

name: The name of the extension; this name appears in the Name column of the Extension Manager's Update view (required).

description: A short description of the extension (optional).

element: The installed name of the extension (required). For plugins, this needs to be same as plugin attribute value for main file in plugin manifest.

type: The type of extension (component, module, plugin, etc.) (required).

folder: Specific to plugins; this tag describes the type of plugin being updated (content, system, etc.) (required for plugins).

client: Required for modules and templates; The client ID of the extension, which can be found by looking inside the #__extensions table. To date, use 0 for "site" and 1 for "administrator". Plugins and front-end modules are automatically installed with a client of 0 (site), but you will need to specify the client in an update or it will default to 1 (administrator) and then found update would not be shown because it would not match any extension. Components are automatically installed with a client of 1, which is currently the default.

version: The version of the release (required).

infourl: A URL to point users to containing information about the update (optional).

downloads: The section lists all download locations.

downloadurl: The URL to download the extension from; the <downloadurl> tag has two required parameters:

  • type: The type of package (full or upgrade)
  • format: The format of the package (zip, tar, etc.)

tags: A list of tags relevant to this version. Joomla! 3.4 and later uses this to determine the stability level of the update. The valid tags are:

  • dev: Development versions, very unstable and pre-alpha (e.g. nightly builds)
  • alpha: Alpha quality software (features not implemented, show-stopper bugs)
  • beta: Beta quality software (all features implemented, show-stopper bugs possible, minor bugs almost certain)
  • rc: Release Candidate quality software (no show-stopper bugs, minor bugs may still be present)
  • stable: Production quality software

If you do not provide any tags Joomla! will assume it is a stable version.

maintainer: The name of the extension maintainer (similar to the <author> tag in a manifest) (optional)

maintainerurl: The website of the extension maintainer (similar to the <authorUrl> tag in a manifest) (optional)

section: Optional

targetplatform: A tag to define platform requirements, requires the following elementsː

  • name - The name of the platform dependency; it should ONLY be "joomla"
  • version - The version of Joomla! the extension supports

php_minimum: Beginning with 3.2.2, a minimum supported PHP version can be supplied in the update stream. If the server does not meet the minimum, a message is displayed to the user advising that an update is available but cannot be installed due to unsupported requirements.