public ArchiveReader(string filename, Stats stats)
{
this.ArchiveName = Path.GetFileName(filename);
this.stats = stats;
this.stats.Status = "Opening " + ArchiveName;
this.stats.EndTime = null;
zipFile = new ZipFile(filename);
info = (Info)new XmlSerializer(typeof(Info)).Deserialize(Util.ExtractMetaData(zipFile, Settings.MetaDataInfo));
if (info.ReaderVersion == null) info.ReaderVersion = info.Version;
if (info.ReaderVersion.Major > Settings.VersionMajor || (info.ReaderVersion.Major == Settings.VersionMajor && info.ReaderVersion.Minor > Settings.VersionMinor)) {
throw new Exception("The archive was created by newer version of the program: " + info.Version);
}
hashes = Util.ReadArray<HashSource>(Util.ExtractMetaData(zipFile, Settings.MetaDataHashes));
strings = Util.ReadStream(Util.ExtractMetaData(zipFile, Settings.MetaDataStrings));
files = (List<File>)Util.FileSerializer.Deserialize(new StreamReader(Util.ExtractMetaData(zipFile, Settings.MetaDataFiles), Encoding.UTF8));
}