使用electron-builder在windows上打包并自动更新
心得:从一个小白开始独自一人了解electron这个玩具,实现其打包到自动更新,查阅各种资料,做了各种尝试,现在将自己经历过的一些东西写下来,供参考!
注意:文章适合了解electron是什么,知道如何简单打包的读者,文章中代码只是一种思路参考,并不完整,不能直接使用。
打包
尝试过用electron-packager和electron-builder打包,最终选择了electron-builder,原因后面会说;关于网络,在使用electron-packager或者electron-builder打包的过程中,可能会下载electron包以及其它依赖,有些包和依赖可能服务器在国外,会很慢,所以需要设置代理,electron可以通过设置淘宝镜像快速下载
ELECTRON_MIRROR="https://npm.taobao.org/mirrors/electron/"
(windows下通过set设置该参数);这有个有趣的事情,我通过代理下载的时候有个叫codeSign的包怎么都下不下来,总是提示timeout,后来我用笔记本连接手机热点,手机开启shadowsocks代理,通过蜂窝网络这种方式居然下载下来了,遇到类似问题都可以尝试;
electron-packager
简单用法:
具体用法参考官网: electron-packger
"scripts": {
"package": "electron-packager ./ --overwrite -all"
}
注意事项:
- 直接这么打包会将node_modules文件夹全部打包进去,包会很大,需要自行进行忽略某些文件或者文件夹,因为作者使用webpack将代码打包,所以我是在webpack打包好的文件夹,独立建立了一个package.json文件,将需要的包和文件放进去,在该文件夹下打包;
- 注意 package.json 的额外字段 —— productName、author 和 description,虽然这几个字段并不是打包必备的,但它们会在 Windows 的 Squirrel 安装包(用于自动更新,后面会说)中使用到。
特点:
- 在macOS系统下,打的包是app文件(也就是平常通过dmg文件安装后的应用程序,拖到应用程序能直接使用),不能直接打包dmg文件;(不记得能不能打windows的包了,网上参考资料说不能打windows包);
- 在windows系统下,能打包免安装的包,类似于我们网上下载绿色版软件,直接点击exe文件就运行软件;不能直接打包exe安装文件;(能否打app文件自行探索,蛤)
- 在自动更新的时候支持electron自带的
autoUpdater
和squirrel
的方式(squirrel在windows下需要自己安装某些文件);
electron-builder
简单用法:
具体用法参考官网: electron-builder
"build": {
"appId": "com.xxx.app",
"mac": {
"target": ["dmg","zip"]
},
"win": {
"target": ["nsis","zip"]
}
},
"scripts": {
"dist": "electron-builder -wm"
},
注意事项:参考electron-packager
特点:
- 在macOS系统和windows系统都可以到dmg和exe安装文件;
- windows可以使用nsis打包安装文件,具体配置可以参考官网相关配置;
- 几乎支持了所有平台的所有格式;
- 自动更新的时候,不支持
squirrel.Windows
的方式,并且不使用electron自带的autoUpdater
,需要使用electron-updater
包;
自动更新(windows下)
这边不详细描述