@ electron/ fuses (帮助)
翻转 电子引信 并自定义您已包装的 Electron 构造
使用量
Via Java 脚本
import { flipFuses, FuseVersion, FuseV1Options } from '@electron/fuses';
// Call this after your app has been packaged (all files in place) but
// before code signing. This fits naturally in an electron-builder
// `afterPack` hook or an electron-forge `postPackage`/`packageAfterCopy` hook.
await flipFuses(
require('electron'), // Returns the path to the electron binary
{
version: FuseVersion.V1,
[FuseV1Options.RunAsNode]: false, // Disables ELECTRON_RUN_AS_NODE
[FuseV1Options.EnableCookieEncryption]: true, // Enables cookie encryption
[FuseV1Options.EnableNodeOptionsEnvironmentVariable]: false, // Disables the NODE_OPTIONS environment variable
[FuseV1Options.EnableNodeCliInspectArguments]: false, // Disables the --inspect and --inspect-brk family of CLI options
[FuseV1Options.EnableEmbeddedAsarIntegrityValidation]: true, // Enables validation of the app.asar archive on macOS
[FuseV1Options.OnlyLoadAppFromAsar]: true, // Enforces that Electron will only load your app from "app.asar" instead of its normal search paths
[FuseV1Options.LoadBrowserProcessSpecificV8Snapshot]: true, // Loads V8 Snapshot from `browser_v8_context_snapshot.bin` for the browser process
[FuseV1Options.GrantFileProtocolExtraPrivileges]: true, // Grants the file protocol extra privileges
[FuseV1Options.WasmTrapHandlers]: true, // Enables V8 signal handlers to trap Out of Bounds memory access from WebAssembly
},
);
API 的全用法见 API 文档。 。 。 .
从命令行
$ npx @electron/fuses read --app /Applications/Foo.app
$ npx @electron/fuses write --app /Applications/Foo.app <...key=on/off>
苹果硅
对于 arm64 macOS 构建您的应用程序, 您需要通过 resetAdHocDarwinSignature: true 页:1 flipFuses 方法
如果你在翻开保险丝后没有立即在您的应用程序上签名。 否则,该应用程序将拒绝与
代码签名验证错误 。 这是苹果硅设备的安全措施.
import { flipFuses, FuseVersion, FuseV1Options } from '@electron/fuses';
await flipFuses(
require('electron'),
{
version: FuseVersion.V1,
resetAdHocDarwinSignature: targetPlatform === 'darwin' && targetArch === 'arm64',
[FuseV1Options.RunAsNode]: false,
},
);
新引信
如果你想保证在升级电子大版本时提供新引信的配置,
您可以设置 strictlyRequireAllFuses 选项到 true。 。 。 .
这很难失败的建筑 如果你在版本 @electron/fuses 没有配置
对于电子二进制中的每个引信, 选项您正在瞄准, 或者如果你不提供配置
在电子二进制中有一个特定的导火线.
import { flipFuses, FuseVersion, FuseV1Options } from '@electron/fuses';
await flipFuses(
require('electron'),
{
version: FuseVersion.V1,
strictlyRequireAllFuses: true,
[FuseV1Options.RunAsNode]: false,
},
);