Improvements to ZipManager

This commit is contained in:
Jaex 2020-06-16 01:31:36 +03:00
parent 91d525f906
commit 5f10e99655
2 changed files with 24 additions and 10 deletions

View file

@ -97,7 +97,20 @@ public static void Compress(string source, string archivePath, CompressionLevel
ZipFile.CreateFromDirectory(source, archivePath, compression, false);
}
public static void Compress(string archivePath, List<string> files, string workingDirectory = "", CompressionLevel compression = CompressionLevel.Optimal)
public static void Compress(string archivePath, List<string> files, CompressionLevel compression = CompressionLevel.Optimal)
{
Dictionary<string, string> entries = new Dictionary<string, string>();
foreach (string file in files)
{
string fileName = Path.GetFileName(file);
entries.Add(file, fileName);
}
Compress(archivePath, entries, compression);
}
public static void Compress(string archivePath, Dictionary<string, string> files, CompressionLevel compression = CompressionLevel.Optimal)
{
if (File.Exists(archivePath))
{
@ -106,13 +119,14 @@ public static void Compress(string archivePath, List<string> files, string worki
using (ZipArchive archive = ZipFile.Open(archivePath, ZipArchiveMode.Update))
{
foreach (string file in files)
foreach (KeyValuePair<string, string> file in files)
{
string filePath = Path.Combine(workingDirectory, file);
string sourceFilePath = file.Key;
if (File.Exists(filePath))
if (File.Exists(sourceFilePath))
{
archive.CreateEntryFromFile(filePath, file, compression);
string entryName = file.Value;
archive.CreateEntryFromFile(sourceFilePath, entryName, compression);
}
}
}

View file

@ -352,17 +352,17 @@ public static bool Export(string archivePath, bool settings, bool history)
if (settings)
{
files.Add(ApplicationConfigFilename);
files.Add(HotkeysConfigFilename);
files.Add(UploadersConfigFilename);
files.Add(ApplicationConfigFilePath);
files.Add(HotkeysConfigFilePath);
files.Add(UploadersConfigFilePath);
}
if (history)
{
files.Add(Program.HistoryFilename);
files.Add(Program.HistoryFilePath);
}
ZipManager.Compress(archivePath, files, Program.PersonalFolder);
ZipManager.Compress(archivePath, files);
return true;
}
catch (Exception e)