Skip to content

Latest commit

 

History

7 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Packrat banner

Packrat

Stars Badge

Forks Badge

Watchers Badge

Issues Badge


C++20 / CMake License




Overview

Packrat is a lightweight, dependency-minimal packaging and installer tool. Point it at a folder, and it recursively bundles every file inside into a single compressed .payload, or a self-contained double-click installer .exe. There's no external runtime, no registry setup, and no license fees required for the person receiving it.

It was built as a simple alternative to heavier installer frameworks (Inno Setup, NSIS, etc.) for cases where you just need to get a folder of files from A to B, verified and intact - originally to ship Unreal Engine builds to coworkers and playtesters, but it works for any folder of files.

For more, check out DESIGN-NOTES.md


Features

  • 📦 Recursive packaging - point at a folder, every file and subfolder is included automatically.
  • 🗜️ Zstandard compression - payloads are compressed on the fly, streamed file-by-file with no full-file memory buffering.
  • Checksummed & verified - every file is CRC32-checked on extraction before anything touches your install directory; a failed or corrupted install never leaves a half-written mess behind.
  • 💾 Self-extracting installers - bundle the payload directly into a distributable .exe; the recipient just double-clicks it, no separate installer app required.
  • 🖥️ GUI + CLI - a friendly packager/installer GUI for regular use, and a full CLI for scripting/automation.
  • 🪶 Lightweight - minimal dependencies (Dear ImGui, GLFW, zstd, nativefiledialog-extended, stb_image), no heavyweight installer framework, no license fees.

How To Use

For End Users (installing a package)

Step Instructions Screenshot
1 Simply double-click the .exe you were given. image
2 Choose an install location, and click Install. That's it! No separate download or setup required. image

For Developers (creating installers/payloads)

Step Instructions Screenshot
1 Download/build PackratGui.exe (see Building below). image
2 Open it, go to the Package tab. image
3 Pick your source folder and an output location. image
4 Leave "Create as self-extracting installer" checked if you want a plain double-click-to-install .exe for your recipients (recommended), or uncheck it to produce a plain .payload file instead (requires the recipient to also have PackratInstaller.exe). image
5 Click Package. Send the resulting file to whoever needs it. image

CLI usage

packrat package <sourceDir> <output.payload>
packrat extract <input.payload> <targetDir>
packrat verify <input.payload>
packrat verify-install <input.payload> <installedDir>

For Recipients (extracting a plain .payload file with no embedded installer)

If you received a .payload file rather than a double-click-to-install .exe, the sender chose not to bundle an installer with it (usually to keep the file smaller). You'll need PackratGui.exe to extract it. The plain CLI (PackratCli.exe) works too, if you'd rather script it.

Step Instructions Screenshot
1 Download/build PackratGui.exe (see Building below). image
2 Open it, go to the Extract tab. image
3 Pick the .payload file you received, and a target folder to install into. image
4 Click Extract. Every file is checksum-verified before anything is written to your target folder. If a file was corrupted in transit, you'll see an error rather than a silently broken install. image

Note: extracting will overwrite any existing files in the target folder that share the same name as files in the package.

Alternatively, from the command line:

packrat extract <input.payload> <targetDir>

Building

Requires CMake 3.20+ and a C++20 compiler (tested with MSVC on Windows). All dependencies are fetched automatically via CMake's FetchContent - no manual setup required.

git clone https://github.com/jdsherbert/PackRat.git
cd PackRat
cmake -B build
cmake --build build

This produces three targets: PackratCli, PackratGui, and PackratInstaller. PackratInstaller.exe must sit alongside PackratGui.exe for the "create installer" packaging option to work.


A note on Windows SmartScreen / antivirus warnings

Packrat builds are currently unsigned (no paid code-signing certificate). This means Windows SmartScreen or your antivirus may flag a freshly built/downloaded .exe as coming from an "unknown publisher." This is expected for small, unsigned tools and is not an indication of a problem. You're welcome to build from source yourself to verify, per the instructions above.


License

Packrat is licensed under the MIT License. See THIRD-PARTY-LICENSES.md for the licenses of the open-source libraries it depends on.

Disclaimer: Packrat is provided as-is, with no warranty of any kind. If you didn't get your copy directly from the official GitHub releases or itch.io page, its origin and integrity can't be guaranteed.


Credits

Installer/logo artwork by Kittizard.


About

Lightweight, easy to use packager + installation tool, built in C++.

Topics

Resources

Stars

2 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages