用electron+vue+ts开发桌面应用

news2025/2/23 18:03:24

1.搭建项目

npm create vite@latest

在这里插入图片描述
安装electron插件

npm install electron -D
npm install vite-plugin-electron -D

这里安装插件会包如下错:
在这里插入图片描述
在终端执行:

npm config set electron_mirror https://npm.taobao.org/mirrors/electron/

配置参数
在vite.config.ts中导入刚才引入的electron插件并配置入口文件:

import { defineConfig } from "vite";
import vue from "@vitejs/plugin-vue";
import electron from "vite-plugin-electron";
// https://vitejs.dev/config/
export default defineConfig({
  plugins: [
    vue(),
    electron({
      entry: "electron/index.ts",
    }),
  ],
});

在项目根目录创建electron目录和index.ts文件
在这里插入图片描述
index.ts

import { app, BrowserWindow } from "electron";

const createWindow = () => {
  const win = new BrowserWindow({
    webPreferences: {
      nodeIntegration: true,
      contextIsolation: false,
    },
  });
  console.log(process.env);

  win.loadURL(`${process.env["VITE_DEV_SERVER_URL"]}`);
};

app.whenReady().then(createWindow);

现在执行npm run dev会报错,需要将将pakege.json中的type去掉并增加main
在这里插入图片描述

再次执行npm run dev即可打开桌面程序
在这里插入图片描述

2.打包成exe安装包

安装插件

npm install electron-builder -D

package.json中build信息更改为

"build": "vue-tsc --noEmit && vite build  &&  electron-builder",

再对electron目录下的index.ts修改如下
先安装path依赖

npm install path --save

index.ts

import { app, BrowserWindow } from "electron";
import path from "path";
const createWindow = () => {
  const win = new BrowserWindow({
    webPreferences: {
      nodeIntegration: true,
      contextIsolation: false,
    },
  });
  console.log(process.env);
  if (app.isPackaged) {
    //如果是已经打包的程序则执行本地文件
    win.loadFile(path.join(__dirname, "../index.html"));
  } else {
    win.loadURL(`${process.env["VITE_DEV_SERVER_URL"]}`);
  }
};

app.whenReady().then(createWindow)

再在package.json增加打包的配置信息:

 "build": {
    "appId": "com.electron.desktop",
    "productName": "electron",
    "asar": true,
    "copyright": "Copyright © 2022 electron",
    "directories": {
      "output": "release/"
    },
    "files": [
       "dist-electron"
    ],
    "mac": {
      "artifactName": "${productName}_${version}.${ext}",
      "target": [
        "dmg"
      ]
    },
    "win": {
      "target": [
        {
          "target": "nsis",
          "arch": [
            "x64"
          ]
        }
      ],
      "artifactName": "${productName}_${version}.${ext}"
    },
    "nsis": {
      "oneClick": false,
      "perMachine": false,
      "allowToChangeInstallationDirectory": true,
      "deleteAppDataOnUninstall": false
    },
    "publish": [
      {
        "provider": "generic",
        "url": "http://127.0.0.1:8080"
      }
    ],
    "releaseInfo": {
      "releaseNotes": "版本更新的具体内容"
    }
  }

这里记得将files的配置改为打包后生成的文件目录名字
在这里插入图片描述

nsis 配置详解

