main.ts 1.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556
  1. import './ipc';
  2. import { app, BrowserWindow, Menu } from 'electron';
  3. import { isDev } from './env';
  4. import { createMainWindow, createIndexWindow } from './utils/window';
  5. import { getAppInfo} from "./utils";
  6. // 隐藏所有菜单
  7. Menu.setApplicationMenu(null);
  8. let mainWindow: BrowserWindow | null = null;
  9. function main() {
  10. mainWindow = createMainWindow();
  11. return mainWindow;
  12. }
  13. // 非开发环境,只允许一个实例运行
  14. if (!isDev) {
  15. // 是否取得了单一实例锁
  16. const gotTheLock = app.requestSingleInstanceLock();
  17. if (gotTheLock) {
  18. app.on('second-instance', () => {
  19. // 开启一个新的窗口
  20. createIndexWindow();
  21. });
  22. } else {
  23. // 没有取得单一实例锁,则退出应用
  24. app.exit(0);
  25. }
  26. }
  27. // 生命周期管理
  28. app.whenReady().then(() => {
  29. // 获取应用信息
  30. const $appInfo = getAppInfo();
  31. if ($appInfo?.productName && $appInfo?.appId) {
  32. app.setName($appInfo.productName);
  33. app.setAppUserModelId($appInfo.appId);
  34. }
  35. main();
  36. app.on('activate', () => {
  37. if (BrowserWindow.getAllWindows().length === 0) {
  38. main();
  39. }
  40. });
  41. });
  42. app.on('window-all-closed', () => {
  43. if (process.platform !== 'darwin') {
  44. app.quit();
  45. }
  46. });