Install From Web (For Developers)
From Joomla! Documentation
Joomla! 3.2 introduced the new Install from web feature that allows direct installations of extensions that are listed on JED. Making your extensions listed on JED available to Install from web is a two step process:
- Fill out two new fields on the JED
- Set up your site accordingly
Fill out two new fields on JED
If you edit your extension listing on JED you will see two new fields.
The first is Download Type, where you can select the download type for your extension from the four provided options:
- Free Direct Download Link:
- Free but Registration Required at Link:
- Commercial Purchase Required at Link:
The second field is Download/registration/purchase URL and can contain one of the following URL:
- A zip URL E.g. http://www.example.com/updates/com_extension_v9.9.zip
- A update XML URL E.g. http://www.example.com/updates/extension_update.xml
Please note: the caching on the server for the "Install from Web" feature is set for 2-6 hours and so you probably won't see your changes right away in the Joomla backend.
If your extension is a free direct download link then all your work is done and you can ignore the second step.
Here's some more detail on the download type.
This the most common case today, and it basically means that you can't or don't want to provide a direct install URL for your extension. Only JED mandatory fields are filled, and "Install from Web" fields remain empty.
When a user goes into his/her backend and click on the "Install from Web" tab, your extension can be found, the "Download" button is shown but there's no "Install" button.
Free Direct Download Link
This is the option to choose if your extension is freely available, without registration or purchase. On the "Download/registration/purchase URL" you should put the URL of the update XML or directly the URL of the zip file.
When a user goes into his/her backend and click on the "Install from Web" tab, your extension can be found and the "Install" button appears, so the user can just click to install your extension.
Free but Registration Required at Link
This is the option to choose if your extension requires registration to be downloaded. On the "Download/registration/purchase URL" you should put the URL of your site Registration Page.
When a user goes into his/her backend and click on the "Install from Web" tab, your extension can be found and the "Install" button appears; when the user click on the install button, he/she will be redirected to the registration page on your site.
When you setup your site correctly (see Step 2 below) after successful registration the user will be redirected back to his/her site to complete the web install.
Commercial Purchase Required at Link
This is the option to choose if your extension requires a purchase to be downloaded. On the "Download/registration/purchase URL" you should put the URL of your extension Purchase Page.
When a user goes into his/her backend and click on the "Install from Web" tab, your extension can be found and the "Install" button appears; when the user click on the install button, he/she will be redirected to the purchase page on your site.
When you setup your site correctly (see Step 2 below) after successful puchase the user will be redirected back to his/her site to complete the web install.
[What about subscription? Is that more similar to "registration-based" or to "commercial-based"?]
Setting up your site
As stated before, if your extension is freely available without the need for registration or purchase, you don't need to do anything else so skip this step.
Setting your site and extensions up for -Free but Registration Required at Link- Extension
If you require a consumer to register then you have to set up your site to deal with the user registration.
If not, the user fills the registration, and the last step of the web installation is NOT completed.
How web installation works
When user clicks on the 'Install' button, Joomla submits these parameters:
- installat E.g. http://client.domain.com/administrator/index.php?option=com_installer&view=install
- installapp E.g. 99999
installat is the return URL, and installapp is JED's extension ID.
To fill the web installation step, your backend has to receive these parameters, process the registration, and return to the installat URL.
While the registration is filled and processed, Joomla is expecting to receive the zip URL or an update XML URL. When it's received, Joomla finally completes the installation.
Web installation with jefreg-plugin
The jefreg-plugin is the reference implementation. A good starting point that was developed specifically for this purpose can be found here.
The plugin has two parameters:
- Files to download
- Entry URL
In the Files to Download parameter, the first parameter you have to set up is to point the plugin to your extensions update XML files, zip files or script (one per line).
If the line starts with an asterisk [*], it is ignored and left to be handled by plugins that support downloads after payment has been received. Examples of such plugins can be found as branches in the repository mentioned above.
About Entry URL: this plugin is specifically designed for the Joomla User Component (Default value index.php?option=com_users&view=login) however it will also integrate nicely with any registration page. E.g. in Community Builder case simply by changing the entry point URL in the plugins parameters - generally it is recommended (but by no means compulsory) to point this to your login page. Note: an empty value of this parameter will default to pointing to the Joomla User Component Login page.
How to build jefreg-plugin
- Download the files from github
- Copy language files into the system plugin directory
- Zip all files, and install it in the Extension Manager
Setting your site and extensions up for a Commercial Extension
This will need more work than the previous step. It is advised that you download the same plugin - however you will have to integrate into the plugin an extra check to see if the user has purchased your extension. As different extensions implement this in many different ways it is left to extension developers to implement this functionality.
The plugin can be used to get installat and installapp parameters, but it must NOT return the zip URL or update XML URL onUserLogin. When the purchase is completed, the operation can return to fill the web installation.
Source code for the feature
You can contribute bug fixes and new features to the following repositories:
- https://github.com/joomla-extensions/install-from-web-client (client plugin)
- https://github.com/joomla-extensions/install-from-web-server (server part)
- https://github.com/joomla-extensions/install-from-web-plugins (example plugin to be used by developers)
- https://github.com/joomla/joomla-cms (CMS repo)