Distributing a plugin
Distributing a QGIS plugin means placing the collection of files on a server as a ZIP
file, with a special configuration file, in order to allow the QGIS plugin manager to locate and install the plugin. The QGIS project has an official repository, but third-party repositories are also permitted. The official repository is very strict regarding how the plugin is uploaded. So, for this recipe, we'll set up a simple third-party repository for a sample plugin and test it with the QGIS plugin manager to avoid polluting the main QGIS repository with a test project.
Getting ready
In order to complete this recipe, you'll need a sample plugin and a web-accessible directory. You'll also need a zip
tool such as the free 7-zip program (http://www.7-zip.org/download.html). You can use the MyPlugin example from the Creating a QGIS plugin recipe as the plugin to distribute. For a web directory, you can use a Google Code repository, GitHub repository, or an other online directory you can access. Code repositories work well because they are a good place to store a plugin that you are developing.
How to do it…
In the following steps, we will package our plugin, create a server configuration file for it, and place it on a server to create a QGIS plugin repository:
- First, zip up the plugin directory to create a
.ZIP
file. - Rename the
.ZIP
file to contain the plugin's version number:Myplugin.0.1.0.zip
- Upload this file to a publicly accessible web directory.
- Upload the
icon.png
file from your plugin directory to the web directory. - Next, customize a
plugins.xml
metadata file for your plugin. Most of the data you need can be found in themetatdata.txt
file in your plugin directory. The following example provides some guidance:<?xml version = '1.0' encoding = 'UTF-8'?> <?xml-stylesheet type="text/xsl" href="" ?> <plugins> <pyqgis_plugin name="My Plugin" version="0.1.0" plugin_id="227"> <description> <![CDATA[Demonstration of a QGIS Plugin]]> </description> <about></about> <version>0.1.0</version> <qgis_minimum_version>1.8.0</qgis_minimum_version> <qgis_maximum_version>2.9.9</qgis_maximum_version> <homepage> <![CDATA[https://code.google.com/p/geospatialpython]]> </homepage> <file_name>MyPlugin.0.1.0.zip</file_name> <icon> http://geospatialpython.googlecode.com/svn/icon_227.png </icon> <author_name><![CDATA[Joel Lawhead]]></author_name> <download_url> http://geospatialpython.googlecode.com/svn/MyPlugin.0.1.0.zip </download_url> <uploaded_by><![CDATA[jll]]></uploaded_by> <create_date>2014-05-16T15:31:19.824333</create_date> <update_date>2014-07-15T15:31:19.824333</update_date> <experimental>True</experimental> <deprecated>False</deprecated> <tracker> <![CDATA[http://code.google.com/p/geospatialpython/issues]]> </tracker> <repository> <![CDATA[https://geospatialpython.googlecode.com/svn/]]> </repository> <tags> <![CDATA[development,debugging,tools]]></tags> <downloads>0</downloads> <average_vote>0</average_vote> <rating_votes>0</rating_votes> </pyqgis_plugin> </plugins>
- Upload the
plugins.xml
file to your web directory. - Now, start QGIS and launch the plugins manager by going to the Plugins menu and selecting Manage and Install Plugins….
- In the Settings tab of the plugins settings dialog, scroll down and click on the Add… button.
- Give the plugin a name and then add the complete URL to your
plugins.xml
in the URL field. - Click on the OK button.
- To make things easier, disable the other repositories by selecting the repository name, clicking on the Edit button, and unchecking the Enable checkbox.
- Click on the OK button.
- Click on the Not Installed tab.
- Your test plugin should be the only plugin listed, so select it from the list.
- Click on the Install Plugin button in the bottom-right corner of the window.
- Click on the Close button.
- Go to the Plugins menu and select your plugin to ensure that it works.
How it works…
The QGIS repository concept is simple and effective. The plugins.xml
file contains a download_url
tag that points to a ZIP
file plugin on the same server or on a different server. The name
attribute of the pyqgis_plugin
tag is what appears in the QGIS plugin manager.