Elektron unterstützt Selbststart (Registrierungsschreiben)

Referenzdokument:
https://newsn.net/say/electron-auto-launch.html

Die Methode stammt von der offiziellen API:
https://electronjs.org/docs/api/app#appsetloginitemsettingssettings-macos-windows

Dies ist offizieller Inhalt

app.setLoginItemSettings(settings) macOS Windows

  • Settings-Objekt
  • openAtLogin Boolean (optional) – „true“, um die App beim Anmelden zu starten, „false“, um die App als Startelement für die Anmeldung zu entfernen. Der Standardwert ist „false“.
    openAsHidden Boolescher Wert (optional) macOS – „true“ bedeutet, dass die App versteckt gestartet wird. Der Standardwert ist falsch. Benutzer können diese Einstellung in den Systemeinstellungen bearbeiten, um beim Öffnen der Anwendung app.getLoginItemSettings().wasOpenedAsHidden auf den aktuellen Wert zu überprüfen. Diese Konfiguration ist zum Zeitpunkt der MAS-Erstellung nicht verfügbar.
    path String (optional) Windows – Die ausführbare Datei, die bei der Anmeldung gestartet werden soll. Der Standardwert ist „process.execPath“.
    args String Windows – Befehlszeilenargumente, die an die ausführbare Datei übergeben werden sollen . Standardmäßig ist ein leeres Array. Beachten Sie die Anführungszeichen um den Pfad.
    Legen Sie die Anmeldeeinstellungen der Anwendung fest.

Wenn Sie den AutoUpdater von Electron unter Windows mit Squirrel verwenden müssen, müssen Sie den Startpfad auf Update.exe festlegen und einen Parameter übergeben, der den Anwendungsnamen angibt. Zum Beispiel:

const appFolder = path.dirname(process.execPath)
const updateExe = path.resolve(appFolder, '..', 'Update.exe')
const exeName = path.basename(process.execPath)

app.setLoginItemSettings({
  openAtLogin: true,
  path: updateExe,
  args: [
    '--processStart', `"${exeName}"`,
    '--process-start-args', `"--hidden"`
  ]
})

Das ist mein eigener Code:

Wichtige Punkte: Die wahren und falschen Werte der openAtLogin-Parameter können nicht durch Übergeben von Parametern gelöst werden. Sie können nur zwei Methoden schreiben (natürlich weiß ich nicht, ob es sich um einen Fehler meines eigenen Computers handelt, bitte überprüfen Sie ihn).

主进程

import ipcMain from 'electron';

const appFolder = path.dirname(process.execPath);
const updateExe = path.resolve(appFolder, 'test.exe');

   ipcMain.on('changeAutoStart-open',()=>{
           app.setLoginItemSettings({
               openAtLogin: true,
               path: updateExe,
               args: []
           });
   });
   ipcMain.on('changeAutoStart-closed',()=>{
           app.setLoginItemSettings({
               openAtLogin: false,
               path: updateExe,
               args: []
           });
   })


渲染进程

  // 对自动启动场景,进行处理
  if('autoStart' == name){
    if(checked){
        ipcRenderer.send('changeAutoStart-open');
    } else {
        ipcRenderer.send('changeAutoStart-closed');
    }
  };

Guess you like

Origin blog.csdn.net/weixin_44325637/article/details/100729131