public async Task Install() { Console.WriteLine("Getting link to latest ffmpeg"); string link = await GetLinkFromWebPage(); Console.WriteLine("Downloading ffmpeg"); using (MemoryStream stream = await Download(link)) using (SevenZipArchive archive = SevenZipArchive.Open(stream)) { Console.WriteLine("Unpacking ffmpeg"); string[] files = new string[] { "ffmpeg.exe", "ffprobe.exe" }; foreach (string file in files) { SevenZipArchiveEntry f = archive.Entries.First(x => x.Key.Contains(file)); string name = f.Key.Substring(f.Key.LastIndexOf('/') + 1); CheckDirAndCreate(FolderPath); using (Stream entryStream = f.OpenEntryStream()) using (FileStream fileStream = File.OpenWrite(Path.Combine(FolderPath, name))) await entryStream.CopyToAsync(fileStream); } } Console.WriteLine("Update enviroment"); SetEnvironment(); Console.WriteLine("Set fontconfig"); SetFontConfig(); Console.WriteLine("Copying vp9.exe to " + FolderPath); string location = System.Reflection.Assembly.GetEntryAssembly().Location; File.Copy(location, Path.Combine(FolderPath, Path.GetFileName(location))); }
public SqlDumpReader(string filePath) { string fileExtension = Path.GetExtension(filePath).ToLower(); if (!SUPPORTED_DUMP_FILE_EXTENSIONS.Contains(fileExtension)) { throw new Exception($"{fileExtension} is not in the list of supported database dump file extensions."); } switch (fileExtension.ToLower()) { case ".zip": zipArchive = ZipArchive.Open(filePath); ZipArchiveEntry firstZipArchiveEntry = zipArchive.Entries.First(); FileSize = firstZipArchiveEntry.Size; streamReader = new StreamReader(firstZipArchiveEntry.OpenEntryStream()); break; case ".rar": rarArchive = RarArchive.Open(filePath); RarArchiveEntry firstRarArchiveEntry = rarArchive.Entries.First(); FileSize = firstRarArchiveEntry.Size; streamReader = new StreamReader(firstRarArchiveEntry.OpenEntryStream()); break; case ".gz": gZipArchive = GZipArchive.Open(filePath); GZipArchiveEntry firstGZipArchiveEntry = gZipArchive.Entries.First(); FileSize = firstGZipArchiveEntry.Size; streamReader = new StreamReader(firstGZipArchiveEntry.OpenEntryStream()); break; case ".7z": sevenZipArchive = SevenZipArchive.Open(filePath); SevenZipArchiveEntry firstSevenZipArchiveEntry = sevenZipArchive.Entries.First(); FileSize = firstSevenZipArchiveEntry.Size; streamReader = new StreamReader(new PositioningStream(firstSevenZipArchiveEntry.OpenEntryStream())); break; default: FileSize = new FileInfo(filePath).Length; streamReader = new StreamReader(filePath); break; } CurrentFilePosition = 0; }
public SqlDumpReader(string filePath) { string fileExtension = Path.GetExtension(filePath); switch (fileExtension.ToLower()) { case ".zip": zipArchive = ZipArchive.Open(filePath); ZipArchiveEntry firstZipArchiveEntry = zipArchive.Entries.First(); FileSize = firstZipArchiveEntry.Size; streamReader = new StreamReader(firstZipArchiveEntry.OpenEntryStream()); break; case ".rar": rarArchive = RarArchive.Open(filePath); RarArchiveEntry firstRarArchiveEntry = rarArchive.Entries.First(); FileSize = firstRarArchiveEntry.Size; streamReader = new StreamReader(firstRarArchiveEntry.OpenEntryStream()); break; case ".gz": gZipArchive = GZipArchive.Open(filePath); GZipArchiveEntry firstGZipArchiveEntry = gZipArchive.Entries.First(); FileSize = firstGZipArchiveEntry.Size; streamReader = new StreamReader(firstGZipArchiveEntry.OpenEntryStream()); break; case ".7z": sevenZipArchive = SevenZipArchive.Open(filePath); SevenZipArchiveEntry firstSevenZipArchiveEntry = sevenZipArchive.Entries.First(); FileSize = firstSevenZipArchiveEntry.Size; streamReader = new StreamReader(firstSevenZipArchiveEntry.OpenEntryStream()); break; default: FileSize = new FileInfo(filePath).Length; streamReader = new StreamReader(filePath); break; } CurrentFilePosition = 0; }
public PendingEntry(SevenZipArchiveEntry entry, string destination) { Entry = entry; Destination = destination; }
/// <summary> /// Archive Extraction Task /// </summary> /// <param name="_ArchiveSource">Source file path</param> /// <param name="ArchiveDestination">Destination folder path</param> /// <param name="_ArchiveType">Archive extension</param> /// <returns></returns> public Task <int> Extract(string _ArchiveSource, string ArchiveDestination, string _ArchiveType, ILog QuasarLogger) { try { switch (_ArchiveType) { case "rar": using (var archive = RarArchive.Open(_ArchiveSource)) { foreach (var entry in archive.Entries.Where(entry => !entry.IsDirectory)) { entry.WriteToDirectory(ArchiveDestination, new ExtractionOptions() { ExtractFullPath = true, Overwrite = true }); } } break; case "zip": using (var archive = ZipArchive.Open(_ArchiveSource)) { foreach (var entry in archive.Entries.Where(entry => !entry.IsDirectory)) { entry.WriteToDirectory(ArchiveDestination, new ExtractionOptions() { ExtractFullPath = true, Overwrite = true }); } } break; case "7z": using (var archive = SevenZipArchive.Open(_ArchiveSource)) { var reader = archive.ExtractAllEntries(); while (reader.MoveToNextEntry()) { if (!reader.Entry.IsDirectory) { SevenZipArchiveEntry entry = (SevenZipArchiveEntry)reader.Entry; entry.WriteToDirectory(ArchiveDestination, new ExtractionOptions() { ExtractFullPath = true, Overwrite = true }); } } } break; default: break; } } catch (Exception e) { QuasarLogger.Error(e.Message); QuasarLogger.Error(e.StackTrace); } return(Task.FromResult(1)); }