Electron在Linux下打包那些事

简介: Electron在Linux下打包那些事

1.前言:


我是用的是electron-builder打包工具,要在linux下打包成amd64架构的APPimage文件,以及arm64架构的APPimage文件。

ps:

appimage是linux下的标准可执行文件,当然你也可以选择其他格式比如deb,但是我感觉还是APPimage比较好,我后续是要在基于linux系统的国产操作系统UOS(统信)下安装,只需要将APPimage文件打包为deb安装包即可。

至于为啥不直接打包deb,是因为就算我使用electron-builder打包成deb文件,但是因为目录结构等原因还是要重新打包,且APPimage几乎可以在任何基于linux系统的环境中运行,所以基于以上原因,我选择打包成APPimage

2.思路


第一点 ,我平时是在Windows系统下开发,要想打包成成linux amd64的APPimage文件,需要在linux环境下,于是我下载虚拟机(vmware)安装乌班图系统。

第二点,在linux下可以打包成arm64或者amd64架构的包,但要想运行arm64架构的APPimage包需要在arm架构的机器下,我使用的是苹果电脑,下载虚拟机,然后安装arm架构的系统,比如UOS的arm版本

3.打包步骤


其实打包就是修改electron-builder的配置文件,先说几个特别需要注意的,尤其是第一条。

1.在Linux下打包,package.json中必须配置homepage,就是主页信息,比如:https://www.baodu.com,如果报错说缺少author或者email,你就按我下面的写,我之前被狠狠狠的坑了一把,明明都写了email,author等信息还是一直报错说email没配置,原来是格式不对…

"author": "xxx, Inc <xx@gmail.com>"

2.可以用配置文件配置,也可以直接在package.json中写,我是在单独文件中配置的。比较重要的字段是target,意思是打包成的文件格式,还有一个是arch代表架构,amd64就写x64.

4.我的配置(可参考我的配置)


第一个是新建electron-builder.yaml文件

appId: 'io.xx.xx'
productName: 'xx'
copyright: Copyright © 2021 xx
directories:
  buildResources: resources
  output: release/
  app: .
#artifactName: ${productName}-${version}-${platform}-${arch}.${ext}
asar: true
publish:
  - provider: 'generic'
    url: https://www.baidu.com
mac:
  artifactName: ${productName}-${version}-darwin-${arch}.${ext}
  target:
    - target: dmg
      arch:
        - x64
        - arm64
  icon: 'app/assets/xx.icns' //图片文件的路径
linux:
  artifactName: ${productName}-${version}-linux-amd64.${ext}
  target:
    - target: AppImage  //打包成什么类型的文件
      arch:
        - x64  // x64 == amd64 == x86_64
win:
  artifactName: ${productName}-${version}-windows-amd64.${ext}
  target:
    - target: nsis
      arch:
        - x64
  icon: 'app/assets/dwicologo.ico'
#publish:
#  - provider: generic
#    url: https://update.electron-builder.com
#    channel: latest
releaseInfo:
  releaseName: ${version}
  releaseNotes: 'view github release: https://github.com/yaklang/yakit/releases'

然后是pachage.json配置

{
  "name": "名称",
  "version": "版本",
  "description": "描述信息",
  "main": "app/main/index.js",//主程序
  "homepage": "主页",
  "author": "xx, Inc <xx@mail.com>",
  "scripts": {
    "start-electron": "electron .",
    "install-render": "cd app/renderer/src/main && yarn install",
    "start-render": "cd app/renderer/src/main && yarn electron-render",
    "build-render": "cd app/renderer/src/main && yarn build",
    "dev": "concurrently -k \"yarn start-render\" \"wait-on tcp:3000 && yarn start-electron \" ",
    "postinstall": "electron-builder install-app-deps",
    "pack-win": "electron-builder build --win --x64",
    "pack-mac": "electron-builder build --mac --x64",
    "pack-mac-arm64": "electron-builder build --mac --arm64",
    "pack-linux": "electron-builder build --linux --armv7l",
    "electron-publish": "electron-builder --publish always -mwl"
  },
  "keywords": [],
  "license": "ISC",
}

总结:


