Code: Select all
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));
}
}
Wenn der Extrahierungsprozess beginnt, erhalte ich jedoch die folgende Ausnahme:
Code: Select all
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()
Ich habe sogar versucht, die ausführbare Datei als Administrator auszuführen, aber es scheint sich nichts zu ändern.
Habe die Antworten überprüft aus Warum wird der Zugriff auf den Pfad verweigert?, und einer davon scheint zu sagen dass dieses Problem auftritt, wenn die Ausgabedatei ein Verzeichnis ist und das erste Element, das extrahiert werden soll, tatsächlich ein Ordner namens /x64 ist. Ich bin zu 90 % sicher, dass das Problem hierher kommt.
Ist meine Art, mit Verzeichnissen umzugehen, falsch? Muss ich manuell durch alle Verzeichnispfade innerhalb der ZIP-Datei navigieren und sie als Dateien extrahieren? Oder kommt das Problem woanders her?
Wenn die Verzeichnisverwaltungslogik falsch ist, gibt es eine einfachere Möglichkeit, ein Archiv zu extrahieren, das sowohl Verzeichnisse als auch Dateien enthält, ohne die Verzeichnisse separat verwalten zu müssen? ?