All Projects → SerGreen → Appacker

SerGreen / Appacker

Tool for making single .exe application packages

Projects that are alternatives of or similar to Appacker

Depressurizer
A Steam library categorizing tool.
Stars: ✭ 1,008 (+1340%)
Mutual labels:  winforms
Cefsharp
.NET (WPF and Windows Forms) bindings for the Chromium Embedded Framework
Stars: ✭ 8,440 (+11957.14%)
Mutual labels:  winforms
Spel
STIG-Partitioned Enterprise Linux (spel)
Stars: ✭ 66 (-5.71%)
Mutual labels:  packer
Stdex
std C++ 11 library impementation with extra features using only C++ 98 and POSIX threads
Stars: ✭ 43 (-38.57%)
Mutual labels:  portable
Osx Vm Templates
macOS templates for Packer and VeeWee.
Stars: ✭ 1,050 (+1400%)
Mutual labels:  packer
Ansible Windows Docker Springboot
Example project showing how to provision, deploy, run & orchestrate Spring Boot apps with Docker Windows Containers on Docker Windows native using Packer, Powershell, Vagrant & Ansible
Stars: ✭ 58 (-17.14%)
Mutual labels:  packer
Guitestsharp
An extensible multiplatform framework to test GUIs in WinForms, WPF, GtkSharp and Xamarin.Mac.
Stars: ✭ 40 (-42.86%)
Mutual labels:  winforms
Jsoncsharpclassgenerator
JsonCSharpClassGenerator from http://jsonclassgenerator.codeplex.com/
Stars: ✭ 70 (+0%)
Mutual labels:  winforms
Soloud
Free, easy, portable audio engine for games
Stars: ✭ 1,048 (+1397.14%)
Mutual labels:  portable
Newsup
Fully feature high performance binary usenet uploader/poster
Stars: ✭ 65 (-7.14%)
Mutual labels:  portable
Naps2
Scan documents to PDF and other file types, as simply as possible.
Stars: ✭ 1,018 (+1354.29%)
Mutual labels:  winforms
Qcbor
QCBOR -- a small CBOR encoder/decoder oriented around C and native data representations
Stars: ✭ 48 (-31.43%)
Mutual labels:  portable
Outlookgooglecalendarsync
Sync your Outlook and Google calendars
Stars: ✭ 1,113 (+1490%)
Mutual labels:  portable
Go Cloud
The Go Cloud Development Kit (Go CDK): A library and tools for open cloud development in Go.
Stars: ✭ 8,124 (+11505.71%)
Mutual labels:  portable
Bizhawk
BizHawk is a multi-system emulator written in C#. BizHawk provides nice features for casual gamers such as full screen, and joypad support in addition to full rerecording and debugging tools for all system cores.
Stars: ✭ 1,138 (+1525.71%)
Mutual labels:  winforms
Pclmock
A simple mocking framework in a PCL.
Stars: ✭ 40 (-42.86%)
Mutual labels:  portable
Mvvmfx
MVVM for Wisej and Windows Forms - Caliburn.Micro and Bound controls libraries
Stars: ✭ 50 (-28.57%)
Mutual labels:  winforms
Logbert
Logbert is an advanced log message viewer for log4net, log4j and others.
Stars: ✭ 70 (+0%)
Mutual labels:  winforms
Asap app imgui
Starter project for portable app with optional GUI (GLFW/ImGui) and a rich builtin debug UI. Includes docked windows, log viewer, settings editor, configuration load/save, etc...
Stars: ✭ 70 (+0%)
Mutual labels:  portable
Packer For Vsphere And More
Stars: ✭ 63 (-10%)
Mutual labels:  packer

Appacker

This tool takes a folder with application and packs it into a single executable file (without compression) for easy distribution, portability or whatnot.

KNOWN ISSUE

Appacker and packages created by it can be detected as malware by some antivirus software. That's because of a hacky way i used to package files: packed app reads its own executable and extracts other files from it, which antiviruses find hella suspicious. It's false positive, but it still gets in the way of using this app. I can't fix this, which renders this app not very useful. ¯\_(ツ)_/¯

Still want to download it for some reason? Well, here you go then: Download the latest version.

Usage

