当前位置: 首页 > 知识库问答 >
问题:

javascript - electron设置新图标不生效,打包运行后,桌面的图标显示默认图标?

庾才
2024-06-19

electron设置新图标,打包运行后,桌面的图标显示默认图标
其它位置的图标都能替换,只是桌面显示的不行

1718671609993.png

环境:
win10
nodejs20

  1. 初始化代码
    https://cn.electron-vite.org/
  2. electron-builder.yml

    # 应用的ID,用于唯一标识应用appId: com.hhh.security.lock# 产品名称,用于显示在安装程序和开始菜单等地方productName: HHH安全锁# 指定构建资源和输出目录directories:  # 构建资源目录,存放图标、背景等资源文件  buildResources: build# 指定要包含在应用程序包中的文件和文件夹files:  # 排除 .vscode 目录下的所有文件  - '!**/.vscode/*'  # 排除 src 目录下的所有文件  - '!src/*'  # 排除配置文件  - '!electron.vite.config.{js,ts,mjs,cjs}'  - '!{.eslintignore,.eslintrc.cjs,.prettierignore,.prettierrc.yaml,dev-app-update.yml,CHANGELOG.md,README.md}'  # 排除环境变量文件和 npm 配置文件  - '!{.env,.env.*,.npmrc,pnpm-lock.yaml}'# 指定从asar归档中解压的文件或文件夹asarUnpack:  # 解压 resources 目录下的所有内容  - resources/**# Windows 特定配置win:  # 指定生成的安装程序类型,这里使用 NSIS  target: - nsis  # 是否对可执行文件进行签名和编辑  signAndEditExecutable: false  # 请求的执行级别,highestAvailable 使用最高可用权限,requireAdministrator 需要管理员权限  requestedExecutionLevel: requireAdministrator  # 可执行文件名称  executableName: HHH安全锁  icon: build/icon.ico# NSIS 安装程序配置nsis:  # 安装程序的构建物名称,${name} 和 ${version} 是变量  artifactName: ${name}-${version}-setup.${ext}  # 创建桌面快捷方式的名称  shortcutName: ${productName}  # 卸载时显示的名称  uninstallDisplayName: ${productName}  # 是否总是创建桌面快捷方式  createDesktopShortcut: always  # 是否是一键安装  oneClick: false  # 是否允许用户更改安装目录  allowToChangeInstallationDirectory: true  # 是否在开始菜单创建快捷方式  createStartMenuShortcut: true  # 是否为所有用户安装  perMachine: true  # 允许提升权限  allowElevation: true# macOS 特定配置mac:  # 继承的权限文件,用于MacOS的权限请求  entitlementsInherit: build/entitlements.mac.plist  # 扩展信息,用于App的权限请求  extendInfo: - NSCameraUsageDescription: Application requests access to the device's camera. - NSMicrophoneUsageDescription: Application requests access to the device's microphone. - NSDocumentsFolderUsageDescription: Application requests access to the user's Documents folder. - NSDownloadsFolderUsageDescription: Application requests access to the user's Downloads folder.  # 是否进行苹果官方的签名  notarize: false# DMG 安装程序配置(macOS)dmg:  # DMG文件的构建物名称  artifactName: ${name}-${version}.${ext}# Linux 特定配置linux:  # 指定生成的目标格式,AppImage、snap、deb  target: - AppImage - snap - deb  # 维护者的邮箱,通常用于Linux软件包  maintainer: electronjs.org  # 应用的类别  category: Utility# AppImage 配置(Linux)appImage:  # AppImage文件的构建物名称  artifactName: ${name}-${version}.${ext}# 是否重新编译npm包npmRebuild: false# 发布配置publish:  # 发布提供者,generic为通用  provider: generic  # 发布地址  url: http://192.168.0.210:38001/
  3. 图标
    image.png
  4. 试过清理系统图标缓存,不生效
    https://developer.aliyun.com/article/1261525
  5. 试过重命名app的应用信息,不生效

image.png
image.png

共有1个答案

常自怡
2024-06-19

对于你提出的关于 Electron 设置新图标不生效的问题,首先需要确认的是你已经正确设置了图标文件,并且在 electron-builder.yml 配置文件中也指定了正确的图标路径。

