Index: src/org/eclipse/update/core/Feature.java =================================================================== RCS file: /home/eclipse/org.eclipse.update.core/src/org/eclipse/update/core/Feature.java,v retrieving revision 1.92 diff -u -r1.92 Feature.java --- src/org/eclipse/update/core/Feature.java 13 May 2004 22:26:58 -0000 1.92 +++ src/org/eclipse/update/core/Feature.java 23 Sep 2004 22:54:06 -0000 @@ -287,6 +287,7 @@ IFeatureReference alreadyInstalledFeature = null; IFeatureContentConsumer consumer = null; IPluginEntry[] targetSitePluginEntries = null; + ArrayList justInstalledPlugins = new ArrayList(); try { // determine list of plugins to install @@ -436,9 +437,12 @@ pluginConsumer.store(references[j], subMonitor); } - InstallRegistry.registerPlugin(pluginsToInstall[i]); if (monitor.isCanceled()) abort(); + else { + justInstalledPlugins.add(pluginsToInstall[i]); + InstallRegistry.registerPlugin(pluginsToInstall[i]); + } } // check if we need to install feature files [16718] @@ -460,14 +464,18 @@ msg + " " + references[i].getIdentifier()); //$NON-NLS-1$ consumer.store(references[i], subMonitor); } - InstallRegistry.registerFeature(this); + + if (monitor.isCanceled()) + abort(); + else + InstallRegistry.registerFeature(this); } else { - monitor.worked(1); + if (monitor.isCanceled()) + abort(); + else + monitor.worked(1); } - if (monitor.isCanceled()) - abort(); - // call handler to complete installation (eg. handle non-plugin entries) handler.completeInstall(consumer); monitorWork(monitor, 1); @@ -497,6 +505,9 @@ // close the log recoveryLog.close(ErrorRecoveryLog.END_INSTALL_LOG); } else { + // unregister the just installed plugins + for (int i=0; i