This commit is contained in:
rosetta
2026-01-30 05:01:05 +02:00
commit 83f38dc63f
327 changed files with 18725 additions and 0 deletions

View File

@@ -0,0 +1,67 @@
import { app, BrowserWindow, ipcMain } from "electron";
import fs from 'fs/promises'
import { WORKING_DIR } from "../constants";
import path from "path";
import { Logger } from "../logger";
const logger = Logger('bootloader');
ipcMain.handleOnce('report-boot-process-failed', async () => {
/**
* Если процесс загрузки не завершился успешно, то preload показывает
* экран ошибки, а нам нужно откатиться назад к загрузке dev.html
* и удалить скомпилированные файлы, чтобы при следующем запуске
* приложение попыталось загрузиться в режиме разработки.
*/
let filePath = path.join(WORKING_DIR, 'b');
await fs.rmdir(filePath, { recursive: true });
logger.log("Boot process failed, removed compiled files");
logger.log(`Removed compiled files at ${filePath}`);
logger.log(`Restarting application in safe mode`);
app.relaunch();
app.exit(0);
});
/**
* Boot функция, эта функция запускает приложение
* @param window окно
*/
export async function boot(window : BrowserWindow) {
if (!app.isPackaged && process.env['ELECTRON_RENDERER_URL']) {
await bootDevelopment(window);
// await bootProduction(window);
window.webContents.openDevTools({ mode: 'detach' });
//console.info(window.webContents);
return;
}
//window.webContents.openDevTools({ mode: 'detach' });
await bootProduction(window);
}
async function bootProduction(window : BrowserWindow) {
logger.log("Booting in production mode");
let html = path.join(WORKING_DIR, 'b', 'j.html');
if(await existsFile(html)){
logger.log(`Loading compiled file`);
window.loadFile(html);
} else {
logger.log(`Loading conatiner file`);
window.loadFile(path.join(__dirname, '../renderer/dev.html'));
}
}
async function bootDevelopment(window : BrowserWindow) {
logger.log("Booting in development mode");
window.loadURL(process.env['ELECTRON_RENDERER_URL'] + "/dev.html");
window.webContents.openDevTools({ mode: 'detach' });
}
async function existsFile(filePath: string): Promise<boolean> {
try {
await fs.access(filePath);
return true;
} catch {
return false;
}
}