From d1ec72c2a02db76467d66b49ee14e6d9a74cea5c Mon Sep 17 00:00:00 2001 From: Benjamin Pasero Date: Fri, 7 Sep 2018 17:39:21 +0200 Subject: [PATCH] fix ASAR for windows --- src/bootstrap-window.js | 10 +++++++++- src/bootstrap.js | 12 +++++++----- 2 files changed, 16 insertions(+), 6 deletions(-) diff --git a/src/bootstrap-window.js b/src/bootstrap-window.js index aecdff764af..957ee7281e0 100644 --- a/src/bootstrap-window.js +++ b/src/bootstrap-window.js @@ -36,6 +36,7 @@ exports.assign = function assign(destination, source) { exports.load = function (modulePaths, resultCallback, options) { // @ts-ignore const webFrame = require('electron').webFrame; + const path = require('path'); const args = exports.parseURLQueryArgs(); const configuration = JSON.parse(args['config'] || '{}') || {}; @@ -55,7 +56,14 @@ exports.load = function (modulePaths, resultCallback, options) { exports.assign(process.env, configuration.userEnv); // Enable ASAR support - bootstrap.enableASARSupport(); + // Note: On windows we have to be careful about the drive letter casing. If + // the drive letter case is lowercase, we convert it to uppercase. DO NOT + // CHANGE THIS logic or otherwise loading will fail in windows. + let nodeModulesPath = path.join(configuration.appRoot, 'node_modules'); + if (process.platform === 'win32' && /[a-z]\:/.test(nodeModulesPath)) { + nodeModulesPath = nodeModulesPath.charAt(0).toUpperCase() + nodeModulesPath.substr(1); // Make drive letter uppercase + } + bootstrap.enableASARSupport(nodeModulesPath); // disable pinch zoom & apply zoom level early to avoid glitches const zoomLevel = configuration.zoomLevel; diff --git a/src/bootstrap.js b/src/bootstrap.js index 58c74c3f4aa..d2b6e42affb 100644 --- a/src/bootstrap.js +++ b/src/bootstrap.js @@ -21,14 +21,16 @@ process.on('SIGPIPE', () => { //#endregion //#region Add support for using node_modules.asar -exports.enableASARSupport = function () { +/** + * @param {string=} nodeModulesPath + */ +exports.enableASARSupport = function (nodeModulesPath) { // @ts-ignore const Module = require('module'); const path = require('path'); - - let NODE_MODULES_PATH = path.join(__dirname, '../node_modules'); - if (process.platform === 'win32' && /[a-z]\:/.test(NODE_MODULES_PATH)) { - NODE_MODULES_PATH = NODE_MODULES_PATH.charAt(0).toUpperCase() + NODE_MODULES_PATH.substr(1); // Make drive letter uppercase + let NODE_MODULES_PATH = nodeModulesPath; + if (!NODE_MODULES_PATH) { + NODE_MODULES_PATH = path.join(__dirname, '../node_modules'); } const NODE_MODULES_ASAR_PATH = NODE_MODULES_PATH + '.asar'; -- GitLab