本示例适用于以下插件创建的vue-electron项目
"vue-cli-plugin-electron-builder": "3.0.0-alpha.4"
环境信息
node > 16.17.1
node-gyp = 8.4.0
asarmor = 2.0.0
安装插件
npm i node-gyp@8.4.0 -g
npm i asarmor@2.0.0 --save-dev
备注:asarmor似乎会和uglifyjs-webpack-plugin,要加密源码的可以试试webpack-obfuscator
如需要代码加密:在vue.config.js中
const webpackObfuscator = require('webpack-obfuscator')
configureWebpack中
plugins: process.env.NODE_ENV === 'production' ? [new webpackObfuscator({
rotateUnicodeArray: true
})] : []
即可
在项目根目录(与package.json同级)创建asarmor.js
// 防止asar包被解压
const asarmor = require('asarmor')
const path = require('path')
exports.default = async ({ appOutDir, packager }) => {
try {
const asarPath = path.join(packager.getResourcesDir(appOutDir), 'app.asar')
const archive = await asarmor.open(asarPath)
archive.patch()
archive.patch(asarmor.createBloatPatch(1314))
await archive.write(asarPath)
} catch (error) {
console.log(error)
}
}
在vue.config.js中引入并使用
在module.exports = defineConfig({ 里面的 pluginOptions中的electronBuilder中的builderOptions增加:
afterSign: './asarmor.js',
大功告成!打包之后对方通过asar解压app.asar时即可无限得到1G的随机文件并无限循环~~~