@@ -50,6 +50,8 @@ public class InstallerController : UmbracoAuthorizedApiController
5050 private readonly string fileSystemProvidersConfigInstallXdtPath = HostingEnvironment . MapPath ( "~/App_Plugins/UmbracoFileSystemProviders/Azure/Install/FileSystemProviders.config.install.xdt" ) ;
5151 private readonly string fileSystemProvidersConfigPath = HostingEnvironment . MapPath ( "~/Config/FileSystemProviders.config" ) ;
5252
53+ private readonly string webConfigXdtPath = HostingEnvironment . MapPath ( "~/App_Plugins/UmbracoFileSystemProviders/Azure/Install/web.config.install.xdt" ) ;
54+
5355 // /Umbraco/backoffice/FileSystemProviders/Installer/GetParameters
5456 public IEnumerable < Parameter > GetParameters ( )
5557 {
@@ -69,7 +71,7 @@ public InstallerStatus PostParameters(IEnumerable<Parameter> parameters)
6971 return InstallerStatus . ConnectionError ;
7072 }
7173
72- if ( SaveParametersToXdt ( this . fileSystemProvidersConfigInstallXdtPath , parameters ) )
74+ if ( SaveParametersToFileSystemProvidersXdt ( this . fileSystemProvidersConfigInstallXdtPath , parameters ) && SaveContainerNameToWebConfigXdt ( this . webConfigXdtPath , containerName ) )
7375 {
7476 if ( ! ExecuteFileSystemConfigTransform ( ) || ! ExecuteWebConfigTransform ( ) )
7577 {
@@ -105,7 +107,7 @@ public InstallerStatus PostParameters(IEnumerable<Parameter> parameters)
105107 return InstallerStatus . SaveXdtError ;
106108 }
107109
108- internal static bool SaveParametersToXdt ( string xdtPath , IEnumerable < Parameter > newParameters )
110+ internal static bool SaveParametersToFileSystemProvidersXdt ( string xdtPath , IEnumerable < Parameter > newParameters )
109111 {
110112 var result = false ;
111113
@@ -166,6 +168,37 @@ internal static bool SaveParametersToXdt(string xdtPath, IEnumerable<Parameter>
166168 return result ;
167169 }
168170
171+ internal static bool SaveContainerNameToWebConfigXdt ( string xdtPath , string containerName )
172+ {
173+ var result = false ;
174+
175+ var document = XmlHelper . OpenAsXmlDocument ( xdtPath ) ;
176+
177+ // Inset a Parameter element with Xdt remove so that updated values get saved (for upgrades), we don't want this for NuGet packages which is why it's here instead
178+ var nsMgr = new XmlNamespaceManager ( document . NameTable ) ;
179+ var strNamespace = "http://schemas.microsoft.com/XML-Document-Transform" ;
180+ nsMgr . AddNamespace ( "xdt" , strNamespace ) ;
181+
182+ var locationElement = document . SelectSingleNode ( string . Format ( "//location" ) ) ;
183+ if ( locationElement != null ) locationElement . Attributes [ "path" ] . Value = containerName ;
184+
185+ try
186+ {
187+ document . Save ( xdtPath ) ;
188+
189+ // No errors so the result is true
190+ result = true ;
191+ }
192+ catch ( Exception e )
193+ {
194+ // Log error message
195+ var message = "Error saving XDT Parameters: " + e . Message ;
196+ LogHelper . Error ( typeof ( InstallerController ) , message , e ) ;
197+ }
198+
199+ return result ;
200+ }
201+
169202 internal static bool SaveBlobPathToImageProcessorSecurityXdt ( string xdtPath , string rootUrl , string containerName )
170203 {
171204 var result = false ;
0 commit comments