This guide explains how to add icons to your APC plugins for the standalone executable and desktop shortcuts.
There are two places where icons are used:
- Standalone Executable - The icon embedded in the .exe file
- Desktop Shortcut - The icon shown on the Windows desktop (created by the installer)
- Format: Windows ICO file
- Sizes: Include multiple sizes (16x16, 32x32, 48x48, 256x256)
- Color depth: 32-bit (RGBA) with transparency
- Tools:
- IcoFX (Windows)
- GIMP (Free, cross-platform)
- RealWorld Icon Editor (Free)
- Online converters (e.g., convert PNG to ICO)
- Format: Apple Icon Image format
- Sizes: Include multiple sizes (16x16 to 1024x1024)
- Tools:
- Icon Composer (Xcode Tools)
- Image2icon
- Online converters
Create an Assets folder in your plugin directory:
plugins/YourPlugin/
├── Assets/
│ ├── icon.ico # Windows icon (multi-resolution)
│ ├── icon.icns # macOS icon (optional)
│ ├── icon.png # Source image (optional, for reference)
│ └── icon.svg # Vector source (optional, for editing)
├── Source/
├── Design/
└── status.json
Update your plugin's CMakeLists.txt to include the icon:
juce_add_plugin(YourPlugin
# ... other settings ...
# Icon for Windows (required for standalone .exe)
ICON_BIG "${CMAKE_CURRENT_SOURCE_DIR}/Assets/icon.ico"
)powershell -ExecutionPolicy Bypass -File .\scripts\build-and-install.ps1 -PluginName YourPluginThe standalone executable will now have your icon embedded.
For more control, you can use a Windows resource file:
// Assets/resources.rc
IDI_ICON1 ICON DISCARDABLE "icon.ico"
# Add resource file for Windows
if(WIN32)
target_sources(YourPlugin PRIVATE Assets/resources.rc)
endif()The installer template automatically uses the standalone executable's icon for the desktop shortcut. The [Icons] section in the ISS template references the .exe file:
[Icons]
; Desktop shortcut uses the icon from the .exe
Name: "{autodesktop}\{#PluginName}"; \
Filename: "{autopf}\{#PluginName}\{#PluginName}.exe"; \
Components: standalone; \
Tasks: desktopiconWindows automatically extracts the icon from the executable for the shortcut.
- Simplicity: Keep it simple and recognizable at small sizes (16x16)
- Contrast: Ensure good contrast for visibility
- Brand Consistency: Use your brand colors
- Scalability: Test at all sizes from 16x16 to 256x256
- Transparency: Use transparent background (not white)
- Multiple Sizes: Include all standard sizes in the .ico file
- Color Space: Use sRGB color space
- File Size: Keep .ico files under 500KB
- Create a 256x256 PNG with your design
- Export as ICO: File → Export As → Select .ico format
- GIMP will prompt for sizes to include - select all
- Create a 512x512 PNG
- Use convertio.co or similar
- Upload PNG, download multi-size ICO
# Requires ImageMagick installed
magick convert icon-256.png -define icon:auto-resize=256,128,64,48,32,16 icon.icoAfter building, check the icon:
# View icon in file explorer
explorer build\plugins\YourPlugin\YourPlugin_artefacts\Release\Standalone- Run the installer
- Check "Create desktop icon" during installation
- Verify the icon appears correctly on the desktop
- Large icons (View → Large icons)
- Medium icons
- Small icons
- List view
- Details view
- Ensure
ICON_BIGpath is correct in CMakeLists.txt - Rebuild the entire project (not just incremental)
- Check that .ico file contains valid icon data
- Missing smaller sizes in .ico file
- Use proper icon creation tool (not just rename .png to .ico)
- Windows caches icons - refresh desktop (F5)
- Or restart Explorer:
taskkill /f /im explorer.exe && start explorer.exe
Multi-resolution Windows icon file
juce_add_plugin(MyPlugin
COMPANY_NAME "APC"
PLUGIN_MANUFACTURER_CODE Apco
PLUGIN_CODE MyPl
FORMATS ${PLUGIN_FORMATS}
PRODUCT_NAME "MyPlugin"
NEEDS_WEBVIEW2 ${NEEDS_WEBVIEW2}
VST3_CATEGORIES Fx
# Add icon for standalone executable
ICON_BIG "${CMAKE_CURRENT_SOURCE_DIR}/Assets/icon.ico"
)- Standalone .exe has embedded icon
- Desktop shortcut shows the icon
- File Explorer shows icon at all sizes
Consider adding a script to generate icons from a source SVG:
# scripts/generate-icons.ps1
# Could generate .ico from .svg using Inkscape/ImageMagickThe APC template system could:
- Generate placeholder icons during
/dreamphase - Include icon requirements in the creative brief
- Provide icon design guidelines per plugin type