When opening an existing zip file, in particular one created using .NET System.IO.Zip classes, if that file is saved using DotNetZip, the local entry is written out in its original form, but the central directory entry is updated such that Version Needed
To Extract is always set to 20 (unless Zip64 is set). This causes an error with the .NET libraries. The .NET libraries will throw a FileFormatException if there is a mismatch between the local and central entries.
My workaround was simply to use the value of the ZipEntry's VersionNeeded when the central directory is being written. This patch shows the location of the change (v 1.9 of DNZ). It assumes a valid value has already been assigned to the ZipEntry's VersionNeeded,
which appears to be the case in my usage scenario (I'm not creating files from scratch).
=== (+4,-2) ZipEntry.Write.cs ===
@@ -80,7 +80,9 @@
// These are all present in the local file header, but they may be zero values there.
// So we cannot just copy them.