static void AddApplication(Site site, NippsModule nippsModule) { string physicalPath = NippsConfig.Environment.IISwwwroot; if (ServiceOnlyInstall) { if (!Match(nippsModule.ApplicationName) && !nippsModule.ApplicationName.StartsWith("Netas.Nipps.DeployManager.Service")) { return; } } if (physicalPath.EndsWith("\\")) { physicalPath += nippsModule.ApplicationName; } else { physicalPath += "\\" + nippsModule.ApplicationName; } nippsModule.ApplicationName = "/" + nippsModule.ApplicationName; Console.WriteLine("adding " + nippsModule.ApplicationName + " from path " + physicalPath); Application application = site.Applications.Add(nippsModule.ApplicationName, physicalPath); application.ApplicationPoolName = string.IsNullOrEmpty(NippsConfig.Environment.IISApplicationPoolName) ? nippsModule.ApplicationPoolName : NippsConfig.Environment.IISApplicationPoolName; }
static void UpdateWebConfigs(NippsModule nippsModule) { string configName; string configText; string[] iisLocalAdminParts = NippsConfig.Environment.IISLocalAdmin.Split('/'); string[] sqlLocalAdminParts = NippsConfig.Environment.SqlLocalAdmin.Split('/'); string[] sqlUserParts = NippsConfig.Environment.SqlUser.Split('/'); bool isDeployManager = nippsModule.ApplicationName.Equals("Netas.Nipps.DeployManager.Service"); configName = TempFolder + nippsModule.ApplicationName + @"\web.config"; if (!File.Exists(configName)) { return; } Console.WriteLine("opening " + configName); configText = File.ReadAllText(configName); //system.web>identity only one identity must be defined in there Console.WriteLine("checking and updating if exist system.web>indendity"); if (RegexIdentity.Match(configText).Success) { configText = RegexIdentity.Replace(configText, string.Format(IdentityFormat, iisLocalAdminParts[0], iisLocalAdminParts[1])); } //connectionstrings: only one identity must be defined in there Console.WriteLine("checking and updating if exist connectionstrings"); if (RegexConnectionStringUserID.Match(configText).Success) { configText = RegexConnectionStringUserID.Replace(configText, string.Format(ConnectionStringUserIDFormat, isDeployManager ? sqlLocalAdminParts[0] : sqlUserParts[0])); } if (RegexConnectionStringPassword.Match(configText).Success) { configText = RegexConnectionStringPassword.Replace(configText, string.Format(ConnectionStringPasswordFormat, isDeployManager ? sqlLocalAdminParts[1] : sqlUserParts[1])); } if (RegexConnectionStringDataSource.Match(configText).Success) { configText = RegexConnectionStringDataSource.Replace(configText, string.Format(ConnectionStringDataSourceFormat, NippsConfig.Environment.SqlHost)); } if (RegexConnectionStringInitialCatalog.Match(configText).Success) { configText = RegexConnectionStringInitialCatalog.Replace(configText, string.Format(ConnectionStringInitialCatalogFormat, NippsConfig.Environment.SqlDatabase)); } //appsettings>may be more than one in there Console.WriteLine("checking and updating if exist applicationsettings>***serviceurls"); if (RegexServiceUrls.Matches(configText).Count > 0) { configText = RegexServiceUrls.Replace(configText, string.Format(ServiceUrlFormat, NippsConfig.Environment.IISSMHostPort)); } File.WriteAllText(configName, configText); }
static void MoveFolder() { Console.WriteLine("moving or copying files and folders into " + NippsConfig.Environment.IISwwwroot); foreach (string sourceDirectory in Directory.GetDirectories(TempFolder, "Netas.Nipps.*", SearchOption.TopDirectoryOnly)) { string appName = sourceDirectory.Replace(TempFolder, ""); string targetDirectory = NippsConfig.Environment.IISwwwroot + "\\" + appName; NippsModule module = appName.StartsWith("Netas.Nipps.Service") ? NippsConfig.Nipps.IPPhoneServices.Where(m => m.ApplicationName.Equals(appName)).Single() : NippsConfig.Nipps.SMModules.Where(m => m.ApplicationName.Equals(appName)).Single(); string minVersion = module != null ? module.MinVersion : ""; //check if first installation or an upgrade if (string.IsNullOrEmpty(minVersion)) { if (Directory.Exists(targetDirectory)) { Directory.Delete(targetDirectory, true); } Directory.Move(sourceDirectory, targetDirectory); CreateDirectory(targetDirectory + "\\Logs", IISW3RootDirectorySecurity); GiveFullControlRight(targetDirectory + "\\Logs"); GiveFullControlRight(targetDirectory + "\\Tmp"); GiveFullControlRight(targetDirectory + "\\nlog.config"); } else { foreach (string subDirectory in Directory.GetDirectories(sourceDirectory, "*", SearchOption.AllDirectories)) { string subTargetDirectory = targetDirectory + subDirectory.Replace(sourceDirectory, ""); Console.WriteLine(subTargetDirectory + " checking and creating if necessary..."); if (!Directory.Exists(subTargetDirectory)) { CreateDirectory(subTargetDirectory, IISW3RootDirectorySecurity); } } foreach (string file in Directory.GetFiles(sourceDirectory, "*.*", SearchOption.AllDirectories)) { string targetFile = targetDirectory + file.Replace(sourceDirectory, ""); Console.WriteLine(targetFile + " copying..."); File.Copy(file, targetFile, true); } } } }
static bool Match(string name) { try { NippsModule module = NippsConfig.Nipps.IPPhoneServices .Where(m => ArgExist(m.Name)) .SingleOrDefault(); return(name.StartsWith(module.ApplicationName)); } catch (Exception ex) { Console.WriteLine(ex.ToString()); return(false); } }
static void AddApplication(Site site, NippsModule nippsModule) { string physicalPath = NippsConfig.Environment.IISwwwroot; if (ServiceOnlyInstall) if (!Match(nippsModule.ApplicationName) && !nippsModule.ApplicationName.StartsWith("Netas.Nipps.DeployManager.Service")) return; if (physicalPath.EndsWith("\\")) physicalPath += nippsModule.ApplicationName; else physicalPath += "\\" + nippsModule.ApplicationName; nippsModule.ApplicationName = "/" + nippsModule.ApplicationName; Console.WriteLine("adding " + nippsModule.ApplicationName + " from path " + physicalPath); Application application = site.Applications.Add(nippsModule.ApplicationName, physicalPath); application.ApplicationPoolName = string.IsNullOrEmpty(NippsConfig.Environment.IISApplicationPoolName) ? nippsModule.ApplicationPoolName : NippsConfig.Environment.IISApplicationPoolName; }
static void UpdateWebConfigs(NippsModule nippsModule) { string configName; string configText; string[] iisLocalAdminParts = NippsConfig.Environment.IISLocalAdmin.Split('/'); string[] sqlLocalAdminParts = NippsConfig.Environment.SqlLocalAdmin.Split('/'); string[] sqlUserParts = NippsConfig.Environment.SqlUser.Split('/'); bool isDeployManager = nippsModule.ApplicationName.Equals("Netas.Nipps.DeployManager.Service"); configName = TempFolder + nippsModule.ApplicationName + @"\web.config"; if (!File.Exists(configName)) return; Console.WriteLine("opening " + configName); configText = File.ReadAllText(configName); //system.web>identity only one identity must be defined in there Console.WriteLine("checking and updating if exist system.web>indendity"); if (RegexIdentity.Match(configText).Success) configText = RegexIdentity.Replace(configText, string.Format(IdentityFormat, iisLocalAdminParts[0], iisLocalAdminParts[1])); //connectionstrings: only one identity must be defined in there Console.WriteLine("checking and updating if exist connectionstrings"); if (RegexConnectionStringUserID.Match(configText).Success) configText = RegexConnectionStringUserID.Replace(configText, string.Format(ConnectionStringUserIDFormat, isDeployManager ? sqlLocalAdminParts[0] : sqlUserParts[0])); if (RegexConnectionStringPassword.Match(configText).Success) configText = RegexConnectionStringPassword.Replace(configText, string.Format(ConnectionStringPasswordFormat, isDeployManager ? sqlLocalAdminParts[1] : sqlUserParts[1])); if (RegexConnectionStringDataSource.Match(configText).Success) configText = RegexConnectionStringDataSource.Replace(configText, string.Format(ConnectionStringDataSourceFormat, NippsConfig.Environment.SqlHost)); if (RegexConnectionStringInitialCatalog.Match(configText).Success) configText = RegexConnectionStringInitialCatalog.Replace(configText, string.Format(ConnectionStringInitialCatalogFormat, NippsConfig.Environment.SqlDatabase)); //appsettings>may be more than one in there Console.WriteLine("checking and updating if exist applicationsettings>***serviceurls"); if (RegexServiceUrls.Matches(configText).Count > 0) configText = RegexServiceUrls.Replace(configText, string.Format(ServiceUrlFormat, NippsConfig.Environment.IISSMHostPort)); File.WriteAllText(configName, configText); }