public static InfoPathView Create(CabFileInfo cabFileInfo) { InfoPathView view = new InfoPathView(); view.CabFileInfo = cabFileInfo; return(view); }
public static InfoPathManifest Create(CabFileInfo cabFileInfo) { InfoPathManifest manifest = new InfoPathManifest(); manifest.CabFileInfo = cabFileInfo; return(manifest); }
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()); } } }
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; }
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); } } }
/// <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); }
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); }