const { app, BrowserWindow, Menu } = require("electron"); const path = require("path"); const { readConfigFile } = require('./getConfig'); // 获取配置文件 const config = readConfigFile(); // console.log(config); const { protocol, serviceIp, port } = config; const remoteUrl = `${protocol}://${serviceIp}:${port}/fg/`; // console.log(remoteUrl); let win = null; let loadingWin = null; // 单例锁 const gotTheLock = app.requestSingleInstanceLock(); if (!gotTheLock) { app.quit(); } else { app.on("second-instance", (event, commandLine, workingDirectory) => { // 当运行第二个实例时,将会聚焦到myWindow这个窗口 if (win) { if (win.isMinimized()) win.restore(); win.focus(); } }); } // Scheme must be registered before the app is ready // protocol.registerSchemesAsPrivileged([ // { scheme: "app", privileges: { secure: true, standard: true, stream: true } }, // ]); // TODO debug; // win.webContents.openDevTools() Menu.setApplicationMenu(null); // loading 窗口 // const loadingURL = isDevelopment // ? path.join(__dirname, "./loading.html") // : `file://${__dirname}/loading.html`; const loadingURL = `file://${__dirname}/loading.html`; const showLoading = (cb) => { loadingWin = new BrowserWindow({ // show: false, frame: false, width: 260, height: 260, resizable: false, transparent: true, // webPreferences: { // preload: path.join(__dirname, "./preload.js"), // }, }); // loadingWin.webContents.openDevTools(); loadingWin.loadURL(loadingURL); loadingWin.setSkipTaskbar(true); // loadingWin.show(); cb(true); // 启动java程序 // if (platform === 'win32') { // ipcMain.once('renderer-ready', (event, data) => { // let dir = path.resolve(__dirname, '..'); // serverProcess = require('child_process').execFile(dir + '/app_x64.exe'); // }); // } }; async function createWindow(wait) { // Create the browser window. win = new BrowserWindow({ show: !wait, width: 1000, height: 600, webPreferences: { // Use pluginOptions.nodeIntegration, leave this alone // See nklayman.github.io/vue-cli-plugin-electron-builder/guide/security.html#node-integration for more info // nodeIntegration: process.env.ELECTRON_NODE_INTEGRATION, // contextIsolation: !process.env.ELECTRON_NODE_INTEGRATION nodeIntegration: false, webSecurity: true, allowEval: false, allowRunningInsecureContent: false, contextIsolation: true, enableRemoteModule: false, // preload: path.join(__dirname, "preload.js"), }, }); // remote.enable(win.webContents); if (process.env.WEBPACK_DEV_SERVER_URL) { // Load the url of the dev server if in development mode await win.loadURL(process.env.WEBPACK_DEV_SERVER_URL); if (!process.env.IS_TEST) win.webContents.openDevTools(); } else { // createProtocol("app"); // Load the index.html when not in development // win.loadURL("app://./index.html"); // 加载远程地址 // win.loadURL("http://118.89.139.230:8919/fg/"); // win.loadURL('http://192.168.10.79:8919/fg/'); // win.loadURL('http://192.168.10.80:8919/fg/'); win.loadURL(remoteUrl); } if (wait) { // setTimeout(() => { // loadingWin.hide(); // loadingWin.close(); // win.show(); // }, 6000); win.once("ready-to-show", () => { loadingWin.hide(); loadingWin.close(); win.show(); }); } } // Quit when all windows are closed. app.on("window-all-closed", () => { // On macOS it is common for applications and their menu bar // to stay active until the user quits explicitly with Cmd + Q if (process.platform !== "darwin") { app.quit(); } }); app.on("activate", () => { log.info("app activate event"); // On macOS it's common to re-create a window in the app when the // dock icon is clicked and there are no other windows open. if (BrowserWindow.getAllWindows().length === 0) createWindow(); }); // This method will be called when Electron has finished // initialization and is ready to create browser windows. // Some APIs can only be used after this event occurs. app.on("ready", async () => { showLoading(createWindow); });