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