Electron 离线环境打包解决方案(electron-forge)

1.在线环境准备

  1. 创建新项目:
# 创建并进入项目目录
mkdir my-electron-app && cd my-electron-app# 初始化项目
npm init -y# 安装 electron
npm install --save-dev electron# 安装 electron-forge
npm install --save-dev @electron-forge/cli @electron-forge/maker-squirrel @electron-forge/maker-zip @electron-forge/maker-deb @electron-forge/maker-rpm# 使用 electron-forge 转换项目
npx electron-forge import
  1. 下载所需的离线资源包:
# 在项目根目录创建离线资源文件夹
mkdir electron-offline-packages
cd electron-offline-packages# 下载需要的 npm 包
npm pack electron
npm pack @electron-forge/cli
npm pack @electron-forge/core
npm pack @electron-forge/maker-squirrel
npm pack @electron-forge/maker-zip
npm pack @electron-forge/maker-deb
npm pack @electron-forge/maker-rpm# 下载 Electron 二进制文件
# 从 https://npmmirror.com/mirrors/electron/ 下载对应版本
# 例如下载 v25.9.8 版本:
wget https://npmmirror.com/mirrors/electron/25.9.8/electron-v25.9.8-win32-x64.zip
wget https://npmmirror.com/mirrors/electron/25.9.8/electron-v25.9.8-win32-ia32.zip
wget https://npmmirror.com/mirrors/electron/25.9.8/SHASUMS256.txt
  1. 创建完整的项目模板:

项目结构:

my-electron-app/
├── src/
│   ├── index.html
│   ├── index.css
│   ├── index.js
│   └── preload.js
├── electron-offline-packages/
│   ├── electron-25.9.8.tgz
│   ├── electron-forge-cli-6.4.2.tgz
│   ├── electron-v25.9.8-win32-x64.zip
│   └── ...
├── package.json
├── forge.config.js
└── .npmrc

package.json:

{"name": "my-electron-app","version": "1.0.0","description": "My Electron App","main": "src/index.js","scripts": {"start": "electron-forge start","package": "electron-forge package","make": "electron-forge make"},"author": "author","license": "ISC","dependencies": {"electron-squirrel-startup": "^1.0.0"},"devDependencies": {"@electron-forge/cli": "^6.4.2","@electron-forge/maker-deb": "^6.4.2","@electron-forge/maker-rpm": "^6.4.2","@electron-forge/maker-squirrel": "^6.4.2","@electron-forge/maker-zip": "^6.4.2","electron": "25.9.8"}
}

forge.config.js:

module.exports = {packagerConfig: {asar: true,download: {mirror: "https://npmmirror.com/mirrors/electron/",cache: "./electron-cache"}},rebuildConfig: {},makers: [{name: '@electron-forge/maker-squirrel',config: {name: 'my_electron_app'}},{name: '@electron-forge/maker-zip',platforms: ['darwin', 'win32']}]
};

.npmrc:

registry=https://registry.npmmirror.com/
electron_mirror=https://npmmirror.com/mirrors/electron/
electron-custom-dir=25.9.8
  1. 打包整个项目:
# 将项目打包为 zip
zip -r electron-project-template.zip my-electron-app

2.离线环境使用

  1. 解压项目模板:
unzip electron-project-template.zip
cd my-electron-app
  1. 创建 electron 缓存目录:
mkdir -p electron-cache/electron/25.9.8
  1. 复制 Electron 二进制文件:
# 将之前下载的 electron 二进制文件复制到缓存目录
cp electron-offline-packages/electron-v25.9.8-win32-x64.zip electron-cache/electron/25.9.8/
cp electron-offline-packages/SHASUMS256.txt electron-cache/electron/25.9.8/
  1. 离线安装依赖:
