请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

使用electron-builder打包的window64项目, 项目可以成功安装和运行,但是在项目卸载时报错

我使用electron-builder打包的window64项目, 项目可以成功安装和运行,但是在项目卸载时提示如下图的报错。请问我是哪里写的有问题么?
图片描述

electron的mian.js文件代码如下:

import { app, BrowserWindow } from "electron";
import {fileURLToPath} from "node:url";
import path from "node:path";

// 首先获取当前文件的绝对路径, file路径
const file_url = import.meta.url
// 转化为path路径
const file_url_to_path = fileURLToPath(file_url);
// 通过path.dirname()方法, 获取到当前文件的文件夹地址
const dir_name = path.dirname(file_url_to_path);

const createMainWindow = () => {
  const mainWindow = new BrowserWindow({
    width: 1200,
    height: 600,
    show: false,
    webPreferences: {
      zoomFactor: 2,
      // 配置加载preload.js文件路径; 注意该路径必须写绝对路径
      preload: path.join(dir_name, 'preload.mjs'),
    }
  })

  // 根据环境变量, 配置主窗口加载的页面路径
  if (process.env.NODE_ENV === 'development') {
    mainWindow.loadURL(process.env['VITE_DEV_SERVER_URL']);
  } else {
    mainWindow.loadFile(path.join(dir_name, "./index.html"));
  }


  // 使用once()方法监听window窗口是否完成准备
  mainWindow.once('ready-to-show', () => {
    // 完成准备后, 显示首屏界面
    mainWindow.show();
  })

  // 当node环境变量为development时, 调用openDevTools()方法,开启web调试窗口
  if (process.env.NODE_ENV == 'development') {
    mainWindow.webContents.openDevTools();
  }

  // 全屏设置
  // mainWindow.fullScreen = true;

  // electron窗口最大化适配当前屏幕
  // mainWindow.maximize()

  // 关闭菜单栏
  // mainWindow.setMenu(null);
}

app.whenReady().then(() => {
  const mainWindow = createMainWindow();
})

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

app.on('activate', () => {
  // On OS X it's common to re-create a window in the app when the
  // dock icon is clicked and there are no other windows open.
  if (BrowserWindow.getAllWindows().length === 0) {
    createMainWindow();
  }
});

package.json文件如下:

{
  "name": "vite_vue_electron_test2",
  "version": "0.0.13",
  "private": true,
  "type": "module",
  "main": "dist/container.js",
  "scripts": {
    "dev": "vite",
    "build": "vite build && electron-builder -mwl",
    "preview": "vite preview",
    "lint": "eslint . --fix",
    "build:win32": "vite build && electron-builder --windows nsis:ia32",
    "build:win64": "vite build && electron-builder --windows nsis:x64",
    "build:mac": "vite build && electron-builder --mac",
    "build:linux": "vite build && electron-builder --linux tar.xz"
  },
  "dependencies": {
    "pinia": "^3.0.1",
    "vite-plugin-electron": "^0.29.0",
    "vue": "^3.5.13",
    "vue-router": "^4.5.0"
  },
  "devDependencies": {
    "@eslint/js": "^9.22.0",
    "@vitejs/plugin-vue": "^5.2.3",
    "electron": "^36.5.0",
    "electron-builder": "^26.0.12",
    "eslint": "^9.22.0",
    "eslint-plugin-vue": "~10.0.0",
    "globals": "^16.0.0",
    "vite": "^6.2.4",
    "vite-plugin-vue-devtools": "^7.7.2"
  }
}

electron-builder.json5文件如下:

{
  "appId": "com.vite_vue_electron_test2",
  "productName": "测试开发软件",
  "directories": {
    "output": "output/${version}",
  },
  "files": [
    "dist"
  ],
  "win": {
    "target": [
      {
        "target": "nsis",
        "arch": [
          "x64",
          "ia32"
        ]
      }
    ],
    "requestedExecutionLevel": "asInvoker"
  },
  "nsis": {
    "oneClick": false,
    "allowElevation": true,
    "allowToChangeInstallationDirectory": true,
    "createDesktopShortcut": true,
    "createStartMenuShortcut": true,
    "shortcutName": "测试开发软件",
    "uninstallDisplayName": "卸载测试开发软件",
  }
}

正在回答 回答被采纳积分+3

1回答

张轩 2025-06-27 14:59:54

同学你好

这个 electron builder 我已经很久没用过了,我现在都是用 forge,可以看一下这个 issue :https://github.com/electron-userland/electron-builder/issues/4875 和你描述的问题看起来是一样的,可以看一下里面提供的解决方案。

0 回复 有任何疑惑可以回复我~
问题已解决,确定采纳
还有疑问,暂不采纳
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号