As far as I know, for an icon on Windows you must use an .ico
file. Although in Win9x days one could get away by using a renamed .bmp
, but they look just terrible next to fancy Aero icons – especially since a typical ICO contains several image sizes with transparency layers.
You can use ImageMagick to convert a PNG image to an ICO file:
convert foo.png foo.ico
or if you have PNGs of several sizes,
convert foo-*.png foo.ico
The other part, making Windows use your icon, is easier:
Create a desktop.ini
file in your directory, with the following contents:
[.ShellClassInfo]
IconFile=folder.ico
IconIndex=0
Relative paths for IconFile
should be supported; they will also work over the network.
See this MSDN article for detailed instructions on setting the folder icon programmatically.
Mark the directory as either "Read-only" (preferred) or "System":
attrib +r Music
Without this, Explorer won't even look for desktop.ini
customizations, for performance reasons (as explained in The Old New Thing).
Optionally mark desktop.ini
as hidden, so that it won't clutter the file list:
attrib +h +s desktop.ini