private bool AddFiles(MegaFile meg) { if (!Directory.Exists("Data")) { return(false); } var files = Directory.EnumerateFiles("Data", "*.*", SearchOption.AllDirectories).Where(x => x.IndexOf(@"\XML\", StringComparison.OrdinalIgnoreCase) >= 0 || x.IndexOf(@"\SCRIPTS\", StringComparison.OrdinalIgnoreCase) >= 0 || x.IndexOf(@"\CustomMaps\", StringComparison.OrdinalIgnoreCase) >= 0); foreach (var file in files) { var fs = File.Open(file, FileMode.Open, FileAccess.Read, FileShare.Read); meg.InsertFile(file, fs); } return(true); }
private void CreateMeg(object sender, RoutedEventArgs e) { var meg = new MegaFile(); if (!AddFiles(meg)) { MessageBox.Show("Error Adding Files"); return; } try { using (var stream = File.Open(FilePath.Text, FileMode.Create, FileAccess.Write, FileShare.None)) { meg.Close(stream, MegaFile.Format.V1, new MegaFile.EncryptionKey?()); } } catch (Exception) { MessageBox.Show("Error writing .meg file"); } }
private static void Save(MegaFile meg, string outputPath) { Directory.CreateDirectory(Path.GetDirectoryName(outputPath) !); using var stream = File.Open(outputPath, FileMode.Create, FileAccess.Write, FileShare.None); meg.Close(stream, MegaFile.Format.V1, new MegaFile.EncryptionKey?()); }
public Packer(PackOptions options, ILogger?logger = null) { _logger = logger; Options = options ?? throw new ArgumentNullException(nameof(options)); MegFile = new MegaFile(); }