fix: write BMP DIB entries in ICO so Windows exe shows correct icon

Pillow's ICO saver stores all sizes as PNG-compressed ("Vista icon"
format).  PyInstaller's Windows resource-updater cannot embed
PNG-compressed entries for small sizes and silently falls back to its
default gear icon.

Fix build_icons.py to write the ICO manually: BMP DIB for sizes ≤ 128 px,
PNG only for the 256 px entry (where Windows Explorer expects PNG).
Regenerate icons/app.ico with the new code.

Also set upx=False in bcc.spec for the Windows/Linux EXE; UPX is another
known cause of icon resources being stripped from PE files.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
AJ Avezzano
2026-06-29 22:42:02 -04:00
parent 6f03b50a43
commit f5749947e1
3 changed files with 64 additions and 7 deletions
+1 -1
View File
@@ -98,7 +98,7 @@ else:
debug=False,
bootloader_ignore_signals=False,
strip=False,
upx=True,
upx=False, # UPX can strip icon resources from the PE on Windows
upx_exclude=[],
runtime_tmpdir=None,
console=False,