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 @@