Scott Frederick created COMPRESS-550:
----------------------------------------

             Summary: 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


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
$ 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)

Reply via email to