请稍等 ...
×

采纳答案成功!

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

使用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

2回答

西一凹 2025-07-01 14:56:08

同学你好,请简单说明下你的卸载方式,

https://img1.sycdn.imooc.com/szimg/d04725680963844f05800264.jpg

你提供的项目在我本地编译后,已正常安装且正常运行,

https://img1.sycdn.imooc.com/szimg/6db2ce680963845f09190504.jpg

,在执行关闭时

https://img1.sycdn.imooc.com/szimg/55ce80680963846909520520.jpg

https://img1.sycdn.imooc.com/szimg/acf261680963847205680274.jpg

会出现这个报错,我想这应该是你代码未写完整导致,

接下来,我执行安装目录中的

https://img1.sycdn.imooc.com/szimg/21db47680963848009160591.jpg

卸载程序,可正常执行卸载且不会出现你提到的报错

再次安装后使用第三方卸载软件

https://img1.sycdn.imooc.com/szimg/5773b068096384d904740630.jpg

https://img1.sycdn.imooc.com/szimg/51573568096384ea04800600.jpg

https://img1.sycdn.imooc.com/szimg/0e5eac680963851108100871.jpg

任然能正常卸载

请说明下你的卸载方式,还有你的编译平台,如需提供windows系统使用,请使用windows平台进行编译,mac同理,

如需要在windows server系统中进行处理,需前往electron官网或其他网上资料查询当前使用的electron版本是否支持该平台,如不支持,需要降级到支持的electron版本

还需要注意的是,部分windows系统的常用运行环境安装未完全,可根据实际情况结合控制变量法排查出具体原因。


0 回复 有任何疑惑可以回复我~
西一凹 2025-06-26 19:05:34

同学你好,你可以尝试将下方的配置全部删除后再进行打包

https://img1.sycdn.imooc.com/szimg/42faa868095d295a09530849.jpg

0 回复 有任何疑惑可以回复我~
  • 提问者 愤怒的米饭 #1
    删掉了,但是打包后,删除软件还是会报同样的错误啊。很着急啊, 公司项目急着用啊。我应该怎么修改代码才能保证软件可以成功的卸载和更新?
    回复 有任何疑惑可以回复我~ 2025-06-27 09:56:12
  • 西一凹 回复 提问者 愤怒的米饭 #2
    同学你好,你可以加官方的QQ群,然后提供下你的项目代码,我运行起来看看
    回复 有任何疑惑可以回复我~ 2025-06-29 00:26:56
问题已解决,确定采纳
还有疑问,暂不采纳
微信客服

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

帮助反馈 APP下载

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

公众号

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