From f5749947e16ee27040ad36dbd33e407559467723 Mon Sep 17 00:00:00 2001 From: AJ Avezzano Date: Mon, 29 Jun 2026 22:42:02 -0400 Subject: [PATCH] fix: write BMP DIB entries in ICO so Windows exe shows correct icon MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 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 --- bcc.spec | 2 +- icons/app.ico | Bin 34164 -> 115962 bytes scripts/build_icons.py | 69 +++++++++++++++++++++++++++++++++++++---- 3 files changed, 64 insertions(+), 7 deletions(-) diff --git a/bcc.spec b/bcc.spec index 6eb5854..d0cfa2a 100644 --- a/bcc.spec +++ b/bcc.spec @@ -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, diff --git a/icons/app.ico b/icons/app.ico index 62a9f2c607e8ba9d81596000135315636353faa7..2448f482f3d8907e1fef3b2765ce18b0e2bc1008 100644 GIT binary patch literal 115962 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�cMj9U~ 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 jM%mB+0000 bytes: + """Return a BMP DIB (BITMAPINFOHEADER + BGRA rows + AND mask).""" + w, h = img.size + # biHeight is doubled: top half = XOR mask (color), bottom = AND mask + hdr = struct.pack( + " bytes: + buf = io.BytesIO() + img.save(buf, format="PNG") + return buf.getvalue() + + blobs: list[tuple[int, bytes]] = [] + for s, img in images: + blobs.append((s, bmp_dib(img) if s < 256 else png_bytes(img))) + + n = len(blobs) + dir_offset = 6 + n * 16 # ICONDIR (6) + n × ICONDIRENTRY (16) + + out = bytearray() + out += struct.pack("