
Command + Q 或者菜单中的退出按钮,Windows 中 Alt + F4app.quit()autoupdater.quitAndInstall()app.reluanch()比如常见的在主进程调用 process.crash()
我们常见的命令行退出软件的方式有 Ctrl + C,命令行给进程发送了 SIGKILL 信号,其实还有其它常见关闭进程的方式,可以通过 kill 对进程发送信号,比如 kill -s KILL 24567 或者 kill -9 24567。
软件常见的启动有很多,比如通过 open 或者 Windows 的 start 启动,或者通过 URL Scheme 然后系统启动,或者拖动文档到 Dock 或者 Tray 启动。下面来说说启动软件后,软件参数和环境的路径。
一般双击软件启动,会经过 will-finish-launching 和 ready,然后正常进入应用界面。
在应用启动的时候,检测 app.requestSingleInstanceLock() 是否是单例模式,如果是就退出,并且发送一个事件给 second-instance,从这里再获取退出的应用的 argv 和 cwd。
其实这里检测是否是单例模式的方法是,看看 app.getPath('userData') 下是否有 lock 文件。
命令行执行 /path/to/app --arg1 value1 --arg2 value2 document/path,会在应用启动的时候,通过 process.argv 和 process.cwd。
通过 app.setAsDefaultProtocolClient('electron-test') 注册 URL Scheme,然后在 APP 事件 open-url 的 URL 参数获取 URL 信息:
app-event - did-become-activeapp-event - open-url - electron-test://happy?abc=eee#ii=aa
通过 dock 拖拽启动,需要在 info.plist 中声明支持的文件类型,比如 electronBuilder 可以通过 extendInfo 字段中,声明 CFBundleDocumentTypes 注册支持的类型。触发的是事件 open-file。