From 0982fdd16e7d857d488b63c5967b1911ea314684 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=90=8C=E6=A3=AE?= Date: Sat, 29 Jun 2024 00:41:06 +0800 Subject: [PATCH] =?UTF-8?q?=E7=B3=BB=E7=BB=9F=E6=89=98=E7=9B=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- forge.config.js | 18 ++++++++++++----- iyuu.ico | Bin 0 -> 48536 bytes main.js | 49 ++++++++++++++++++++++++++++++++++++++++------- menu/menu.js | 43 +++++++++++++++++++++++++---------------- menu/tray.js | 43 +++++++++++++++++++++++++++++++++++++++++ server/server.js | 6 +----- 6 files changed, 126 insertions(+), 33 deletions(-) create mode 100644 iyuu.ico create mode 100644 menu/tray.js diff --git a/forge.config.js b/forge.config.js index 65fde88..2f78b2f 100644 --- a/forge.config.js +++ b/forge.config.js @@ -4,30 +4,38 @@ const { FuseV1Options, FuseVersion } = require('@electron/fuses'); module.exports = { packagerConfig: { asar: true, - icon: 'iyuu.png', + icon: 'iyuu', extraResource: [ 'run/', 'iyuu/', - "run.bat" ] }, rebuildConfig: {}, makers: [ { name: '@electron-forge/maker-squirrel', - config: {}, + config: { + setupIcon: 'iyuu.ico', + }, }, { name: '@electron-forge/maker-zip', platforms: ['darwin'], + config: { + icon: 'iyuu.icns', + } }, { name: '@electron-forge/maker-deb', - config: {}, + config: { + icon: 'iyuu.png', + }, }, { name: '@electron-forge/maker-rpm', - config: {}, + config: { + icon: 'iyuu.png', + }, }, ], plugins: [ diff --git a/iyuu.ico b/iyuu.ico new file mode 100644 index 0000000000000000000000000000000000000000..096f5e62318d706d1c65653e472b6e662a2ff443 GIT binary patch literal 48536 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 eugC~C#s34(iuvKLgWxg%0000 { webPreferences: { nodeIntegration: true, contextIsolation: false, + devTools: false, + webSecurity: false, + allowRunningInsecureContent: true, preload: path.join(__dirname, 'preload.js') } }) require("./menu/menu.js") + require("./menu/tray.js") - win.loadURL('http://127.0.0.1:8787') + const url = require('url').format({ + protocol: 'http', + slashes: true, + hostname: '127.0.0.1', + port: 8787 + }) + + win.loadURL(url) + + win.on('minimize', (event) => { + event.preventDefault() + win.hide() + }) + + win.on('close', (event) => { + event.preventDefault() + win.hide() + }) } app.whenReady().then(() => { @@ -35,17 +56,31 @@ app.whenReady().then(() => { setTimeout(() => { createWindow() - app.on('activate', () => { - if (BrowserWindow.getAllWindows().length === 0) createWindow() - }) }, 5000) }) -app.on('window-all-closed', () => { - server.stopServer() - if (process.platform !== 'darwin') app.quit() +app.on('activate', () => { + if (BrowserWindow.getAllWindows().length === 0) { + createWindow() + } else { + app.show() + BrowserWindow.getAllWindows().forEach(win => { + win.show() + }) + } }) +app.on('window-all-closed', () => { + BrowserWindow.getAllWindows().forEach(win => { + win.hide() + }) + app.hide() +}) + +app.on('before-quit', () => { + server.stopServer() + log.info('App is quitting...'); +}) process.on('uncaughtException', (error) => { log.error('Uncaught Exception:', error); diff --git a/menu/menu.js b/menu/menu.js index 3063170..a4a1653 100644 --- a/menu/menu.js +++ b/menu/menu.js @@ -5,6 +5,14 @@ let template = [ { label: "IYUU", submenu: [ + { + label: "刷新", + click: () => { + BrowserWindow.getAllWindows().forEach(win => { + win.reload() + }) + } + }, { label: "重启服务", click: () => { @@ -13,7 +21,7 @@ let template = [ BrowserWindow.getAllWindows().forEach(win => { win.reload() }) - }, 1000) + }, 2000) } }, @@ -39,6 +47,23 @@ let template = [ { label: "帮助", submenu: [ + { + label: "问题反馈", + click: () => { + let win = new BrowserWindow({ + width: 800, + height: 600, + webPreferences: { + nodeIntegration: true, + contextIsolation: false, + } + }); + win.loadURL("https://gitee.com/qyg2297248353/iyuuplus-windows/issues"); + win.on("closed", () => { + win = null; + }); + } + }, { label: "新疆萌森软件开发工作室提供技术支持", click: () => { @@ -57,21 +82,7 @@ let template = [ } }, { - label: "问题反馈", - click: () => { - let win = new BrowserWindow({ - width: 800, - height: 600, - webPreferences: { - nodeIntegration: true, - contextIsolation: false, - } - }); - win.loadURL("https://gitee.com/qyg2297248353/iyuuplus-windows/issues"); - win.on("closed", () => { - win = null; - }); - } + label: "关于" } ] } diff --git a/menu/tray.js b/menu/tray.js new file mode 100644 index 0000000..05748a1 --- /dev/null +++ b/menu/tray.js @@ -0,0 +1,43 @@ +const { app, Menu, Tray, BrowserWindow } = require("electron") +const path = require('node:path') +const server = require('../server/server'); + +const tray = new Tray('iyuu.ico'); + +const contextMenu = Menu.buildFromTemplate([{ + label: '打开主窗口', + click: () => { + BrowserWindow.getAllWindows().forEach(win => { + win.show() + }) + } +}, { + label: '重启服务', + click: () => { + BrowserWindow.getAllWindows().forEach(win => { + win.hide() + }) + server.restartServer() + setTimeout(() => { + BrowserWindow.getAllWindows().forEach(win => { + win.show() + win.reload() + }) + }, 1000) + } +}, +{ + label: '退出', + click: () => { + app.quit() + } +} +]); + +tray.setToolTip('IYUU'); +tray.setContextMenu(contextMenu); + +tray.on('double-click', () => { + win.isVisible() ? win.hide() : win.show() + win.isVisible() ? win.setSkipTaskbar(false) : win.setSkipTaskbar(true); +}); \ No newline at end of file diff --git a/server/server.js b/server/server.js index b9114fc..600dba9 100644 --- a/server/server.js +++ b/server/server.js @@ -28,10 +28,7 @@ function startServer() { env.Path = `${phpDir};${env.Path}`; const workingDir = path.resolve(path.join(resourcePath, 'iyuu')); - const batFile = path.join('windows.bat'); - // batFile 父目录 - - + log.info(`[IYUU] 工作目录: ${workingDir}`); // serverProcess = exec(`cmd /c ${batPath}`, { @@ -93,7 +90,6 @@ function startServer() { serverProcess.on("close", function (code) { log.info("[IYUU] 服务退出:" + code); - restartServer(); }); }