From 50b12f54d874b01c64962fd6a95697b817721182 Mon Sep 17 00:00:00 2001 From: ziajka Date: Thu, 28 Feb 2019 15:07:06 +0100 Subject: [PATCH] Run local server while inside packed version, Fixes: #310 --- electron-builder.yml | 3 +++ local-server.js | 58 +++++++++++++++++++++++++++++--------------- 2 files changed, 41 insertions(+), 20 deletions(-) diff --git a/electron-builder.yml b/electron-builder.yml index 97cfb4f3..0b0ad7b3 100644 --- a/electron-builder.yml +++ b/electron-builder.yml @@ -17,6 +17,9 @@ files: - local-server.js - package.json +extraFiles: + - dist/exe.gns3server/** + mac: category: public.app-category.developer-tools # publish: github diff --git a/local-server.js b/local-server.js index fc982fa5..6e6e8285 100644 --- a/local-server.js +++ b/local-server.js @@ -3,34 +3,23 @@ const kill = require('tree-kill'); const path = require('path'); const fs = require('fs'); const { ipcMain } = require('electron') +const { app } = require('electron') const isWin = /^win/.test(process.platform); let runningServers = {}; exports.getLocalServerPath = async () => { - const distDirectory = path.join(__dirname, 'dist'); - if (!fs.existsSync(distDirectory)) { - return; - } + const lookupDirectories = [ + __dirname, + path.dirname(app.getPath('exe')) + ]; - const files = fs.readdirSync(distDirectory); - - let serverPath = null; - - files.forEach((directory) => { - if(directory.startsWith('exe.')) { - if (isWin) { - serverPath = path.join(__dirname, 'dist', directory, 'gns3server.exe'); - } - else { - serverPath = path.join(__dirname, 'dist', directory, 'gns3server'); - } + for(var directory of lookupDirectories) { + const serverPath = await findLocalServerPath(directory); + if(serverPath !== undefined) { + return serverPath; } - }); - - if(serverPath !== null && fs.existsSync(serverPath)) { - return serverPath; } return; @@ -54,6 +43,35 @@ exports.stopAllLocalServers = async () => { return await stopAll(); } +async function findLocalServerPath(baseDirectory) { + const distDirectory = path.join(baseDirectory, 'dist'); + + if (!fs.existsSync(distDirectory)) { + return; + } + + const files = fs.readdirSync(distDirectory); + + let serverPath = null; + + files.forEach((directory) => { + if(directory.startsWith('exe.')) { + if (isWin) { + serverPath = path.join(baseDirectory, 'dist', directory, 'gns3server.exe'); + } + else { + serverPath = path.join(baseDirectory, 'dist', directory, 'gns3server'); + } + } + }); + + if(serverPath !== null && fs.existsSync(serverPath)) { + return serverPath; + } + + return; +} + function getServerArguments(server, overrides) { let serverArguments = []; if(server.host) {