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 eclipse.exe startup.jar install.ini .config/ platform.cfg jre/ features/ com.example.acme.acmefeature_1.0.0/ feature.xml org.eclipse.platform_2.0.0/ org.eclipse.platform.win32_2.0.0/ ... plugins/ com.example.acme.acmefeature_1.0.0/ plugin.xml about.ini about.html about.mappings about.properties acme.gif plugin_customization.ini splash.jpg welcome.xml com.example.acme.acmewebsupport_1.0.0/ org.eclipse.platform_2.0.0/ ... links/ ...
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:
When a product is installed for the intention of allowing multiple users, care must be taken to separate individual users' data (such as the workspace directory) from the shared product install directory.
When a product is uninstalled, the following concepts are important.
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.