diff --git a/src/asar-utils.ts b/src/asar-utils.ts index 882a8c9..792f04b 100644 --- a/src/asar-utils.ts +++ b/src/asar-utils.ts @@ -33,6 +33,12 @@ const MACHO_MAGIC = new Set([ 0xcffaedfe, ]); +const MACHO_UNIVERSAL_MAGIC = new Set([ + // universal + 0xcafebabe, + 0xbebafeca, +]); + export const detectAsarMode = async (appPath: string) => { d('checking asar mode of', appPath); const asarPath = path.resolve(appPath, 'Contents', 'Resources', 'app.asar'); @@ -147,6 +153,10 @@ export const mergeASARs = async ({ continue; } + if (MACHO_UNIVERSAL_MAGIC.has(x64Content.readUInt32LE(0)) && MACHO_UNIVERSAL_MAGIC.has(arm64Content.readUInt32LE(0))) { + continue; + } + if (!MACHO_MAGIC.has(x64Content.readUInt32LE(0))) { throw new Error(`Can't reconcile two non-macho files ${file}`); }