1.前言

在上一篇博客中讲到交叉打包的问题,但是很遗憾的是,目前做不到。

  • 在window下打包的可执行程序,无法在Linux下执行,并且会出现core dumped的问题,目前无法解决
  • 在Linux下可以通过build生成windows下的可执行程序,并且在windows下可执行,而且在windows下通过Inno Setup打包生成可安装程序
  • 那接下来就是调研怎么在Linux系统中生成可执行程序。

2.Linux下生成可执行程序

2.1.准备工作

因为VS code9(以下简称VS)开发工具就是使用electron开发的,所以就在官网看了一下安装VS的安装程序。

electron框架打包Android electron打包deb_electron框架打包Android

的安装包,接下来就需要调研在Linux下怎么生成.deb安装包从上图可以看出在Linux系统下有两种安装包,也就是说后期为了支持不同的Linux系统,还需要生成不同的安装包,这个还待研究。由于我安装的Ubunt,所以就拿Ubunt来做实验。所以我是用的也是.deb格式以及怎么安装。

  • Ubunt,Debian系统中使用.deb格式的安装包
  • Red Hat,Fedora,SUSE系统下使用的.rpm安装包

2.2.生成.deb文件

2.2.1 创建文件夹

可以在任意目录下创建新的文件夹,有人喜欢在usr目录下,我是在桌面创建了一个soft文件夹,然后把我的的项目按照不同的文件去划分。

electron框架打包Android electron打包deb_ico_02

在soft文件下创建agentuser文件夹

electron框架打包Android electron打包deb_electron-vure_03

2.2.2 在agentuser下创建文件目录

其目录结构如下:

electron框架打包Android electron打包deb_Linux生成.deb文件_04

  • DEBIAN:大写,用来进行制作打包文件
  • control:描述deb包的信息必须的文件
  • usr:用户安装文件一般会存到这个文件下,安装后的一些配置文件,可执行文件等可能会存放到usr下不同的目录下
  • share:共享文件夹
  • applications:应用的配置信息,Ubuntu启动时会找到applications下的.desktop文件将其加载到应用中
      

electron框架打包Android electron打包deb_Linux打包安装程序_05

  • agentuser.desktop:桌面文件会生成到/usr/share/applications/,applications会根据文件中的配置将icon,bin等文件一起加载
  • icons:图标文件生成到/usr/share/icons/
  • icon.ico:图标文件
  • bin:这个是最重要的部分,存放可执行程序。由于我build之后的项目是一个文件夹,里面不单单存在可执行文件,还有其他依赖文件,所以需要都放到该目录下,可以直接将build/linuxxxx 文件下的内容copy到lib中

2.2.3 定义control文件

package: dynarose                                                            
version: 1.0.0                                                                
architecture:amd64                                                          
maintainer: chenqingkun                                                       
description: Dynarose agent client
  • pacakge:打包后的名称
  • version:版本后
  • architecture:系统

         关于版本可以查看自己系统的版本号,可以通过cat /proc/version查看,如果系统对不上,打包就会失败

         

electron框架打包Android electron打包deb_electron框架打包Android_06

 

electron框架打包Android electron打包deb_Linux打包安装程序_07

  • maintainer:维护者/开发者
  • description:描述

2.2.4 定义deb.desktop文件

[Desktop Entry]
Name=Dynarose
Comment=Dynarose User example
Exec=/usr/bin/dynarose
Icon=/usr/share/icons/icon.png
Terminal=false
Type=Application
X-Ubuntu-Touch=true
Categories=Development

2.2.5 打包deb包

通过cd切换到mydeb同级目录,执行打包命令。

sudo dpkg -b agentuser agentuser_1.deb

查看目录中,确实生成了文件agentuser_1.deb

electron框架打包Android electron打包deb_Linux生成.deb文件_08

2.2.6 安装deb文件

执行命令

sudo dpkg -i agentuser_1.deb

由于是deb文件,所以也可以双击执行安装

2.2.7 执行可执行文件

切到usr/bin目录下可以看到生成了可执行文件dynarose*文件

electron框架打包Android electron打包deb_Linux打包安装程序_09

 

可以通过./dynarose执行文件,可以看到安装后的文件确实能正常执行。

当然这种启动方式是不合理的,我们需要从应用中启动该应用。

打开应用列表,可以查看到我们新安装的软件

electron框架打包Android electron打包deb_electron-vure_10

双击执行

electron框架打包Android electron打包deb_electron框架打包Android_11