menuManager.js 4.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137
  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, {
  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. },
  47. { label: '帮助' },
  48. {
  49. label: '版本',
  50. submenu: [
  51. {
  52. label: '检查更新服务端',
  53. click: () => {
  54. if (typeof checkForUpdatesCallback === 'function') {
  55. checkForUpdatesCallback(); // 确保回调函数是函数
  56. } else {
  57. console.error('checkForUpdatesCallback is not a function');
  58. }
  59. }
  60. },
  61. {
  62. label: `服务端版本: ${localVersion}`
  63. },
  64. {
  65. label: `应用程序版本: ${appVersion}`
  66. },
  67. {
  68. label: `浏览器内核版本: ${chromeVersion}`
  69. }
  70. ]
  71. }
  72. ];
  73. const menu = Menu.buildFromTemplate(template);
  74. Menu.setApplicationMenu(menu);
  75. };
  76. // 开启调试模式
  77. const openDevTools = () => {
  78. const win = BrowserWindow.getFocusedWindow(); // 获取当前获得焦点的窗口
  79. if (win) {
  80. win.webContents.openDevTools(); // 打开开发者工具
  81. } else {
  82. console.warn('没有获得焦点的窗口');
  83. }
  84. };
  85. // 清理缓存
  86. const clearCache = () => {
  87. const win = BrowserWindow.getFocusedWindow(); // 获取当前获得焦点的窗口
  88. // console.log('win', win);
  89. if (win) {
  90. session.defaultSession.clearStorageData({
  91. storages: ['cookies', 'localstorage', 'shadercache', 'serviceworkers', 'cachestorage'],
  92. quotas: ['temporary', 'persistent', 'syncable'],
  93. }, () => {
  94. console.log('缓存和其他存储数据已清理');
  95. console.log('缓存已清理');
  96. dialog.showMessageBox(win, {
  97. type: 'info',
  98. title: '清理缓存',
  99. message: '缓存已清理',
  100. buttons: ['确定']
  101. });
  102. });
  103. // 清理缓存
  104. //win.webContents.on('did-finish-load', () => {
  105. // win.webContents.clearCache();
  106. // console.log('缓存已清理');
  107. //});
  108. // 清理默认会话的缓存
  109. session.defaultSession.clearCache(() => {
  110. console.log('缓存已清理');
  111. });
  112. win.loadURL(constants.baseUrl, {
  113. agent: constants.agent
  114. });
  115. } else {
  116. console.warn('没有获得焦点的窗口');
  117. }
  118. };
  119. // 获取本地版本号
  120. const getLocalVersion = () => {
  121. const appSettingsPath = path.join(constants.serverPath, 'server', 'appsettings.json');
  122. try {
  123. if (fs.existsSync(appSettingsPath)) {
  124. const appSettings = JSON.parse(fs.readFileSync(appSettingsPath, 'utf-8'));
  125. return appSettings.Version || '1.250101.01'; // 默认版本号
  126. }
  127. } catch (error) {
  128. console.error('Error reading appsettings.json:', error);
  129. return '1.250101.01';
  130. }
  131. };
  132. module.exports = {
  133. createMenu
  134. };