public static ActionResult RemoveWebsite(Session session) { RunWebAction( session, featureName => { var webInstallationInfo = WebInstallationInfo.CreateFromFeature(session, featureName); string applicationDirectoryPath = webInstallationInfo.TargetWmiPath; if (DirectoryEntry.Exists(applicationDirectoryPath)) { using (DirectoryEntry applicationEntry = new DirectoryEntry(applicationDirectoryPath)) { applicationEntry.DeleteTree(); } } if (webInstallationInfo is WebsiteInstallationInfo) { WebsiteInstallationInfo websiteInstallationInfo = webInstallationInfo as WebsiteInstallationInfo; if (DirectoryEntry.Exists(websiteInstallationInfo.AppPoolWmiPath)) { using (DirectoryEntry appPoolEntry = new DirectoryEntry(websiteInstallationInfo.AppPoolWmiPath)) { appPoolEntry.DeleteTree(); } } } }); return(ActionResult.Success); }
public static ActionResult AppSearch_WEB(Session session) { RunWebAction( session, featureName => { session.SetPropertyValue(WebInstallationInfo.FeaturePropertyName, featureName); if (session.IsRemoving() || session.IsPatching() || session.IsOlderVersionDetected()) { WebInstallationInfo.CopyRegistryToProperties(session, featureName); WebInstallationInfo webInstallationInfo = WebInstallationInfo.CreateFromCurrentDetails(session); WebInstallationInfo.AddFeatureDetails(session, webInstallationInfo); } else if (session.UiLevel() != InstallUILevel.Full) { bool allowPropNameWithoutFeature = WebInstallationInfo.GetWebFeatureNames(session).Length == 1; WebInstallationInfo webInstallationInfo = WebInstallationInfo.CreateFromCurrentDetails(session, featureName, allowPropNameWithoutFeature); if (ValidateWebProperties(session, webInstallationInfo)) { WebInstallationInfo.AddFeatureDetails(session, webInstallationInfo); } } } ); return(ActionResult.Success); }
static void RunWebAction(Session session, Action <string> func) { foreach (var featureName in WebInstallationInfo.GetWebFeatureNames(session)) { func(featureName); } }
public static ActionResult AfterWebDialog(Session session) { WebInstallationInfo webInstallationInfo = WebInstallationInfo.CreateFromCurrentDetails(session); ValidateWebProperties(session, webInstallationInfo); return(ActionResult.Success); }
public static void SetSuggestedPropertyValues(Session session, string featureName) { bool createAsWebSite = session.GetBooleanPropertyValue(WebInstallationInfo.Constants.CreateWebsite); string[] propertyNames = createAsWebSite ? new string[] { WebInstallationInfo.Constants.WebsiteName, WebInstallationInfo.Constants.VirtualDirectoryName } : new string[] { WebInstallationInfo.Constants.VirtualDirectoryName }; BaseSetupInfo.SetSuggestedPropertyValues( session, featureName, WebInstallationInfo.GetWebFeatureNames(session), WebInstallationInfo.GetSuggestedWebNames(session), propertyNames ); }
private static WebInstallationInfo[] DeserializeAllFeatures(Session session) { var allPropVal = session.GetPropertyValue(AllInfoPropertyName); if (allPropVal == "-") { allPropVal = ""; } var allInfo = CprBroker.Utilities.Strings.Deserialize <WebInstallationInfo[]>(allPropVal); if (allInfo == null) { allInfo = new WebInstallationInfo[0]; } return(allInfo); }
static bool ValidateWebProperties(Session session, WebInstallationInfo webInstallationInfo) { string message; if (webInstallationInfo.Validate(out message)) { session["WEB_Valid"] = "True"; WebInstallationInfo.AddFeatureDetails(session, webInstallationInfo); return(true); } else { session["WEB_Valid"] = message; return(false); } }
public static void AddFeatureDetails(Session session, WebInstallationInfo webInstallationInfo) { var allInfo = DeserializeAllFeatures(session); var index = Array.FindIndex <WebInstallationInfo>(allInfo, inf => inf.FeatureName == webInstallationInfo.FeatureName); if (index != -1) { allInfo[index] = webInstallationInfo; } else { var list = new List <WebInstallationInfo>(allInfo); list.Add(webInstallationInfo); allInfo = list.ToArray(); } SerializeAllFeatures(session, allInfo); }
void PopulateInstallationInfo() { if (newWebSiteRadio.Checked) { InstallationInfo = new WebsiteInstallationInfo() { WebsiteName = newWebSiteNameTextBox.Text, }; } else { InstallationInfo = new VirtualDirectoryInstallationInfo() { WebsiteName = sitesComboBox.Text, VirtualDirectoryName = virtualDirectoryNameTextBox.Text, }; } }
public static ActionResult PreWebDialog(Session session) { var featureName = session.GetPropertyValue(WebInstallationInfo.FeaturePropertyName); var webInstallationInfo = WebInstallationInfo.CreateFromFeature(session, featureName); if (webInstallationInfo != null) { webInstallationInfo.CopyToCurrentDetails(session); } else { WebInstallationInfo.SetSuggestedPropertyValues(session, featureName); } // Necessary step for WebSiteOrDirectoryDialog session.SetPropertyValue("WEB_SITENAME_SITE", session.GetPropertyValue(WebInstallationInfo.Constants.WebsiteName)); session.SetPropertyValue("WEB_SITENAME_VDIR", session.GetPropertyValue(WebInstallationInfo.Constants.VirtualDirectoryName)); return(ActionResult.Success); }
public static ActionResult AfterInstallInitialize_WEB(Session session, string[] extraCustomActionNames) { RunWebAction( session, (featureName) => { WebInstallationInfo webInstallationInfo = WebInstallationInfo.CreateFromFeature(session, featureName); webInstallationInfo.CopyToCurrentDetails(session); WebInstallationInfo.AddRegistryEntries(session, featureName); } ); var aggregatedProps = WebInstallationInfo.GetCustomActionData(session).ToString(); session.SetPropertyValue("RollbackWebsite", aggregatedProps); session.SetPropertyValue("CreateWebsite", aggregatedProps); session.SetPropertyValue("RemoveWebsite", aggregatedProps); session.SetPropertyValue("PatchWebsite", aggregatedProps); foreach (var customActionName in extraCustomActionNames) { session.SetPropertyValue(customActionName, aggregatedProps); } return(ActionResult.Success); }
public static ActionResult DeployWebsite(Session session, Dictionary <string, WebInstallationOptions> allOptions) { RunWebAction(session, featureName => { try { EnsureIISComponents(); var options = allOptions[featureName]; var webInstallationInfo = WebInstallationInfo.CreateFromFeature(session, featureName); bool exists = webInstallationInfo.TargetEntryExists; int siteID = webInstallationInfo.GetSiteId(); int scriptMapVersion; RunRegIIS("-ir", options.FrameworkVersion); if (webInstallationInfo.CreateAsWebsite) { WebsiteInstallationInfo websiteInstallationInfo = webInstallationInfo as WebsiteInstallationInfo; using (DirectoryEntry machineRoot = new DirectoryEntry(WebInstallationInfo.ServerRoot)) { string appPoolName = ""; if (DirectoryEntry.Exists(WebsiteInstallationInfo.AppPoolsRoot)) { using (DirectoryEntry appPools = new DirectoryEntry(WebsiteInstallationInfo.AppPoolsRoot)) { appPoolName = webInstallationInfo.WebsiteName; bool appPoolExixts = DirectoryEntry.Exists(websiteInstallationInfo.AppPoolWmiPath); using (DirectoryEntry appPool = appPoolExixts ? new DirectoryEntry(appPools.Path + "/" + websiteInstallationInfo.WebsiteName) : appPools.Invoke("Create", "IIsApplicationPool", websiteInstallationInfo.WebsiteName) as DirectoryEntry) { appPool.InvokeSet("AppPoolIdentityType", 2); //LocalSystem 0; LocalService 1; NetworkService 2; Custom (user & pwd) 3; ApplicationPoolIdentity 4 appPool.InvokeSet("AppPoolAutoStart", true); if (GetIisMajorVersion() > 6) { appPool.InvokeSet("ManagedRuntimeVersion", string.Format("v{0}", options.FrameworkVersion.ToString(2))); appPool.InvokeSet("ManagedPipelineMode", 0); // Integrated 0; Classic 1 } appPool.CommitChanges(); } } } using (DirectoryEntry site = exists ? new DirectoryEntry(machineRoot.Path + "/" + siteID) : machineRoot.Invoke("Create", "IIsWebServer", siteID) as System.DirectoryServices.DirectoryEntry) { site.Invoke("Put", "ServerComment", websiteInstallationInfo.WebsiteName); site.Invoke("Put", "KeyType", "IIsWebServer"); site.Invoke("Put", "ServerBindings", "*:80:" + websiteInstallationInfo.WebsiteName); site.Invoke("Put", "ServerState", 2); site.Invoke("Put", "FrontPageWeb", 1); site.Invoke("Put", "DefaultDoc", "Default.aspx"); site.Invoke("Put", "SecureBindings", "*:443:" + websiteInstallationInfo.WebsiteName); site.Invoke("Put", "ServerAutoStart", 1); site.Invoke("Put", "ServerSize", 1); site.Invoke("SetInfo"); site.CommitChanges(); WebInstallationInfo.AddFeatureDetails(session, webInstallationInfo); string siteRootPath = site.Path + "/Root"; using (DirectoryEntry siteRoot = DirectoryEntry.Exists(siteRootPath) ? new DirectoryEntry(siteRootPath) : site.Children.Add("Root", "IIsWebVirtualDir")) { siteRoot.InvokeSet("Path", websiteInstallationInfo.GetWebFolderPath(options)); siteRoot.InvokeSet("DefaultDoc", "Default.aspx"); if (!string.IsNullOrEmpty(appPoolName)) { siteRoot.InvokeSet("AppPoolId", appPoolName); } siteRoot.Invoke("AppCreate", true); siteRoot.CommitChanges(); scriptMapVersion = GetScriptMapsVersion(siteRoot); } } } } else { VirtualDirectoryInstallationInfo virtualDirectoryInstallationInfo = webInstallationInfo as VirtualDirectoryInstallationInfo; using (DirectoryEntry websiteEntry = new DirectoryEntry(virtualDirectoryInstallationInfo.WebsitePath)) { using (DirectoryEntry applicationEntry = exists ? new DirectoryEntry(virtualDirectoryInstallationInfo.TargetWmiPath) : websiteEntry.Invoke("Create", "IIsWebVirtualDir", virtualDirectoryInstallationInfo.VirtualDirectoryName) as DirectoryEntry) { applicationEntry.InvokeSet("Path", virtualDirectoryInstallationInfo.GetWebFolderPath(options)); applicationEntry.Invoke("AppCreate", true); applicationEntry.InvokeSet("AppFriendlyName", virtualDirectoryInstallationInfo.VirtualDirectoryName); applicationEntry.InvokeSet("DefaultDoc", "Default.aspx"); applicationEntry.CommitChanges(); WebInstallationInfo.AddFeatureDetails(session, virtualDirectoryInstallationInfo); } scriptMapVersion = GetScriptMapsVersion(websiteEntry); } } // Set ASP.NET to target framework version if (scriptMapVersion != options.FrameworkVersion.Major) { RunRegIIS(string.Format("-s {0}", webInstallationInfo.TargetWmiSubPath), options.FrameworkVersion); } // Mark as done WebInstallationInfo.AddFeatureDetails(session, webInstallationInfo); GrantConfigEncryptionAccess(options.FrameworkVersion); var configFilePath = webInstallationInfo.GetWebConfigFilePath(options); var appRelativePath = webInstallationInfo.GetAppRelativePath(); // Data provider keys EncryptConfigSections(configFilePath, siteID.ToString(), appRelativePath, options.ConfigSectionGroupEncryptionOptions, options.FrameworkVersion); // Logging flat file access if (options.InitializeFlatFileLogging) { InitializeFlatFileLogging(configFilePath); } // Set and encrypt connection strings and enqueue their encryption SetConnectionStrings(configFilePath, options.ConnectionStrings); if (options.EncryptConnectionStrings) { EncryptConnectionStrings(siteID.ToString(), appRelativePath, options.FrameworkVersion); } // Add url to internet explorer trusted zone var internetSecurityManager = InternetSecurityManager.CreateObject(); foreach (var url in webInstallationInfo.CalculateWebUrls()) { AddUrlToLocalIntranet(url); } } catch (InstallException ex) { throw ex; } catch (Exception ex) { throw new InstallException(Messages.AnErrorHasOccurredAndInstallationWillBeCancelled, ex); } }); return(ActionResult.Success); }
public void SetWebInstallationInfo(WebInstallationInfo value) { savedState["WebInstallationInfo"] = Strings.SerializeObject(value); }