在Window下打包Electron的linux包
写这份文档主要是记录一下在Window系统下打linux的electron包的一些坑以及方法。
首先,第一次接触的时候,看electron官网中写道可以构建多平台的包,理所当然的以为可以在一个平台下打不同平台的包。于是乎尝试了一下:
报错如下,多方查证度娘,得到的结果是,本来可以。但是由于该服务在去年就挂了之后window环境下就无法打linux的包。好嘛,难道我一定要去liunx下重新搭个环境吗? 其实不然。
查找过程和解决办法:
首先我使用的electron版本为 electron-12.0.8
以及 electron-builder
打包工具
我们可以查到 electron-builder 官网文档 中多平台构建的说明,其第一句话就说到:
不要期望您可以在一个平台上为所有平台构建应用程序。
下面还有一句
**免费的公共 Electron 构建服务 用于在 Windows 上构建适用于 Linux 的 Electron 应用程序。在 macOS/Linux 上,您可以在本地为 Windows 构建 Electron 应用程序,除了 Windows Store 的 Appx(将来(随时提交问题)electron-build-service 将支持 Appx 目标)。
**
对,这就是上面提到的已经挂掉了的免费打包成linux的服务。
而,在文档的末尾有提到过,可以使用 Docker
来构建Linux包。于是乎我行动了。
操作步骤:
1.安装 Docker
地址点这
刚装完最新版的 docker ,启动时出现以下提示1:
首先在命令行中输入 systeminfo
检查验证硬件兼容性,然后检查 Hyper-V 要求部分,验证Windows中的硬件兼容性。如果所有列出的Hyper-V要求的值都为Yes,则系统可以运行Hyper-V下,如下图:
同样需要四项均为“是”才符合运行Hyper-V虚拟机的要求。之后进入 bios 开启:
注:不同的主板BIOS设置项不同,但大同小异。
进入CPU Configuration设置界面,在底部可以看到 Intel Virtualization Technology 设置项。如图:
把它设置为Enabled,这样就开启了CPU的虚拟化支持功能。最后保存退出BIOS设置。之后也注意如下设置也要全部开启:
到此解决这个虚拟化没开启的功能。正常打开Docker2.使用以下控制台命令下载electronuserland/builder Docker 镜像:
docker pull electronuserland/builder
3.从 Electron 项目的根文件夹(例如C:\MyApp),键入以下命令行命令以运行容器并将 Electron 项目的根文件夹映射到 /project 虚拟路径:
docker run --rm -ti -v C:\MyApp\:/project -w /project electronuserland/builder
4.在容器内部,输入以下命令来重新安装 Electron 项目的 Npm 依赖包,这一步很重要。因为有些解析的npm依赖包会根据不同环境下安装不同的依赖,就比如node-sass包
Linux 可再发行包:
cd /project
npm i
npm run build
具体运行打包的命令根据项目中的package.json中的配置命令而变
如:
其中打包的后缀 -l
--arm64
均为electron-builder的CLI打包命令 具体可查官网解析:
Commands:
electron-builder build Build [default]
electron-builder install-app-deps Install app deps
electron-builder node-gyp-rebuild Rebuild own native code
electron-builder create-self-signed-cert Create self-signed code signing cert
for Windows apps
electron-builder start Run application in a development
mode using electron-webpack
Building:
--mac, -m, -o, --macos Build for macOS, accepts target list (see
https://goo.gl/5uHuzj). [array]
--linux, -l Build for Linux, accepts target list (see
https://goo.gl/4vwQad) [array]
--win, -w, --windows Build for Windows, accepts target list (see
https://goo.gl/jYsTEJ) [array]
--x64 Build for x64 [boolean]
--ia32 Build for ia32 [boolean]
--armv7l Build for armv7l [boolean]
--arm64 Build for arm64 [boolean]
--dir Build unpacked dir. Useful to test. [boolean]
--prepackaged, --pd The path to prepackaged app (to pack in a
distributable format)
--projectDir, --project The path to project directory. Defaults to current
working directory.
--config, -c The path to an electron-builder config. Defaults to
`electron-builder.yml` (or `json`, or `json5`), see
https://goo.gl/YFRJOM
Publishing:
--publish, -p Publish artifacts (to GitHub Releases), see
https://goo.gl/tSFycD
[choices: "onTag", "onTagOrDraft", "always", "never", undefined]
Other:
--help Show help [boolean]
--version Show version number [boolean]
再此过程中,可能会出现要求配置 homepage
的错误。官网这里中也有提到打包linux包时必须要配置,否则报错
如果一切顺利:会在你当前的项目指定打包目录下出现对应包(deb、rpm、AppImage或您在当前项目package.json文件中配置的任何内容):
可以看到我们配置的deb的linux包已经成功打包
作者:littleyu ↩︎