Files
qbz/licenses
vicrodh 8fb02401fc ci(windows): release workflow, WiX authoring, LGPL notices
Mirrors release-macos.yml step for step: aqt MSVC Qt, cargo build -p qbz-qt,
windeployqt --qmldir, the offscreen smoke with the Qt install hidden, a WiX 7
MSI, a portable zip and the PDB. Unsigned by decision (D4).

The MSI carries the identity the app cannot give itself. Its Start-menu
shortcut sets System.AppUserModel.ID, and a matching
Software\Classes\AppUserModelId key is written beside it: Windows resolves an
unpackaged app's AppUserModelID through EITHER, and without one of them it
drops every toast without a word. The URL protocols qbz:// and qobuzapp:// are
registered the same way, the analogue of CFBundleURLSchemes.

The NASM step stays. Measured on the box: aws-lc-sys 0.39.1 uses real NASM --
its shipped prebuilt objects are only used when nasm is ABSENT -- and without
either the build fails hard with "Missing dependency: nasm". Switching rustls
to ring would drop the requirement but would change the crypto provider on
Linux and macOS too, which is a project decision and not a port's to make.

The Qt LGPL text now travels with every artifact that bundles Qt, verbatim from
gnu.org, alongside a notice naming the pinned version, the modules actually
present in a release build, where the sources are, and why relinking is a file
copy here (dynamic linking, DLLs beside the exe, no static build, no qt.conf
prefix rewrite).

Not dispatched: HARD RULE 4 makes that the owner's call.

cc
2026-08-27 17:00:09 -06:00
..

Third-party licences shipped with QBZ for Windows

QBZ's own licence is in LICENSE at the repository root. This directory carries the notices that must travel with the binaries, because the Windows artifacts bundle their dependencies rather than resolving them from a system package manager the way the Linux packages do.

Qt 6 — LGPL v3

The Windows MSI and the portable zip ship the Qt runtime. QBZ links against it dynamically and does not modify it, which is what the LGPL requires for the arrangement below; LGPL-3.0.txt is the full text, verbatim from https://www.gnu.org/licenses/lgpl-3.0.txt.

Version: Qt 6.9.3, win64_msvc2022_64, installed by aqtinstall in .github/workflows/release-windows.yml. The version is pinned there (QT_VERSION) rather than floating, so the notice below always names what actually shipped.

Modules present in a release build, as reported by windeployqt on the deployed tree:

Core, Gui, Network, OpenGL, Svg, Qml, QmlMeta, QmlModels, QmlWorkerScript, LabsQmlModels, Quick, QuickControls2, QuickControls2Impl, QuickEffects, QuickLayouts, QuickShapes, QuickTemplates2, and the Controls style implementations Basic, Fusion, Imagine, Material, Universal, Windows and FluentWinUI3.

Qt SQL, Qt TLS and Qt NetworkInformation are deliberately removed after windeployqt runs: nothing in QBZ uses them, and shipping a plugin that is never loaded only widens what has to be tracked and notified.

Where to get the sources. Qt 6.9.3 sources are published by The Qt Company at https://download.qt.io/archive/qt/6.9/6.9.3/single/ and the development history is at https://code.qt.io/cgit/qt/qt5.git/. The binaries QBZ ships are the unmodified upstream win64_msvc2022_64 builds; no Qt patch is applied anywhere in this repository.

Relinking. The LGPL's core practical requirement is that a user can replace the library. QBZ satisfies it by the shape of the build: Qt is dynamically linked and the DLLs sit beside qbz.exe in the install directory, so replacing them with a compatible Qt 6.9 build of your own is a file copy. No static Qt build and no qt.conf prefix rewrite is used, both of which would make that harder.

Rust crates

The Rust dependency tree is MIT/Apache-2.0 dual-licensed with a small number of BSD and Unicode-DFS crates, all permissive and all requiring attribution rather than source availability. cargo tree and Cargo.lock are the authoritative list; the SBOM step in the release workflow is where a generated manifest belongs when that lands.