16696
diff --git a/update/org.eclipse.update.core/src/org/eclipse/update/internal/core/InstallConfiguration.java b/update/org.eclipse.update.core/src/org/eclipse/update/internal/core/InstallConfiguration.java
index f44e03b..f998941 100644
--- a/update/org.eclipse.update.core/src/org/eclipse/update/internal/core/InstallConfiguration.java
+++ b/update/org.eclipse.update.core/src/org/eclipse/update/internal/core/InstallConfiguration.java
@@ -328,6 +328,9 @@
 				configuredFeatureEntries[i]);

 		}

 

+		//Unconfigure sites

+		unconfigureSites(configurationSites,runtimeConfiguration);

+

 		// Write the plugin path, primary feature and platform

 		// into platform.cfg

 		for (int i = 0; i < configurationSites.length; i++) {

@@ -368,6 +371,7 @@
 

 	/*

 	 * Write the plugin path for each site

+	 * Do not check if the site already existed before [16696]

 	 */

 	private void savePluginPath(

 		ConfiguredSite cSite,

@@ -404,22 +408,10 @@
 			//$NON-NLS-1$

 		}

 

-		// if the URL already exist, set the policy

+		// create the policy

 		IPlatformConfiguration.ISiteEntry siteEntry =

-			runtimeConfiguration.findConfiguredSite(urlToCheck);

-		if (siteEntry != null) {

-			siteEntry.setSitePolicy(sitePolicy);

-		} else {

-			throw Utilities.newCoreException(

-				Policy.bind(

-					"InstallConfiguration.UnableToFindConfiguredSite",

-					urlToCheck.toExternalForm(),

-					runtimeConfiguration

-						.getConfigurationLocation()

-						.toExternalForm()),

-				null);

-			//$NON-NLS-1$

-		}

+			runtimeConfiguration.createSiteEntry(urlToCheck,sitePolicy);

+		runtimeConfiguration.configureSite(siteEntry);

 	}

 

 	/*

@@ -500,6 +492,62 @@
 	}

 

 	/*

+	 * Unconfigures all Site entries from platform.cfg

+	 * Log if we are about to create a site that didn't exist before

+	 * in platform.cfg [16696]

+	 */

+	private void unconfigureSites(

+		ConfiguredSiteModel[] configurationSites,

+		IPlatformConfiguration runtimeConfiguration) throws CoreException {

+

+			

+		// check all the sites we are about to write already existed

+		// they should have existed either because they were created by

+		// updateManager or because we read them from platform.cfg

+		for (int i = 0; i < configurationSites.length; i++) {

+			// get the URL of the site that matches the one platform.cfg gave us

+			URL urlToCheck = null;

+			try {

+				urlToCheck = new URL(configurationSites[i].getPlatformURLString());

+			} catch (MalformedURLException e) {

+				UpdateManagerPlugin.warn(

+					Policy.bind(

+						"InstallConfiguration.UnableToCreateURL",

+						configurationSites[i].getPlatformURLString()),

+					e);

+				//$NON-NLS-1$

+			} catch (ClassCastException e) {

+				UpdateManagerPlugin.warn(

+					Policy.bind("InstallConfiguration.UnableToCast"),

+					e);

+				//$NON-NLS-1$

+			}

+	

+			// if the URL doesn't exits log it

+			IPlatformConfiguration.ISiteEntry siteEntry =

+				runtimeConfiguration.findConfiguredSite(urlToCheck);

+			if (siteEntry == null) {

+				UpdateManagerPlugin.warn(

+					Policy.bind(

+						"Unable to find site {0} in platform configuration {1}.",

+						urlToCheck.toExternalForm(),

+						runtimeConfiguration

+							.getConfigurationLocation()

+							.toExternalForm()));

+				//$NON-NLS-1$

+			}

+		}

+		

+		

+		// disable all the sites

+		IPlatformConfiguration.ISiteEntry[] platformSites = runtimeConfiguration.getConfiguredSites();

+		for (int i = 0; i < platformSites.length; i++) {
+			runtimeConfiguration.unconfigureSite(platformSites[i]);
+		}

+		

+	}	 

+

+	/*

 	 * 

 	 */

 	public void saveConfigurationFile(boolean isTransient)

diff --git a/update/org.eclipse.update.core/src/org/eclipse/update/internal/core/messages.properties b/update/org.eclipse.update.core/src/org/eclipse/update/internal/core/messages.properties
index bc24546..eaef498 100644
--- a/update/org.eclipse.update.core/src/org/eclipse/update/internal/core/messages.properties
+++ b/update/org.eclipse.update.core/src/org/eclipse/update/internal/core/messages.properties
@@ -148,7 +148,6 @@
 InstallConfiguration.UnableToEncodeConfiguration= Unable to encode configuration in {0}.
 InstallConfiguration.UnableToCreateURL= Unable to create URL from {0}.
 InstallConfiguration.UnableToCast= Internal Error. The Configuration Site object is not a subclass of ConfiguredSiteModel
-InstallConfiguration.UnableToFindConfiguredSite= Unable to find site {0} in platform configuration {1}.
 InstallConfiguration.UnableToSavePlatformConfiguration=Unable to save platform configuration in {0}.
 InstallConfiguration.DeletedConfiguration= * Deleted Configuration *
 InstallConfiguration.AlreadyNativelyLinked=The site is already linked.