[ https://issues.apache.org/jira/browse/COMPRESS-550?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Peter Lee updated COMPRESS-550: ------------------------------- Fix Version/s: (was: 1.20) 1.21 > Support writing self-extracting preamble data to a zip archive > -------------------------------------------------------------- > > Key: COMPRESS-550 > URL: https://issues.apache.org/jira/browse/COMPRESS-550 > Project: Commons Compress > Issue Type: New Feature > Components: Archivers > Affects Versions: 1.20 > Reporter: Scott Frederick > Assignee: Peter Lee > Priority: Major > Fix For: 1.21 > > Time Spent: 1h 40m > Remaining Estimate: 0h > > On Linux, it is possible to create a self-extracting zip file by prepending a > script or other executable to the zip file. For example, this can be done > from the command line with the following commands: > {code:bash} > $ echo "test file text" > test.txt > $ zip test.zip test.txt > adding: test.txt (stored 0%) > $ cat /usr/bin/unzipsfx test.zip > test > $ zipinfo test > Archive: test > Zip file size: 101568 bytes, number of entries: 1 > warning [test]: 101392 extra bytes at beginning or within zipfile > (attempting to process anyway) > -rw-r--r-- 3.0 unx 10 tx stor 20-Jul-30 15:43 test.txt > 1 file, 10 bytes uncompressed, 10 bytes compressed: 0.0% > $ zip --adjust-sfx test.zip > Zip entry offsets appear off by 101392 bytes - correcting... > $ zipinfo test > Archive: test > Zip file size: 101568 bytes, number of entries: 1 > -rw-r--r-- 3.0 unx 10 tx stor 20-Jul-30 15:43 test.txt > 1 file, 10 bytes uncompressed, 10 bytes compressed: 0.0% > $ chmod 755 test > {code} > Note that the first invocation of "zipinfo" reports that the central > directory is invalid because of extra bytes at the beginning of the zip file. > "zip --adjust-sfx" can be used to adjust the central directory to account for > the self-extracting preamble bytes. > It would be nice to be able to prepend this kind of self-extracting preamble > to a zip using Apache Commons Compress. > A method like the following on ZipArchiveOutputStream seems to provide this > behavior: > {code:java} > public void writePreamble(byte[] preamble) throws IOException { > if (entry != null) { > throw new IllegalStateException("Preamble must be written before > creating an entry"); > } > this.streamCompressor.writeCounted(preamble); > } > {code} > > -- This message was sent by Atlassian Jira (v8.3.4#803005)