Added desktop shortcuts

This commit is contained in:
Pax1601 2024-01-01 18:48:31 +01:00
parent bf93b8e90a
commit 086b6736b0
5 changed files with 72 additions and 43 deletions

View File

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

View File

@ -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();
},

View File

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

View File

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

View File

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