Skip to content

JMVS/zipinstaller-modern

Repository files navigation

ZipInstaller Modern (ZIM)

License Platform Python GitHub release GitHub downloads GitHub stars

A lightweight, modern installer for portable Windows applications distributed as ZIP files. Inspired by NirSoft's ZipInstaller, built with Python and PySide6. Supports Windows 10/11.

🎯 Features

Core Functionality

  • πŸ“¦ ZIP Installation: Extract and install portable applications from ZIP archives
  • πŸ—‘οΈ Clean Uninstallation: Complete removal with detection of user-created files
  • πŸ”„ Self-Installation: Install ZIM itself as a system application
  • πŸ“ Registry Integration: Full Windows Add/Remove Programs support
  • 🎨 Modern UI: Clean interface with automatic dark mode detection

Smart Features

  • πŸ” Intelligent Detection: Automatically finds executables and reads metadata (version, publisher, icon)
  • πŸ“ Flexible Structure: Handles ZIPs with executables in root or first subdirectory
  • πŸ–±οΈ Context Menu: Right-click "Install with ZIM..." on ZIP files
  • ⚑ Background Installation: Non-blocking UI with progress feedback
  • 🌐 Multilingual: English and Spanish translations (easily extensible)

πŸ“Έ Screenshots

Main Window Main installation window with dark theme support

Uninstaller Uninstaller with additional files detection

πŸš€ Quick Start

Installation

  1. Download the latest release from Releases
  2. Run ZIM.exe (portable, no installation required)
  3. Optional: Install ZIM itself via the menu (☰) β†’ "Install ZipInstaller Modern in the system"

Usage

Installing an Application

  1. Click πŸ“‚ Browse and select a ZIP file
  2. ZIM automatically detects executables and metadata
  3. Configure name, installation path, and shortcuts
  4. Click ⬇️ INSTALL

Using Context Menu

  1. Right-click any ZIP file in Explorer
  2. Select "Install with ZIM..."
  3. ZIM opens with the file pre-loaded

Uninstalling

  • Windows Settings β†’ Apps β†’ Select application β†’ Uninstall
  • Control Panel β†’ Programs and Features
  • Installation folder β†’ Run uninstall.exe

πŸ› οΈ Building from Source

Prerequisites

# Python 3.12+
python --version

# Install dependencies
pip install -r requirements.txt

Dependencies

  • PySide6 (GUI framework) - LGPL v3 / GPL v3
  • pywin32 (Windows integration) - PSF License
  • pefile (Executable metadata) - MIT License
  • pyshortcuts (Shortcut creation) - MIT License
  • Babel (Internationalization) - BSD License
  • Nuitka (Python compiler) - Apache 2.0

Compilation

# Using build.py (recommended)
build.py

# Using Nuitka
nuitka --standalone --onefile --windows-console-mode=disable \
       --enable-plugin=pyside6 --msvc=latest \
       --file-version=x.x.x.x --windows-icon-from-ico=zim.ico \
       --include-data-dir=locales=locales \
       --lto=yes --include-qt-plugins=sensible \
       --noinclude-qt-translations zim.py

Project Structure

zipinstaller-modern/
β”œβ”€β”€ zim.py              # Main application code
β”œβ”€β”€ zim.ico             # Application icon
β”œβ”€β”€ locales/            # Translation files
β”‚   β”œβ”€β”€ xx/LC_MESSAGES/
β”œβ”€β”€ requirements.txt    # Python dependencies
└── README.md           # This file

🌍 Translations

ZIM uses Babel for internationalization. Currently supported languages:

  • πŸ‡¬πŸ‡§ English (default)
  • πŸ‡ͺπŸ‡Έ Spanish

Adding a New Language

  1. Extract translatable strings:
translations.py extract
  1. a) Create translation for new language (e.g., French):
translations.py init fr
  1. b) Update translation for existing language (e.g., Spanish):
translations.py update es
  1. Edit locales/fr/LC_MESSAGES/messages.po

  2. Compile translations:

translations.py compile

πŸ“‹ Technical Details

How It Works

  1. ZIP Analysis: Scans for .exe files in root or first subdirectory

  2. Metadata Extraction: Uses pefile to read executable version info

  3. Installation:

    • Extracts files to %LOCALAPPDATA%\Programs\AppName
    • Creates uninstall.exe (copy of ZIM)
    • Saves install_info.json with file list
    • Generates desktop/Start Menu shortcuts
    • Registers in Windows Registry (HKCU\Software\Microsoft\Windows\CurrentVersion\Uninstall)
  4. Uninstallation:

    • Detects additional files created after installation
    • Removes shortcuts and registry entries
    • Self-deletes via batch script

Registry Keys

ZIM creates entries under:

HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\[AppName]

Fields: DisplayName, DisplayVersion, Publisher, InstallLocation, UninstallString, DisplayIcon, EstimatedSize, InstallDate

Context Menu Registration

For ZIP files, ZIM registers:

HKEY_CURRENT_USER\Software\Classes\[ProgID]\shell\InstallWithZIM\command

Where [ProgID] is detected from the system's ZIP file association.

🀝 Contributing

Contributions are welcome! Please feel free to submit issues, fork the repository, and create pull requests.

Development Setup

  1. Fork and clone the repository
  2. Create a virtual environment:
python -m venv venv
venv\Scripts\activate  # Windows
  1. Install dependencies:
pip install -r requirements.txt
  1. Run from source:
python zim.py

Code Style

  • Follow PEP 8 guidelines
  • Use type hints where applicable
  • Add docstrings to all public functions/classes
  • Keep functions focused and modular

πŸ“„ License

This project is licensed under the GNU General Public License v3.0 (GPLv3).

See LICENSE for the full license text.

Third-Party Licenses

  • PySide6: LGPL v3 / GPL v3 / Commercial
  • pywin32: Python Software Foundation License
  • pefile: MIT License
  • pyshortcuts: MIT License
  • Nuitka: Apache License 2.0

All dependencies are compatible with GPLv3.

⚠️ Disclaimer

This software is provided "AS IS" without warranty of any kind. Use at your own risk. Always verify the contents of ZIP files before installation.

πŸ™ Acknowledgments

  • Inspired by NirSoft's ZipInstaller
  • Built with PySide6 (Qt for Python)
  • Compiled with Nuitka

πŸ“ž Contact

Author: VM/Studio

Issues: GitHub Issues


Made with ❀️ by VM/Studio

About

Portable Application Installer from ZIP files

Resources

License

Contributing

Stars

Watchers

Forks

Packages

No packages published

Languages