Skip to content

Latest commit

 

History

History
116 lines (95 loc) · 3.78 KB

File metadata and controls

116 lines (95 loc) · 3.78 KB

Platform-Specific Builds Explained

Current Build Status

macOS ARM64 - COMPLETE

  • File: FFmpeg_GUI_macOS_ARM64.dmg (68MB)
  • Type: DMG installer containing .app bundle
  • Architecture: ARM64 (Apple Silicon M1/M2/M3)
  • Format: Native macOS application bundle
  • Installation: Mount DMG, drag .app to Applications
  • Execution: Double-click or open FFmpeg_GUI.app

Windows AMD64 - CROSS-COMPILED

  • File: Previous attempt created ARM64 Mach-O (not real Windows .exe)
  • Issue: Cross-compilation from macOS creates macOS executable, not Windows
  • Solution: Native build files created for Windows systems

Why Cross-Compilation Doesn't Work

PyInstaller Behavior

  1. Platform Dependency: PyInstaller creates executables for the host platform
  2. macOS to Windows: Not supported natively
  3. Result: Creates ARM64 Mach-O instead of Windows PE32+ .exe

The PKG vs DMG Question

PyInstaller Process:

  1. Creates executable (EXE stage)
  2. Bundles dependencies (PKG stage - this is PyInstaller's internal PKG, not macOS installer)
  3. Creates app bundle (BUNDLE stage for macOS)
  4. Optional: Creates DMG installer (external tool)

PKG in PyInstaller = Internal packaging step (not macOS .pkg installer) DMG = Final distribution format for macOS

Solutions for True Windows .exe

Option 1: Native Windows Build (Recommended)

  • Requirements: Windows 10/11 AMD64 system
  • Files Created:
    • FFmpeg_GUI_Windows.spec - PyInstaller specification
    • BUILD_WINDOWS_NATIVE.md - Complete instructions
  • Result: True Windows .exe (PE32+ format)
  • Size: ~40-60MB (smaller than cross-compiled)

Option 2: GitHub Actions CI/CD

# .github/workflows/build-releases.yml
name: Build Releases
on: [push, release]
jobs:
  build-windows:
    runs-on: windows-latest
    steps:
      - uses: actions/checkout@v3
      - uses: actions/setup-python@v3
      - run: pip install -r requirements.txt  
      - run: pyinstaller FFmpeg_GUI_Windows.spec
      - uses: actions/upload-artifact@v3
        with:
          name: windows-executable
          path: dist/FFmpeg_GUI_Windows_AMD64.exe
  
  build-macos:
    runs-on: macos-latest
    steps:
      - uses: actions/checkout@v3
      - uses: actions/setup-python@v3
      - run: pip install -r requirements.txt
      - run: python build_macos.py
      - uses: actions/upload-artifact@v3
        with:
          name: macos-app
          path: FFmpeg_GUI_macOS_ARM64.dmg

Option 3: Wine (Development Only)

  • Install Wine on macOS/Linux
  • Run Windows Python under Wine
  • Not recommended for distribution

Current File Structure

Repository Files:
├── FFmpeg_GUI_macOS_ARM64.dmg        # Ready for distribution
├── build_macos.py                    # Working macOS builder
├── build_windows.py                  # Cross-compile only
├── build_windows_native.py           # Creates Windows build files
├── FFmpeg_GUI_Windows.spec           # For native Windows build
└── BUILD_WINDOWS_NATIVE.md           # Windows build instructions

Distribution Strategy

macOS Users

  • Download: FFmpeg_GUI_macOS_ARM64.dmg
  • Install: Mount DMG, drag to Applications
  • Requirements: macOS 11+ on Apple Silicon

Windows Users

  • Current: No native executable available
  • Solution: Need Windows machine to build or use GitHub Actions
  • Alternative: Run Python source code directly

Linux Users

  • Use Python source code directly
  • Future: Add Linux AppImage build

Summary

  • macOS ARM64: Complete with DMG installer
  • Windows AMD64: Spec files ready, needs native Windows build
  • Cross-compilation: Not viable for Windows executables
  • PyInstaller PKG: Internal step, not macOS installer format
  • DMG: macOS distribution format (created successfully)