2017-07-24 3 views
10

Ich baue eine Anwendung mit Electron und Verpackung mit Electron Builder. Wenn das Elektron läuft, möchte ich dies command line argument: --enable-mixed-sandbox übergeben.Wie man ein Argument an Elektron weitergibt, wenn man Elektronen-Erbauer benutzt?

Ist es möglich? Wie?

Dies:

app.commandLine.appendSwitch('enable-mixed-sandbox') 

würde due to nicht:

Beachten Sie, dass es nicht genug ist app.commandLine.appendSwitch zu nennen ('- enable-Sandbox'), wie Elektron/Knoten Startup-Code ausgeführt wird, nachdem es möglich ist, Änderungen an Sandbox-Einstellungen Chrom vorzunehmen. Der Schalter muss übergeben werden auf der Befehlszeile Elektron:

electron --enable-sandbox app.js 

Es ist nicht möglich, die OS-Sandbox aktiv nur für einige Renderer zu haben, wenn --enable-Sandbox aktiviert, normale Elektronen Fenster kann nicht erstellt werden.

+0

Ich nehme an, der einfachste Weg ist, um die Verknüpfung zu bearbeiten, so dass es mit dieser Option startet. Nicht sicher, wie das programmatisch zu tun ist. – SwiftsNamesake

+0

https://github.com/electron-userland/electron-builder/issues/1905 – SwiftsNamesake

+0

@SwiftsNamesake diese Argumente erreichen nicht das Elektron, soweit ich weiß. Weißt du es anders? – Pablo

Antwort

0

Sie können app.commandLine.appendSwitch in Ihre Anwendungen Hauptskript verwenden (derjenige, der die Elektronen Fenster öffnet)

Beispiel für Schalter würde

 

    app.commandLine.appendSwitch('enable-mixed-sandbox') 

+0

Bis diese Linie zu laufen beginnt, ist es für diese Option zu spät. Es ist irgendwo in der Dokumentation über Sandboxing (ich bin gerade auf dem Handy). – Pablo

-1

Ich habe a response zu diesem Thema I angehoben und verlinkt mit in den Kommentaren:

app.enableMixedSandbox() // Experimental macOS Windows 

Siehe here für tun Dekoration.

+0

@Pablo bearbeitet, komplett neue Antwort – SwiftsNamesake

-1

eine andere Möglichkeit dies zu tun, können Sie mit Spectron die App im Debug-Modus starten. mit dem Sie beliebige Argumente übergeben können.

const Application = require('spectron').Application 
 

 
// Returns a promise that resolves to a Spectron Application once the app has loaded. 
 
// Takes a Ava test. Makes some basic assertions to verify that the app loaded correctly. 
 
function createApp (t) { 
 
    return new Application({ 
 
    path: 'path/to/app', 
 
    args: ['-r', '--enable-mixed-sandbox'], 
 
    env: {NODE_ENV: 'test'}, 
 
    waitTimeout: 10e3 
 
    }) 
 
}

https://github.com/electron/spectron#new-applicationoptions

+0

Wie funktioniert das mit Electron Builder um Apps zu verteilen? Ich kann jedes Argument, das ich will, im Dev-Modus weitergeben, das ist nicht das Problem. Das Problem ist die EXE, die von Electron-Builder generiert wird. – Pablo

+0

Nun, ich glaube nicht, dass Sie Sandbox für gebündelte App aus Sicherheitsgründen passieren können. Wie Elektron in Docs erwähnt _ Ein bestimmter Fehler in der V8-Engine kann bösartigen Code erlauben, auf die Renderer-Preload-APIs zuzugreifen und somit vollen Zugriff auf das System über das Remote-Modul zu gewähren. check this [link] (https://stackoverflow.com/ a/34742370/6942552) könnte auch ein bisschen mehr erklären. – Necmttn

Verwandte Themen