const { app } = require('electron'); const net = require('net'); const socketPath = process.platform === 'win32' ? '\\\\.\\pipe\\electron-app-relaunch' : '/tmp/electron-app-relaunch'; process.on('uncaughtException', () => { app.exit(1); }); app.whenReady().then(() => { const lastArg = process.argv[process.argv.length - 1]; const client = net.connect(socketPath); client.once('connect', () => { client.end(lastArg); }); client.once('end', () => { if (lastArg === '--first') { // Once without execPath specified app.relaunch({ args: process.argv.slice(1, -1).concat('--second') }); } else if (lastArg === '--second') { // And once with execPath specified app.relaunch({ execPath: process.argv[0], args: process.argv.slice(1, -1).concat('--third') }); } app.exit(0); }); });