Product installation guidelines

The platform provides standard tools for updating and extending products.  In order to participate in the platform mechanisms for updating and extending products, your packaged product should follow the following guidelines.  This will allow your product to peacefully coexist with, or even enhance, other Eclipse based products.

Consider again the sample directory structure for the acmeweb product:

acmeweb/
	acmeweb.exe
	eclipse/	
		.eclipseproduct
		artifacts.xml	
		eclipse.exe	
		install.ini	
		.config/	
			platform.cfg
		jre/
		dropins/
		features/	
			com.example.acme.acmefeature_1.0.0/
				feature.xml
			...
		plugins/
			com.example.acme.acmefeature_1.0.0/
				plugin.xml
				about.ini
				about.html
				about.mappings
				about.properties
				acme.png
				plugin_customization.ini
				splash.bmp
				welcome.xml
			com.example.acme.acmewebsupport_1.0.0/
			...
		links/
			...
		p2/
			...

Where did these files come from?  Let's look at the product content from the perspective of the development team.  The installed files can be grouped into five main categories:

A proper installation script will produce the appropriate directory structure by doing the following:

Multi-user issues

When a product is installed with the intention of sharing the installation among multiple users, care must be taken to separate individual user's data (such as the workspace directory) from the shared product install directory.

Uninstall issues

When a product is uninstalled, the following concepts are important.

Reinstalling the product

When the product is already installed, the installer should allow a service update or upgrade if one is available.  The existence of the product can be confirmed by looking for acmeweb/eclipse/.eclipseproduct.  The information in this marker file can be used to confirm with the user that the correct product is being updated.  The availability of updates can be confirmed with pattern matches against feature names.  For example, the presence of acmeweb/eclipse/plugins/com.example.acmefeature_1.0.1 would indicate that the 1.0.1 version update had already been applied to the product.

Once the validity of the reinstall is established, the install program should copy or replace files as needed.  If the version of the underlying Eclipse platform has not changed, there is a good chance that complete directories can be ignored.  The version numbers appended to the platform features and plugins can be used to determine whether any changes underneath a plug-in or feature's directory are necessary. 

Additional information on installing products can be found in How to write an Eclipse installer.