## Product Extensions

An extension is a set of Eclipse features and plug-ins that are designed to extend the functionality of already-installed Eclipse based products. Extensions are installed separately, but used only in conjunction with other Eclipse based products. This means that an extension does not need to install a JRE, the Eclipse platform, or a primary feature. The recommended directory structure for extensions allows a single installation to be used with multiple Eclipse based products.

The following directory structure shows how an extension for a hypothetical product, betterwebs, could be used to extend the functionality of the acmeweb product.

    betterwebs/
    	eclipse/			(directory for installed Eclipse files)
    		.eclipseextension	(marker file)
    		features/		(installed features)
    			com.example.betterwebs.betterfeature_1.0.0/
    				feature.xml
    		plugins/
    			com.example.betterwebs.betterfeature_1.0.0/
    				plugin.xml
    				about.html
    			com.example.betterwebs.betterwebsupport_1.0.0/

The relationship between an extension and the product that it is designed to enhance is set up in the links directory of the original product. Recall the following directory in the acmeweb product:

    acmeweb/
    	...
    	eclipse/		(directory for installed Eclipse files)
    		...
    		jre/
    		features/	(installed features)
    			...
    		plugins/
    			...
    		links/
    			com.example.betterwebs.betterfeature.link

When an extension is installed, it creates a link file in the links directory of any product that it is intending to extend. This link file makes the original product aware of the existence of the extension.

### Installing and Uninstalling Extensions

The install process for extensions is similar to that for products except for the following differences:

- Determine which already-installed product is to be extended (by asking the user or searching the computer for the appropriate marker file)
- Create an .eclipseextension marker file (instead of an .eclipseproduct marker file). The format and content are similar to the product markers.
- Create a link file for the extension and write it into the links directory of the associated product. The link file has the same name as the extension's feature directory without the version suffix. The link file is a java.util.Properties format file which defines the path to the installed extension.

The uninstall process for extensions is similar to that for products except that the uninstall must remove the link file from any products where it added one.

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