# 安装离线包
npm install ./electron-offline-packages/*.tgz
  1. 执行打包:
# 打包应用
npm run make

打包后的输出目录:

out/
├── make/
│   └── squirrel.windows/
│       └── x64/
│           ├── my_electron_app-1.0.0 Setup.exe
│           └── ...
└── my-electron-app-win32-x64/└── my-electron-app.exe

3.网络问题

离线环境 npm run make 时会出现 econnrefuesd ip地址 错误

这个错误是因为在离线环境下还在尝试连接 npm 镜像源。需要完全禁用网络请求:

  1. 首先修改 .npmrc 文件:
registry=https://registry.npmmirror.com/  //或者换成本地代理地址http://localhost:4873/
electron_mirror=file:///D:/Electron/my-electron-app/electron-cache/ //换成
electron_custom_dir=25.9.8
offline=true
prefer-offline=true
no-proxy=true
https-proxy=false
proxy=false
  1. 修改 forge.config.js
module.exports = {packagerConfig: {asar: true,download: {mirror: "file:///D:/Electron/my-electron-app/electron-cache/",cache: "./electron-cache",force: false},electronZipDir:'./electron-cache/electron/25.9.8/' // 这行☆☆☆☆☆},makers: [{name: '@electron-forge/maker-squirrel',config: {name: 'my_electron_app'}},{name: '@electron-forge/maker-zip',platforms: ['win32']}],// 添加离线配置 ☆☆☆☆☆electronRebuildConfig: {onlyModules: [],force: false,offline: true}
};
  1. 确保电子缓存目录结构正确:
electron-cache/
└── electron/└── 25.9.8/├── electron-v25.9.8-win32-x64.zip├── electron-v25.9.8-win32-ia32.zip (如果需要)└── SHASUMS256.txt
  1. 运行打包时使用离线模式:
# Windows
set ELECTRON_ENABLE_OFFLINE_MODE=1
npm run make --offline# Linux/Mac
export ELECTRON_ENABLE_OFFLINE_MODE=1
npm run make --offline

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

力扣刷题(sql)--零散知识点(1)

通过一段时间的刷题,感觉自己的sql能力逐渐上去,所以不会像前三道题一样讲那么详细了,这里主要会讲到一些特殊的知识点和方法。另外,我的建议是做完一个题有好的想法赶紧记录下来,不要想着最后汇总,不然会懒…

通过cv库智能切片 把不同的分镜切出来 自媒体抖音快手混剪

用 手机自动化脚本,从自媒体上获取视频,一个商品对应几百个视频,我们把这几百个视频下载下来,进行分镜 视频切片,从自媒体上下载视频,通过cv库用直方图识别每个镜头进行切片。 下载多个图片进行视频的伪原…

香橙派5(RK3588)使用npu加速yolov5推理的部署过程

香橙派5使用npu加速yolov5推理的部署过程 硬件环境 部署过程 模型训练(x86主机) 在带nvidia显卡(最好)的主机上进行yolo的配置与训练, 获取最终的best.pt模型文件, 详见另一篇文档 模型转换(x86主机) 下载airockchip提供的yolov5(从pt到onnx) 一定要下这个版本的yolov5, …

sass软件登录设定——未来之窗行业应用跨平台架构

一、saas软件开发中登录设计 以为大公司为参考思迅在登录时候需要录入商户号 二、独立商户商户好处 1.每个店铺的账户是独立的,保护商户职员账户信息的相对安全。 2.不同店铺可以试用相同用户名

LDR6020:为VR串流线方案注入高效能与稳定性

随着虚拟现实(VR)技术的不断发展,VR设备已经成为连接用户与沉浸式体验的重要桥梁。而VR串流线,作为这一技术的重要组成部分,更是承担着传输高质量图像、音频及数据的重任。在这个过程中,一款功能强大、性能…

【计网】从零开始认识IP协议 --- 认识网络层,认识IP报头结构

从零开始认识IP协议 1 网络层协议1.1 初步认识IP协议1.2 初步理解IP地址 2 IP协议报头3 初步理解网段划分 1 网络层协议 1.1 初步认识IP协议 我们已经熟悉了传输层中的UDP和TCP协议,接下来我们来接触网络层的协议: 网络层在计算机网络中的意义主要体现…

寻找大自然的颜色

走在停停,停停走走,恍惚间一天过去了,转瞬间一年过去了,身边的一切在变化又不在变化,生活是自己的又不是自己的。 今天是个特殊的日子,其实前几天对我而言就算特殊的日子了,一个心里暗暗等待着却…

Maven项目管理工具-初始+环境配置

1. Maven的概念 1.1. 什么是Maven Maven是跨平台的项目管理工具。主要服务于基于Java平台的项目构建,依赖管理和项目信息管理。 理想的项目构建:高度自动化,跨平台,可重用的组件,标准化的流程 maven能够自动下载依…

python项目实战——多线程爬虫

多线程爬虫 文章目录 多线程爬虫概念并行并发Python多线程用途threading模块小知识----函数体内pass的用处1. **占位符**2. **控制结构**3. **定义接口**总结 代码解读单线程--串行多线程--并行查看当前程序的线程让主函数等待子线程结束,再运行---.join()join()方法…

C# 串口通信教程

串口通信(Serial Communication)是一种用于设备之间数据传输的常见方法,通常用于与外部硬件设备(如传感器、机器人、微控制器)进行通信。在 C# 中,System.IO.Ports 命名空间提供了与串口设备交互的功能&…

【Linux | 网络I/O模型】五种网络I/O模型详解

1、数据传输过程 在 Linux 系统中,数据传输是通过 I/O 操作来实现的。I/O 操作是指数据从应用程序到内核,再到硬件设备(如磁盘、网络接口)的过程。 操作系统为了保护自己,设计了用户态、内核态两个状态。应用程序一般工…

数据库的诗篇:深入探索 MySQL 表操作的艺术与哲学

文章目录 前言🌸一、创建表——搭建数据存储的基础框架1.1 基本语法1.2 创建表的实际案例解释: 1.3 表设计的最佳实践 🌸二、查看表结构——快速了解数据库设计2.1 使用 DESC 命令解释: 2.2 使用 SHOW COLUMNS 命令2.3 使用 SHOW …

Java线程安全

目录 一.引入 二.介绍 1.概念 2.产生的原因 三.修改操作不是原子性 1.分析问题 2.解决问题(锁) 四.可重入与不可重入 五.死锁 1.引入 2.死锁的三种情况 3.构成死锁的必要条件 六.内存可见性 1.引入 2.产生原因 3.解决问题 七.指令重排序…

让你的 IDEA 使用更流畅 | IDEA内存修改

随着idea使用越来越频繁,笔者最近发现使用过程中有时候会出现卡顿现象,例如,启动软件变慢,打开项目的速度变慢等: 因此如果各位朋友觉得最近也遇到了同样的困惑,不妨跟着笔者一起来设置IDEA的内存大小吧~ …

虚拟现实在制造业中的应用

当你想到制造业中的虚拟现实技术时,你脑海中闪过的第一个念头是什么?从目前来看,只需几年时间,制造业就将离不开虚拟现实技术的帮助。实施虚拟现实应用对制造业来说都有诸多好处。通常情况下,制造设施都是由各种机器组…

基于neo4j的学术论文关系管理系统

正在为毕业设计头疼?又或者在学术研究中总是找不到像样的工具来管理浩瀚的文献资料?今天给大家介绍一款超实用的工具——基于Neo4j的学术论文关系管理系统,让你轻松搞定学术文献的管理与展示!🎉 系统的核心是什么呢&a…

一个基于.NET8+WPF开源的简单的工作流系统

项目介绍 AIStudio.Wpf.AClient 是一个基于 WPF (Windows Presentation Foundation) 构建的客户端框架,专为开发企业级应用而设计。该项目目前版本为 6.0,进行了全面优化和升级,提供了丰富的功能和模块,以满足不同场景下的开发需…

清华大学《2022年+2021年822自动控制原理真题》 (完整版)

本文内容,全部选自自动化考研联盟的:《清华大学822自控考研资料》的真题篇。后续会持续更新更多学校,更多年份的真题,记得关注哦~ 目录 2022年真题 2021年真题 Part1:2022年2021年完整版真题 2022年真题 2021年真题…

图层之间的加减法

如右图所示,正方形ABCD的边长为1cm,AC、BD分别是以点D和点C为圆心、1cm为半径作的圆弧。问阴影部分a的面积比阴影部分b小____? 这道题首先是固定的图形,形状已经确定了,按理说a和b的面积都可以求出来,但是题目问的是b…

ALIGN_ Tuning Multi-mode Token-level Prompt Alignment across Modalities

文章汇总 当前的问题 目前的工作集中于单模提示发现,即一种模态只有一个提示,这可能不足以代表一个类[17]。这个问题在多模态提示学习中更为严重,因为视觉和文本概念及其对齐都需要推断。此外,仅用全局特征来表示图像和标记是不…