Package web apps into native executables for Windows, macOS, Linux, Android, and PWA in 5 minutes!
A powerful desktop application and build tool for packaging web applications into native executables. Supports Electron app packaging, automatic icon generation, and cross-platform builds with zero configuration.
Keywords: electron packager, electron builder, multi-platform packaging, cross-platform build tool, desktop app packager, icon generator, Windows app builder, macOS app builder, Linux app builder, Android APK builder, PWA generator, automated packaging, developer tools
Electron Multi-Platform Packager is a comprehensive solution for developers who need to package their web applications into native desktop and mobile applications. Built on top of industry-standard tools like Electron Builder and Capacitor, it provides a unified interface for multi-platform builds.
Traditional Way:
- 6+ hours configuring electron-builder per platform
- Manually creating ICO, ICNS, and PNG icons in multiple sizes
- Complex platform-specific configurations
- Debugging obscure build errors
Our Way:
- β‘ 5 minutes from ZIP to native apps
- π¨ One PNG β All icon formats automatically
- π Zero configuration required
- β¨ Just upload and go!
- Unified Workflow: Package for 5 platforms from a single interface
- Time Saving: Save 97% of packaging time with automation
- Automatic Icon Magic: Upload one 512x512 PNG, get 25+ optimized icons
- Professional Output: Code-signing ready with proper app metadata
- Queue Management: Handle multiple packaging jobs efficiently
- Real-time Feedback: WebSocket-based progress tracking
- No Platform Knowledge Needed: We handle all the technical details
| Platform | Output Format | Features |
|---|---|---|
| πͺ Windows | EXE + NSIS Installer | Code signing ready, custom icons, installer wizard |
| π macOS | DMG | Notarization ready, ICNS icons, app bundle |
| π§ Linux | AppImage + DEB | Desktop integration, portable execution |
| π€ Android | APK | Capacitor-based, adaptive icons, all densities |
| π PWA | Web App | Service worker, manifest, offline support |
- Custom Logo Support - Automatically convert your logo to all platform-specific formats
- Queue System - Process multiple packaging jobs with priority management
- Real-time Progress - WebSocket-based live updates during packaging
- Modern Web UI - Clean, intuitive interface built with modern web standards
- Automatic Icon Generation - Convert single logo to ICO, ICNS, PNG in all required sizes
- Build Caching - Speed up repeated builds with intelligent caching
- Node.js 18.0.0 or higher
- npm or yarn
- 4GB RAM minimum (8GB recommended for Android builds)
- 10GB free disk space
- Windows 10/11 (native)
- OR macOS/Linux with Wine installed
- macOS 10.13 or higher
- Xcode Command Line Tools:
xcode-select --install
- Any modern Linux distribution
fusepackage for AppImage testing
- Java JDK 17
- Android SDK (automatically installed via Capacitor)
- 4GB additional RAM recommended
# Clone the repository
git clone https://github.com/mehmetnadir/electron-multi-platform-packager.git
cd electron-multi-platform-packager
# Install dependencies
npm install
# Start the application
npm run electronThe simplest workflow you'll ever use:
- Build your web app β Get a
build/folder - ZIP it β
zip -r my-app.zip build/ - Upload to our tool β Drag & drop
- Add a logo β One 512x512 PNG (we handle all formats!)
- Click "Start Packaging" β Done!
That's it! Get Windows EXE, macOS DMG, Linux AppImage, and more!
π Want detailed examples? Check out GETTING_STARTED.md for:
- Real-world React app example
- What happens behind the scenes
- Logo magic explained
- Pro tips and best practices
# Start Electron app with GUI
npm run electron
# Development mode with DevTools
npm run electron-devThe application will open with a modern web interface where you can:
- Upload and manage build files
- Configure packaging options
- Monitor active and completed jobs
- Manage custom logos
- View detailed logs
# Start as web server only (no Electron window)
npm start
# Access via browser
open http://localhost:3000# Start with auto-reload
npm run devAll platforms support custom logos with automatic format conversion:
- Input: PNG, JPG, JPEG, SVG
- Recommended: PNG with transparent background, 512x512px, 1:1 aspect ratio
| Platform | Format | Sizes Generated |
|---|---|---|
| Windows | ICO | 16, 32, 48, 64, 128, 256 |
| macOS | ICNS | 16, 32, 64, 128, 256, 512 |
| Linux | PNG | 512x512 |
| Android | PNG | 48, 72, 96, 144, 192 (mdpi to xxxhdpi) |
| PWA | PNG | 72, 96, 128, 144, 152, 192, 384, 512 |
- Upload your logo (PNG, 512x512 recommended)
- Logo is automatically converted to all required formats
- Each platform receives optimized icons
- Fallback to default icon if no logo provided
Create a .env file in the root directory:
# Optional: Custom configuration directory
CONFIG_DIR=/path/to/config
# Optional: Server port (default: 3000)
PORT=3000
# Optional: Enable debug logging
DEBUG=trueCustomize packaging in package.json:
{
"build": {
"appId": "com.yourcompany.yourapp",
"productName": "Your App Name",
"win": {
"target": "nsis",
"certificateFile": "./certs/cert.pfx",
"certificatePassword": "${CERT_PASSWORD}"
},
"mac": {
"category": "public.app-category.developer-tools",
"hardenedRuntime": true,
"entitlements": "build/entitlements.mac.plist"
},
"linux": {
"target": ["AppImage", "deb"],
"category": "Development"
}
}
}electron-multi-platform-packager/
βββ src/
β βββ main.js # Electron main process
β βββ preload.js # Preload script for security
β β
β βββ client/ # Frontend
β β βββ public/
β β β βββ index.html # Main UI
β β β βββ app.js # Frontend logic
β β β βββ uploadManager.js # File upload handling
β β βββ settings.html # Settings page
β β
β βββ server/ # Backend
β β βββ app.js # Express server
β β βββ localPackagingRoutes.js
β β βββ settingsRoutes.js
β β βββ pwa-config-manager.js
β β
β βββ packaging/ # Core packaging logic
β β βββ packagingService.js # Main service
β β βββ [platform templates]
β β
β βββ services/ # Supporting services
β β βββ queueService.js # Job queue management
β β βββ uploadService.js # File upload handling
β β βββ chunkedUploadService.js
β β
β βββ config/ # Configuration
β β βββ ConfigManager.js # Settings management
β β
β βββ utils/ # Utilities
β βββ logoService.js # Logo processing
β
βββ package.json # Dependencies and scripts
βββ README.md # This file
βββ CONTRIBUTING.md # Contribution guidelines
βββ LICENSE # MIT License
Core:
- Electron - Desktop application framework
- Node.js - JavaScript runtime
- Express.js - Web server framework
Packaging:
- electron-builder - Windows, macOS, Linux packaging
- Capacitor - Android packaging
- NSIS - Windows installer
Image Processing:
Real-time Communication:
- Socket.io - WebSocket for live updates
Contributions are welcome! Please see CONTRIBUTING.md for guidelines.
- Fork the repository
- Create a feature branch
- Make your changes
- Test thoroughly
- Submit a pull request
- π Bug fixes
- π Documentation improvements
- β¨ New features
- π§ͺ Testing and QA
- π Translations
- π¨ UI/UX improvements
This project is licensed under the MIT License - see the LICENSE file for details.
- β Commercial use allowed
- β Modification allowed
- β Distribution allowed
- β Private use allowed
β οΈ No warranty providedβ οΈ No liability accepted
This project builds upon excellent open-source tools:
- Electron - Cross-platform desktop apps with web technologies
- electron-builder - Complete solution to package Electron apps
- Capacitor - Native mobile runtime for web apps
- Sharp - High-performance Node.js image processing
- Express - Fast, unopinionated web framework
- Socket.io - Real-time bidirectional event-based communication
- Issues: GitHub Issues
- Discussions: GitHub Discussions
- Documentation: This README and inline code comments
- iOS support via Capacitor
- Snap package for Linux
- Flatpak support
- Windows Store (MSIX) packaging
- Automated testing pipeline
- Plugin system for custom build steps
- Multi-language UI support
- Cloud build service integration
- Build templates and presets
- Incremental update support
- Multi-platform packaging
- Custom logo support
- Queue management
- Real-time progress tracking
- Modern web UI
- Platforms Supported: 5 (Windows, macOS, Linux, Android, PWA)
- Languages: JavaScript (Node.js)
- License: MIT
- Status: Active Development
If you find this project useful, please consider giving it a star on GitHub! It helps others discover the project and motivates continued development.
Built with β€οΈ for the developer community
Making multi-platform packaging accessible to everyone