在项目中,经常会遇到一些导出固定格式文件的需求。这种需求通常需要提前准备一个模板(例如word、excel等)保存在项目中,但electron默认会对应用程序的代码使用asar压缩打包,打包以后就没有办法获取到模板文件了,不打包又不够安全,代码容易被解密,那辛辛苦苦写的东西就会被别人轻而易举的读取,如果含有保密的信息或者加密的代码呢,后果很严重。所以,一定要用asar打包,那模板的问题怎么办?
我找了很多资料来寻找解决的办法,找到一个最简单最快捷最有效的办法——配置package。在项目下新建一个文件夹extra,里面存放的是需要打包进安装包的文件,将这个文件夹配置到package里面即可,不需要写任何代码。调用的时候只需要获取.exe的完整路径,然后就可以找到安装后的模板文件夹路径了。网上讲的最多的一个参数是extraResources,安装应用后路径为```安装目录/resources/extra```,但是这种方法同样要求不许用asar打包。要是能放在```安装目录/extra```里多好,就一点问题都没有了。
事实是,真的可以!!!步骤如下:
- 搭建electron-vue框架
前面有详细的介绍,这里就不再赘述了。Electron+Vue开发轻量级应用 - 项目下新建文件夹extra,与src、dist、build同级,将模板文件或者其他一些想直接打包进安装包的文件丢进去
3.配置package,将新建的文件夹配置到extraFiles中
{
"build": {
……
"extraFiles": [
"extra/**"
],
"asar": true,
"nsis": {
"oneClick": false,
"allowToChangeInstallationDirectory": true,
},
……
}
}
4.开发环境和正式环境调用extra文件夹中的内容
import path from 'path'
import { app } from 'electron'
const helpPath = path.join(path.dirname(app.getPath('exe')), '/extra/模板文件.docx')
// 这就是文件的绝对路径了,可以为所欲为了
网友评论