Rework how package extraction works

maybe this might just fix things?
This commit is contained in:
pizzaboxer 2023-07-17 22:47:39 +01:00
parent 907a3c3517
commit 33aab4ff8a
No known key found for this signature in database
GPG Key ID: 59D4A1DBAD0F2BA8

View File

@ -1218,29 +1218,33 @@ namespace Bloxstrap
App.Logger.WriteLine($"[Bootstrapper::ExtractPackage] Extracting {package.Name} to {packageFolder}..."); App.Logger.WriteLine($"[Bootstrapper::ExtractPackage] Extracting {package.Name} to {packageFolder}...");
using (ZipArchive archive = await Task.Run(() => ZipFile.OpenRead(packageLocation))) using ZipArchive archive = await Task.Run(() => ZipFile.OpenRead(packageLocation));
foreach (ZipArchiveEntry entry in archive.Entries)
{ {
foreach (ZipArchiveEntry entry in archive.Entries) if (_cancelFired)
{ return;
if (_cancelFired)
return;
if (entry.FullName.EndsWith('\\')) if (entry.FullName.EndsWith('\\'))
continue; continue;
extractPath = Path.Combine(packageFolder, entry.FullName); extractPath = Path.Combine(packageFolder, entry.FullName);
//App.Logger.WriteLine($"[{package.Name}] Writing {extractPath}..."); //App.Logger.WriteLine($"[{package.Name}] Writing {extractPath}...");
string? directory = Path.GetDirectoryName(extractPath); string? directory = Path.GetDirectoryName(extractPath);
if (directory is null) if (directory is null)
continue; continue;
Directory.CreateDirectory(directory); Directory.CreateDirectory(directory);
await Task.Run(() => entry.ExtractToFile(extractPath, true)); using var fileStream = new FileStream(extractPath, FileMode.CreateNew, FileAccess.Write, FileShare.None, bufferSize: 0x1000, useAsync: true);
} using var dataStream = entry.Open();
await dataStream.CopyToAsync(fileStream);
File.SetLastWriteTime(extractPath, entry.LastWriteTime.DateTime);
} }
App.Logger.WriteLine($"[Bootstrapper::ExtractPackage] Finished extracting {package.Name}"); App.Logger.WriteLine($"[Bootstrapper::ExtractPackage] Finished extracting {package.Name}");