程序分发


应用部署

为了使用 Electron 部署你的应用程序,你存放应用程序的文件夹必须叫做 app, 并且需要放在 Electron 的 资源文件夹下

(在 macOS 中是指 Electron.app/Contents/Resources/ ,在 Linux 和 Windows 中是指 resources/) 就像这样:

在 macOS 中:

  1. electron/Electron.app/Contents/Resources/app/
  2. ├── package.json
  3. ├── main.js
  4. └── index.html

在 Windows 和 Linux 中:

  1. electron/resources/app/
  2. ├── package.json
  3. ├── main.js
  4. └── index.html

然后运行 Electron.app (或者 Linux 中的 electron ,Windows 中的 electron.exe ),接着 Electron 就会以你的应用程

序的方式启动, electron 文件夹将被部署并可以分发给最终的使用者。

Exe图标信息更换

对于exe的图标的在windows平台上更换工具使用rceditrcedit能够修改exe的图标资源,同时可以设置产品信息。

在开发阶段使用命令安装rcedit的node组件:

  1. npm install rcedit -dev

事先准备好icon图标,并且在拥有rcedit的node组件目录下,可以用node执行如下的示例脚本,将图标、产品信息等参数进行修改,生成新的exe程序。

  1. var nodercedit = require('rcedit');
  2. var path = require('path');
  3. var options={
  4. 'version-string':{
  5. CompanyName:'erayt Inc.',//公司名称
  6. ProductName:'Titan',//产品名称
  7. OriginalFilename:'Titan.exe',//原始文件名
  8. FileDescription:'HTML5 Titan For Windows',//文件描述
  9. LegalCopyright:'Copyright © 2015-2016 Titan project'//版权
  10. },
  11. 'file-version':'1.5.0',
  12. 'product-version':'1.5.0',
  13. 'icon':path.join(logoPath,'logo.ico')//更换的图标路径
  14. };
  15. nodercedit(path.join(modulePath,'electron.exe'), options, function(error)
  16. {
  17. if(error)
  18. console.log(error);
  19. });

 程序分发  - 图1

应用打包

windows路径长度限制

为舒缓 Windows 下路径260字符长度限制的问题issues, 也略对 require 加速以及简单隐匿你的源代码,你可以通过极小的源

代码改动将你的应用打包成 asar

ASAR

由于开发中所使用的node的组件包,经常由于路径太长,造成了拷贝和删除发生错误,不利于软件的分发和安装,除了通过拷贝所有的资源文件来分发你的应用程序之外,你可以通过打包你的应用程序为一个 asar 库文件以避免暴露你的源代码,所以提供了asar这个node组件对开发者的文件夹进行统一打包成.asar后缀的tar包。

为了使用一个 asar 库文件代替 app 文件夹,你需要修改这个库文件的名字为 app.asar , 然后将其放到 Electron 的资源文件夹下,然后 Electron 就会试图读取这个库文件并从中启动。 如下所示:

  1. electron/resources/
  2. └── app.asar
  • 安装asar
  1. npm install -g asar
  • asar命令选项
  1. asar --help
  2. Usage: asar [options] [command]
  3. Commands:
  4. pack|p <dir> <output>
  5. create asar archive
  6. list|l <archive>
  7. list files of asar archive
  8. extract-file|ef <archive> <filename>
  9. extract one file from archive
  10. extract|e <archive> <dest>
  11. extract archive

pack:其中pack参数是打包的命令选项,后面参数是需要打包的文件夹和输出的压缩文件名称(后缀为.asar)

list:枚举压缩文件所有的文件,参数为压缩文件名称。

extract-file:从压缩文件中解压一个文件出来,参数为压缩文件名称和需要解压的文件名

extract:从压缩文件中解压出所有的文件到目标文件夹中,参数为压缩文件名称和输出文件夹名称

asar打包应用

在electron的resources文件夹目录下,本来有electron.asar文件,需要将应用所在的目录打包成app.asar文件,使用如下脚本,可以将app文件夹打包成app.asar,同时可以忽略打包的文件或者文件夹,名称为app.asar.unpacked,最后将app.asar拷贝到electron的resources文件夹目录下,目录如下:

  1. electron/resources/
  2. ├── electron.asar
  3. └── app.asar

如果存在app.asar.unpacked文件夹,也拷贝到electron的resources文件夹目录下,目录如下:

  1. electron/resources/
  2. ├── electron.asar
  3. ├── app.asar
  4. └── app.asar.unpacked

打包示例:

  1. var asar = require('asar');
  2. var path = require('path');
  3. var src = path.join(__dirname,'..');//应用文件夹
  4. var dest = path.join(__dirname,'..','..','app.asar');//输出文件路径
  5. asar.createPackageWithOptions(src, dest,{
  6. dot:false,//排除隐藏文件
  7. unpackDir:"static" //不进行打包的文件夹,一般为图标等静态文件
  8. ,unpack:'config.js' //不进行打包的文件名
  9. }, function() {
  10. console.log('done.');
  11. });