1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586 |
- "use strict";
- import { app, protocol, BrowserWindow } from "electron";
- import { createProtocol } from "vue-cli-plugin-electron-builder/lib";
- import installExtension, { VUEJS_DEVTOOLS } from "electron-devtools-installer";
- const isDevelopment = process.env.NODE_ENV !== "production";
- // Scheme must be registered before the app is ready
- protocol.registerSchemesAsPrivileged([
- { scheme: "app", privileges: { secure: true, standard: true } },
- ]);
- async function createWindow() {
- // Create the browser window.
- const win = new BrowserWindow({
- width: 800,
- height: 600,
- fullscreen: true,
- 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 as unknown as boolean,
- contextIsolation: !process.env.ELECTRON_NODE_INTEGRATION,
- },
- });
- 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 as string);
- 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.setMenu(null);
- win.webContents.openDevTools();
- }
- // 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", () => {
- // 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 () => {
- if (isDevelopment && !process.env.IS_TEST) {
- // Install Vue Devtools
- try {
- await installExtension(VUEJS_DEVTOOLS);
- } catch (e) {
- // @ts-ignore
- console.error("Vue Devtools failed to install:", e.toString());
- }
- }
- createWindow();
- });
- // Exit cleanly on request from parent process in development mode.
- if (isDevelopment) {
- if (process.platform === "win32") {
- process.on("message", (data) => {
- if (data === "graceful-exit") {
- app.quit();
- }
- });
- } else {
- process.on("SIGTERM", () => {
- app.quit();
- });
- }
- }
|