To pack an application you have to:

  1. Select a folder that contains all the files of the target application.
    You can drag'n'drop the folder to the first textBox or the treeView.
  2. Select save location for the package (it must be an .exe file).
    You can drag'n'drop an existing .exe into the second textBox; in this case it will be replaced by the package.
  3. Select the main executable file of the target application inside the treeView, it will display target application's files after the step #1.
  4. [Optional] Check the self-repackable checkbox.
  5. Press the Pack! button and it's done. It may take some time if the target application is big enough / has a lot of files.

How to use Appacker via command line

It can be used in GUI-less mode via command line. If you provide no arguments it will launch GUI.

Usage: appacker.exe [-r] [-q] <-s "source_folder"> <-e "main_exe"> [-d "save_location"] [-i "icon_path"]

Options:
  -s, --src, --source-folder=VALUE
                             Directory containing all the files of the target
                               application.
  -e, --exe, --main-exe=VALUE
                             Local path to the main executable inside the
                               source app folder. This is the application that
                               will launch whenever the packed app extracts
                               itself.
  -d, --dst, --destination, --output=VALUE
                             Location where packed app will be created.
  -i, --ico, --icon=VALUE    Custom icon for the packed application.
  -r, --repack, --self-repack
                             Sets the packed application to refresh itself
                               after the main executable closes. Refreshing
                               adds and replaces files in the packed executable
                               with those created and modified during runtime.
  -q, --quiet, --silent      No progress messages will be shown during the
                               packing process.
  -h, --help, -?             Show this message and exit.

This will launch Appacker in GUI mode:

C:\>appacker.exe

This will launch Appacker in console mode:

C:\>appacker.exe -r -src "d:\users\sergreen\desktop\vault\coolapp" -exe "bin\launcher.exe" -dst "d:\users\sergreen\desktop\vault\CoolApp packed.exe" -ico "d:\cool_icon.png"

You can also run it in silent mode by adding --quiet flag, in this mode only error messages are shown.

How does it work

The principle behind Appacker is that you can write whatever you want to the end of an .exe file and it will still work fine.
This app simply appends all the necessary files to the end of a wrapper executable and when the wrapper is launched, it extracts all the files from its own .exe, places them into a temporary folder and starts extracted application. When target app is closed, wrapper removes temp folder.

Also you can set self-repack flag and Appacker will append to the wrapper executable the packer tool, that will repack target application once it's closed from the temporary folder and replace the original package with the updated one. This can be used to create portable application that can keep any changes made to its files (like settings, that are stored inside application directory).

What happens when you run packed application

Packed application is in fact an unpacker.exe with appended files. Application's lifecycle differs a bit for self-repackable and regular packages.
For the example, let's take the CoolApp.exe package from the screenshot above and see what it does when launched.

If it's NOT a self-repacking application, CoolApp.exe does the following:

  1. Creates a temporary folder for the target application files in C:\Users\%UserName%\AppData\Local\Temp
  2. Extracts all the appended files from its own exe into the temp folder
  3. Runs the main executable of the extracted app (for CoolApp.exe it's Launcher.exe) and waits for it to finish
  4. Deletes the temporary folder and quits

If it is a self-repacking application, CoolApp.exe does the following:

  1. Creates a temporary folder A for the target application files in C:\Users\%UserName%\AppData\Local\Temp
  2. Creates a temporary folder B for the packer.exe and unpacker.exe tools
  3. Extracts packer.exe and unpacker.exe from its own exe into the temp folder B
  4. Extracts all the appended files from its own exe into the temp folder A
  5. Runs the main executable of the extracted app (for CoolApp.exe it's Launcher.exe) and waits for it to finish
  6. Launches the packer.exe from temp folder B and quits
  7. Packer takes all the files from the temp folder A and packs them into a new package. New package replaces the original CoolApp.exe
  8. Packer deletes the temp folder A
  9. Packer launches new CoolApp.exe with the special flag -killme and asks it to delete the temp folder B (because packer.exe can't delete itself); packer quits
  10. New CoolApp.exe deletes temp folder B and quits

Solution structure

  • Appacker — WinForms main application project
  • Packer — Console tool that creates packages
  • Unpacker — Console wrapper that is used as the core of a package
  • ProgressBarSplash — WinForms splashscreen tool, that is used by packer and unpacker tools
  • IconLib — DLL project for saving Windows .ico files (vanilla .NET can't save Windows icons correctly ¯\_(ツ)_/¯ )
  • IconInjector — DLL project for replacing icons of external executables

Dependancies and credits

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].