diff --git a/package.json b/package.json index 8677fc4..969cc97 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "drehmal-installer", - "version": "0.2.0", + "version": "0.3.0", "description": "Drehmal, Minecraft map installer", "productName": "Drehmal Installer", "author": "jgaribsin", @@ -27,6 +27,7 @@ "extract-zip": "^2.0.1", "pinia": "^2.0.11", "quasar": "^2.14.2", + "tar": "^6.2.0", "vue": "^3.0.0", "vue-i18n": "^9.2.2", "vue-router": "^4.0.0" @@ -35,6 +36,7 @@ "@intlify/vite-plugin-vue-i18n": "^3.3.1", "@quasar/app-vite": "^1.3.0", "@types/node": "^12.20.21", + "@types/tar": "^6.1.11", "@typescript-eslint/eslint-plugin": "^5.10.0", "@typescript-eslint/parser": "^5.10.0", "autoprefixer": "^10.4.2", diff --git a/src-electron/electron-main.ts b/src-electron/electron-main.ts index e25d1c3..7a44ece 100644 --- a/src-electron/electron-main.ts +++ b/src-electron/electron-main.ts @@ -4,7 +4,6 @@ import log from 'electron-log'; import Listeners from './ipcListeners'; const path = require('path'); const os = require('os'); -const fs = require('fs'); import { version } from '../package.json'; @@ -18,18 +17,8 @@ const logFolder = path.join( 'logs' ); -const getLogFileName: () => string = () => { - let index = 1; - let name = `${currDate}_${index}-installer.log`; - while (true) { - if (!fs.existsSync(path.join(logFolder, name))) break; - else name = `${currDate}_${index++}-installer.log`; - } - return name; -}; -// can't use function call in resolve path as it'll create a new file for each logger instance -const logFileName = getLogFileName(); -log.transports.file.resolvePathFn = () => path.join(logFolder, logFileName); +log.transports.file.resolvePathFn = () => + path.join(logFolder, `${currDate}-installer.log`); log.transports.file.format = '[{h}:{i}:{s}.{ms}] [{level}] {text}'; // initialise logger for uncaught execptions diff --git a/src-electron/ipcListeners.ts b/src-electron/ipcListeners.ts index b3d21d5..38bb4e5 100644 --- a/src-electron/ipcListeners.ts +++ b/src-electron/ipcListeners.ts @@ -28,34 +28,16 @@ export default class Listeners { dialog = electronDialog; browserWindow.webContents.on('will-navigate', (event, url) => { - if (url.startsWith('open-java-page://')) { - event.preventDefault(); - shell.openExternal('https://www.java.com/en/download/manual.jsp'); - } else if (url.startsWith('open-jdk-page://')) { - event.preventDefault(); - switch (process.platform) { - case 'win32': - shell.openExternal( - 'https://www.oracle.com/java/technologies/downloads/#jdk21-windows' - ); - break; - case 'darwin': - shell.openExternal( - 'https://www.oracle.com/java/technologies/downloads/#jdk21-mac' - ); - break; - case 'linux': - shell.openExternal( - 'https://www.oracle.com/java/technologies/downloads/#jdk21-linux' - ); - break; - default: - shell.openExternal( - 'https://www.oracle.com/java/technologies/downloads/#java21' - ); - break; - } - } + // For custom URLs, use the following (must be above generic openExternal) + // if (url.startsWith('open-java-page://')) { + // event.preventDefault(); + // shell.openExternal('https://www.java.com/en/download/manual.jsp'); + // } + // Will be used with: Java Downloads Page + + // To open URLs in an external browser + event.preventDefault(); + shell.openExternal(url); }); } } @@ -132,40 +114,7 @@ ipcMain.handle( }) ); -ipcMain.handle('checkJava', () => { - return new Promise((resolve, reject) => { - exec( - 'java -version', - (error: Error | null, stdout: string, stderr: string) => { - if (error) reject(error); - else resolve(stdout || stderr); - } - ); - }); -}); - ipcMain.handle('execute', (_event, cmd) => { console.log(`Executing command: ${cmd}`); exec(cmd); }); - -ipcMain.handle( - 'checkJDK', - () => - new Promise((resolve) => { - exec( - 'java -version', - (error: Error | null, stdout: string, stderr: string) => { - if (error) resolve(0); // Resolve with 0 on error - else { - const match = stderr.match(/version "(.*?)"/); - const javaVersion = match ? match[1] : null; - console.log(`Java Version found: ${javaVersion}!`); - if (javaVersion) - resolve(parseInt(javaVersion)); // Resolve with the JDK version - else resolve(0); // Resolve with 0 if the version cannot be determined - } - } - ); - }) -); diff --git a/src/components/CloseInstaller.vue b/src/components/CloseInstaller.vue index c8afe61..5b72868 100644 --- a/src/components/CloseInstaller.vue +++ b/src/components/CloseInstaller.vue @@ -67,7 +67,7 @@ const click = () => { if (launchButton.value === true && installType.value !== 'server') { if (platform.value === 'win32') { console.log( - `Launching Minecraft on ${platform.value} with file: ${windowsPath}` + `Launching Minecraft on ${platform.value} with file: "${windowsPath}"` ); ipcRenderer.invoke('minecraftWin', windowsPath).then(() => { console.log('Minecraft launched, exiting...'); diff --git a/src/components/ServerPath.vue b/src/components/ServerPath.vue index 60a7adb..1b0c838 100644 --- a/src/components/ServerPath.vue +++ b/src/components/ServerPath.vue @@ -16,9 +16,8 @@