如何在IntelliJ IDEA中修改Compose Desktop应用(.exe)图标?
Compose Desktop 替换.exe自定义图标解决方案
核心问题说明
打包Windows可分发exe时,默认Kotlin图标未被自定义窗口/托盘图标替换,需单独配置打包阶段的exe图标参数,并确保资源与构建流程正确。
步骤1:配置Windows打包图标路径
在项目的构建脚本(build.gradle.kts 或 build.gradle)中,针对nativeDistributions下的Windows配置块指定ICO格式的图标文件:
Kotlin DSL(build.gradle.kts)示例:
compose.desktop { application { mainClass = "MainKt" nativeDistributions { targetFormats(TargetFormat.Dmg, TargetFormat.Msi, TargetFormat.Deb) packageName = "你的应用名称" packageVersion = "1.0.0" windows { // 指定ICO格式图标文件路径,建议放在src/main/resources目录下 iconFile.set(file("src/main/resources/app-icon.ico")) menuGroup = "你的应用分组" } } } }
Groovy DSL(build.gradle)示例:
compose.desktop { application { mainClass = 'MainKt' nativeDistributions { targetFormats = [TargetFormat.DMG, TargetFormat.MSI, TargetFormat.DEB] packageName = '你的应用名称' packageVersion = '1.0.0' windows { iconFile = file('src/main/resources/app-icon.ico') } } } }
步骤2:确保图标文件符合要求
- 必须使用Windows标准ICO格式,建议包含256x256、128x128、64x64等多尺寸适配(避免缩放失真),可通过专业工具(如IconWorkshop)或在线ICO生成器制作。
- 图标文件需放置在
src/main/resources目录下,确保Gradle打包时能正确读取资源。
步骤3:清理缓存并重新构建
旧构建缓存可能导致图标未更新,执行以下命令清理后重新打包:
./gradlew clean ./gradlew packageDistributionForCurrentOS
构建完成后,在build/compose/binaries/main/windows目录下查看生成的exe文件,确认图标已替换。
额外:统一窗口与托盘图标
若需窗口和托盘图标与exe图标保持一致,可在代码中配置:
- 窗口图标:
Window( onCloseRequest = ::exitApplication, title = "你的应用", icon = painterResource("app-icon.png") // 支持PNG等格式 ) { // 应用UI内容 }
- 托盘图标:
val trayIcon = painterResource("tray-icon.png") Tray( icon = trayIcon, menu = { // 托盘菜单配置 } )
内容的提问来源于stack exchange,提问作者Akhil Hothi
相关产品推荐
相关产品推荐

