Exemple #1
0
        private static IEnumerable <AssemblyPart> GetDeploymentParts(Colosoft.IO.Compression.ZipArchive zipArchive)
        {
            var file = zipArchive.Files.Where(f => f.Name == "AppManifest.xaml").FirstOrDefault();

            if (file == null)
            {
                throw new InvalidOperationException("AppManifest not found.");
            }
            var list = new List <AssemblyPart>();

            System.IO.Stream resourceStream = null;
            try
            {
                using (var stream = file.OpenRead())
                {
                    resourceStream = new System.IO.MemoryStream();
                    var buffer = new byte[1024];
                    var read   = 0;
                    while ((read = stream.Read(buffer, 0, buffer.Length)) > 0)
                    {
                        resourceStream.Write(buffer, 0, read);
                    }
                    resourceStream.Seek(0, System.IO.SeekOrigin.Begin);
                }
                using (System.Xml.XmlReader reader = System.Xml.XmlReader.Create(resourceStream))
                {
                    if (!reader.ReadToFollowing("AssemblyPart"))
                    {
                        return(list);
                    }
                    do
                    {
                        string attribute = reader.GetAttribute("Source");
                        if (attribute != null)
                        {
                            AssemblyPart item = new AssemblyPart();
                            item.Source = attribute;
                            list.Add(item);
                        }
                    }while (reader.ReadToNextSibling("AssemblyPart"));
                }
            }
            finally
            {
                if (resourceStream != null)
                {
                    resourceStream.Dispose();
                }
            }
            return(list);
        }
 /// <summary>
 /// Constrói o resultado na stream informada.
 /// </summary>
 /// <param name="items"></param>
 /// <param name="outStream"></param>
 public static void Build(IEnumerable <Item> items, System.IO.Stream outStream)
 {
     items.Require("items").NotNull();
     using (var zipArchive = new Colosoft.IO.Compression.ZipArchive(outStream, System.IO.FileAccess.Write))
     {
         foreach (var i in items)
         {
             var stream = i.Stream;
             if (stream != null)
             {
                 zipArchive.CopyFromStream(i.Stream, i.LastWriteTime, string.Format("{0}.xap", i.Uid.ToString()));
             }
         }
     }
 }