Справочный документ:
https://newsn.net/say/electron-auto-launch.html .
Этот метод взят из официального API:
https://electronjs.org/docs/api/app#appsetloginitemsettingssettings-macos-windows .
Это официальный контент
app.setLoginItemSettings(настройки) macOS Windows
- настройки объекта
- openAtLogin Boolean (необязательно) — значение true для запуска приложения при входе в систему, значение false для удаления приложения как элемента запуска входа в систему. По умолчанию false.openAsHidden
Boolean (необязательно) macOS — true означает скрытый запуск приложения. По умолчанию — ложь. Пользователи могут редактировать этот параметр в Системных настройках, чтобы проверить app.getLoginItemSettings().wasOpenedAsHidden на предмет текущего значения при открытии приложения. Эта конфигурация недоступна во время сборки MAS.
строка пути (необязательно) Windows — исполняемый файл, который будет запускаться при входе в систему. По умолчанию:process.execPath.args
String Windows — аргументы командной строки, которые будут переданы исполняемому файлу . По умолчанию пустой массив. Обратите внимание на кавычки вокруг пути.
Установите настройки входа в приложение.
Если вам нужно использовать средство автоматического обновления Electron в Windows с помощью Squirrel, вам необходимо установить путь запуска Update.exe и передать параметр, указывающий имя приложения. Например:
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"`
]
})
Это мой собственный код:
Важные моменты: истинные и ложные значения параметров openAtLogin не могут быть решены путем передачи параметров.Можно написать только два метода (конечно, я не знаю, является ли это ОШИБКОЙ моего собственного компьютера, пожалуйста, проверьте это)
主进程
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');
}
};