Exemplo n.º 1
0
        public static InfoPathView Create(CabFileInfo cabFileInfo)
        {
            InfoPathView view = new InfoPathView();

            view.CabFileInfo = cabFileInfo;
            return(view);
        }
Exemplo n.º 2
0
        public static InfoPathManifest Create(CabFileInfo cabFileInfo)
        {
            InfoPathManifest manifest = new InfoPathManifest();

            manifest.CabFileInfo = cabFileInfo;
            return(manifest);
        }
Exemplo n.º 3
0
 public CabEntry(CabFileInfo file_info)
 {
     Info = file_info;
     Name = Info.Name;
     Type = FormatCatalog.Instance.GetTypeFromName(Info.Name);
     Size = (uint)Math.Min(Info.Length, uint.MaxValue);
     // offset is unknown and reported as '0' for all files.
     Offset = 0;
 }
 private static string GetXmlText(CabFileInfo summaryFile)
 {
     using (var stream = summaryFile.OpenRead())
     {
         using (var sr = new StreamReader(stream))
         {
             return(sr.ReadToEnd());
         }
     }
 }
Exemplo n.º 5
0
        public void OpenFile(string path)
        {
            textBoxFilePath.Text = path;
            cab      = new CabInfo(path);
            cabFiles = cab.GetFiles();
            Files    = new List <EFile>();

            string xml;

            using (StreamReader streamreader = new StreamReader(cab.OpenRead("_setup.xml"), Encoding.UTF8))
            {
                xml = streamreader.ReadToEnd();
            }



            XmlDocument setupxml = new XmlDocument();

            setupxml.LoadXml(xml);



            XmlNodeList xnList = setupxml.SelectNodes("/wap-provisioningdoc/characteristic/characteristic/characteristic");

            foreach (XmlNode xn in xnList)
            {
                foreach (XmlNode cxn in xn.ChildNodes)
                {
                    if (cxn.Attributes["type"].Value.ToString() == "Extract")
                    {
                        foreach (XmlNode xnFile in cxn.ChildNodes)
                        {
                            if (xnFile.Attributes["name"].Value.ToString() == "Source")
                            {
                                CabFileInfo cabfileinfo = cabFiles.Where(x => x.Name == xnFile.Attributes["value"].Value.ToString()).FirstOrDefault();
                                EFile       file        = new EFile();
                                file.Source     = xnFile.Attributes["value"].Value.ToString();
                                file.FileName   = xn.Attributes["type"].Value.ToString();
                                file.LastUpDate = cabfileinfo.LastWriteTime;
                                file.Lenght     = cabfileinfo.Length;
                                file.FileIcon   = FileIconLoader.GetFileIcon(file.FileName, false);


                                Files.Add(file);
                            }
                        }
                    }
                }
            }

            BindDataGrid();
            buttonExtract.Enabled     = true;
            buttonInsertFiles.Enabled = true;
        }
Exemplo n.º 6
0
 private static byte[] GetBinaryData(CabFileInfo summaryFile)
 {
     using (var stream = summaryFile.OpenRead())
     {
         using (var memoryStream = new MemoryStream())
         {
             stream.CopyTo(memoryStream);
             var data = memoryStream.ToArray();
             return(data);
         }
     }
 }
Exemplo n.º 7
0
        /// <summary>
        /// Loads the XDocument that is the file from the cab. All parseable InfoPath files are xml documents.
        /// </summary>
        private void InitializeXDocument()
        {
            if (_xDocument != null)
            {
                return;
            }

            Stream content = CabFileInfo.OpenRead();

            // use the 3.5-compatible Load API that takes an XmlReader, that way this will work when targeting either .NET3.5 or later
            System.Xml.XmlReader reader = System.Xml.XmlReader.Create(content);
            _xDocument = XDocument.Load(reader);
        }
Exemplo n.º 8
0
 private static SummaryMetaData GetSummaryMetaData(CabFileInfo summaryFile)
 {
     return(new SummaryMetaData(summaryFile.LastWriteTime, summaryFile.Length));
 }
        public bool GetDiff(string diffInput1, string diffInput2, string[] options, TextWriter diffOutput, string linePrefix, IDiffEngineFactory diffFactory)
        {
            bool      difference  = false;
            IComparer caseInsComp = CaseInsensitiveComparer.Default;

            // TODO: Make this faster by extracting the whole cab at once.
            // TODO: Optimize for the match case by first comparing the whole cab files.

            CabInfo             cab1          = new CabInfo(diffInput1);
            CabInfo             cab2          = new CabInfo(diffInput2);
            IList <CabFileInfo> cabFilesList1 = cab1.GetFiles();
            IList <CabFileInfo> cabFilesList2 = cab2.GetFiles();

            CabFileInfo[] cabFiles1 = new CabFileInfo[cabFilesList1.Count];
            CabFileInfo[] cabFiles2 = new CabFileInfo[cabFilesList2.Count];
            cabFilesList1.CopyTo(cabFiles1, 0);
            cabFilesList2.CopyTo(cabFiles2, 0);
            string[] files1 = new string[cabFiles1.Length];
            string[] files2 = new string[cabFiles2.Length];
            for (int i1 = 0; i1 < cabFiles1.Length; i1++)
            {
                files1[i1] = cabFiles1[i1].Name;
            }
            for (int i2 = 0; i2 < cabFiles2.Length; i2++)
            {
                files2[i2] = cabFiles2[i2].Name;
            }
            Array.Sort(files1, cabFiles1, caseInsComp);
            Array.Sort(files2, cabFiles2, caseInsComp);


            for (int i1 = 0, i2 = 0; i1 < files1.Length || i2 < files2.Length;)
            {
                int comp;
                if (i1 == files1.Length)
                {
                    comp = 1;
                }
                else if (i2 == files2.Length)
                {
                    comp = -1;
                }
                else
                {
                    comp = caseInsComp.Compare(files1[i1], files2[i2]);
                }
                if (comp < 0)
                {
                    diffOutput.WriteLine("{0}< {1}", linePrefix, files1[i1]);
                    i1++;
                    difference = true;
                }
                else if (comp > 0)
                {
                    diffOutput.WriteLine("{0}> {1}", linePrefix, files2[i2]);
                    i2++;
                    difference = true;
                }
                else
                {
                    string tempFile1 = Path.GetTempFileName();
                    string tempFile2 = Path.GetTempFileName();
                    cabFiles1[i1].CopyTo(tempFile1, true);
                    cabFiles2[i2].CopyTo(tempFile2, true);
                    IDiffEngine  diffEngine = diffFactory.GetDiffEngine(tempFile1, tempFile2, options);
                    StringWriter sw         = new StringWriter();
                    if (diffEngine.GetDiff(tempFile1, tempFile2, options, sw, linePrefix + "    ", diffFactory))
                    {
                        diffOutput.WriteLine("{0}{1}", linePrefix, files1[i1]);
                        diffOutput.Write(sw.ToString());
                        difference = true;
                    }

                    File.SetAttributes(tempFile1, File.GetAttributes(tempFile1) & ~FileAttributes.ReadOnly);
                    File.SetAttributes(tempFile2, File.GetAttributes(tempFile2) & ~FileAttributes.ReadOnly);
                    try
                    {
                        File.Delete(tempFile1);
                        File.Delete(tempFile2);
                    }
                    catch (IOException)
                    {
#if DEBUG
                        Console.WriteLine("Could not delete temporary files {0} and {1}", tempFile1, tempFile2);
#endif
                    }
                    i1++;
                    i2++;
                }
            }

            return(difference);
        }