【Electron-Vue】构建桌面应用(2)-打包生成可window安装包

1.前言

在上篇文章中说到,使用Electron-Vue去构建一个Vue项目,并且可以通过package命令之后,生成了一些列的绿色文件(即执行安装包之后生成的文件),点击其中的exe文件就可以运行了。

由于安装程序最后会以安装包的形式(即单一的exe文件)交付给客户,然后客户安装exe文件,会得到绿色文件。

下面这种就是安装包

下面这种就是安装之后的绿色文件

安装的同时会生成桌面图标,用户双击后会执行exe程序。

桌面图标

双击执行之后

以上所有的操作就是整个安装包从项目构建->项目打包->打包成安装包的整个过程

看起来可能很简单,但是在调研的过程中,整整搞了两天,先总结一下心路历程吧。

2.技术调研

如果你在网上搜索"electron打包成win桌面安装包"的话,肯定会搜到很多文章,但如果你跟着文章去实现,就会发现有的根本行不通,至少我是没有成功。

网上流传的方式基本上有以下几种:

  1. 使用Grunt打包
  2. 使用NSIS打包
  3. 使用electron自带的插件electron-winstaller配合electron-squirrel-startup使用

我们先看一下这几种方式实现的时候回碰到什么坑

2.1 使用Grunt打包

我们知道如果使用Grunt打包,package.json和Gruntfile.js是必不可少的,所以我们需要先创建这两个文件。

创建这两个文件的目录是在我们通过package命令打包出来的文件同级目录,你也可以新建文件夹,然后把打包出来的Agent放到新文件下,然后在新创建的新文件中创建package.json和Gruntfile.js。

1.创建package.json文件

内容如下

{
  "name": "HelloWorld",
  "version": "1.0.0"  
}

2.创建Gruntfile.js文件

内容如下

var grunt = require("grunt");
grunt.config.init({
    pkg: grunt.file.readJSON('package.json'),
    'create-windows-installer': {
        x64: {
            appDirectory: './Agent/Agent-win32-x64',
            authors: 'mickey.',
            exe: 'Agent.exe',
            description:"Agent",
        }       
    }
})
 
grunt.loadNpmTasks('grunt-electron-installer');
grunt.registerTask('default', ['create-windows-installer']);

 

3.安装Grunt依赖

  • 安装grunt-cli

      npm install -g grunt-cli

如果不安装grunt-cli,在后面执行grunt打包的时候就会碰到下面这个错误

