市面上对于electron-builder打包的介绍文章很多,这里不做过多介绍,如果需要可以看苏南大叔的博客,这里只是针对打包配置进行一个总结。
为了不浪费大家时间,如果你有以下问题,可以试着看我的文档:
- 打包后发现文件访问不了,在开发环境下是好的
- 打包的时候,怎么设置不让安装在c盘
- 将文件移动到根目录
配置文件如下(electron-vue)
package.json
{
"name": "demo",
"version": "0.0.2",
"author": "四月 <507811581@qq.com>",
"build": { // electron-builder配置
"productName":"xxxx",//项目名 这也是生成的exe文件的前缀名
"appId": "xxxxx",//包名
"copyright":"xxxx",//版权 信息
"compression": "store", // "store" | "normal"| "maximum" 打包压缩情况(store 相对较快),store 39749kb, maximum 39186kb
"directories": {
"output": "build" // 输出文件夹
},
"asar": false, // asar打包
"extraResources": { // 拷贝dll等静态文件到指定位置
"from": "./app-update.yml",
"to": "./b.txt"
},
"win": {
"icon": "xxx/icon.ico"//图标路径,
"extraResources": { // 拷贝dll等静态文件到指定位置(用于某个系统配置)
"from": "./app-update.yml",
"to": "./b.txt"
}
},
"nsis": {
"oneClick": false, // 一键安装
"guid": "xxxx", //注册表名字,不推荐修改
"perMachine": true, // 是否开启安装时权限限制(此电脑或当前用户)
"allowElevation": true, // 允许请求提升。 如果为false,则用户必须使用提升的权限重新启动安装程序。
"allowToChangeInstallationDirectory": true, // 允许修改安装目录
"installerIcon": "./build/icons/aaa.ico", // 安装图标
"uninstallerIcon": "./build/icons/bbb.ico", //卸载图标
"installerHeaderIcon": "./build/icons/aaa.ico", // 安装时头部图标
"createDesktopShortcut": true, // 创建桌面图标
"createStartMenuShortcut": true, // 创建开始菜单图标
"shortcutName": "xxxx" // 图标名称
}
}
}
配置文件如下(vue-cli-plugin-electron-builder)
// vue.config.js
module.exports = {
pluginOptions: {
electronBuilder: {
// 打包参数配置
builderOptions: {
nsis: {},
asar: false,
}
}
}
}
使用到c编译为node文件的安装包
使用ffi sqlite robot-js等的时候,需要先使用electron-builder install-app-deps
进行编译,但是呢,安装electron-rebuild
需要先安装 node-gyp
,你以为这样就完了? 不不不,安装node-gyp
需要先安装Visual Studio
和 python 2.x
惊不惊喜,意不意外,所以我们需要一键安装npm i -g windows-build-tools
他会给我们安装好Visual Studio
和 python 2.7
,然后我们只需要去配置下python
的环境变量就好!
问题及解决方案
-
问: 打包后发现文件访问不了,在开发环境下是好的,有些喜欢研究的发现是asar的问题
答: 对的,打包为
asar
文件后内部是只读的,所以当你需要操作的时候,肯定不能操作呀,解决方案很多种- 可以使用userData存放
- 可以设置
asar
为false
,详细配置参照上面写的配置文件 - 看官方文档有一种
asar
可以直接将文件放置在app.asar
外的写法,目前还在研究,可行,等试验成功在更新
- 问: 打包的时候,怎么设置不让安装在c盘
- 问: dll文件打包后怎么移动到根目录
答:
extraResources
用来将依赖的文件放的指定位置,'./'指向app同级目录
from目录:
to目录: - 有什么问题欢迎留言告知
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。