The plugin manager
Install a plugin
*When a user selects a plugin, dependencies are automatically selected
*When the user click on the install button, a download manager fetches the plugins to a temp directory
*The plugins zip file are extracted to the main plugins directories
*The user is prompted to restart the application to see the changes
*The search engine is updated to update the list of installed plugins
Uninstall a plugin
*When the user chooses to uninstall a plugin, a plugin depends on the one to be uninstalled the user is prompted that dependencies will also be uninstalled. If he agrees the dependencies are selected for uninstallation. If not, the plugin is deselected.
*The plugin is marked for uninstall and unregistered
*The plugin and its dependencies are removed from the search engine
*On startup the plugins directories are deleted