https://github.com/devolutions/lizard
Lizard: A 7-Zip packer that sticks
https://github.com/devolutions/lizard
Last synced: 10 months ago
JSON representation
Lizard: A 7-Zip packer that sticks
- Host: GitHub
- URL: https://github.com/devolutions/lizard
- Owner: Devolutions
- License: apache-2.0
- Created: 2018-02-10T14:40:47.000Z (almost 8 years ago)
- Default Branch: master
- Last Pushed: 2022-03-10T15:47:48.000Z (almost 4 years ago)
- Last Synced: 2025-04-09T19:53:13.290Z (10 months ago)
- Language: C
- Homepage:
- Size: 517 KB
- Stars: 4
- Watchers: 16
- Forks: 1
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE-APACHE
- Codeowners: .github/CODEOWNERS
Awesome Lists containing this project
README
# Lizard: A 7-Zip packer that sticks
Have you ever wanted to package your application as a single executable
that extracts itself when launched? You have come to the right place.
Traditional packers take an executable, compress its executable segment
and make a new executable that will decompress it in memory when launched.
Lizard aims at simplifying the task of decompressing a 7-Zip archive to
a temporary location from which an executable will be launched.
This project was originally created with a specific use case in mind:
creating an executable that contains both 32-bit and 64-bit versions
of a Windows executable. When launched, the packer detects if it is
running inside a 32-bit or 64-bit Windows environment, and proceeds
to extract and launch the optimal version of the program. Since both
executables are just different versions of the same program, their
resource segments are identical. Because they are compressed inside
the same 7-Zip archive rather than individually, the resource segment
is correctly compressed only once, resulting in efficient compression.
Lizard does not provide specific tooling to generate packed executables.
It is a library that contains a 7-Zip decompressor (LZMA SDK), along with
portability functions to deal with environment detection, files, paths,
Unicode encoding, etc. Embedding the 7-Zip archive inside the packer
program can be done using platform-specific resource compilers.
Otherwise, the [YARC](https://github.com/wayk/yarc) resource compiler can be used to achieve this task.
## Sample Program Usage
`lizard [options]`
Options:
* `-e` extract files from archive
* `-l` list files from archive
* `-i` input file
* `-o` output path
* `-h` print help
* `-v` print version (1.0.0)
* `-V` verbose mode