How to use auto-launch to start app on system startup?

user8317956 picture user8317956 · Sep 20, 2017 · Viewed 10.9k times · Source

package.json:

{
  "name": "electronapp",
  "version": "1.0.0",
  "description": "electron auto-launch",
  "main": "index.js",
  "scripts": {
    "start": "electron .",
    "build": "electron-packager . --all"
  },
  "author": "ivie",
  "license": "ISC",
  "devDependencies": {
    "Q": "^1.0.0",
    "asar": "^0.13.0",
    "electron": "^1.7.6",
    "electron-packager": "^9.1.0",
    "electron-prebuilt": "^1.4.13",
    "fs-jetpack": "^1.2.0",
    "grunt-electron-installer": "^2.1.0",
    "rcedit": "^0.9.0"
  },
  "dependencies": {
    "auto-launch": "^5.0.1"
  }
}

index.js:

var electron = require('electron');
var app = electron.app;
var BrowserWindow = electron.BrowserWindow;
var path = require('path');

app.on('ready', ()=>{
    var mainwindow = new BrowserWindow({
        width: 1200,
        height: 800,
        icon: "favicon.ico",
        frame:true,
        title:'Menuboard',
        fullscreen: false,
        autoHideMenuBar: false
    })
    mainwindow.openDevTools();
    mainwindow.loadURL('https://www.google.com');
    mainwindow.on('closed', function() {
        mainwindow = null;
    });
});
app.on('window-all-closed', function() {
    if(process.platform != 'darwin')
        app.quit();
})

I have generated an electron .exe using this code. It's getting executed when I'm double clicking on it. But, I want to run it on windows startup. I got to know about auto-launch. But, I'm not sure how to use it in my application? Any help would be appreciated.

Answer

Sellorio picture Sellorio · Oct 6, 2018

FYI this is now provided by Electron out of the box:

https://electronjs.org/docs/api/app#appsetloginitemsettingssettings-macos-windows

Example:

const electron = require("electron")

electron.app.setLoginItemSettings({
    openAtLogin: arg.settings.startOnStartup,
    path: electron.app.getPath("exe")
});

EDIT

Based on new comments, this may be out of date. Consider trying Timur Nugmanov's answer first.