Creating 7zip Self Extracting Archives
7zip has the ability to create "self extracting archives". This means that you can create an executable that contains both an archive and the code to extract your files, so the target user doesn't need any additional software installed on their machine to open your files.
7zip itself comes with a -sfx command line switch to create these types of archives, but the method I prefer is to create the 7z archive like you normally would, and then concatenate that on the end of the self extractor's binary.
The self extractors are named ending in .sfx
.
The one I'm using is named 7z.sfx
.
Windows users can find 7z.sfx
in their 7zip installation at C:\Program Files\7-Zip\7z.sfx
Unix users can get 7z.sfx
(for making windows self extractors) by downloading the 32-bit exe from 7zip's website
, and then extracting 7z.sfx
from the executable like this:
7z x 7z920.exe 7z.sfx
Then all you need to do is create your 7zip archive like normal:
7z a examplename.7z examplefolder
And then concatenate that with your sfx module.
On Windows, do:
copy /B 7z.sfx+examplename.7z selfextractor.exe
On Unix, do:
cat 7z.sfx examplename.7z > selfextractor.exe
As an added bonus, you can use upx
to compress the sfx itself before concatenating the files.
This will result in an even smaller self extractor.
(You should only do this on your .sfx file once.)
upx 7z.sfx
There are also additional sfx modules designed specially for installers. You can read more about them in 7zip's manual.