gaoshuaixing hace 1 año
padre
commit
cacab21ad2

+ 2 - 2
README.md

@@ -1,7 +1,7 @@
 [![star](https://gitee.com/dromara/electron-egg/badge/star.svg?theme=gvp)](https://gitee.com/dromara/electron-egg/stargazers)
 
 <div align=center>
-<h3>🎉🎉🎉 ElectronEgg V3.10.0已发布! 🎉🎉🎉</h3>
+<h3>🎉🎉🎉 ElectronEgg V3.11.0已发布! 🎉🎉🎉</h3>
 </div>
 <br>
 
@@ -22,7 +22,7 @@
 - 🍩 **为什么使用?** 桌面软件(办公方向、 个人工具),仍然是未来十几年PC端需求之一,提高工作效率
 - 🍉 **简单:** 只需懂 JavaScript
 - 🍑 **愿景:** 所有开发者都能学会桌面软件研发
-- 🍰 **gitee:** https://gitee.com/dromara/electron-egg **4300+**
+- 🍰 **gitee:** https://gitee.com/dromara/electron-egg **4400+**
 - 🍨 **github:** https://github.com/dromara/electron-egg **1400+**
 - 🏆 码云最有价值开源项目
     ![](https://wallace5303.gitee.io/ee/images/electron-egg/ee-zs.png)    

+ 2 - 2
README.zh-CN.md

@@ -1,7 +1,7 @@
 [![star](https://gitee.com/dromara/electron-egg/badge/star.svg?theme=gvp)](https://gitee.com/dromara/electron-egg/stargazers)
 
 <div align=center>
-<h3>🎉🎉🎉 ElectronEgg V3.10.0已发布! 🎉🎉🎉</h3>
+<h3>🎉🎉🎉 ElectronEgg V3.11.0已发布! 🎉🎉🎉</h3>
 </div>
 <br>
 
@@ -22,7 +22,7 @@
 - 🍩 **为什么使用?** 桌面软件(办公方向、 个人工具),仍然是未来十几年PC端需求之一,提高工作效率
 - 🍉 **简单:** 只需懂 JavaScript
 - 🍑 **愿景:** 所有开发者都能学会桌面软件研发
-- 🍰 **gitee:** https://gitee.com/dromara/electron-egg **4300+**
+- 🍰 **gitee:** https://gitee.com/dromara/electron-egg **4400+**
 - 🍨 **github:** https://github.com/dromara/electron-egg **1400+**
 - 🏆 码云最有价值开源项目
     ![](https://wallace5303.gitee.io/ee/images/electron-egg/ee-zs.png)    

+ 51 - 143
electron/addon/autoUpdater/index.js

@@ -1,165 +1,73 @@
-const { app: electronApp } = require('electron');
-const { autoUpdater } = require("electron-updater");
-const is = require('ee-core/utils/is');
+const { Tray, Menu } = require('electron');
+const path = require('path');
+const Ps = require('ee-core/ps');
 const Log = require('ee-core/log');
-const Conf = require('ee-core/config');
+const Electron = require('ee-core/electron');
 const CoreWindow = require('ee-core/electron/window');
+const Conf = require('ee-core/config');
+const EE = require('ee-core/ee');
 
 /**
- * 自动升级插件
+ * 托盘插件
  * @class
  */
-class AutoUpdaterAddon {
+class TrayAddon {
 
   constructor() {
+    this.tray = null;
   }
 
   /**
-   * 创建
+   * 创建托盘
    */
   create () {
-    Log.info('[addon:autoUpdater] load');
-    const cfg = Conf.getValue('addons.autoUpdater');
-    if ((is.windows() && cfg.windows)
-        || (is.macOS() && cfg.macOS)
-        || (is.linux() && cfg.linux))
-    {
-      // continue
-    } else {
-      return
-    }
-
-    // 是否检查更新
-    if (cfg.force) {
-      this.checkUpdate();
-    }
-
-    const status = {
-      error: -1,
-      available: 1,
-      noAvailable: 2,
-      downloading: 3,
-      downloaded: 4,
-    }
+    // 开发环境,代码热更新开启时,会导致托盘中有残影
+    if (Ps.isDev() && Ps.isHotReload()) return;
+    
+    Log.info('[addon:tray] load');
+    const { CoreApp } = EE;
+    const cfg = Conf.getValue('addons.tray');
+    const mainWindow = CoreWindow.getMainWindow();
 
-    const version = electronApp.getVersion();
-    Log.info('[addon:autoUpdater] current version: ', version);
+    // 托盘图标
+    let iconPath = path.join(Ps.getHomeDir(), cfg.icon);
   
-    // 设置下载服务器地址
-    let server = cfg.options.url;
-    let lastChar = server.substring(server.length - 1);
-    server = lastChar === '/' ? server : server + "/";
-    //Log.info('[addon:autoUpdater] server: ', server);
-    cfg.options.url = server;
-  
-    // 是否后台自动下载
-    autoUpdater.autoDownload = cfg.force ? true : false;
-  
-    try {
-      autoUpdater.setFeedURL(cfg.options);
-    } catch (error) {
-      Log.error('[addon:autoUpdater] setFeedURL error : ', error);
-    }
-  
-    autoUpdater.on('checking-for-update', () => {
-      //sendStatusToWindow('正在检查更新...');
-    })
-    autoUpdater.on('update-available', (info) => {
-      info.status = status.available;
-      info.desc = '有可用更新';
-      this.sendStatusToWindow(info);
-    })
-    autoUpdater.on('update-not-available', (info) => {
-      info.status = status.noAvailable;
-      info.desc = '没有可用更新';
-      this.sendStatusToWindow(info);
-    })
-    autoUpdater.on('error', (err) => {
-      let info = {
-        status: status.error,
-        desc: err
+    // 托盘菜单功能列表
+    let trayMenuTemplate = [
+      {
+        label: '显示',
+        click: function () {
+          mainWindow.show();
+        }
+      },
+      {
+        label: '退出',
+        click: function () {
+          CoreApp.appQuit();
+        }
       }
-      this.sendStatusToWindow(info);
-    })
-    autoUpdater.on('download-progress', (progressObj) => {
-      let percentNumber = parseInt(progressObj.percent);
-      let totalSize = this.bytesChange(progressObj.total);
-      let transferredSize = this.bytesChange(progressObj.transferred);
-      let text = '已下载 ' + percentNumber + '%';
-      text = text + ' (' + transferredSize + "/" + totalSize + ')';
+    ]
   
-      let info = {
-        status: status.downloading,
-        desc: text,
-        percentNumber: percentNumber,
-        totalSize: totalSize,
-        transferredSize: transferredSize
+    // 点击关闭,最小化到托盘
+    mainWindow.on('close', (event) => {
+      if (Electron.extra.closeWindow == true) {
+        return;
       }
-      Log.info('[addon:autoUpdater] progress: ', text);
-      this.sendStatusToWindow(info);
-    })
-    autoUpdater.on('update-downloaded', (info) => {
-      info.status = status.downloaded;
-      info.desc = '下载完成';
-      this.sendStatusToWindow(info);
-      autoUpdater.quitAndInstall();
-      // const mainWindow = CoreWindow.getMainWindow();
-      // if (mainWindow) {
-      //   mainWindow.destroy()
-      // }
-      // electronApp.appQuit()
+      mainWindow.hide();
+      event.preventDefault();
     });
+    
+    // 实例化托盘
+    this.tray = new Tray(iconPath);
+    this.tray.setToolTip(cfg.title);
+    const contextMenu = Menu.buildFromTemplate(trayMenuTemplate);
+    this.tray.setContextMenu(contextMenu);
+    // 左键单击的时候能够显示主窗口
+    this.tray.on('click', () => {
+      mainWindow.show()
+    })
   }
-
-  /**
-   * 检查更新
-   */
-  checkUpdate () {
-    autoUpdater.checkForUpdates();
-  }
-  
-  /**
-   * 下载更新
-   */
-  download () {
-    autoUpdater.downloadUpdate();
-  }
-
-  /**
-   * 向前端发消息
-   */
-  sendStatusToWindow(content = {}) {
-    const textJson = JSON.stringify(content);
-    const channel = 'app.updater';
-    const win = CoreWindow.getMainWindow();
-    win.webContents.send(channel, textJson);
-  }
-  
-  /**
-   * 单位转换
-   */
-  bytesChange (limit) {
-    let size = "";
-    if(limit < 0.1 * 1024){                            
-      size = limit.toFixed(2) + "B";
-    }else if(limit < 0.1 * 1024 * 1024){            
-      size = (limit/1024).toFixed(2) + "KB";
-    }else if(limit < 0.1 * 1024 * 1024 * 1024){        
-      size = (limit/(1024 * 1024)).toFixed(2) + "MB";
-    }else{                                            
-      size = (limit/(1024 * 1024 * 1024)).toFixed(2) + "GB";
-    }
-
-    let sizeStr = size + "";                        
-    let index = sizeStr.indexOf(".");                    
-    let dou = sizeStr.substring(index + 1 , index + 3);            
-    if(dou == "00"){
-        return sizeStr.substring(0, index) + sizeStr.substring(index + 3, index + 5);
-    }
-
-    return size;
-  }  
 }
 
-AutoUpdaterAddon.toString = () => '[class AutoUpdaterAddon]';
-module.exports = AutoUpdaterAddon;
+TrayAddon.toString = () => '[class TrayAddon]';
+module.exports = TrayAddon;

+ 1 - 0
electron/config/bin.js

@@ -21,6 +21,7 @@ module.exports = {
       directory: './',
       cmd: 'electron',
       args: ['.', '--env=local'],
+      loadingPage: '/public/html/loading.html',
     }
   },
 

+ 1 - 3
electron/config/config.default.js

@@ -114,15 +114,13 @@ module.exports = (appInfo) => {
   config.mainServer = {
     protocol: 'file://',
     indexPath: '/public/dist/index.html',
-    host: '127.0.0.1',
-    port: 7072,
   }; 
 
   /**
    * 硬件加速
    */
   config.hardGpu = {
-    enable: false
+    enable: true
   };
 
   /**

+ 0 - 2
electron/preload/index.js

@@ -11,6 +11,4 @@ module.exports = async () => {
   // 示例功能模块,可选择性使用和修改
   Addon.get('tray').create();
   Addon.get('security').create();
-  Addon.get('awaken').create();
-  Addon.get('autoUpdater').create();
 }

+ 3 - 3
package.json

@@ -1,6 +1,6 @@
 {
   "name": "ee",
-  "version": "3.10.0",
+  "version": "3.11.0",
   "description": "A fast, desktop software development framework",
   "main": "main.js",
   "scripts": {
@@ -46,7 +46,7 @@
   "devDependencies": {
     "@electron/rebuild": "^3.2.13",
     "debug": "^4.3.3",
-    "ee-bin": "^1.4.0",
+    "ee-bin": "^1.5.0",
     "electron": "^21.4.4",
     "electron-builder": "^23.6.0",
     "eslint": "^5.13.0",
@@ -55,7 +55,7 @@
   },
   "dependencies": {
     "dayjs": "^1.10.7",
-    "ee-core": "^2.8.1",
+    "ee-core": "^2.9.2",
     "electron-updater": "^5.3.0",
     "lodash": "^4.17.21"
   }