You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Windows下参数化Electron autoUpdater通知,仅显示package.json的productName

在Windows系统中自定义Electron autoUpdater通知标题为package.json的productName

要让autoUpdater的通知只显示package.json中的productName而非electron.app.productName,你需要跳过autoUpdater的默认通知逻辑,手动监听更新事件并创建自定义通知,直接读取package.json的字段来设置通知标题。

实现步骤:

  1. 直接读取package.json中的productName
    在主进程中导入package.json,获取你需要的产品名称:

    const { app, autoUpdater, Notification } = require('electron');
    // 直接读取package.json的productName,避免使用app.productName
    const packageProductName = require('./package.json').productName;
    
  2. 禁用默认通知,手动处理更新事件
    监听autoUpdater的核心更新事件,在事件触发时创建自定义通知,完全控制通知内容:

    // 初始化autoUpdater(根据你的更新源调整,示例为GitHub)
    autoUpdater.setFeedURL({
      provider: 'github',
      owner: '你的GitHub用户名',
      repo: '你的仓库名'
    });
    
    // 监听"有更新可用"事件,弹出自定义通知
    autoUpdater.on('update-available', () => {
      const updateNotify = new Notification({
        title: packageProductName,
        body: '检测到新版本,正在后台下载更新...',
        icon: app.getAppPath() + '/resources/icon.ico' // 替换为你的应用图标路径
      });
      updateNotify.show();
    });
    
    // 监听"更新下载完成"事件,提示用户安装
    autoUpdater.on('update-downloaded', (_, releaseNotes, releaseName) => {
      const installNotify = new Notification({
        title: packageProductName,
        body: `更新已完成:${releaseName}\n点击通知安装并重启应用`,
        icon: app.getAppPath() + '/resources/icon.ico'
      });
    
      // 点击通知触发安装重启
      installNotify.on('click', () => {
        autoUpdater.quitAndInstall();
      });
    
      installNotify.show();
    });
    
    // 启动更新检查
    autoUpdater.checkForUpdates();
    
  3. 注意事项

    • 确保在主进程中执行上述代码,Electron的Notification在主进程中创建更稳定
    • 如果使用electron-builder打包,需在package.json中正确配置publish字段,保证autoUpdater能正常获取更新源
    • 若你的应用图标路径不同,需调整icon参数的路径,避免通知显示默认图标

内容的提问来源于stack exchange,提问作者chipimix

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.21 11:22:02