Skip to content

Latest commit

 

History

History
145 lines (117 loc) · 3.62 KB

README-zh-CN.md

File metadata and controls

145 lines (117 loc) · 3.62 KB

electron-builder-encryptor npm

ci

English | 简体中文

非常简单的 electron 打包加密工具

例子

特性

  • 🐵 使用非常简单,只需添加几行代码
  • 💚 与框架无关,轻松接入您现有的项目
  • 🤷‍♂️ 只在使用 electron-builder 打包时生效,不影响开发调试
  • 🔒 使用 bytenode 加密主进程,自定义方法加密渲染进程
  • 👀 防篡改 app.asar 文件

使用

npm i electron-builder-encryptor -D

# 这5个库需要添加到项目中
npm i adm-zip bytenode mime original-fs yaml

electron-builder 配置中添加 afterPack

// package.json
{
    "build": {
        "asar": true,
        "afterPack": "node_modules/electron-builder-encryptor"
    }
}

或者

// electron-builder.json
{
    "asar": true,
    "afterPack": "node_modules/electron-builder-encryptor"
}

然后在主进程中

if (!app.isPackaged) {
    // 打包前的地址
    mainWindow.loadFile('renderer/index.html')
} else {
    // 打包后访问的地址
    mainWindow.loadURL('myclient://apps/index.html')
}

注意:需要加密的渲染进程必须放在入口文件 main.js 所在目录下的 renderer 文件夹内

配置

// encryptor.config.ts 或者 encryptor.config.js
import { defineConfig } from 'electron-builder-encryptor'

export default defineConfig({
    /**
     * 加密的密钥
     */
    key: 'xxx000777',
})

所有配置

export declare interface UserConfig {
    /**
     * encryption key
     */
    key?: string
    /**
     * renderer protocol scheme
     * @default 'myclient'
     */
    protocol?: string
    /**
     * electron custom schemes to be registered with options.
     * @default
     * {standard: true, secure: true, bypassCSP: true, allowServiceWorkers: true, supportFetchAPI: true, corsEnabled: true, stream: true}
     */
    privileges?: Privileges
    /**
     * preload.js directory, with the program execution directory as the root node
     * @default preload.js
     */
    preload?: string | string[]
    renderer?: {
        /**
         * renderer entry directory, with the program execution directory as the root node
         * @default 'renderer'
         */
        entry: string
        /**
         * The encrypted storage path of the rendering process, with the program execution directory as the root node
         * @default 'resources/renderer.pkg'
         */
        output: string
    }
    /**
     * 启动app时同步检测程序是否被篡改
     */
    syncValidationChanges?: boolean
    /**
     * 是否自动启动渲染进程,设置为false后可以使用 __runRenderer() 方法手动启动
     * @default true
     */
    autoRunRenderer?: boolean
}

从 v0.x 迁移

为了renderermian能单独更新,1.x默认将加密后的renderer.pkg分离出来,如果需要恢复0.x的行为,可以将renderer.output设置为 ''

export default defineConfig({
    renderer: {
        entry: 'renderer',
        output: ''
    }
})

renderer文件夹下存在package.json时,打包后的renderer.pkg目录下会生成renderer.yml文件

许可证

MIT License