Skip to main content

Building from source

A onefile Windows .exe is produced with Nuitka via pyside6-deploy, and an optional installer with Inno Setup.

Quick start

.\build.ps1 # output: dist\QtTaskManager.exe (+ standalone runtime)
.\build.ps1 -Clean # remove previous build artifacts first
.\build.ps1 -Installer # also build dist\QtTaskManager-Setup-<version>.exe

build.ps1 will:

  1. Sync dependencies (including the dev group that provides Nuitka) with uv.
  2. Regenerate app.ico from the programmatic icon (skip with -SkipIcon).
  3. Run pyside6-deploy against pysidedeploy.spec (standalone, no console).
  4. With -Installer, run iscc on installer.iss to produce the setup exe.

Flags

FlagEffect
-CleanRemove dist, build, *.build, *.dist, *.onefile-build first
-SkipIconDon't regenerate app.ico
-InstallerBuild the Inno Setup installer after the exe

Requirements

  • uv on PATH.
  • A C toolchain — Nuitka downloads one (and Dependency Walker) on first use and caches it under %LOCALAPPDATA%\Nuitka.
  • For -Installer: Inno Setup 6 (iscc on PATH, or at its default install location).

Version provenance

The build bakes the version, the commit it was cut from, and the build date into a generated procman/_build_info.py. At runtime Help › About reads that file; in a dev checkout (where the file is absent) it falls back to git and the package metadata. See procman/version.py.

Continuous builds

The Release GitHub Actions workflow builds the Windows exe and installer on a tag push (v*) and drafts a GitHub release with both attached. It caches the Nuitka toolchain between runs. See .github/workflows/release.yml.