Skip to content

Erfan-ram/PackDrop-Installer

Repository files navigation

PackDrop Installer

A universal installer builder for Linux. Turn ANY standalone executable into a fully-integrated desktop application—complete with graphical setup and desktop icons—using just a single configuration file.

PackDrop Demo

Features

  • 🚀 Zero-Config Build: Just edit one packdrop.yaml file.
  • 📦 True Offline Setup: Automatically bundles .deb dependencies (like libxcb) for clean Ubuntu targets.
  • Sidecar Architecture: Skips slow recompression of massive .tar.gz files.
  • 🛠️ Auto-Fetches Qt IFW: No need to manually install the Qt Installer Framework or any other dependencies like Qt.

📦 Bring Your Own App (Any Framework!)

PackDrop is completely agnostic to your tech stack. As long as you have a standalone Linux directory or executable, PackDrop can wrap it. You can build your core application using your favorite packaging tools:

  • Python: Nuitka, PyInstaller, cx_Freeze
  • C++ / Qt: linuxdeployqt, AppImageTool
  • Node.js / Electron: pkg, electron-builder
  • Go / Rust / C: Native compiled binaries

Just pack your final build folder into a .tar.gz archive, and PackDrop will turn it into a professional GUI installer.


Quick Start

  1. Clone this template — Use "Use this template" on GitHub to create your own repository.

  2. Edit packdrop.yaml — Set your application name, version, and file paths:

    app_name: "My Cool App"
    app_version: "1.0.0"
    compressed_file: "./my_app.tar.gz"
    executable_file: "my_app"
  3. Place your files — Put your compressed application archive and logo.png in the project root.

  4. Build the installer:

    ./build_installer.sh

    That's it! The script automatically fetches required dependencies and outputs your ready-to-ship installer in the release/ directory.

  5. Distribute — Everything you need is in the release/ directory. Ship it to your users.

  6. End users install with:

    sudo ./setup.sh

Configuration (packdrop.yaml)

Key Description Example
app_name Display name (used everywhere) "My Cool App"
app_version Semantic version "1.0.0"
app_publisher Developer / publisher name "MyTeam"
app_description Short description "A useful application"
compressed_file Path to your app archive (.tar.gz) "./my_app.tar.gz"
executable_file Main executable name inside the archive "my_app"
app_categories Desktop menu categories (semicolon-separated) "Utility;"
dependencies Comma-separated system packages to bundle "libxcb-cursor0,libgl1"
qtifw Qt IFW version or custom install path "4.8.1" or "/opt/QtIFW"
required_space_mb Minimum disk space in MB 100

Qt Installer Framework (qtifw)

The qtifw field accepts either:

  • A version number (e.g. "4.8.1") — the build script will check ~/Qt/QtIFW-4.8.1/ and if not found, offer to download and install it automatically for your architecture (x64/arm64).
  • An absolute path (e.g. "/opt/QtIFW-4.8.1") — used directly without any auto-detection.

Default: "4.8.1" (tested and recommended).

Offline Dependencies (dependencies)

System packages required by Qt IFW and your application. During build, these are automatically downloaded via apt-get download and bundled into release/offline_dependencies/. The installer installs them on the target system.

Default packages ensure Qt IFW runs on a minimal Ubuntu system. Add any extra packages your application needs.


What Gets Generated

The build_installer.sh script reads your config and produces a complete distribution in release/:

release/
├── setup.sh                — User-facing entry point (sudo ./setup.sh)
├── Installer_GUI.run       — Qt IFW graphical installer
├── <app_name>.tar.gz       — Your application archive (renamed)
├── logo.png                — Application icon
├── uninstall.sh            — Clean uninstaller
└── offline_dependencies/   — Auto-downloaded .deb packages

Project Structure

├── ⚙️ packdrop.yaml            — Configuration (edit this)
├── 🔨 build_installer.sh       — Build script (run this)
├── 🖼️ logo.png                 — App icon (replace this)
├── 📁 ifw_config/              — Installer templates (auto-processed)
│   ├── 📜 setup.sh             — Setup template
│   ├── 🧹 uninstall.sh         — Uninstall template
│   ├── 📂 config/              — Qt IFW config templates
│   └── 📦 packages/            — Qt IFW package templates
├── 📥 offline_dependencies/    — Optional extra .deb packages
└── 🚀 release/                 — Build output (distribute this)

License

See LICENSE for details.

About

Build professional Linux installers in minutes. PackDrop automates QtIFW, manages offline .deb dependencies, and creates desktop integrations seamlessly.

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published