Пример #1
0
 /// <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);
     }
 }
Пример #2
0
        /// <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);
            }
        }
Пример #3
0
 /// <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);
     }
 }
Пример #4
0
        /// <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);
                    }
                }
            }
        }