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

基于Blazor Server的Electron应用生成MSI安装包问题求助

解决Blazor Server + Electron.NET 生成MSI安装包的配置问题

1. 核心配置修正

调整package.json配置

替换原有配置为以下内容,明确入口文件、打包规则与目标格式:

{
  "name": "SecondElectronApp",
  "version": "1.0.0",
  "main": "main.js",
  "scripts": {
    "electron:prebuild": "electronize build /target win /PublishSingleFile true /PublishReadyToRun false",
    "electron:build-msi": "electron-builder"
  },
  "build": {
    "appId": "com.yourcompany.secondelectronapp",
    "win": {
      "target": "msi",
      "icon": "wwwroot/favicon.ico"
    },
    "files": [
      "dist/**/*",
      "main.js",
      "wwwroot/**/*"
    ],
    "directories": {
      "output": "installer"
    }
  }
}
  • main字段必须指向项目根目录下的main.js
  • build.files需包含Electron.NET打包后的dist目录、入口文件及Blazor静态资源
  • win.target直接指定为msi,明确安装包类型

编写正确的main.js入口文件

不要创建空文件,需适配Blazor Server的Electron启动逻辑,内容如下:

const { app, BrowserWindow } = require('electron');
const path = require('path');
const url = require('url');

let mainWindow;

function createWindow() {
  mainWindow = new BrowserWindow({
    width: 800,
    height: 600,
    webPreferences: {
      nodeIntegration: false,
      contextIsolation: true
    }
  });

  // 加载Electron.NET打包后的Blazor入口页面
  const startUrl = url.format({
    pathname: path.join(__dirname, 'dist', 'index.html'),
    protocol: 'file:',
    slashes: true
  });

  mainWindow.loadURL(startUrl);

  mainWindow.on('closed', () => {
    mainWindow = null;
  });
}

app.on('ready', createWindow);

app.on('window-all-closed', () => {
  if (process.platform !== 'darwin') app.quit();
});

app.on('activate', () => {
  if (mainWindow === null) createWindow();
});

修正electron.manifest.json

确保配置与package.json的打包规则一致:

{
  "executable": "SecondElectronApp.exe",
  "name": "SecondElectronApp",
  "version": "1.0.0",
  "singleInstance": false,
  "build": {
    "appId": "com.yourcompany.secondelectronapp",
    "win": {
      "target": "msi"
    }
  }
}

2. 正确打包流程

  1. 先执行Electron.NET基础打包,生成dist目录:
npm run electron:prebuild
  1. 执行electron-builder生成MSI安装包:
npm run electron:build-msi

完成后,安装包会生成在项目根目录的installer文件夹中。

3. 常见问题排查

  • 若提示找不到index.html:检查dist目录是否存在该文件,可在Blazor项目发布设置中勾选“生成静态HTML文件”后重新执行基础打包
  • 若提示main.js不存在:确认文件放在项目根目录,且package.json的main路径无拼写错误
  • 权限报错:用管理员权限打开终端执行打包命令

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.04 16:55:13