CrazyIter_Bin 4 달 전
부모
커밋
3b50e16441

+ 14 - 2
TEAMModelOS.Extension/IES.Exam/IES.ExamClient/main.js

@@ -1,6 +1,7 @@
 const { app, BrowserWindow } = require('electron');
 const serverManager = require('./serverManager');
 const menuManager = require('./menuManager');
+const updateManager = require('./updateManager');
 const constants = require('./constants');
 
 let win = null;
@@ -29,11 +30,22 @@ const createWindow = async () => {
         console.error('Error starting server or loading window:', error);
     }
 };
-
+// 定义回调函数
+const checkForUpdatesHandler = () => {
+    updateManager.checkForUpdates(win, () => {
+        menuManager.createMenu(checkForUpdatesHandler); // 重新创建菜单并传递回调函数
+    });
+};
 // 当 Electron 应用准备好时创建窗口
 app.whenReady().then(() => {
     createWindow();
-    menuManager.createMenu();
+    // menuManager.createMenu(win);
+
+  
+
+    // 创建菜单并传递回调函数
+    menuManager.createMenu(checkForUpdatesHandler);
+
     app.on('activate', () => {
         if (BrowserWindow.getAllWindows().length === 0) {
             createWindow();

+ 16 - 4
TEAMModelOS.Extension/IES.Exam/IES.ExamClient/menuManager.js

@@ -1,11 +1,11 @@
 const { Menu, dialog } = require('electron');
-const updateManager = require('./updateManager');
+//const updateManager = require('./updateManager');
 const constants = require('./constants');
 const utils = require('./utils');
 const path = require('path');
 const fs = require('fs');
 // 创建菜单
-const createMenu = () => {
+const createMenu = (checkForUpdatesCallback) => {
     const localVersion = utils.formatVersion(getLocalVersion());
     console.log('Local version:', localVersion);
 
@@ -16,12 +16,24 @@ const createMenu = () => {
 
     const template = [
         {
-            label: '帮助',
+            label: '主页',
+            click: () => {
+               win.loadURL('https://www.baidu.com');
+            }
+},
+        { label: '帮助' },
+        {
+            label: '版本',
             submenu: [
                 {
                     label: '检查更新服务端',
                     click: () => {
-                        updateManager.checkForUpdates();
+                        //updateManager.checkForUpdates(win);
+                        if (typeof checkForUpdatesCallback === 'function') {
+                            checkForUpdatesCallback(); // 确保回调函数是函数
+                        } else {
+                            console.error('checkForUpdatesCallback is not a function');
+                        }
                     }
                 },
                 {

+ 29 - 5
TEAMModelOS.Extension/IES.Exam/IES.ExamClient/updateManager.js

@@ -6,7 +6,7 @@ const { dialog } = require('electron');
 const constants = require('./constants');
 const utils = require('./utils');
 const serverManager = require('./serverManager');
-
+//const menuManager = require('./menuManager'); // 引入 menuManager
 // 获取本地版本号
 const getLocalVersion = () => {
     const appSettingsPath = path.join(constants.serverPath, 'server', 'appsettings.json');
@@ -76,13 +76,19 @@ const downloadFile = async (url, outputPath) => {
 };
 
 // 检查是否需要更新
-const checkForUpdates = async () => {
+const checkForUpdates = async (win, createMenuCallback) => {
     const localVersion = utils.formatVersion(getLocalVersion());
     console.log('Local version:', localVersion);
 
     const remoteVersions = await getRemoteVersions();
     if (!remoteVersions || remoteVersions.length === 0) {
         console.log('No remote versions found.');
+        //menuManager.createMenu(win); // 未检测到新版本时更新菜单
+        if (typeof createMenuCallback === 'function') {
+            createMenuCallback(win); // 确保回调函数是函数
+        } else {
+            console.error('createMenuCallback is not a function');
+        }
         return;
     }
 
@@ -99,7 +105,7 @@ const checkForUpdates = async () => {
         });
 
         if (response === 0) { // 用户选择 Yes
-            await updateServer(latestRemoteVersion);
+            await updateServer(latestRemoteVersion, win, createMenuCallback);
         }
     } else {
         console.log('未检测到新版本。');
@@ -109,11 +115,17 @@ const checkForUpdates = async () => {
             message: `未检测到新版本。`,
             buttons: ['关闭']
         });
+        //menuManager.createMenu(win); // 未检测到新版本时更新菜单
+        if (typeof createMenuCallback === 'function') {
+            createMenuCallback(win); // 确保回调函数是函数
+        } else {
+            console.error('createMenuCallback is not a function');
+        }
     }
 };
 
 // 下载并更新 IES.ExamServer.exe
-const updateServer = async (latestVersion) => {
+const updateServer = async (latestVersion, win, createMenuCallback) => {
     try {
         const zipUrl = `${constants.remoteZipBaseUrl}/server-${latestVersion}.zip`; // 构造下载 URL
         const zipPath = path.join(constants.serverPath, 'IES.ExamServer.zip');
@@ -153,7 +165,19 @@ const updateServer = async (latestVersion) => {
         console.log('Starting IES.ExamServer...');
         await serverManager.startServer();
         console.log('IES.ExamServer started successfully.');
-
+        // 5. 重新加载页面
+        if (win) {
+            win.loadURL(constants.baseUrl, {
+                agent: constants.agent
+            });
+        }
+        // 6. 更新菜单栏
+        //menuManager.createMenu(win); // 更新成功后更新菜单
+        if (typeof createMenuCallback === 'function') {
+            createMenuCallback(win); // 确保回调函数是函数
+        } else {
+            console.error('createMenuCallback is not a function');
+        }
         const { response } = await dialog.showMessageBox({
             type: 'info',
             title: '版本更新',