From 9a808beeccb05481feab511c30d30b16dc2a22ab Mon Sep 17 00:00:00 2001 From: Felix Rieseberg Date: Wed, 6 Sep 2023 08:52:08 -0700 Subject: [PATCH] fix: Run app.setAppPath() with the right path (#78) * Fix: Run app.setAppPath() with the right path * Implement feedback <3 * test: Add linting --- entry-asar/has-asar.js | 23 +++++++++++++++++++++-- entry-asar/no-asar.js | 21 +++++++++++++++++++-- package.json | 6 +++--- 3 files changed, 43 insertions(+), 7 deletions(-) diff --git a/entry-asar/has-asar.js b/entry-asar/has-asar.js index 9e37f7d..369a7f7 100644 --- a/entry-asar/has-asar.js +++ b/entry-asar/has-asar.js @@ -1,7 +1,26 @@ +const path = require('path'); + if (process.arch === 'arm64') { - process._archPath = require.resolve('../app-arm64.asar'); + setPaths('arm64'); } else { - process._archPath = require.resolve('../app-x64.asar'); + setPaths('x64'); +} + +function setPaths(platform) { + // This should return the full path, ending in something like + // Notion.app/Contents/Resources/app.asar + const appPath = app.getAppPath(); + const asarFile = `app-${platform}.asar`; + + // Maybe we'll handle this in Electron one day + if (path.basename(appPath) === 'app.asar') { + const platformAppPath = path.join(path.dirname(appPath), asarFile); + + // This is an undocumented API. It exists. + app.setAppPath(platformAppPath); + } + + process._archPath = require.resolve(`../${asarFile}`); } require(process._archPath); diff --git a/entry-asar/no-asar.js b/entry-asar/no-asar.js index 5391363..abe0af5 100644 --- a/entry-asar/no-asar.js +++ b/entry-asar/no-asar.js @@ -1,7 +1,24 @@ if (process.arch === 'arm64') { - process._archPath = require.resolve('../app-arm64'); + setPaths('arm64'); } else { - process._archPath = require.resolve('../app-x64'); + setPaths('x64'); +} + +function setPaths(platform) { + // This should return the full path, ending in something like + // Notion.app/Contents/Resources/app + const appPath = app.getAppPath(); + const appFolder = `app-${platform}`; + + // Maybe we'll handle this in Electron one day + if (path.basename(appPath) === 'app') { + const platformAppPath = path.join(path.dirname(appPath), appFolder); + + // This is an undocumented private API. It exists. + app.setAppPath(platformAppPath); + } + + process._archPath = require.resolve(`../${appFolder}`); } require(process._archPath); diff --git a/package.json b/package.json index 32fed1d..b8b3934 100644 --- a/package.json +++ b/package.json @@ -25,8 +25,8 @@ "author": "Samuel Attard", "scripts": { "build": "tsc && tsc -p tsconfig.esm.json", - "lint": "prettier --check \"src/**/*.ts\"", - "prettier:write": "prettier --write \"src/**/*.ts\"", + "lint": "prettier --check \"{src,entry-asar}/**/*.{js,ts}\"", + "prettier:write": "prettier --write \"{src,entry-asar}/**/*.{js,ts}\"", "prepublishOnly": "npm run build", "test": "exit 0", "prepare": "husky install" @@ -57,4 +57,4 @@ "prettier --write" ] } -} +} \ No newline at end of file