openSUSE:One Click Install ISV
tagline: From openSUSE
ISV Guide to One Click Install
This tutorial is aimed at software distributors who wish to utilise the one click install feature of 10.3 and newer.
Package the software
Firstly your software must be packaged in RPM format, and available in a package repository accessible to the end user. If this is not already the case you could make use of the Build Service to create packages & a repository. The buildservice is also capable of generating the XML files described below.
Create a metapackage
Next you need to create an XML metapackage file that will describe what these packages are, and where they are located. The full schema and complex example for this is available at specification. For this simple example we will create an XML file to install a package named "MyPackage" available in the repository located at "http://example.com/MyRepository".
<metapackage xmlns:os="http://opensuse.org/Standards/One_Click_Install" xmlns="http://opensuse.org/Standards/One_Click_Install"> <group> <!-- A software bundle, typically only one, or one for each distribution in each file. --> <name>My Package Bundle</name> <!-- Name of the whole software bundle Displayed in the UI --> <summary>This is a software bundle containing MyPackage</summary> <!-- Summary of the whole software bundle Displayed in the UI --> <description>This is the summary of the MyPackage Package I have made it unnecessarily long. Blah Blah Blah -- ChangeLog -- Some changes here. </description> <!-- Description of the whole software bundle Displayed in the UI --> <remainSubscribed>false</remainSubscribed> <!-- Specifies whether the user should remain subscribed to these repositories post installation, the user can override this. --> <repositories> <!-- A list of repositories required for this installation --> <repository> <name>MyRepository</name> <!-- Name of this repository --> <summary>This repository contains my packages.</summary> <!-- Summary of this repository--> <description>This repository contains my packages.</description><!-- Description of this repository, displayed in the UI--> <url>http://example.com/MyRepository</url><!-- URL of this repository to add--> </repository> </repositories> <software> <!-- A list of software items to install during this installation --> <item> <name>MyPackage</name> <!-- Name of the software, this both identifies it within the repository, and is displayed to the user --> <summary>This is a my package.</summary> <!-- Summary of the software --> <description>This my package, I think you should install it.</description> <!-- Description of the software, displayed in the UI. --> </item> </software> </group> </metapackage>
Save this file as test.ymp and click on it in konqueror in suse and the installation wizard should appear with the values you entered.
To create a link on a webpage to install this:
- If you have control over the webserver and can make it serve these files as mimetype x-suse-ymp then simply create a link to the ymp file created as per above instructions.
<a href="http://example.com/test.ymp">Click here to install my package!</a>
- If you do not, or are not sure simply host the above file on your webserver and create a link as shown:
<a href="data:text/x-suse-ymu,http://example.com/test.ymp">Click here to install my package!</a>
This creates some embedded data of the YMU mimetype, which the handler understands as a pointer to the metapackage itself.
To utilise the installer on a physical medium such as a CD, include the repository on the CD, and the metapackage itself named perhaps "setup.ymp".
Translations / Multiple products
Some additional possibilities in the metapackage XML that you might be interested in:
- Descriptions and summaries can be translated, Simply create a list such as:
<description>Base description</description> <description lang="pt_BR">....</description>
and so on.
- Multiple groups can be specified to enable one file to install on multiple distributions. The metapackage would then look something like:
<metapackage xmlns:os="http://opensuse.org/Standards/One_Click_Install" xmlns="http://opensuse.org/Standards/One_Click_Install"> <group> <!--fallback group if no distversion matches--> </group> <group distversion="openSUSE 10.2"> <!--What to install on 10.2--> </group> <group distversion="openSUSE 10.3"> <!--What to install on 10.3--> </group> <group distversion="Fedora 7"> <!--What to install on Fedora 7--> </group> </metapackage>
If it is known beforehand what product the user is using, and what language the user is using (e.g. from the browser identification string) It is advisable to only include the required information in the YMP file to reduce download time. This flexibility is provided for when this information cannot be known.
These are the main possibilities, there are other things that may be specified in the XML, see specification for the complete schema.
Here are some buttons that can be used for websites. They're created by Alex Hixon and are available in svg-format for easy modification, such as with Inkscape for example.