- macOS 11.0 or later (Apple Silicon)
- Python 3.8+
- Virtual environment with dependencies installed
- Python 3.8+ (any platform for cross-compilation)
- PyInstaller 6.0+
- Virtual environment with dependencies installed
# Setup environment
make venv install
# Build for current platform
make build-macos # macOS only
make build-windows # Any platform
# Universal build script
python build.py macos # macOS .app
python build.py windows # Windows .exe
python build.py both # Both platformssource .venv/bin/activate
python build_macos.pyOutput files:
dist/FFmpeg_GUI.app- Application bundleFFmpeg_GUI_macOS_ARM64.dmg- Installer (optional)
source .venv/bin/activate # or .venv\Scripts\activate on Windows
python build_windows.pyOutput files:
dist/windows/FFmpeg_GUI_Windows_AMD64.exe- ExecutableFFmpeg_GUI_Windows_AMD64.zip- Distribution package
All required dependencies are automatically bundled:
- PyQt6 runtime libraries
- FFmpeg-python bindings
- SSL certificates
- Safe extraction utilities
- macOS: ARM64 (Apple Silicon M1/M2/M3)
- Windows: AMD64 (x86_64)
dist/
├── FFmpeg_GUI.app/ # macOS bundle
│ └── Contents/
│ ├── MacOS/FFmpeg_GUI # Executable
│ ├── Resources/ # Resources
│ └── Info.plist # App metadata
└── windows/
└── FFmpeg_GUI_Windows_AMD64.exe # Windows executable
# Test the app bundle
open dist/FFmpeg_GUI.app
# Or run directly
dist/FFmpeg_GUI.app/Contents/MacOS/FFmpeg_GUI# Test executable (if on Windows)
dist/windows/FFmpeg_GUI_Windows_AMD64.exe
# Or test via Wine on macOS/Linux
wine dist/windows/FFmpeg_GUI_Windows_AMD64.exe- Distribute the
.appbundle or.dmginstaller - Users can drag to Applications folder
- No additional installation required
- Distribute the
.zippackage or standalone.exe - No installation required (portable executable)
- All dependencies are bundled
"Module not found" errors
- Ensure all dependencies are installed in virtual environment
- Check that virtual environment is activated before building
Build fails on macOS
- Verify you're running on Apple Silicon Mac
- Check Xcode Command Line Tools are installed:
xcode-select --install
Windows build missing dependencies
- Install PyInstaller:
pip install pyinstaller>=6.0.0 - Ensure all hidden imports are specified in build script
Large executable size
- Normal for bundled applications (50-150MB)
- PyQt6 and Python runtime add significant size
- Use
--onefilefor single executable vs--onedirfor faster startup
Reduce Size
- Remove unused imports from source code
- Use
--exclude-modulefor unneeded packages - Consider UPX compression (advanced)
Faster Builds
- Use
--onedirinstead of--onefile - Keep build cache between builds
- Build incrementally when possible