Hi,
It (finally) went in to my thick scull, that by the UseZip64 value "Dynamic" is meant "ByPreKnownFileSize"!!
But I have a rather simple idea to make it TRUELY dynamic!
**********************************************************************
EDIT: See below posting for actual implementation
**********************************************************************
The idea is on writeback of size into the Zip64-header to CHANGE it into a Zip32-header in the following way:
a) Change "Version made by" from 2Dh (45) to 14h (20).
b) Set correct lengths in the two base-length-fields.
This is it! I tested it manually, and it works! the 0001h extra field are ignored.
Optionally:
c) Change extradata "Lengths-data" identifier 0001h to something that is guranteed to be IGNORED by std. version 20 readers!
Here is a list of known values
http://svn.assembla.com/svn/os2utils/unzip60f/proginfo/extrafld.txt
And a few less in this
http://www.pkware.com/documents/casestudies/APPNOTE.TXT
An obvious choice would be "#Z"
Yes, I know this would 'waste' 20Bytes for each file less than 4Gb, but that is an acceptable 'loss'. To make normal files available to older wide-spread Zip32-software, such as build into XP.
Best Regards
Eske Rahn