diff --git a/source/Calamari.ConsolidateCalamariPackages/Calamari.ConsolidateCalamariPackages.csproj b/source/Calamari.ConsolidateCalamariPackages/Calamari.ConsolidateCalamariPackages.csproj
index 7a93745308..ee3cc2d8a8 100644
--- a/source/Calamari.ConsolidateCalamariPackages/Calamari.ConsolidateCalamariPackages.csproj
+++ b/source/Calamari.ConsolidateCalamariPackages/Calamari.ConsolidateCalamariPackages.csproj
@@ -19,7 +19,6 @@
-
diff --git a/source/Calamari.ConsolidateCalamariPackages/ConsolidatedPackage.cs b/source/Calamari.ConsolidateCalamariPackages/ConsolidatedPackage.cs
index 61b5c105a5..4b1e931562 100644
--- a/source/Calamari.ConsolidateCalamariPackages/ConsolidatedPackage.cs
+++ b/source/Calamari.ConsolidateCalamariPackages/ConsolidatedPackage.cs
@@ -1,9 +1,9 @@
using System;
using System.Collections.Generic;
using System.IO;
+using System.IO.Compression;
using System.Linq;
using Octopus.Calamari.ConsolidatedPackage.Api;
-using SharpCompress.Archives.Zip;
namespace Octopus.Calamari.ConsolidatedPackage
{
@@ -28,21 +28,16 @@ public ConsolidatedPackage(IConsolidatedPackageStreamProvider packageStreamProvi
throw new Exception($"Could not find platform {platform} for {calamariFlavour}");
}
- using (var sourceStream = packageStreamProvider.OpenStream())
+ var platformFilesLookup = platformFiles.ToDictionary(f => f.Source);
+
+ using var sourceStream = packageStreamProvider.OpenStream();
+ using var source = new ZipArchive(sourceStream, ZipArchiveMode.Read);
+ foreach (var sourceEntry in source.Entries)
{
- using (var source = ZipArchive.Open(sourceStream))
- {
- foreach (var fileTransfer in platformFiles)
- {
- var sourceEntry = source.Entries.FirstOrDefault(e => e.Key is not null && e.Key.Equals(fileTransfer.Source));
- if(sourceEntry is null) continue;
-
- using (var sourceEntryStream = sourceEntry.OpenEntryStream())
- {
- yield return (fileTransfer.Destination, sourceEntry.Size, sourceEntryStream);
- }
- }
- }
+ if (!platformFilesLookup.TryGetValue(sourceEntry.FullName, out var fileTransfer)) continue;
+
+ using var sourceEntryStream = sourceEntry.Open();
+ yield return (fileTransfer.Destination, sourceEntry.Length, sourceEntryStream);
}
}
}
diff --git a/source/Calamari.ConsolidateCalamariPackages/ConsolidatedPackageIndexLoader.cs b/source/Calamari.ConsolidateCalamariPackages/ConsolidatedPackageIndexLoader.cs
index 24e58bef0e..8d325a6166 100644
--- a/source/Calamari.ConsolidateCalamariPackages/ConsolidatedPackageIndexLoader.cs
+++ b/source/Calamari.ConsolidateCalamariPackages/ConsolidatedPackageIndexLoader.cs
@@ -1,9 +1,8 @@
using System;
using System.IO;
-using System.Linq;
+using System.IO.Compression;
using Newtonsoft.Json;
using Octopus.Calamari.ConsolidatedPackage.Api;
-using SharpCompress.Archives.Zip;
namespace Octopus.Calamari.ConsolidatedPackage
{
@@ -11,14 +10,14 @@ public class ConsolidatedPackageIndexLoader
{
public IConsolidatedPackageIndex Load(Stream zipStream)
{
- using var zip = ZipArchive.Open(zipStream);
- var entry = zip.Entries.First(e => e.Key == "index.json");
+ using var zip = new ZipArchive(zipStream, ZipArchiveMode.Read);
+ var entry = zip.GetEntry("index.json");
if (entry == null)
{
throw new Exception($"index.json not found in supplied stream.");
}
- using var entryStream = entry.OpenEntryStream();
+ using var entryStream = entry.Open();
return From(entryStream);
}