diff --git a/src/Umbraco.Core/Configuration/ClientDependencyConfiguration.cs b/src/Umbraco.Core/Configuration/ClientDependencyConfiguration.cs
index 6fbdec6901..b3076f2143 100644
--- a/src/Umbraco.Core/Configuration/ClientDependencyConfiguration.cs
+++ b/src/Umbraco.Core/Configuration/ClientDependencyConfiguration.cs
@@ -1,6 +1,10 @@
using System;
-using System.Linq;
+using System.Collections.Generic;
+using System.IO;
+using System.Web;
using System.Xml.Linq;
+using ClientDependency.Core.CompositeFiles.Providers;
+using ClientDependency.Core.Config;
using Umbraco.Core.IO;
using Umbraco.Core.Logging;
@@ -49,5 +53,57 @@ namespace Umbraco.Core.Configuration
return false;
}
+
+ ///
+ /// Clears the temporary files stored for the ClientDependency folder
+ ///
+ ///
+ internal bool ClearTempFiles(HttpContextBase currentHttpContext)
+ {
+ var cdfTempDirectories = new HashSet();
+ foreach (BaseCompositeFileProcessingProvider provider in ClientDependencySettings.Instance
+ .CompositeFileProcessingProviderCollection)
+ {
+ var path = provider.CompositeFilePath.FullName;
+ cdfTempDirectories.Add(path);
+ }
+
+ try
+ {
+ var relativePath = currentHttpContext.Server.MapPath(XmlFileMapper.FileMapVirtualFolder);
+ if (relativePath != null)
+ {
+ var directoryInfo = new DirectoryInfo(relativePath);
+ var path = directoryInfo.FullName;
+ cdfTempDirectories.Add(path);
+ }
+ }
+ catch (Exception ex)
+ {
+ //invalid path format or something... try/catch to be safe
+ LogHelper.Error("Could not get path from ClientDependency.config", ex);
+ }
+
+ var noErrorsDeleting = true;
+ foreach (var directory in cdfTempDirectories)
+ {
+ var directoryInfo = new DirectoryInfo(directory);
+ if (directoryInfo.Exists == false)
+ continue;
+
+ try
+ {
+ directoryInfo.Delete(true);
+ }
+ catch (Exception ex)
+ {
+ // Something could be locking the directory or the was another error, making sure we don't break the upgrade installer
+ LogHelper.Error("Could not clear temp files", ex);
+ noErrorsDeleting = false;
+ }
+ }
+
+ return noErrorsDeleting;
+ }
}
}
\ No newline at end of file
diff --git a/src/Umbraco.Core/Umbraco.Core.csproj b/src/Umbraco.Core/Umbraco.Core.csproj
index 3adf99981a..3850fb98b0 100644
--- a/src/Umbraco.Core/Umbraco.Core.csproj
+++ b/src/Umbraco.Core/Umbraco.Core.csproj
@@ -45,6 +45,9 @@
..\packages\AutoMapper.3.3.1\lib\net40\AutoMapper.Net4.dll
True
+
+ ..\packages\ClientDependency.1.9.2\lib\net45\ClientDependency.Core.dll
+
..\packages\HtmlAgilityPack.1.4.9.5\lib\Net45\HtmlAgilityPack.dll
True
diff --git a/src/Umbraco.Core/packages.config b/src/Umbraco.Core/packages.config
index dd00d61ea6..2a84e2d967 100644
--- a/src/Umbraco.Core/packages.config
+++ b/src/Umbraco.Core/packages.config
@@ -1,6 +1,7 @@
+
diff --git a/src/Umbraco.Web/Install/Controllers/InstallController.cs b/src/Umbraco.Web/Install/Controllers/InstallController.cs
index 360e35efda..7e3336e1e8 100644
--- a/src/Umbraco.Web/Install/Controllers/InstallController.cs
+++ b/src/Umbraco.Web/Install/Controllers/InstallController.cs
@@ -47,6 +47,8 @@ namespace Umbraco.Web.Install.Controllers
// Update ClientDependency version
var clientDependencyConfig = new ClientDependencyConfiguration(ApplicationContext.Current.ProfilingLogger.Logger);
var clientDependencyUpdated = clientDependencyConfig.IncreaseVersionNumber();
+ // Delete ClientDependency temp directories to make sure we get fresh caches
+ var clientDependencyTempFilesDeleted = clientDependencyConfig.ClearTempFiles(HttpContext);
var result = _umbracoContext.Security.ValidateCurrentUser(false);