ppatcher_tutorial.mp4
A modern, cross-platform game patcher built with Wails and Go. PPatcher provides a sleek interface for downloading and applying game updates with full customization support for creating branded client executables.
- Cross-platform support (Windows, Linux, macOS)
 - Real-time download progress tracking with visual indicators
 - Ready to go backend server Compile and run the executable on any platform
 - Automatic file integrity verification with checksum validation
 - Custom executable launching after updates complete
 - Customizable UI color themes (green, blue, red, purple, etc.)
 - Dynamic branding with custom titles, versions, and descriptions
 - Custom logo and icon support for fully branded clients
 
PPatcher includes a comprehensive build system that allows you to create fully customized client executables for your own games or applications. The system supports complete branding and configuration through a single config file.
# Build your backend
go build -o fileserver ./server/main.go
# Put your files inside a folder called "files" and put your backend in the same directory
# your-game-root-dir/
# βββ files/
# βββ fileserver*
# Run your backend
PORT=3000 ./fileserver
# Create a configuration file with all available options and build your client
./build-client.sh --create-config=my-game-config.json
# You are ready to distribute it to your friends
# You can also checkout what is available
./build-client.sh -h{
  "backend": "https://patches.mygame.com",
  "executable": "game/mygame",
  "colorPalette": "purple", 
  "mode": "production",
  "outputName": "mygame-patcher",
  "version": "v3.2.1",
  "description": "My Awesome Game Patcher",
  "logo": "https://cdn.example.com/logo.png",
  "icon": "assets/app-icon.ico"
}This configuration creates a fully branded patcher that:
- β
 Connects to your patch server at 
https://patches.mygame.com - β
 Launches 
mygame.exe(automatically adds.exeon Windows) - β Uses a purple color theme throughout the UI
 - β Shows "My Awesome Game Patcher v3.2.1" as the title and version
 - β Uses your custom logo in the client interface
 - β Has a custom icon for the executable file
 - β
 Outputs as 
mygame-patcher-windows-amd64.exeand similar for other platforms 
The build system supports:
- Windows (x64, ARM64) with automatic 
.exehandling - Linux (x64, ARM64) with GTK support
 - macOS (Intel, Apple Silicon) with native integration
 
- Backend URLs: Point to your own patch server
 - Game executables: Configure any executable to launch after patching
 - UI themes: Choose from multiple color palettes or specify custom colors
 - Branding: Custom titles, versions, descriptions displayed in the UI
 - Visual assets: Custom logos and executable icons
 - Output naming: Control the name of generated executable files
 
- Local files: Use files from your project directory
 - Remote URLs: Download logos and icons from CDNs or websites
 - Automatic processing: Images are downloaded/copied and integrated during build
 - Format flexibility: Support for PNG, JPG, ICO, and other common formats
 
- Production: Optimized builds for distribution
 - Development: Debug builds with additional logging
 - Clean builds: Start fresh by clearing previous build artifacts
 - Debug mode: Include development symbols and verbose output
 
- Build script: User-friendly 
./build-client.shwith comprehensive options - Makefile: Standard 
maketargets for developers - Direct wails: Advanced users can call wails CLI directly
 - CI/CD integration: Easy integration with GitHub Actions, GitLab CI, etc.
 
- Automatic 
.exesuffix addition to executable paths - Native Windows installer generation (NSIS)
 - Custom executable icons and metadata
 - Windows-specific file associations
 
- GTK-based UI with native look and feel
 - Standard executable distribution
 - Compatible with major Linux distributions
 
- Native macOS application bundle generation
 - Code signing and notarization support
 - Standard .app bundle distribution
 
For development setup, detailed build instructions, troubleshooting, and advanced configuration options, see BUILD.md.
# Install dependencies
make install-deps
# Create a development config
./build-client.sh --create-config=dev-config.json
# Edit dev-config.json for local development:
# {
#   "backend": "http://localhost:3000",
#   "executable": "test-program",
#   "mode": "dev",
#   "colorPalette": "green"
# }
# Build and test
./build-client.sh --config=dev-config.json --debug- Create branded patchers for your games
 - Distribute updates through your own servers
 - Customize the look and feel to match your game's theme
 - Support multiple platforms with a single configuration
 
- Build update systems for desktop applications
 - Maintain version control across different deployment environments
 - Create staging and production update channels
 - Integrate with existing CI/CD pipelines
 
- Deploy custom update tools for internal software
 - Manage software deployments across different environments
 - Create branded tools for client organizations
 - Maintain consistent branding across multiple projects
 
See the demo-config.json file for a complete configuration example, and check BUILD.md for detailed workflows including:
- Single-platform builds for specific operating systems
 - Multi-platform builds for cross-platform distribution
 - Development vs. production build configurations
 - CI/CD integration examples with GitHub Actions
 - Advanced customization with environment variable overrides
 
This project is open source. Please check the repository for license details.