*** empty log message ***
diff --git a/update/org.eclipse.update.ui/src/org/eclipse/update/internal/ui/UpdateUIPluginResources.properties b/update/org.eclipse.update.ui/src/org/eclipse/update/internal/ui/UpdateUIPluginResources.properties
index 733711c..bb5e118 100644
--- a/update/org.eclipse.update.ui/src/org/eclipse/update/internal/ui/UpdateUIPluginResources.properties
+++ b/update/org.eclipse.update.ui/src/org/eclipse/update/internal/ui/UpdateUIPluginResources.properties
@@ -427,6 +427,7 @@
 

 InstallWizard.error.unable=Unable to locate configuration site for the feature

 InstallWizard.error.old= Error while updating the old feature version

+InstallWizard.savedConfig = {0} - backup configuration

 

 InstallDeltaWizard.wtitle = Configuration Changes

 InstallDeltaWizard.processing = Processing pending changes:

diff --git a/update/org.eclipse.update.ui/src/org/eclipse/update/internal/ui/forms/DetailsForm.java b/update/org.eclipse.update.ui/src/org/eclipse/update/internal/ui/forms/DetailsForm.java
index e8e653d..3e2e706 100644
--- a/update/org.eclipse.update.ui/src/org/eclipse/update/internal/ui/forms/DetailsForm.java
+++ b/update/org.eclipse.update.ui/src/org/eclipse/update/internal/ui/forms/DetailsForm.java
@@ -907,6 +907,11 @@
 				validationStatus);
 			return;
 		}
+		if (job.getJobType()==PendingChange.UNCONFIGURE &&
+			UpdateUIPlugin.isPatch(job.getFeature())) {
+			unconfigurePatch(job.getFeature());
+			return;
+		}
 		BusyIndicator.showWhile(getControl().getDisplay(), new Runnable() {
 			public void run() {
 				InstallWizard wizard = new InstallWizard(job);
@@ -922,6 +927,9 @@
 			}
 		});
 	}
+	
+	private void unconfigurePatch(IFeature feature) {
+	}
 
 	private void doButtonSelected() {
 		if (currentFeature != null) {
diff --git a/update/org.eclipse.update.ui/src/org/eclipse/update/internal/ui/views/UpdatesView.java b/update/org.eclipse.update.ui/src/org/eclipse/update/internal/ui/views/UpdatesView.java
index b194439..65aedbd 100644
--- a/update/org.eclipse.update.ui/src/org/eclipse/update/internal/ui/views/UpdatesView.java
+++ b/update/org.eclipse.update.ui/src/org/eclipse/update/internal/ui/views/UpdatesView.java
@@ -746,7 +746,7 @@
 					config,
 					dir,
 					true)) {
-				InstallWizard.makeConfigurationCurrent(config);
+				InstallWizard.makeConfigurationCurrent(config, null);
 				InstallWizard.saveLocalSite();
 				UpdateUIPlugin.informRestartNeeded();
 			}
diff --git a/update/org.eclipse.update.ui/src/org/eclipse/update/internal/ui/wizards/InstallWizard.java b/update/org.eclipse.update.ui/src/org/eclipse/update/internal/ui/wizards/InstallWizard.java
index 04da62f..7501bca 100644
--- a/update/org.eclipse.update.ui/src/org/eclipse/update/internal/ui/wizards/InstallWizard.java
+++ b/update/org.eclipse.update.ui/src/org/eclipse/update/internal/ui/wizards/InstallWizard.java
@@ -24,6 +24,7 @@
 public class InstallWizard extends Wizard {

 	private static final String KEY_UNABLE = "InstallWizard.error.unable";

 	private static final String KEY_OLD = "InstallWizard.error.old";

+	private static final String KEY_SAVED_CONFIG = "InstallWizard.savedConfig";

 	private ReviewPage reviewPage;

 	private OptionalFeaturesPage optionalFeaturesPage;

 	private TargetPage targetPage;

@@ -76,7 +77,7 @@
 				throws InvocationTargetException {

 				try {

 					successfulInstall = false;

-					makeConfigurationCurrent(config);

+					makeConfigurationCurrent(config, job);

 					execute(

 						targetSite,

 						optionalElements,

@@ -139,9 +140,22 @@
 		}

 	}

 

-	public static void makeConfigurationCurrent(IInstallConfiguration config)

+	public static void makeConfigurationCurrent(IInstallConfiguration config, PendingChange job)

 		throws CoreException {

 		ILocalSite localSite = SiteManager.getLocalSite();

+		if (job!=null && job.getJobType()==PendingChange.INSTALL) {

+			if (UpdateUIPlugin.isPatch(job.getFeature())) {

+				// Installing a patch - preserve the current configuration

+				IInstallConfiguration cconfig = localSite.getCurrentConfiguration();

+				IInstallConfiguration savedConfig = localSite.addToPreservedConfigurations(cconfig);

+				VersionedIdentifier vid = job.getFeature().getVersionedIdentifier();

+				String key = "@"+vid.getIdentifier()+"_"+vid.getVersion();

+				String newLabel = UpdateUIPlugin.getFormattedMessage(KEY_SAVED_CONFIG, key);

+				savedConfig.setLabel(newLabel);

+				UpdateModel model = UpdateUIPlugin.getDefault().getUpdateModel();

+				model.fireObjectChanged(savedConfig, null);

+			}

+		}

 		localSite.addConfiguration(config);

 	}

 

diff --git a/update/org.eclipse.update.ui/src/org/eclipse/update/internal/ui/wizards/NewUpdatesWizard.java b/update/org.eclipse.update.ui/src/org/eclipse/update/internal/ui/wizards/NewUpdatesWizard.java
index 30a52ce..757fbaa 100644
--- a/update/org.eclipse.update.ui/src/org/eclipse/update/internal/ui/wizards/NewUpdatesWizard.java
+++ b/update/org.eclipse.update.ui/src/org/eclipse/update/internal/ui/wizards/NewUpdatesWizard.java
@@ -118,7 +118,7 @@
 				throws InvocationTargetException {
 				try {
 					installCount = 0;
-					InstallWizard.makeConfigurationCurrent(config);
+					InstallWizard.makeConfigurationCurrent(config, null);
 					execute(selectedJobs, monitor);
 				} catch (InstallAbortedException e) {
 					throw new InvocationTargetException(e);