Skip to content

Commit e646164

Browse files
Fix load addon in electron and add warning to .asar
1 parent a0c5e7e commit e646164

File tree

3 files changed

+14
-9
lines changed

3 files changed

+14
-9
lines changed

package.json

+3
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,9 @@
3232
"engines": {
3333
"node": ">=16.0.0"
3434
},
35+
"binary": {
36+
"napi_versions": [8]
37+
},
3538
"scripts": {
3639
"install": "cmake-js compile",
3740
"build": "cmake-js rebuild",

src/addons.ts

+10-8
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,10 @@
11
import path from "node:path";
22
import fs from "node:fs/promises";
3-
4-
const __dirname = import.meta.dirname || path.dirname((await import("node:url")).fileURLToPath(import.meta.url));
5-
export const projectRoot: string = !process["resourcesPath"] ? path.resolve(__dirname, "..") : process["resourcesPath"];
3+
const __dirname = import.meta.dirname || path.dirname((await import("node:url")).fileURLToPath(import.meta.url)); // Solve current __dirname in ESM module
4+
export const projectRoot = path.resolve(__dirname, "..");
5+
if (__dirname.includes(".asar")) {
6+
console.warn("Check if addon nothing includes in .asar file")
7+
}
68

79
declare global {
810
namespace NodeJS {
@@ -43,11 +45,11 @@ export async function LoadAddon<T = any>(addonFile: string, exports?: Record<st
4345
let _addonFile: string = null
4446
if (await exists(addonFile)) _addonFile = addonFile;
4547
else if (await exists(path.resolve(projectRoot, addonFile))) _addonFile = path.resolve(projectRoot, addonFile)
46-
else if (await exists(path.resolve(projectRoot, addonFile+".node"))) _addonFile = path.resolve(projectRoot, addonFile+".node")
47-
else if (await exists(path.resolve(projectRoot, "build/Release", addonFile))) _addonFile = path.resolve(projectRoot, "build/Release", addonFile)
48-
else if (await exists(path.resolve(projectRoot, "build/Release", addonFile+".node"))) _addonFile = path.resolve(projectRoot, "build/Release", addonFile+".node")
49-
else if (await exists(path.resolve(projectRoot, "build/Debug", addonFile))) _addonFile = path.resolve(projectRoot, "build/Debug", addonFile)
50-
else if (await exists(path.resolve(projectRoot, "build/Debug", addonFile+".node"))) _addonFile = path.resolve(projectRoot, "build/Debug", addonFile+".node")
48+
else if (await exists(path.resolve(projectRoot, addonFile+".node"))) _addonFile = path.resolve(projectRoot, addonFile+".node")
49+
else if (await exists(path.resolve(projectRoot, "build/Release", addonFile))) _addonFile = path.resolve(projectRoot, "build/Release", addonFile)
50+
else if (await exists(path.resolve(projectRoot, "build/Release", addonFile+".node"))) _addonFile = path.resolve(projectRoot, "build/Release", addonFile+".node")
51+
else if (await exists(path.resolve(projectRoot, "build/Debug", addonFile))) _addonFile = path.resolve(projectRoot, "build/Debug", addonFile)
52+
else if (await exists(path.resolve(projectRoot, "build/Debug", addonFile+".node"))) _addonFile = path.resolve(projectRoot, "build/Debug", addonFile+".node")
5153
if (!_addonFile) throw new Error("Cannot load required addon")
5254
let ext: NodeJS.Moduledlopen = {exports: Object.assign({}, exports)}
5355
process.dlopen(ext, _addonFile)

src/wginterface.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -88,7 +88,7 @@ export const addon = await LoadAddon<{
8888
*/
8989
setConfig(config: SetConfig): Promise<void>;
9090
}>("wg", {
91-
WIN32DLLPATH: path.resolve(projectRoot, "addon/win", (process.arch === "x64" && "amd64") || (process.arch === "ia32" && "x86") || process.arch, "wireguard.dll")
91+
WIN32DLLPATH: !process.env.WGWIN32DLL ? path.resolve(projectRoot, "addon/win", (process.arch === "x64" && "amd64") || (process.arch === "ia32" && "x86") || process.arch, "wireguard.dll") : path.resolve(process.env.WGWIN32DLL),
9292
});
9393

9494
export const {

0 commit comments

Comments
 (0)