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);
|
});
|