Installer Creator
Python package for compiling projects with Nuitka and creating Windows installers with Wix Toolset.
Features
- One-click builds - Compile Python to EXE and create installers with a single command
- Graphical Config Editor - Intuitive UI for managing build configurations
- Python Path Selection - Manually specify Python executable or auto-detect virtual environments
- Automatic Resource Discovery - Bundle conventional resource folders and files referenced by Python code
- Clear Resource Destinations - Choose whether manually added resources go inside or beside the executable
- File Browser Integration - Easily add files and resources with a file dialog
- Real-time Progress - View build output and cancel long-running operations
- Upgrade Code Management - Generate consistent UUIDs for product upgrades
- Flexible Configuration - Support for complex build scenarios and dependencies
Installation
pip install installer-creator
To use the graphical configuration editor, install the GUI extra:
pip install installer-creator[gui]
Prerequisites
-
Wix Toolset (required for installer creation):
dotnet tool install --global wix
The package will automatically install the Wix UI extension if missing
-
Nuitka (will be installed automatically)
Quick Start
- Create a basic configuration:
installer-creator config-editor - Build your application:
installer-creator build-exe - Build the executable and configured installer together:
installer-creator build
Configuration Editor GUI
The graphical interface provides:
- Visual Editing of all configuration options
- Automatic Resource Discovery with preview
- One-click Builds directly from the interface
- Validation of configuration values
- Progress Monitoring with cancel option
Launch the GUI with:
installer-creator config-editor
Note: The GUI requires PySide6. Install it with
pip install installer-creator[gui].
Command Line Usage
# Generate deterministic UUID for upgrade codes
installer-creator generate-uuid -s "MyAppName"
# Preview automatic and configured resource placement
installer-creator resources -c custom_config.yaml
# Build only the executable with a custom config
installer-creator build-exe -c custom_config.yaml --verbose
# Build with specific Python executable
installer-creator build-exe --python-path "C:\\path\\to\\python.exe"
# Build executable and installer together
installer-creator build -c custom_config.yaml --verbose
# Create installer with debug output
installer-creator build-installer -c custom_config.yaml --debug
Troubleshooting
Common Issues:
- Missing Wix Toolset: Ensure
wixis installed globally - Missing GUI dependencies: Run
pip install installer-creator[gui]for the config editor - Permission Errors: Run commands as administrator when needed
- Build Failures: Check paths and file permissions in configuration
For detailed debugging:
installer-creator build-exe --debug
Testing
The project includes comprehensive tests covering:
- Build process validation
- Installer creation
- Automatic resource discovery
- Configuration handling
- Edge case scenarios
Run tests with:
pip install -e ".[dev]"
pytest tests/
Configuration
Create a build_config.yaml file:
# Nuitka build configuration
project:
name: "MyApp" # Application name
version: "1.0.0"
description: "My Application Description"
company: ""
icon: "app_icon.ico" # Optional icon file
main_file: "main.py" # Entry point file
python_path: "" # Optional path to Python executable (auto-detected if empty)
build:
output:
directory: "dist"
filename: "my_app.exe" # Output executable name
options:
standalone: true
onefile: true
splash_screen: ""
remove_output: true
include:
packages: []
plugins: []
data_dirs: [] # Additional folders bundled inside the EXE
files: [] # Additional files bundled inside the EXE
external_data: [] # Advanced: move matching bundled data outside one-file EXE
resources:
auto_discover: true
copy_beside: [] # Editable files/folders placed next to the EXE
installer:
enabled: true
output:
directory: "dist"
filename: "my_app_installer.msi"
metadata:
manufacturer: "Your Company"
product_name: "My Application"
upgrade_code: "" # Generate with installer-creator generate-uuid
ui:
banner_image: "banner.bmp"
dialog_image: "dialog.bmp"
license_file: "license.rtf"
shortcuts:
desktop: true
start_menu: true
debug:
enabled: false
console:
mode: "disabled"
stdout: null
stderr: null
exclude:
- "__pycache__"
- "*.pyc"
- "*.pyo"
- "*.pyd"
- "build"
- "dist"
Resource Placement
Automatic discovery is enabled by default. It finds conventional resource folders such as assets, resources, static, and templates, including those inside local packages. It also finds existing project files used by common Python resource APIs such as open(), Path(), QFile, and QIcon. Use installer-creator resources to preview the result or --no-auto-resources to build with configured resources only.
Manual resources have two clear destinations:
build.include.filesandbuild.include.data_dirsare bundled inside the EXE.build.copy_besidecontains editable or replaceable files and folders placed beside the EXE and included in the MSI.build.include.external_datais an advanced Nuitka pattern. It moves matching data that is already bundled outside a one-file EXE; it does not include source files itself.
UI images and the license file can use absolute paths or paths relative to the configuration file.
GUI Features
The configuration editor provides a graphical interface for:
- Editing all aspects of the build configuration
- Managing project details, build settings, and installer options
- Previewing configuration changes
- Building executables and installers directly from the GUI
- Viewing real-time build output
- Canceling builds in progress
- Specifying a custom Python executable path
- Browsing and selecting files with a native file dialog
To launch the GUI, simply run:
installer-creator config-editor
The GUI will automatically create a default configuration file if none exists.
Metadata
Release files for installer-creator 0.3.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| installer_creator-0.3.0.tar.gz | 124.8 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| installer_creator-0.3.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 244.3 kB
Release files / installer_creator-0.3.0.tar.gz
| Download URL | installer_creator-0.3.0.tar.gz |
|---|---|
| Size | 124.8 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
c92d934245d8d39051b363b083dfb5e69a2c0175a9cfee76bb18dd29eaed6f61
|
|
BLAKE2b-256 checksum How to use checksums |
be377e73493a3afcdfc310e3ef7fc1ca3e3c24e279b4bacc277f2004d004b78c
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Release files / installer_creator-0.3.0-py3-none-any.whl
| Download URL | installer_creator-0.3.0-py3-none-any.whl |
|---|---|
| Size | 119.5 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
a07045e80f039169e0b91ed902dd9356561f67d1b2668a4f5a228be020a90572
|
|
BLAKE2b-256 checksum How to use checksums |
72993abaa11cec8611bf1965fa056825d5ad3298b7cd35735cd86103a65dea68
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|