Why your new exe icon doesn't show in Explorer yet
Changed a program's icon and Explorer still shows the old one? It's usually the Windows icon cache. Here's why, and how ICON by Zaweba handles the change.
Most of the time the new icon is there and Windows simply hasn't noticed yet. Explorer keeps a cache of the icons it has already drawn, and it can carry on showing the old picture for a program for a while after the file has changed. When you set the icon with ICON by Zaweba, the icon is written into the program's resources straight away; Explorer catches up once its icon cache refreshes.
That is a frustrating thing to see right after you have done everything correctly, so it helps to know what is going on and how to tell a caching delay from a real problem.
How Explorer shows icons
A program's icon lives inside the .exe or .dll itself, in a part of the file called the resources. Reading those resources for every file in every folder each time you open a window would be slow, so Windows remembers icons it has already extracted. That memory is the icon cache. It makes folders open quickly, but it also means Explorer may not look inside a file again just because you changed it.
So you can have a program whose resources hold your new icon perfectly, while the folder window keeps drawing the one it remembered.
What ICON by Zaweba actually does
In ICON you load your picture, tick the sizes you want on the ICO tab, then pick an .exe or .dll that you own. ICON checks that it really is a program, then writes the icon into its resources, using the sizes you ticked and keeping the version information and other resources as they were.
By default it saves a new copy of the program and leaves the original alone. That detail matters here. If you are looking at the original file in Explorer, you are looking at a file that has not changed at all. Make sure you are looking at the copy ICON saved. Overwriting the original is possible, but only if you tick the option for it and accept the warning.
Telling a cache delay from a failure
ICON reports when a write fails, and the usual reasons are worth knowing: the program is running or otherwise in use, the file is read-only, or it sits somewhere that needs administrator rights. If you saw no error, the write went through. Close the program if it was open, and try again if a message told you it was in use.
One quick test is to copy the new file to a different folder, or rename the copy. Explorer has to look at it afresh and will often show the new icon at once. Another is simply to wait, or sign out and back in, which gives Windows a chance to rebuild what it shows. Pinned taskbar shortcuts and desktop shortcuts can hold on to the old picture longer than the file itself, because they keep their own reference to the icon.
A note on signed programs
Changing a program's icon changes the file. If the program was digitally signed, ICON does not re-sign it, so the signature no longer matches and Windows may treat it as unsigned. For your own projects the usual answer is to set the icon before you sign, or to sign again afterwards. This has nothing to do with the cache, but it is the other surprise people meet after changing an icon.
Getting it right first time
If you build your own programs, the tidiest approach is to give them a proper multi-size .ico from the start. ICON makes one holding 16, 24, 32, 48, 64, 128 and 256 pixel sizes by default, each a high-quality downscale, with the 256 size stored as PNG the way modern Windows expects. With every size present, Explorer has the right one for each view, from small list icons to extra large ones, and nothing looks stretched.
When you set the icon on a finished program instead, those same ticked sizes are what go into it. Tick a full range and the new icon will look sharp everywhere, once Explorer has caught up with it. ICON by Zaweba works offline and nothing is uploaded, so you can try this on as many copies as you like.