/// <summary> /// Removes the resource permission. /// </summary> /// <param name="app">The application.</param> private void RemoveResourcePermission(ApplicationSpecification app) { string[] files = Directory.GetFiles(app.PhysicalPath, "*.ashx", SearchOption.AllDirectories); foreach (string file in files) { this.RemoveResourcePermission(file, app.AppPoolName); } }
/// <summary> /// Creates an application, if it does not already exist. /// </summary> /// <param name="parent">The parent website.</param> /// <param name="applicationSpec">Specification for an IIS Application.</param> private void AddWebApplication(Site parent, ApplicationSpecification applicationSpec) { string iisFriendlyName = '/' + applicationSpec.Name; Application application = parent.Applications.FirstOrDefault(a => a.Path == iisFriendlyName); if (application == null) { this.installLogger.Log(string.Format(Messages.WEB_CreateApplication, applicationSpec.Name)); application = parent.Applications.Add(iisFriendlyName, applicationSpec.PhysicalPath); application.ApplicationPoolName = applicationSpec.AppPoolName; if (application.Attributes["preloadEnabled"] != null) { application.SetAttributeValue("preloadEnabled", true); } this.installLogger.LogSuccess(Messages.MAIN_StepComplete); this.AddFolderPermission(applicationSpec.PhysicalPath, applicationSpec.Permission, applicationSpec.AppPoolName); string[] files = Directory.GetFiles(applicationSpec.PhysicalPath, "*.ashx", SearchOption.AllDirectories); foreach (string file in files) { this.AddResourcePermission(file, FileSystemRights.Write, applicationSpec.AppPoolName); } } foreach (VirtualDirectorySpecification virtualDirSpec in applicationSpec.VirtualDirectories) { this.AddVirtualDirectory(application, virtualDirSpec); } }
/// <summary> /// Clean up after an uninstall. /// </summary> /// <param name="spec">Specification for an IIS Application.</param> private void CleanUp(ApplicationSpecification spec) { this.RemoveFolderPermission(spec.PhysicalPath, spec.AppPoolName); foreach (VirtualDirectorySpecification vitualDirSpec in spec.VirtualDirectories) { this.CleanUp(vitualDirSpec, spec.AppPoolName); } }
/// <summary> /// Adds the sub applications. /// </summary> /// <param name="parent">The parent.</param> /// <param name="applicationSpec">The application spec.</param> private void AddSubApplications(Site parent, ApplicationSpecification applicationSpec) { string iisFriendlyName = '/' + applicationSpec.Name; Application application = parent.Applications.FirstOrDefault(a => a.Path == iisFriendlyName); if (application == null) { return; } foreach (var subApp in applicationSpec.SubApplications) { var subAppname = iisFriendlyName + '/' + subApp.Name; var subApplication = parent.Applications.FirstOrDefault(v => v.Path == subAppname); if (subApplication == null) { this.installLogger.Log(string.Format(Messages.WEB_CreateApplication, subApp.Name)); subApplication = parent.Applications.Add(subAppname, subApp.PhysicalPath); subApplication.ApplicationPoolName = subApp.AppPoolName; if (subApplication.Attributes["preloadEnabled"] != null) { subApplication.SetAttributeValue("preloadEnabled", true); } this.installLogger.LogSuccess(Messages.MAIN_StepComplete); this.AddFolderPermission(subApp.PhysicalPath, subApp.Permission, subApp.AppPoolName); string[] files = Directory.GetFiles(subApp.PhysicalPath, "*.ashx", SearchOption.AllDirectories); foreach (string file in files) { this.AddResourcePermission(file, FileSystemRights.Write, subApp.AppPoolName); } } } }