From 051febedfdc8e61467a570c13d2cd654b6422ab7 Mon Sep 17 00:00:00 2001 From: ethernet Date: Thu, 24 Sep 2026 21:23:31 -0400 Subject: [PATCH] fix(release): read the Windows executable name from the MSIX manifest record() looked up stamp['identity']['windowsExecutableName'], a key no stamp writer emits, so every Windows record on a runner resolved no executable and failed. The built package's Application/@Executable names the exe; match it in the unpacked dir only, which also skips before-pack's .bak rollback copy. --- scripts/bundles/release_artifacts.py | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/scripts/bundles/release_artifacts.py b/scripts/bundles/release_artifacts.py index b40c8ccbbe..ff1524bc54 100644 --- a/scripts/bundles/release_artifacts.py +++ b/scripts/bundles/release_artifacts.py @@ -12,7 +12,7 @@ import tempfile import urllib.request import xml.etree.ElementTree as ET import zipfile -from pathlib import Path +from pathlib import Path, PureWindowsPath from scripts.releases.stable import read_admitted_candidate, accepted_smoke_results, validate_candidates @@ -85,9 +85,9 @@ def record(platform: str, arch: str, root: Path, tag: str, commit: str, out: Pat version_sidecar.read_text(encoding="utf-8-sig"), )["productVersion"] elif os.name == "nt": - executable_name = (stamp.get("identity") or {}).get("windowsExecutableName") - executables = list(root.rglob(f"{executable_name}.exe")) if executable_name else [] - executable = single(executables) + # The stamp carries no executable name; the package's own manifest does. + executable_name = PureWindowsPath(application.attrib["Executable"]).name + executable = single(root.glob(f"*-unpacked/{executable_name}")) row["executableVersion"] = subprocess.check_output([ "powershell", "-NoProfile", "-Command", "(Get-Item -LiteralPath $args[0]).VersionInfo.ProductVersion", str(executable),