grunt : 无法将“grunt”项识别为 cmdlet、函数、脚本文件或可运行程序的名称。请检查名称的拼写,如果包
<think>我们已经在之前解决了Windows环境下electron-builder的代码签名问题。现在用户的需求变为了在Linux系统上使用Vue3.5.13和electron-builder打包桌面应用。用户需求:在Linux系统上,使用Vue3.5.13和electron-builder打包桌面应用程序。分析:1.环境:Linux系统2.前端框架:Vue3.5.133.打包工具:electron-builder步骤:1.创建Vue项目(如果已有项目可跳过)2.添加Electron集成3.配置electron-builder4.打包由于用户已经使用了Vue3,我们可以使用Vite作为构建工具(因为Vue3官方推荐Vite)。根据引用[1]中提到的技术栈,我们可以使用vite-plugin-electron来集成。详细步骤:###1.创建Vue项目(如果已有项目,请跳过)```bashnpmcreatevite@latestmy-vue-app----templatevuecdmy-vue-appnpminstall```###2.添加Electron依赖和插件```bashnpminstallelectronelectron-builder--save-devnpminstallvite-plugin-electron--save-dev```###3.配置vite-plugin-electron在`vite.config.js`中配置:```javascriptimport{defineConfig}from'vite'importvuefrom'@vitejs/plugin-vue'importelectronfrom'vite-plugin-electron'exportdefaultdefineConfig({plugins:[vue(),electron({main:{//指定Electron主进程入口文件entry:'electron/main.js',},}),],})```###4.创建Electron主进程文件在项目根目录下创建`electron`文件夹,然后在其中创建`main.js`:```javascript//electron/main.jsconst{app,BrowserWindow}=require('electron')constpath=require('path')functioncreateWindow(){constwin=newBrowserWindow({width:800,height:600,webPreferences:{nodeIntegration:true,contextIsolation:false,},})//加载Vite开发服务器提供的URL(开发环境)或打包后的index.html(生产环境)if(process.env.NODE_ENV==='development'){win.loadURL('http://localhost:3000')}else{win.loadFile(path.join(__dirname,'../dist/index.html'))}}app.whenReady().then(()=>{createWindow()app.on('activate',()=>{if(BrowserWindow.getAllWindows().length===0)createWindow()})})app.on('window-all-closed',()=>{if(process.platform!=='darwin')app.quit()})```###5.修改package.json添加main字段(指向Electron主进程入口)和build配置(针对electron-builder):```json{"name":"my-vue-app","version":"0.0.0","main":"electron/main.js","scripts":{"dev":"vite","build":"vitebuild&&electron-builder","preview":"vitepreview"},"build":{"appId":"com.example.myvueapp","linux":{"target":["deb",//Debian包,适用于Ubuntu等"appImage"//适用于大多数Linux发行版],"category":"Utility"}},//...其他依赖}```###6.构建打包```bashnpmrunbuild```###7.可能遇到的问题及解决-**问题1**:在Linux上打包需要fakeroot等工具(用于构建deb包)解决:安装相关依赖```bash#Debian/Ubuntusudoapt-getinstall-yfakeroot```-**问题2**:应用图标在`build`配置中指定图标,注意Linux下图标需要是PNG格式,且建议提供多种尺寸(至少512x512)。在`linux`配置项中添加:```json"linux":{"icon":"assets/icon.png"}```###8.打包结果打包后的文件会在`dist`目录下的子目录中(如`dist/deb`、`dist/appimage`等),根据你的配置而定。---###注意事项1.**代码签名**:Linux下通常不需要代码签名,但如果需要,可以配置`CSC_LINK`和`CSC_KEY_PASSWORD`环境变量(方法同Windows)。2.**兼容性**:打包时选择的目标格式(target)要适合目标Linux发行版。3.**依赖问题**:如果应用使用了Node.js原生模块,需要在目标系统上重新编译(electron-rebuild)。---§§相关问题§§1.如何在Linux下为Electron应用创建桌面图标?2.如何为不同Linux发行版打包?3.如何自动化构建Electron应用的安装包?</think> ### 在 Linux 系统上使用 Vue 3.5.13 和 electron-builder 打包桌面应用的完整指南 #### 1. 环境准备与项目初始化 ```bash # 1.1 安装基础依赖 (Ubuntu/Debian) sudo apt install -y build-essential libc6-dev libxtst6 libnotify-bin libnss3 # 1.2 创建 Vue 项目 npm create vite@latest vue-electron-app -- --template vue cd vue-electron-app # 1.3 安装 Electron 相关依赖 npm install electron@^25.0.0 electron-builder@^25.1.8 --save-dev npm install vite-plugin-electron@^0.29.0 --save-dev ``` #### 2. 项目配置 ##### 2.1 配置 vite.config.js ```javascript import { defineConfig } from 'vite' import vue from '@vitejs/plugin-vue' import electron from 'vite-plugin-electron' export default defineConfig({ plugins: [ vue(), electron({ entry: 'electron/main.js', // Electron 主进程入口 }) ], }) ``` ##### 2.2 创建 Electron 主进程文件 创建 `electron/main.js`: ```javascript const { app, BrowserWindow } = require('electron') const path = require('path') function createWindow() { const win = new BrowserWindow({ width: 1200, height: 800, webPreferences: { nodeIntegration: true, contextIsolation: false, } }) // 开发环境加载 Vite 服务,生产环境加载打包文件 if (process.env.NODE_ENV === 'development') { win.loadURL('http://localhost:5173') } else { win.loadFile(path.join(__dirname, '../dist/index.html')) } } app.whenReady().then(createWindow) ``` #### 3. 配置打包设置 ##### 3.1 更新 package.json ```json { "name": "vue-electron-app", "version": "1.0.0", "main": "electron/main.js", "scripts": { "dev": "vite", "build": "vite build && electron-builder", "preview": "vite preview" }, "build": { "appId": "com.example.yourapp", "linux": { "target": ["AppImage", "deb", "snap", "rpm"], "icon": "public/icon.png", "category": "Utility" } } } ``` ##### 3.2 添加应用图标 在 `public/` 目录放置 512x512 像素的 PNG 图标(命名为 icon.png) #### 4. 构建打包 ```bash # 开发模式运行 npm run dev # 生产环境构建打包 (会自动生成 Linux 安装包) npm run build ``` #### 5. 打包结果说明 构建完成后: - `.deb` 文件:在 `dist/` 目录(适用于 Debian/Ubuntu) - `.AppImage` 文件:在 `dist/` 目录(适用于大多数 Linux 发行版) - `.rpm` 文件:在 `dist/` 目录(适用于 Fedora/Red Hat) #### 6. 常见问题解决 **问题1:缺少依赖导致打包失败** ```bash # 安装常见依赖 sudo apt install -y icnsutils graphicsmagick xz-utils ``` **问题2:AppImage 无法执行** ```bash # 添加执行权限 chmod +x YourApp.AppImage ``` **问题3:Linux 桌面图标不显示** - 确保图标路径正确 - 使用 `update-desktop-database` 更新桌面缓存 #### 优化建议 1. **添加 Linux 特有的配置**: ```json "linux": { "desktop": { "StartupWMClass": "YourAppName" } } ``` 2. **启用 ASAR 归档**(默认已启用): ```json "build": { "asar": true } ``` 3. **压缩资源**: ```bash npm install vite-plugin-compression --save-dev ``` --- ### 技术原理 1. **Vite 构建流程**: $$ \text{Vue 源码} \xrightarrow{\text{Vite}} \text{优化后的静态资源} $$ 2. **electron-builder 打包机制**: $$ \text{静态资源 + Electron 环境} \xrightarrow{\text{electron-builder}} \text{可执行安装包} $$ 使用 Vite 构建前端资源,然后通过 electron-builder 将其与 Electron 运行时打包为 Linux 可分发格式[^1]。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值