Skip to content

Emit the Windows app icon at resource ID 1 - #283

Merged
turinglambdaai merged 1 commit into
mainfrom
fix/windows-icon-resource-id
Oct 17, 2026
Merged

turinglambdaai merged 1 commit into
mainfrom
fix/windows-icon-resource-id

Conversation

@turinglambdaai

Copy link
Copy Markdown
Owner

Fixes #282 (part 2).

IDI_RIVET_APP_ICON ICON "..." compiled to a string-named resource — an undefined bare identifier in .rc is a name, not an ID. LoadIconW(module, MAKEINTRESOURCEW(1)), the app-icon slot hosts load for the tray and the window, could never reach it, so hosts showing the embedded icon silently got the generic IDI_APPLICATION fallback instead.

The generated script now emits 1 ICON "..." — numeric, deterministic, the conventional slot (Explorer, shortcuts and installers all prefer the lowest-ID group icon, so packaging behavior is unchanged). The resources test pins the numeric form.

Context: part 1 of #282 — downstream-owned vcxproj projects missing the ResourceCompile group — is fixed on the fulcrum side (fulcrum fix branch); worth considering a raco rivet doctor check that flags host projects which don't consume RIVET_WINDOWS_ICON_RC.

Verified on the Windows leg: fulcrum's staged exe now enumerates RT_ICON #1–#7, RT_GROUP_ICON #1, RT_VERSION #1, and the tray icon renders the real Fulcrum logo.

IDI_RIVET_APP_ICON compiled to a string-named resource: LoadIconW with
MAKEINTRESOURCEW(1) — the app-icon slot hosts load for the tray and
window — could never reach it. Numeric 1 is the conventional slot and
deterministic; the resources test pins it.
@turinglambdaai
turinglambdaai merged commit a701e35 into main Oct 17, 2026
23 checks passed
@turinglambdaai
turinglambdaai deleted the fix/windows-icon-resource-id branch October 17, 2026 12:51
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

windows: downstream hosts that own their vcxproj silently ship no icon/VERSIONINFO; and the generated icon resource is string-named so ID-1 loads miss

1 participant