从你提供的信息来看,你已经将图标放在了 build/icon.ico 路径下,并且在 electron-builder.yml 中通过 icon: build/icon.ico 指定了这个路径。这看起来是正确的设置方式。

然而,你提到在桌面上的图标仍然显示默认图标,这可能是因为操作系统的图标缓存问题。虽然你提到已经尝试清理了系统的图标缓存,但有时候可能需要更彻底的清理或者重启计算机来确保缓存被完全刷新。

此外,还有一些可能导致图标不生效的原因和解决方案:

  1. 确保图标文件没有损坏:尝试使用其他图标文件替换当前的图标文件,看是否能够正常显示。
  2. 检查 Electron 版本:确保你使用的 Electron 版本没有已知的图标显示问题。有时候,升级到最新版本的 Electron 可能能够解决一些与图标相关的问题。
  3. 检查打包工具:如果你使用的是 electron-packager 或其他打包工具,确保它们也正确配置了图标路径。
  4. 检查系统权限:在某些情况下,操作系统可能由于权限问题而无法正确显示图标。确保你的应用程序有足够的权限来更改系统设置。
  5. 尝试手动设置图标:在 Electron 的主进程中,你可以尝试使用 BrowserWindowsetIcon 方法来手动设置窗口的图标。虽然这不会直接影响桌面上的快捷方式图标,但它可以作为一个额外的检查点,确保图标文件本身没有问题。

如果以上方法都无法解决问题,建议检查 Electron 和 electron-builder 的官方文档和社区论坛,看看是否有其他人遇到了类似的问题,并找到了解决方案。同时,也可以考虑在 Stack Overflow 或其他开发者社区中提问,寻求更专业的帮助。

 类似资料:
  • 我尝试了一切,但图像不会显示,我试图缩小图像,但没有用,我试图改变路径,我试图更改图像的位置,但没有帮助,我试图在互联网上搜索,但什么都没有。 我看到的只是空白的图形用户界面,没有文本和图像。如果你能帮我,你会帮我一个大忙。 代码如下:

  • 当我试图用NetBeans为JavaFX原生打包EXE文件更改桌面图标时,Ant阻止我更改桌面图标。一旦将图标附加到项目名称,该图标将永远保持不变。我甚至尝试删除项目并重用项目名称。我在Tools->Options->Java->Ant中看到了要求添加Classpath的建议,所以我尝试添加了这一行c:\use\username\documents\workspace\projectname\sr

  • Java是否提供了可用于每个Swing和JavaFX框架的扩展默认图标包?我的意思是箭头,警告,文件,错误,通知,形状,手…

  • 我第一次用苹果笔记本电脑。 我安装了Android Studio 4.0或4.1(我想)。它曾经在触摸栏中显示所有图标,如绿色运行图标和调试图标,以便我可以直接从那里使用它们。即使在调试模式下,我也会看到所有的图标,用于跳过或进入代码。 此后,我更新了Android Studio 2-3次,目前我使用的是Android Studio 4.2.1,自我第一次更新以来,它已停止显示Android St

  • 这个人基本上遇到了与我相同的问题,但是,提供的解决方案没有帮助,也不适用于我,因为我的代码实际上正在调用mDrawerToggle。sycnState()(在延迟的Runnable中)。 我还尝试将其添加到我的片段中创建的onActivityCreated中,它似乎没有任何作用。我不知道syncState到底做了什么,我无法判断它是否正在同步打开的状态(模板代码默认情况下会发生这种情况),然后当抽

  • 飞行模式已开启。该模式会切断手表的所有无线通信。您仍可以使用手表,但无法与 Polar Flow 移动应用程序同步数据,或将其与任何无线配件一起使用。 勿打扰模式已开启。启用免打扰后,您收到通知或来电时,手表不会震动(显示屏左下方的红点仍会亮起)。背光灯激活手势也会被禁用。 启用免打扰后,您收到通知或来电时,手表不会振动(显示屏左下方的红点仍会亮起)。背光灯激活手势也会被禁用。 闹铃已设置。您可以