Skip to content

Commit d408de5

Browse files
nbafrankclaude
andcommitted
Release v0.3.4: embed Windows manifest (#74)
Diagnosed via PE-header inspection of the v0.3.3 artifact: no embedded manifest at all (no resource directory in the PE). Recent Windows 11 builds reject naked MSVC binaries with "This version of … uvr.exe is not compatible with the version of Windows you're running" because the OS can't determine the binary's supportedOS without a manifest. Fix: add `embed-manifest` as a Windows-only build-dep and run it from crates/uvr/build.rs to embed a default manifest (supportedOS = Win 7 through Win 11, asInvoker execution level). Verified locally: macOS build still passes, Cargo.lock picks up embed-manifest 1.5.0. Per cadence #69 install-blocking-bug exception: v0.3.3 was unusable for every Windows user who installed via the released binary. Verification path: B-Nilson (#74 reporter) builds from cargo source worked locally — the new artifact will too if my hypothesis holds. Will ping for confirmation. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
1 parent 8b25ba8 commit d408de5

5 files changed

Lines changed: 69 additions & 3 deletions

File tree

CHANGELOG.md

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,32 @@ release page on GitHub. Issue numbers reference https://github.com/nbafrank/uvr/
77

88
Pure tracking section — fixes and small features land here between tags.
99

10+
## v0.3.4 (2026-05-03)
11+
12+
Hotfix for #74: Windows 11 users running the v0.3.3 release artifact saw
13+
"This version of … uvr.exe is not compatible with the version of Windows
14+
you're running." Building from source via cargo worked; the released
15+
artifact didn't.
16+
17+
Diagnosis: PE-header inspection of the v0.3.3 artifact showed no
18+
embedded resource directory and no Win32 application manifest at all.
19+
Recent Windows 11 builds reject naked MSVC binaries — without a
20+
manifest declaring `supportedOS` GUIDs, the OS treats the exe as
21+
"compatibility unknown" and refuses to run it. The default Cargo build
22+
on `windows-latest` (now Win Server 2025 + VS 17.14, linker 14.44)
23+
doesn't embed a manifest by itself.
24+
25+
### Fixes
26+
- **Windows binary now embeds a Win32 application manifest (#74)** via
27+
the `embed-manifest` build-dep. Manifest declares `supportedOS` GUIDs
28+
for Windows 7 through Windows 11 and `asInvoker` execution level.
29+
Build-dep is gated under `[target.'cfg(windows)'.build-dependencies]`
30+
so non-Windows targets are unaffected.
31+
32+
Per the batched-cadence rule (#69), this tag is allowed under the
33+
install-blocking-bug exception — every Windows user trying to install
34+
v0.3.3 currently has a broken binary.
35+
1036
## v0.3.3 (2026-04-30)
1137

1238
Hotfix for v0.3.2's Linux PPM binaries — the feature was end-to-end

Cargo.lock

Lines changed: 9 additions & 2 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Cargo.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ members = ["crates/uvr", "crates/uvr-core"]
33
resolver = "2"
44

55
[workspace.package]
6-
version = "0.3.3"
6+
version = "0.3.4"
77
edition = "2021"
88
authors = ["uvr contributors"]
99
license = "MIT"

crates/uvr/Cargo.toml

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,15 @@ semver.workspace = true
3434
tempfile.workspace = true
3535
ureq.workspace = true
3636

37+
[target.'cfg(windows)'.build-dependencies]
38+
# Embed a Win32 application manifest declaring `supportedOS` GUIDs from
39+
# Windows 7 through Windows 11. Without this, recent Windows 11 builds
40+
# reject the unmanifested binary at exec time with "This version of …
41+
# uvr.exe is not compatible with the version of Windows you're running."
42+
# (See #74 — confirmed via PE-header inspection of the v0.3.3 release
43+
# artifact: no resource directory, no manifest at all.)
44+
embed-manifest = "1.4"
45+
3746
[dev-dependencies]
3847
assert_cmd.workspace = true
3948
predicates.workspace = true

crates/uvr/build.rs

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
// Embed a Win32 application manifest into the uvr.exe PE so Windows
2+
// recognises the binary as compatible with Win 7 through Win 11.
3+
// Without it, naked MSVC binaries built on recent toolchains (the
4+
// `windows-latest` GH runner currently linker 14.44+) are rejected on
5+
// some Win 11 builds with "This version of … uvr.exe is not compatible
6+
// with the version of Windows you're running" — issue #74.
7+
//
8+
// `new_manifest("uvr")` produces a manifest declaring supportedOS GUIDs
9+
// for Vista, 7, 8, 8.1, 10, 11 and asInvoker execution level.
10+
//
11+
// This file is a no-op on every non-Windows target; the build-dep is
12+
// also gated by `[target.'cfg(windows)'.build-dependencies]` so non-
13+
// Windows builds don't even pull the crate.
14+
15+
#[cfg(windows)]
16+
fn main() {
17+
use embed_manifest::{embed_manifest, new_manifest};
18+
embed_manifest(new_manifest("uvr")).expect("unable to embed Win32 manifest");
19+
}
20+
21+
#[cfg(not(windows))]
22+
fn main() {
23+
// Nothing to do on non-Windows targets.
24+
}

0 commit comments

Comments
 (0)