From 086b6736b0b4dcd4ac2d11fe1716e5f001479dde Mon Sep 17 00:00:00 2001 From: Pax1601 Date: Mon, 1 Jan 2024 18:48:31 +0100 Subject: [PATCH] Added desktop shortcuts --- manager/DCS.openbeta.log | 3 + manager/javascripts/dcsinstance.js | 7 +- manager/javascripts/filesystem.js | 100 +++++++++++++++++------------ manager/package.json | 1 - manager/stylesheets/style.css | 4 ++ 5 files changed, 72 insertions(+), 43 deletions(-) diff --git a/manager/DCS.openbeta.log b/manager/DCS.openbeta.log index 9cc04389..03b090bb 100644 --- a/manager/DCS.openbeta.log +++ b/manager/DCS.openbeta.log @@ -30,3 +30,6 @@ Copyright (C) Microsoft Corporation. Tutti i diritti riservati. Microsoft (R) Windows Script Host Versione 5.812 Copyright (C) Microsoft Corporation. Tutti i diritti riservati. +Microsoft (R) Windows Script Host Versione 5.812 +Copyright (C) Microsoft Corporation. Tutti i diritti riservati. + diff --git a/manager/javascripts/dcsinstance.js b/manager/javascripts/dcsinstance.js index 69fc812f..2d23b207 100644 --- a/manager/javascripts/dcsinstance.js +++ b/manager/javascripts/dcsinstance.js @@ -85,7 +85,10 @@ class DCSInstance { } this.installed = true; - const options = { compareContent: true }; + const options = { + compareContent: true, + excludeFilter: "databases" + }; var err1 = true; var err2 = true; var res1; @@ -311,7 +314,7 @@ class DCSInstance { uninstall() { showConfirmPopup("Are you sure you want to completely remove this Olympus installation?", () => - uninstallInstance(this.folder).then( + uninstallInstance(this.folder, this.name).then( () => { location.reload(); }, diff --git a/manager/javascripts/filesystem.js b/manager/javascripts/filesystem.js index 19486d5a..45555d9c 100644 --- a/manager/javascripts/filesystem.js +++ b/manager/javascripts/filesystem.js @@ -2,7 +2,30 @@ const sha256 = require('sha256') const createShortcut = require('create-desktop-shortcuts'); const fs = require('fs'); const path = require('path'); -const { showErrorPopup, showWaitPopup } = require('./popup'); +const { showWaitPopup } = require('./popup'); +const homeDir = require('os').homedir(); + +async function deleteFile(filePath) { + console.log(`Deleting ${filePath}`); + var promise = new Promise((res, rej) => { + if (fs.existsSync(filePath)) { + fs.rm(filePath, (err) => { + if (err) { + console.error(`Error removing ${filePath}: ${err}`) + rej(err); + } + else { + console.log(`Removed ${filePath}`) + res(true); + } + }); + } + else { + res(true); + } + }) + return promise; +} async function fixInstances(instances) { var promise = new Promise((res, rej) => { @@ -23,13 +46,14 @@ async function fixInstances(instances) { return promise; } -async function uninstallInstance(folder) { +async function uninstallInstance(folder, name) { console.log(`Uninstalling Olympus from ${folder}`) showWaitPopup("Please wait while the Olympus installation is being uninstalled.") var promise = new Promise((res, rej) => { deleteMod(folder) .then(() => deleteHooks(folder), (err) => { return Promise.reject(err); }) .then(() => deleteJSON(folder), (err) => { return Promise.reject(err); }) + .then(() => deleteShortCuts(folder, name), (err) => { return Promise.reject(err); }) .then(() => res(true), (err) => { rej(err) }); }) return promise; @@ -143,7 +167,27 @@ async function installShortCuts(folder, name) { } }); - if (res1 && res2) { + var res3 = createShortcut({ + windows: { + filePath: path.resolve(__dirname, '..', '..', 'client', 'client.vbs'), + name: `DCS Olympus Client (${name})`, + arguments: `"${path.join(folder, "Config", "olympus.json")}"`, + icon: path.resolve(__dirname, '..', '..', 'img', 'olympus.ico'), + workingDirectory: path.resolve(__dirname, '..', '..', 'client') + } + }); + + var res4 = createShortcut({ + windows: { + filePath: path.resolve(__dirname, '..', '..', 'client', 'server.vbs'), + name: `DCS Olympus Server (${name})`, + arguments: `"${path.join(folder, "Config", "olympus.json")}"`, + icon: path.resolve(__dirname, '..', '..', 'img', 'olympus_server.ico'), + workingDirectory: path.resolve(__dirname, '..', '..', 'client') + } + }); + + if (res1 && res2 && res3 && res4) { res(true); } else { rej("An error occurred while creating the shortcuts") @@ -154,23 +198,7 @@ async function installShortCuts(folder, name) { async function deleteHooks(folder) { console.log(`Deleting hooks from ${folder}`); - var promise = new Promise((res, rej) => { - if (fs.existsSync(path.join(folder, "Scripts", "Hooks", "OlympusHook.lua"))) { - fs.rm(path.join(folder, "Scripts", "Hooks", "OlympusHook.lua"), (err) => { - if (err) { - console.log(`Error removing hooks from ${folder}: ${err}`) - rej(err); - } - else { - console.log(`Hooks succesfully removed from ${folder}`) - res(true); - } - }); - } else { - res(true); - } - }) - return promise; + return deleteFile(path.join(folder, "Scripts", "Hooks", "OlympusHook.lua")); } async function deleteMod(folder) { @@ -196,28 +224,19 @@ async function deleteMod(folder) { async function deleteJSON(folder) { console.log(`Deleting JSON from ${folder}`); - var promise = new Promise((res, rej) => { - if (fs.existsSync(path.join(folder, "Config", "olympus.json"))) { - fs.rm(path.join(folder, "Config", "olympus.json"), (err) => { - if (err) { - console.log(`Error removing JSON from ${folder}: ${err}`) - rej(err); - } - else { - console.log(`JSON succesfully removed from ${folder}`) - res(true); - } - }); - } - else { - res(true); - } - }) - return promise; + return deleteFile(path.join(folder, "Config", "olympus.json")); } -async function deleteShortCuts() { - +async function deleteShortCuts(folder, name) { + console.log(`Deleting ShortCuts from ${folder}`); + var promise = new Promise((res, rej) => { + deleteFile(path.join(folder, `DCS Olympus Server (${name}).lnk`)) + .then(deleteFile(path.join(folder, `DCS Olympus Client (${name}).lnk`)), (err) => { return Promise.reject(err); }) + .then(deleteFile(path.join(homeDir, "Desktop", `DCS Olympus Server (${name}).lnk`)), (err) => { return Promise.reject(err); }) + .then(deleteFile(path.join(homeDir, "Desktop", `DCS Olympus Client (${name}).lnk`)), (err) => { return Promise.reject(err); }) + .then(() => {res(true)}, (err) => { rej(err) }) + }); + return promise; } module.exports = { @@ -230,5 +249,6 @@ module.exports = { deleteHooks: deleteHooks, deleteJSON: deleteJSON, deleteMod: deleteMod, + deleteShortCuts: deleteShortCuts, uninstallInstance: uninstallInstance } diff --git a/manager/package.json b/manager/package.json index 1940f2da..7d7e524e 100644 --- a/manager/package.json +++ b/manager/package.json @@ -10,7 +10,6 @@ "license": "ISC", "dependencies": { "create-desktop-shortcuts": "^1.10.1", - "create-windowless-app": "^11.0.0", "dir-compare": "^4.2.0", "ejs": "^3.1.9", "electron": "^28.0.0", diff --git a/manager/stylesheets/style.css b/manager/stylesheets/style.css index 79fc17d0..27b01838 100644 --- a/manager/stylesheets/style.css +++ b/manager/stylesheets/style.css @@ -74,6 +74,10 @@ body { background-image: url("../icons/xmark-solid.svg"); } +.close:hover { + background-color: darkred; +} + .title-bar-button { -webkit-app-region: no-drag; }