internal PackageUninstallerContext(IZipFileSystem zipFileSystem, string packageDirectory, PackageInformation packageInformation) { Verify.ArgumentNotNull(zipFileSystem, "zipFileSystem"); this.ZipFileSystem = zipFileSystem; this.PackageDirectory = packageDirectory; this.PackageInformation = packageInformation; }
internal PackageInstallerContext(IZipFileSystem zipFileSystem, string packageDirectory, string tempDirectory, PackageInformation packageInformation) { Verify.ArgumentNotNull(zipFileSystem, "zipFileSystem"); Verify.ArgumentNotNullOrEmpty(tempDirectory, "tempDirectory"); Verify.ArgumentNotNull(packageInformation, "packageInformation"); this.ZipFileSystem = zipFileSystem; this.PackageDirectory = packageDirectory; this.TempDirectory = tempDirectory; this.PackageInformation = packageInformation; }
public static List <string> GetFiles(string attributeName, XElement configuration, IZipFileSystem zipFileSystem, out IList <PackageFragmentValidationResult> validationResult) { var files = new List <string>(); validationResult = new List <PackageFragmentValidationResult>(); var filesElements = configuration.Elements("Files").ToList(); if (filesElements.Count() > 1) { validationResult.Add( new PackageFragmentValidationResult(PackageFragmentValidationResultType.Fatal, "You can only specify one Files element", configuration)); } var filesElement = filesElements.SingleOrDefault(); if (filesElement == null) { return(files); } var connectionStringNameAttr = filesElement.Attribute("connectionStringName"); if (connectionStringNameAttr == null) { validationResult.Add(new PackageFragmentValidationResult(PackageFragmentValidationResultType.Fatal, "Missing connectionstring name attribute", filesElement)); return(files); } var connectionStringSettings = ConfigurationManager.ConnectionStrings[connectionStringNameAttr.Value]; if (connectionStringSettings == null) { validationResult.Add(new PackageFragmentValidationResult(PackageFragmentValidationResultType.Fatal, "C1 connectionstring missing")); return(files); } var elements = filesElement.Elements("File"); foreach (var file in elements) { var pathAttribute = file.Attribute(attributeName); if (pathAttribute == null) { validationResult.Add(new PackageFragmentValidationResult(PackageFragmentValidationResultType.Fatal, "Missing path attribute", file)); continue; } var path = pathAttribute.Value; if (!zipFileSystem.ContainsFile(path)) { validationResult.Add(new PackageFragmentValidationResult(PackageFragmentValidationResultType.Fatal, "File is missing", pathAttribute)); continue; } files.Add(path); } return(files); }
public static void ExecuteFiles(IList <string> files, XElement configuration, IZipFileSystem zipFileSystem) { var filesElement = configuration.Elements("Files").Single(); var connectionStringName = filesElement.Attribute("connectionStringName").Value; var connectionStringSettings = ConfigurationManager.ConnectionStrings[connectionStringName]; using (var conn = new SqlConnection(connectionStringSettings.ConnectionString)) { conn.Open(); using (var trans = conn.BeginTransaction()) { foreach (var path in files) { using (var s = zipFileSystem.GetFileStream(path)) { using (var sr = new StreamReader(s)) { var text = sr.ReadToEnd(); using (var cmd = conn.CreateCommand()) { cmd.Transaction = trans; cmd.CommandText = text; cmd.ExecuteNonQuery(); } } } } trans.Commit(); } } }
internal static void ValidateXslt(List <PackageFragmentValidationResult> validationResults, Func <XElement> elementProvider, string elementName, Func <XAttribute> xsltPathAttributeProvider, Func <string> xsltFilePathProvider, IZipFileSystem zipFileSystem, bool validateResultingConfigurationFile) { if (elementProvider() == null) { validationResults.AddFatal( GetResourceString("ConfigurationTransformationPackageFragmentInstaller.MissingElement") .FormatWith(elementName)); return; } string xslFilePath = xsltFilePathProvider(); if (xslFilePath == null) { validationResults.AddFatal( GetResourceString("ConfigurationTransformationPackageFragmentInstaller.MissingAttribute") .FormatWith(_xsltFilePathAttributeName), elementProvider()); return; } if (zipFileSystem.ContainsFile(xslFilePath) == false) { validationResults.AddFatal( GetResourceString("ConfigurationTransformationPackageFragmentInstaller.PathDoesNotExist") .FormatWith(xslFilePath), xsltPathAttributeProvider()); return; } if (!PathUtil.WritePermissionGranted(ConfigurationServices.FileConfigurationSourcePath)) { validationResults.AddFatal( GetResourceString("NotEnoughNtfsPermissions") .FormatWith(ConfigurationServices.FileConfigurationSourcePath)); return; } using (Stream xsltFileStream = zipFileSystem.GetFileStream(xslFilePath)) { using (TextReader xsltTextReader = new C1StreamReader(xsltFileStream)) { XDocument xslt = null; try { xslt = XDocument.Load(xsltTextReader); } catch (Exception ex) { validationResults.AddFatal( GetResourceString("ConfigurationTransformationPackageFragmentInstaller.UnableToParsXslt") .FormatWith(xslFilePath, ex.Message), xsltPathAttributeProvider()); } if (xslt != null && validateResultingConfigurationFile) { try { ConfigurationServices.TransformConfiguration(xslt, true); } //catch (ConfigurationException ex) //{ // validationResults.AddFatal( // GetResourceString("ConfigurationTransformationPackageFragmentInstaller.XsltWillGeneratedInvalid") // .FormatWith(xsltFilePathProvider(), ex.Message), xsltPathAttributeProvider()); //} catch (Exception ex) { validationResults.AddFatal( GetResourceString("ConfigurationTransformationPackageFragmentInstaller.XsltWillGeneratedInvalid") .FormatWith(xslFilePath, ex.Message), xsltPathAttributeProvider()); } } } } }
internal static void ValidateXslt(List<PackageFragmentValidationResult> validationResults, Func<XElement> elementProvider, string elementName, Func<XAttribute> xsltPathAttributeProvider, Func<string> xsltFilePathProvider, IZipFileSystem zipFileSystem, bool validateResultingConfigurationFile) { if (elementProvider() == null) { validationResults.AddFatal( GetResourceString("ConfigurationTransformationPackageFragmentInstaller.MissingElement") .FormatWith(elementName)); return; } string xslFilePath = xsltFilePathProvider(); if (xslFilePath == null) { validationResults.AddFatal( GetResourceString("ConfigurationTransformationPackageFragmentInstaller.MissingAttribute") .FormatWith(_xsltFilePathAttributeName), elementProvider()); return; } if (zipFileSystem.ContainsFile(xslFilePath) == false) { validationResults.AddFatal( GetResourceString("ConfigurationTransformationPackageFragmentInstaller.PathDoesNotExist") .FormatWith(xslFilePath), xsltPathAttributeProvider()); return; } if(!PathUtil.WritePermissionGranted(ConfigurationServices.FileConfigurationSourcePath)) { validationResults.AddFatal( GetResourceString("NotEnoughNtfsPermissions") .FormatWith(ConfigurationServices.FileConfigurationSourcePath)); return; } using (Stream xsltFileStream = zipFileSystem.GetFileStream(xslFilePath)) { using (TextReader xsltTextReader = new C1StreamReader(xsltFileStream)) { XDocument xslt = null; try { xslt = XDocument.Load(xsltTextReader); } catch (Exception ex) { validationResults.AddFatal( GetResourceString("ConfigurationTransformationPackageFragmentInstaller.UnableToParsXslt") .FormatWith(xslFilePath, ex.Message), xsltPathAttributeProvider()); } if (xslt != null && validateResultingConfigurationFile) { try { ConfigurationServices.TransformConfiguration(xslt, true); } //catch (ConfigurationException ex) //{ // validationResults.AddFatal( // GetResourceString("ConfigurationTransformationPackageFragmentInstaller.XsltWillGeneratedInvalid") // .FormatWith(xsltFilePathProvider(), ex.Message), xsltPathAttributeProvider()); //} catch (Exception ex) { validationResults.AddFatal( GetResourceString("ConfigurationTransformationPackageFragmentInstaller.XsltWillGeneratedInvalid") .FormatWith(xslFilePath, ex.Message), xsltPathAttributeProvider()); } } } } }