这篇文章主要讲的是,electron使用electron-builder是如何打包的,我们可以通过修改electron-builder.yaml配置文件和package的script配置进行打包,需要注意的是,Windows下无法打linux版本的包,如果你要打linux系统的amd64架构需要找一台linux amd64的系统打包,也可以在amd64下打arm架构的包,但是不能运行,需要放到arm架构的系统里才能运行。

相关文章
|
2月前
|
资源调度 运维 JavaScript
使用electron创建桌面应用及常见打包错误解决
使用electron创建桌面应用及常见打包错误解决
277 3
|
4月前
|
Linux
在Linux中,列出几种常见打包工具并写相应解压缩参数。
在Linux中,列出几种常见打包工具并写相应解压缩参数。
|
2月前
|
前端开发 Unix Linux
揭秘 Electron 的 Linux 打包过程:你知道背后发生了什么吗?
本文详细介绍了 `electron-builder` 在 Linux 平台上如何打包 Electron 应用程序,涵盖了 AppImage、Flatpak、Snap 等多种格式的打包原理和具体实现。文章从初始化 `LinuxPackager` 到创建各种目标格式的包,详细解析了每个步骤的代码逻辑和关键方法,帮助开发者更好地理解和使用 `electron-builder` 进行 Linux 应用的打包。
144 2
揭秘 Electron 的 Linux 打包过程:你知道背后发生了什么吗?
|
6月前
|
资源调度 JavaScript 前端开发
IM跨平台技术学习(十一):环信基于Electron打包Web IM桌面端的技术实践
这次借着论证 Web IM端 SDK 是否可以在 Electron 生成的桌面端正常稳定使用,我决定把官方新推出的 webim-vue3-demo,打包到桌面端,并记录了这次验证的过程以及所遇到的问题和解决方法。
103 2
|
2月前
|
安全 前端开发 iOS开发
揭秘 electron-builder:macOS 应用打包背后到底发生了什么?
本文详细介绍了 Electron 应用在 macOS 平台上的打包流程,涵盖配置文件、打包步骤、签名及 notarization 等关键环节。通过剖析 `electron-builder` 的源码,展示了如何处理多架构应用、执行签名,并解决常见问题。适合希望深入了解 macOS 打包细节的开发者。
90 2
|
2月前
|
XML 缓存 前端开发
Electron-builder 是如何打包 Windows 应用的?
本文首发于微信公众号“前端徐徐”,作者徐徐深入解析了 electron-builder 在 Windows 平台上的打包流程。文章详细介绍了 `winPackager.ts`、`AppxTarget.ts`、`MsiTarget.ts` 和 `NsisTarget.ts` 等核心文件,涵盖了目标创建、图标处理、代码签名、资源编辑、应用签名、性能优化等内容,并分别讲解了 AppX/MSIX、MSI 和 NSIS 安装程序的生成过程。通过这些内容,读者可以更好地理解和使用 electron-builder 进行 Windows 应用的打包和发布。
169 0
|
4月前
|
Linux C# C++
【Azure App Service For Container】创建ASP.NET Core Blazor项目并打包为Linux镜像发布到Azure应用服务
【Azure App Service For Container】创建ASP.NET Core Blazor项目并打包为Linux镜像发布到Azure应用服务
|
4月前
|
Linux 数据安全/隐私保护 Python
LInux下 python混淆代码打包产出exe
安装 PyArmor 加密Python程序:使用`pip install pyarmor`。为避免混淆 venv 目录,可指定排除此目录:`.\/venv\/bin\/pyarmor-7 pack -e \"--onefile\" -x \"--exclude venv\" main.py`。查阅详细文档:[官方指南](https://pyarmor.readthedocs.io/zh/v7.x/advanced.html)。
|
4月前
|
iOS开发 MacOS Python
Electron Mac 打包报 Error: Exit code: ENOENT. spawn /usr/bin/python ENOENT 解决方法
Electron Mac 打包报 Error: Exit code: ENOENT. spawn /usr/bin/python ENOENT 解决方法
|
6月前
|
存储 Linux 程序员
tar命令详解:linux文件打包神器
tar命令详解:linux文件打包神器