Для извлечения ZIP-файла я использую:
using (var strm = File.OpenRead(file))
using (ZipArchive a = new ZipArchive(strm))
{
a.Entries
.Where(o => o.Name == string.Empty && !Directory.Exists(
Path.Combine(Application.StartupPath, o.FullName)))
.ToList()
.ForEach(o => Directory.CreateDirectory(
Path.Combine(Application.StartupPath, o.FullName)));
a.Entries
.Where(o => o.Name != string.Empty)
.ToList()
.ForEach(e => e.ExtractToFile(
Path.Combine(Application.StartupPath, e.FullName), true));
}
Кроме того, это автоматически создает папки, если они отсутствуют.
Но есть проблема с файлами, которые имеютрасширение .sct .Например.если файл .zip содержит только один файл: QuestLog.sct
, возникает проблема.
Файл с именем desktop.ini
априори содержится в файле .zip дляизвлечь, но проблема в том, что этот файл не существует.
Это создает сообщение об ошибке, поскольку он пытается извлечь файл, который не существует.Поэтому я хочу знать, если есть возможность избавиться от этой проблемы, например, путем внесения изменений в код C #, который не может попытаться извлечь файл desktop.ini
.
Эта проблема не являетсяотсутствует с другими .sct файлами.
Я не понимаю, что происходит.