/// <summary> /// Unpacks this package into the specified directory. /// </summary> /// <param name="baseDirectory">The directory to use.</param> public static Package Unpack(string rootLocation, Stream packageStream) { XmlReaderSettings settings = new XmlReaderSettings(); settings.ConformanceLevel = ConformanceLevel.Fragment; XmlReader reader = XmlReader.Create(packageStream, settings); XPathDocument doc = new XPathDocument(reader); // Read the name so we can know where to create it. var nav = doc.CreateNavigator(); var nameNode = nav.SelectSingleNode("/Package/@Name"); string name = nameNode.Value; string packageDir = System.IO.Path.Combine(rootLocation, name); System.IO.Directory.CreateDirectory(packageDir); Package newPackage = new Package(packageDir, false); newPackage.ReadPackage(nav); newPackage.SaveManifest(); return(newPackage); }
/// <summary> /// Unpacks this package into the specified directory. /// </summary> /// <param name="baseDirectory">The directory to use.</param> public static Package Unpack(string rootLocation, Stream packageStream) { XmlReaderSettings settings = new XmlReaderSettings(); settings.ConformanceLevel = ConformanceLevel.Fragment; XmlReader reader = XmlReader.Create(packageStream, settings); XPathDocument doc = new XPathDocument(reader); // Read the name so we can know where to create it. var nav = doc.CreateNavigator(); var nameNode = nav.SelectSingleNode("/Package/@Name"); string name = nameNode.Value; string packageDir = System.IO.Path.Combine(rootLocation, name); System.IO.Directory.CreateDirectory(packageDir); Package newPackage = new Package(packageDir, false); newPackage.ReadPackage(nav); newPackage.SaveManifest(); return newPackage; }