当前位置: 首页 > news >正文

[Electron] 将应用打包成供Ubuntu、Debian平台下安装的deb包


在使用 electron-packager 工具输出 linux 平台的 electron app 后,可以使用 electron-installer-debian 工具把 app 打包成供Ubuntu平台下安装的 debian 包。

electron-installer-debian是一个用于创建 Debian Linux(.deb)安装包的开发工具。它是 Electron 应用程序的一个常用工具,用于将 Electron 应用打包并创建适用于 Debian 系统的安装包。

以下是 electron-installer-debian 的一些主要特点和介绍:

  • 自动化安装包生成:electron-installer-debian 提供了一种简单的方式来自动生成 Debian 安装包,无需手动创建和配置。

  • 支持应用程序图标和菜单项:它可以将应用程序的图标和菜单项集成到生成的 Debian 安装包中,使得应用在系统中拥有良好的外观和用户体验。

  • 依赖管理:electron-installer-debian 可以自动检测 Electron 应用程序的依赖关系,并确保它们在目标系统上正确安装。

  • 可定制性:它提供了一些选项和配置文件,可以根据项目需求进行定制,例如指定安装包的名称、版本号、描述等。

  • 支持脚本执行:可以通过指定脚本文件,在安装和卸载过程中执行自定义的操作,如创建快捷方式、配置环境变量等。

  • 版本控制:可以指定所使用的 Electron 版本,以确保生成的安装包与应用程序的要求兼容。

一、环境搭建

安装 node.js:

curl -sL https://deb.nodesource.com/setup_14.x | sudo -E bash -
sudo apt-get install -y nodejs

安装 electron-installer-debian:

sudo apt-get install fakeroot
sudo npm install -g electron-installer-debian

二、debian 包制作

使用 electron-packager 工具执行如下命令进行打包:

electron-packager . app --platform linux --arch x64 --out dist/

那么 electron app 则位于 dist 目录下:

.
└── dist└── app-linux-x64├── LICENSE├── LICENSES.chromium.html├── content_shell.pak├── app├── icudtl.dat├── libgcrypt.so.11├── libnode.so├── locales├── natives_blob.bin├── resources├── snapshot_blob.bin└── version

(1)在终端执行命令制作,命令如下:

electron-installer-debian --src dist/app-linux-x64/ --dest dist/installers/ --arch amd64

命令执行后,生成的 debian 包存放于 dist/installers 目录,文件名类似为 app_0.0.1_amd64.deb。

(2)使用 npm 命令制作

首先在 package.json 文件中编辑 scripts 部分,添加 deb64 的内容:

{"name": "app","description": "An awesome app!","version": "0.0.1","scripts": {"start": "electron .","build": "electron-packager . app --platform linux --arch x64 --out dist/","deb64": "electron-installer-debian --src dist/app-linux-x64/ --dest dist/installers/ --arch amd64"},"devDependencies": {"electron-installer-debian": "^0.6.0","electron-packager": "^9.0.0","electron": "~1.7.0"}
}

然后在终端执行以下命令:

npm run deb64

为了支持在制作 debian 包的时候添加更多选项,可以使用 json 配置文件描述,例如以下是 config.json 文件的内容:

{"dest": "dist/installers/","icon": "resources/Icon.png","categories": ["Utility"],"lintianOverrides": ["changelog-file-missing-in-native-package"]
}

在该文件中描述了 debian 包的存放目录、应用图标、应用类别与检查器。

在 package.json 文件的 scripts 部分这样引用该配置文件:

"deb64": "electron-installer-debian --src dist/app-linux-x64/ --arch amd64 --config config.json"

更详细的使用说明可以参考 electron-installer-debian 的 README.md。

相关文章:

  • 一篇文章带你详细了解C++智能指针
  • 2023年第十二届数学建模国际赛小美赛C题雪崩防范求解分析
  • Mysql安全之基础合规配置
  • 服务器数据恢复—服务器重装系统导致逻辑卷发生改变的数据恢复案例
  • 二:C语言-数据类型和变量
  • 深入了解UUID:生成、应用与优势
  • 【译】DispatcherServlet
  • 钉钉提交审批意见,并上传附件接口集成
  • 前端入门(四)Ajax、Promise异步、Axios通信、vue-router路由、组件库
  • 【Openstack Train安装】四、MariaDB/RabbitMQ 安装
  • 利用python编写后端程序 通用代码详解 项目实现
  • ReadWriteLock 和 StampedLock 的比较与解析
  • 人体姿态估计算法
  • 电商营销场景的RocketMQ实战01-RocketMQ原理
  • python初始化矩阵相关
  • 【附node操作实例】redis简明入门系列—字符串类型
  • egg(89)--egg之redis的发布和订阅
  • Fastjson的基本使用方法大全
  • happypack两次报错的问题
  • isset在php5.6-和php7.0+的一些差异
  • Java比较器对数组,集合排序
  • Node + FFmpeg 实现Canvas动画导出视频
  • PHP 程序员也能做的 Java 开发 30分钟使用 netty 轻松打造一个高性能 websocket 服务...
  • Rancher如何对接Ceph-RBD块存储
  • SQL 难点解决:记录的引用
  • 利用阿里云 OSS 搭建私有 Docker 仓库
  • 前端每日实战:61# 视频演示如何用纯 CSS 创作一只咖啡壶
  • 它承受着该等级不该有的简单, leetcode 564 寻找最近的回文数
  • 自制字幕遮挡器
  • Hibernate主键生成策略及选择
  • 第二十章:异步和文件I/O.(二十三)
  • ​Distil-Whisper:比Whisper快6倍,体积小50%的语音识别模型
  • #if和#ifdef区别
  • #mysql 8.0 踩坑日记
  • $emit传递多个参数_PPC和MIPS指令集下二进制代码中函数参数个数的识别方法
  • (aiohttp-asyncio-FFmpeg-Docker-SRS)实现异步摄像头转码服务器
  • (Ruby)Ubuntu12.04安装Rails环境
  • (板子)A* astar算法,AcWing第k短路+八数码 带注释
  • (四)汇编语言——简单程序
  • (转)菜鸟学数据库(三)——存储过程
  • .net Application的目录
  • .net 调用php,php 调用.net com组件 --
  • .NET 使用 XPath 来读写 XML 文件
  • @data注解_一枚 架构师 也不会用的Lombok注解,相见恨晚
  • @private @protected @public
  • [ Linux 长征路第二篇] 基本指令head,tail,date,cal,find,grep,zip,tar,bc,unname
  • [ 英语 ] 马斯克抱水槽“入主”推特总部中那句 Let that sink in 到底是什么梗?
  • [\u4e00-\u9fa5] //匹配中文字符
  • [51nod1610]路径计数
  • [8-27]正则表达式、扩展表达式以及相关实战
  • [ACTF2020 新生赛]Upload 1
  • [acwing周赛复盘] 第 94 场周赛20230311
  • [Angular 基础] - 数据绑定(databinding)
  • [Angular 基础] - 指令(directives)
  • [Angularjs]asp.net mvc+angularjs+web api单页应用