{"oneClick": false, // 创建一键安装程序还是辅助安装程序(默认是一键安装)
    "allowElevation": true, // 是否允许请求提升,如果为false,则用户必须使用提升的权限重新启动安装程序 (仅作用于辅助安装程序)
    "allowToChangeInstallationDirectory": true, // 是否允许修改安装目录 (仅作用于辅助安装程序)
    "installerIcon": "public/timg.ico",// 安装程序图标的路径
    "uninstallerIcon": "public/timg.ico",// 卸载程序图标的路径
    "installerHeader": "public/timg.ico", // 安装时头部图片路径(仅作用于辅助安装程序)
    "installerHeaderIcon": "public/timg.ico", // 安装时标题图标(进度条上方)的路径(仅作用于一键安装程序)
    "installerSidebar": "public/installerSiddebar.bmp", // 安装完毕界面图片的路径,图片后缀.bmp,尺寸164*314 (仅作用于辅助安装程序)
    "uninstallerSidebar": "public/uninstallerSiddebar.bmp", // 开始卸载界面图片的路径,图片后缀.bmp,尺寸164*314 (仅作用于辅助安装程序)
    "uninstallDisplayName": "${productName}${version}", // 控制面板中的卸载程序显示名称
    "createDesktopShortcut": true, // 是否创建桌面快捷方式
    "createStartMenuShortcut": true,// 是否创建开始菜单快捷方式
    "shortcutName": "SHom", // 用于快捷方式的名称,默认为应用程序名称
    "include": "script/installer.nsi",  // NSIS包含定制安装程序脚本的路径,安装过程中自行调用  (可用于写入注册表 开机自启动等操作)
    "script": "script/installer.nsi",  // 用于自定义安装程序的NSIS脚本的路径
    "deleteAppDataOnUninstall": false, // 是否在卸载时删除应用程序数据(仅作用于一键安装程序)
    "runAfterFinish": true,  // 完成后是否运行已安装的应用程序(对于辅助安装程序,应删除相应的复选框)
    "menuCategory": false, // 是否为开始菜单快捷方式和程序文件目录创建子菜单,如果为true,则使用公司名称
}

在打包过程中会包如下错误,原因是资源下载失败,解决办法是点击这个链接去下载相应文件并放在electron目录下的Cache目录中,
查找该目录的方法是在c盘/user/中搜索’electron’
在这里插入图片描述

在这里插入图片描述
然后执行npm run build

在这里插入图片描述
打开安装包安装:
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/71567.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

程序的翻译环境【编译链接的过程】【详解】

本期介绍🍖 主要介绍:代码是如何一步步的转化成可执行城西的,详细介绍了编译和链接的过程,特别是在编译还可分为预编译、编译、汇编三个阶段,介绍每个阶段分别干什么。👀。 文章目录一、概述🍖二…

手写一个简单的mybatis

1.写个简单的mybatis 今天写个简单版V1.0版本的mybatis,可以其实就是在jdbc的基础上一步步去优化的,网上各种帖子都是照着源码写,各种抄袭,没有自己的一点想法,写代码前要先思考,如果是你,你该…

【数据库数据恢复】MS SQL数据库提示“附加数据库错误 823”怎么恢复数据?

MS SQL Server是微软公司研发的数据库管理系统,SQL Server是一个可扩展的、高性能的、与WindowsNT有机结合的,为分布式客户机/服务器所设计的数据库管理系统,提供基于事务的企业级信息管理系统方案。 SQL Server数据库故障情况&分析&…

RCNN学习笔记-MobileNet

Abstract 我们提出了一类叫做MobileNets的高效模型用于移动和嵌入式视觉应用。MobileNets基于一种简化的架构,该架构使用深度方向可分离卷积来构建轻量级深度神经网络。我们引入了两个简单的全局超参数,可以有效地在延迟和准确性之间进行权衡。这些超参…

套用bi模板,轻松搞定各类数据分析报表

bi模板是什么?是一个个提前预设的报表设计,套用后立即生效,轻轻松松搞定bi数据可视化分析报表。bi模板都有哪些类型?怎么套用?以奥威bi数据可视化软件为例,聊聊bi模板的种类和下载使用。 bi模板有哪些? …

Web Component入门

本文作者为奇舞团前端开发工程师引言前端开发者,现在在进行项目的开发时,一般很少使用原生的js代码,往往都会依靠Vue,React等框架进行开发,而不同的框架都有自己不同的开发规则,但是目前所使用的主流框架&a…

关于小程序swiper图片不能撑满解决方案

