[
https://issues.apache.org/jira/browse/COMPRESS-550?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Scott Frederick updated COMPRESS-550:
-------------------------------------
Description:
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}
was:
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}
> 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
> Priority: Major
>
> 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)