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();
 }