Flip Electron Fuse et personnaliser votre construction d'électron emballée
import { flipFuses , FuseVersion , FuseV1Options } from '@electron/fuses' ;
// During your build / package process
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
} ,
) ;
$ npx @electron/fuses read --app /Applications/Foo.app
$ npx @electron/fuses write --app /Applications/Foo.app < ...key=on/off >
Pour les versions arm64
MacOS de votre application si vous n'êtes pas immédiatement codésigne de votre application après avoir renversé les fusibles, vous devrez transmettre resetAdHocDarwinSignature: true
à la méthode flipFuses
. Sinon, l'application refusera de lancer avec des erreurs de validation de signature de code. Il s'agit d'une nouvelle mesure de sécurité sur les appareils en silicium Apple.
import { flipFuses , FuseVersion , FuseV1Options } from '@electron/fuses' ;
await flipFuses (
require ( 'electron' ) ,
{
version : FuseVersion . V1 ,
resetAdHocDarwinSignature : targetPlatform === 'darwin' && targetArch === 'arm64' ,
[ FuseV1Options . RunAsNode ] : false ,
} ,
) ;
Si vous souhaitez vous assurer de fournir une configuration pour chaque fusible, même des fusibles nouvellement ajoutés lors des mises à niveau d'électrons, vous pouvez définir l'option strictlyRequireAllFuses
sur true
. Cela échouera dur dans la construction si vous êtes sur une version de @electron/fuses
qui n'a pas d'options de configuration pour chaque fusible du binaire électronique que vous ciblez ou si vous ne fournissez pas de configuration pour un fusible spécifique présent dans le Électron binaire que vous ciblez.
import { flipFuses , FuseVersion , FuseV1Options } from '@electron/fuses' ;
await flipFuses (
require ( 'electron' ) ,
{
version : FuseVersion . V1 ,
strictlyRequireAllFuses : true ,
[ FuseV1Options . RunAsNode ] : false ,
} ,
) ;