menuManager.js 4.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144
  1. const { Menu, dialog, BrowserWindow, session } = require('electron');
  2. //const updateManager = require('./updateManager');
  3. const constants = require('./constants');
  4. const utils = require('./utils');
  5. const path = require('path');
  6. const fs = require('fs');
  7. // 创建菜单
  8. const createMenu = (checkForUpdatesCallback) => {
  9. const localVersion = utils.formatVersion(getLocalVersion());
  10. console.log('Local version:', localVersion);
  11. const electronVersion = process.versions.electron;
  12. const nodeVersion = process.versions.node;
  13. const chromeVersion = process.versions.chrome;
  14. const appVersion = require('electron').app.getVersion();
  15. const template = [
  16. {
  17. label: '主页',
  18. click: () => {
  19. const win = BrowserWindow.getFocusedWindow(); // 获取当前获得焦点的窗口
  20. console.log('win', win);
  21. if (win) {
  22. win.loadURL(`${constants.baseUrl}/login/admin`, {
  23. agent: constants.agent
  24. });
  25. } else {
  26. console.warn('没有获得焦点的窗口');
  27. }
  28. }
  29. },
  30. {
  31. label: '设置',
  32. submenu: [
  33. {
  34. label: '清理缓存',
  35. click: () => {
  36. clearCache();
  37. }
  38. },
  39. {
  40. label: '调试模式',
  41. click: () => {
  42. openDevTools();
  43. }
  44. },
  45. {
  46. label: '退出程序',
  47. click: () => {
  48. require('electron').app.quit();
  49. }
  50. }
  51. ]
  52. }
  53. //,
  54. //{ label: '帮助' },
  55. //{
  56. // label: '版本',
  57. // submenu: [
  58. // {
  59. // label: '检查更新服务端',
  60. // click: () => {
  61. // if (typeof checkForUpdatesCallback === 'function') {
  62. // checkForUpdatesCallback();
  63. // } else {
  64. // console.error('checkForUpdatesCallback is not a function');
  65. // }
  66. // }
  67. // },
  68. // {
  69. // label: `服务端版本: ${localVersion}`
  70. // },
  71. // {
  72. // label: `应用程序版本: ${appVersion}`
  73. // },
  74. // {
  75. // label: `浏览器内核版本: ${chromeVersion}`
  76. // }
  77. // ]
  78. //}
  79. ];
  80. const menu = Menu.buildFromTemplate(template);
  81. Menu.setApplicationMenu(menu);
  82. };
  83. // 开启调试模式
  84. const openDevTools = () => {
  85. const win = BrowserWindow.getFocusedWindow(); // 获取当前获得焦点的窗口
  86. if (win) {
  87. win.webContents.openDevTools(); // 打开开发者工具
  88. } else {
  89. console.warn('没有获得焦点的窗口');
  90. }
  91. };
  92. // 清理缓存
  93. const clearCache = () => {
  94. const win = BrowserWindow.getFocusedWindow(); // 获取当前获得焦点的窗口
  95. // console.log('win', win);
  96. if (win) {
  97. session.defaultSession.clearStorageData({
  98. storages: ['cookies', 'localstorage', 'shadercache', 'serviceworkers', 'cachestorage'],
  99. quotas: ['temporary', 'persistent', 'syncable'],
  100. }, () => {
  101. console.log('缓存和其他存储数据已清理');
  102. console.log('缓存已清理');
  103. dialog.showMessageBox(win, {
  104. type: 'info',
  105. title: '清理缓存',
  106. message: '缓存已清理',
  107. buttons: ['确定']
  108. });
  109. });
  110. // 清理缓存
  111. //win.webContents.on('did-finish-load', () => {
  112. // win.webContents.clearCache();
  113. // console.log('缓存已清理');
  114. //});
  115. // 清理默认会话的缓存
  116. session.defaultSession.clearCache(() => {
  117. console.log('缓存已清理');
  118. });
  119. win.loadURL(`${constants.baseUrl}/login/admin`, {
  120. agent: constants.agent
  121. });
  122. } else {
  123. console.warn('没有获得焦点的窗口');
  124. }
  125. };
  126. // 获取本地版本号
  127. const getLocalVersion = () => {
  128. const appSettingsPath = path.join(constants.serverPath, 'server', 'appsettings.json');
  129. try {
  130. if (fs.existsSync(appSettingsPath)) {
  131. const appSettings = JSON.parse(fs.readFileSync(appSettingsPath, 'utf-8'));
  132. return appSettings.Version || '1.250101.01'; // 默认版本号
  133. }
  134. } catch (error) {
  135. console.error('Error reading appsettings.json:', error);
  136. return '1.250101.01';
  137. }
  138. };
  139. module.exports = {
  140. createMenu
  141. };