首先我们要安装electron-prebuilt,它是一个npm模块,因此我们可以使用npm来进行安装,它是一个electron的预编译版本。
npm install electron-prebuilt
接下来安装electron-packager ,它也是一个npm模块,是一个用于打包electron应用的工具
npm install electron-packager
electron-packager <应用目录> <应用名称> <打包平台> --out <输出目录> <架构> <应用版本>
electron-packager . ccrplayer --platform=win32 --arch=ia32 --icon=icon/ico.ico --out=dist
因为我们项目应用了ffi模块去调用dll文件去解密一个文件,所以在打包的过程中需要将dll文件也打包进项目.
asar可以把源码打包到一个文件里面,进而获得一定的代码加密和整合的效果。但是,默认情况下,这个asar里面的文件,是无差别的打包的。会把一些无用的文件打包进去,甚至一些额外的第三方程序。对于后者,第三方程序打包到asar之后,虽然代码逻辑层面还行得通。但是执行效果上,却报错了,无法找到这些第三方程序。具体的症状就是:开发的时候,一切正常。一旦打包(打包成asar),就报错了。
electron-packager使用了--asar参数的话,您就很可能需要这两个参数:ignore 和 extra-resource。
ignore ,在将默认打包的范围内,排除掉一些不打包进去的。例如第三方资源文件,是无论如何,都不能打包到asar里面的。打包进去的话,或者没有用,占体积。或者影响程序逻辑实现,不能访问到这些第三方资源。
extra-resource,可以将第三方资源,在打包的时候,复制到app.asar的同级目录。
eg : electron-packager ./ app --asar --ignore=res/ --extra-resource=res/
注:如果要ignore的目录或文件,是很多个的话,直接在命令行里面,叠加很多个--ignore=即可。extra-resource也是类似的用法,直接在命令行里面,叠加很多个--extra-resource=即可。
因为打包的资源会被引入到resources目录下,所以程序的的相对路径一定要注意调整。最简单的方法是打包之前创建一个resources目录把资源放入该目录下,然后再引入路径进行些修改。然后打包
eg: electron-packager . ccrplayer --platform=win32 --arch=ia32 --icon=icon/ico.ico --out=dist --asar --overwrite=force --ignore=native/supzip.dll --extra-resource=supzip.dll
我的资源是在native/supzip.dll,打包完成之后资源会在resources/supzip.dll,所以我打包之前项目中引入的项目路径就是 resources/supzip.dll。