Код: Выделить всё
client.DownloadFile("RELEASE-URL-HERE", "Release.zip");
using (ZipArchive archive = ZipFile.OpenRead("Release.zip"))
{
foreach (ZipArchiveEntry entry in archive.Entries)
{
Console.WriteLine("Extracting " + entry.Name);
entry.ExtractToFile(Path.Combine(@"E:\dev\winforms\pie\bin\Release", entry.Name));
}
}
Однако, когда начинается процесс извлечения, я получаю следующее исключение:
Код: Выделить всё
System.UnauthorizedAccessException: Access to the path 'E:\dev\winforms\pie\bin\Release' is denied.
at System.IO.__Error.WinIOError(Int32 errorCode, String maybeFullPath)
at System.IO.FileStream.Init(String path, FileMode mode, FileAccess access, Int32 rights, Boolean useRights, FileShare share, Int32 bufferSize, FileOptions options, SECURITY_ATTRIBUTES secAttrs, String msgPath, Boolean bFromProxy, Boolean useLongPath, Boolean checkHost)
at System.IO.FileStream..ctor(String path, FileMode mode, FileAccess access, FileShare share)
at System.IO.Compression.ZipFileExtensions.ExtractToFile(ZipArchiveEntry source, String destinationFileName, Boolean overwrite)
at pie.PieUpdater.Main()
Я даже пробовал запустить исполняемый файл от имени администратора, но ничего не меняется.
Проверил ответы из «Почему доступ к пути запрещен?», и один из них, похоже, заявляют, что эта проблема возникает, когда выходной файл является каталогом, и действительно, первый элемент, который пытается быть извлечен, — это папка с именем /x64. Я на 90 % уверен, что проблема именно в этом.
Неправильный ли у меня способ работы с каталогами? Нужно ли мне вручную перемещаться по всем путям к каталогам внутри zip-архива и извлекать их в виде файлов? Или проблема возникает откуда-то еще?
Если логика обработки каталогов неверна, есть ли более простой способ извлечь архив, содержащий как каталоги, так и файлы, без необходимости обрабатывать каталоги отдельно ?
Подробнее здесь: https://stackoverflow.com/questions/793 ... ziparchive
Мобильная версия