问题描述 最近在写小程序的时候使用了swiper组件,但是发现一个很奇怪的现象,如果给image组件设置mode“widthFix”的话,那么图片的高度是不够撑满swiper-item的这样就会导致swiper的指示器往下偏移(其实没有偏移,只是…

代码随想录刷题Day58 | 739. 每日温度 | 496. 下一个更大元素 I

代码随想录刷题Day58 | 739. 每日温度 | 496. 下一个更大元素 I 739. 每日温度 题目: 给定一个整数数组 temperatures ,表示每天的温度,返回一个数组 answer ,其中 answer[i] 是指对于第 i 天,下一个更高温度出现在…

剑指Offer51——数组中的逆序对

摘要 剑指 Offer 51. 数组中的逆序对 一、暴力的方法 1.1 暴力的解析 使用两层 for 循环枚举所有的数对,逐一判断是否构成逆序关系。 1.2 复杂度分析 时间复杂度:O(N^2),这里N是数组的长度;空间复杂度:O(1)。 1…

【芯片应用】PA93

文章目录一、简介二、原理1、外部连接(1)相位补偿(2)限流电阻一、简介 性质:高压运算放大器 厂商:美国 APEX Microtechnology公司 供电电压:Vs to -Vs:最高400V,即200V …

【web课程设计】HTML+CSS仿QQ音乐网站

🎉精彩专栏推荐 💭文末获取联系 ✍️ 作者简介: 一个热爱把逻辑思维转变为代码的技术博主 💂 作者主页: 【主页——🚀获取更多优质源码】 🎓 web前端期末大作业: 【📚毕设项目精品实战案例 (10…

【Windows基础】NTFS文件系统

NTFS文件系统 windows上的文件系统 早期Windows上使用:FAT16或FAT32(Windows98)目前Windows操作系统基本使用的是NTFS文件系统ReFS文件系统 ReFS(Resilient File System,复原文件系统)是在 Windows Serve…

万众期待的Dyson Zone空气净化耳机确认将于中国首发,戴森重新定义“好声音”

同享纯净音质与洁净空气,Dyson Zone™ 空气净化耳机确认将在中国开启全球首发 中国, 2022年12月8日 – 今日,戴森首次公开了Dyson Zone™ 空气净化耳机的详细技术参数,该产品已确认将在中国开启全球首发,并在戴森指定…

玩好.NET高级调试,你也要会写点汇编

一:背景 1. 简介 .NET 高级调试要想玩的好,看懂汇编是基本功,但看懂汇编和能写点汇编又完全是两回事,所以有时候看的多,总手痒痒想写一点,在 Windows 平台上搭建汇编环境不是那么容易,大多还是…

[附源码]Python计算机毕业设计SSM佳音大学志愿填报系统(程序+LW)

项目运行 环境配置: Jdk1.8 Tomcat7.0 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。 项目技术: SSM mybatis Maven Vue 等等组成,B/S模式 M…

Mybatis日志配置(slf4j、log4j、log4j2)

文章目录1. Mybatis日志1.1 日志实现原理1.2 日志实现方式2. SLF4J2.1 slf4j日志级别2.2 日志门面与日志实现2.3 日志门面与日志依赖配置3. LOG4J3.1 日志级别3.2 log4j重要组件3.3 mybatis日志配置log4j3. LOG4J23.1 mybatis配置log4j23.2 log4j2配置文件1. Mybatis日志 1.1 …

elasticsearch集群数据索引迁移自动化脚本

日常维护elasticsearch集群会出现新老集群数据迁移,这里使用的是snapshot api是Elasticsearch用于对数据进行备份和恢复的一组api接口,可以通过snapshot api进行跨集群的数据迁移,原理就是从源ES集群创建数据快照,然后在目标ES集群中进行恢复。 1、新老集群修改集群配置文…

潦草手写体也能轻松识别,快速提取文字不用愁

基于文本识别(OCR)技术的成熟与应用,日常生活中的大部分“印刷体识别”需求都能被满足,替代了人工信息录入与检测等操作,大大降低输入成本。 而对于复杂的手写体识别需求,业界识别质量却参差不齐。大部分手…

【Linux】进程优先级进程切换

索引➡️进程优先级1.什么叫做优先级2.为什么会存在优先级3.看看Linux怎么做的4.查看进程优先级的命令😊进程的一些特性➡️进程切换➡️进程优先级 1.什么叫做优先级 优先级和权限有些区别,权限决定能还是不能,优先级的前提是能&#xff0…

计算机存储器之逻辑地址和物理地址转换详解

文章目录1 概述2 转换2.1 逻辑地址 to 物理地址2.2 物理地址 to 逻辑地址3 扩展3.1 在线进制转换1 概述 #mermaid-svg-zTbJ3rKuirwBssRU {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-zTbJ3rKuirwBssRU .error-ico…