app-builder-lib 27.0.0-alpha.2 → 27.0.0-alpha.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/Framework.d.ts +2 -0
- package/dist/Framework.d.ts.map +1 -1
- package/dist/Framework.js.map +1 -1
- package/dist/asar/asarFileChecker.d.ts +4 -2
- package/dist/asar/asarFileChecker.d.ts.map +1 -1
- package/dist/asar/asarFileChecker.js +2 -3
- package/dist/asar/asarFileChecker.js.map +1 -1
- package/dist/codeSign/certInfo.d.ts +14 -0
- package/dist/codeSign/certInfo.d.ts.map +1 -1
- package/dist/codeSign/certInfo.js +49 -0
- package/dist/codeSign/certInfo.js.map +1 -1
- package/dist/codeSign/mac/macCodeSign.d.ts +3 -3
- package/dist/codeSign/mac/macCodeSign.d.ts.map +1 -1
- package/dist/codeSign/mac/macCodeSign.js +40 -14
- package/dist/codeSign/mac/macCodeSign.js.map +1 -1
- package/dist/codeSign/win/hsmSignManager.d.ts +10 -0
- package/dist/codeSign/win/hsmSignManager.d.ts.map +1 -0
- package/dist/codeSign/win/hsmSignManager.js +50 -0
- package/dist/codeSign/win/hsmSignManager.js.map +1 -0
- package/dist/codeSign/win/pkcs11SignManager.d.ts +14 -0
- package/dist/codeSign/win/pkcs11SignManager.d.ts.map +1 -0
- package/dist/codeSign/win/pkcs11SignManager.js +82 -0
- package/dist/codeSign/win/pkcs11SignManager.js.map +1 -0
- package/dist/codeSign/{signManager.d.ts → win/signManager.d.ts} +8 -6
- package/dist/codeSign/win/signManager.d.ts.map +1 -0
- package/dist/codeSign/win/signManager.js +19 -0
- package/dist/codeSign/win/signManager.js.map +1 -0
- package/dist/codeSign/win/signtoolBaseSignManager.d.ts +71 -0
- package/dist/codeSign/win/signtoolBaseSignManager.d.ts.map +1 -0
- package/dist/codeSign/win/signtoolBaseSignManager.js +414 -0
- package/dist/codeSign/win/signtoolBaseSignManager.js.map +1 -0
- package/dist/codeSign/win/windowsCodeSign.d.ts.map +1 -1
- package/dist/codeSign/win/windowsCodeSign.js +9 -4
- package/dist/codeSign/win/windowsCodeSign.js.map +1 -1
- package/dist/codeSign/win/windowsSignAzureManager.d.ts +9 -3
- package/dist/codeSign/win/windowsSignAzureManager.d.ts.map +1 -1
- package/dist/codeSign/win/windowsSignAzureManager.js +130 -36
- package/dist/codeSign/win/windowsSignAzureManager.js.map +1 -1
- package/dist/codeSign/win/windowsSignToolManager.d.ts +1 -58
- package/dist/codeSign/win/windowsSignToolManager.d.ts.map +1 -1
- package/dist/codeSign/win/windowsSignToolManager.js +3 -363
- package/dist/codeSign/win/windowsSignToolManager.js.map +1 -1
- package/dist/configuration.d.ts +22 -123
- package/dist/configuration.d.ts.map +1 -1
- package/dist/configuration.js.map +1 -1
- package/dist/electron/ElectronFramework.d.ts +0 -2
- package/dist/electron/ElectronFramework.d.ts.map +1 -1
- package/dist/electron/ElectronFramework.js +15 -27
- package/dist/electron/ElectronFramework.js.map +1 -1
- package/dist/electron/injectFFMPEG.js +2 -2
- package/dist/electron/injectFFMPEG.js.map +1 -1
- package/dist/electron/mac/electronMac.js +10 -8
- package/dist/electron/mac/electronMac.js.map +1 -1
- package/dist/electron/win/electronWin.js +1 -2
- package/dist/electron/win/electronWin.js.map +1 -1
- package/dist/index.d.ts +8 -4
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3 -0
- package/dist/index.js.map +1 -1
- package/dist/indexInternal.d.ts +3 -3
- package/dist/indexInternal.d.ts.map +1 -1
- package/dist/indexInternal.js +2 -2
- package/dist/indexInternal.js.map +1 -1
- package/dist/macPackager.d.ts +19 -10
- package/dist/macPackager.d.ts.map +1 -1
- package/dist/macPackager.js +149 -121
- package/dist/macPackager.js.map +1 -1
- package/dist/node-module-collector/moduleManager.d.ts +9 -2
- package/dist/node-module-collector/moduleManager.d.ts.map +1 -1
- package/dist/node-module-collector/moduleManager.js +4 -2
- package/dist/node-module-collector/moduleManager.js.map +1 -1
- package/dist/node-module-collector/nodeModulesCollector.d.ts +13 -23
- package/dist/node-module-collector/nodeModulesCollector.d.ts.map +1 -1
- package/dist/node-module-collector/nodeModulesCollector.js +52 -122
- package/dist/node-module-collector/nodeModulesCollector.js.map +1 -1
- package/dist/node-module-collector/pnpmNodeModulesCollector.d.ts +48 -1
- package/dist/node-module-collector/pnpmNodeModulesCollector.d.ts.map +1 -1
- package/dist/node-module-collector/pnpmNodeModulesCollector.js +216 -17
- package/dist/node-module-collector/pnpmNodeModulesCollector.js.map +1 -1
- package/dist/node-module-collector/types.d.ts +2 -0
- package/dist/node-module-collector/types.d.ts.map +1 -1
- package/dist/node-module-collector/types.js.map +1 -1
- package/dist/options/FuseOptionsV1.d.ts +137 -0
- package/dist/options/FuseOptionsV1.d.ts.map +1 -0
- package/dist/options/FuseOptionsV1.js +2 -0
- package/dist/options/FuseOptionsV1.js.map +1 -0
- package/dist/options/PlatformSpecificBuildOptions.d.ts +1 -1
- package/dist/options/PlatformSpecificBuildOptions.d.ts.map +1 -1
- package/dist/options/PlatformSpecificBuildOptions.js.map +1 -1
- package/dist/options/linuxOptions.d.ts +0 -10
- package/dist/options/linuxOptions.d.ts.map +1 -1
- package/dist/options/linuxOptions.js.map +1 -1
- package/dist/options/macOptions.d.ts +93 -126
- package/dist/options/macOptions.d.ts.map +1 -1
- package/dist/options/macOptions.js.map +1 -1
- package/dist/options/winOptions.d.ts +137 -63
- package/dist/options/winOptions.d.ts.map +1 -1
- package/dist/options/winOptions.js +12 -1
- package/dist/options/winOptions.js.map +1 -1
- package/dist/packager.js +1 -1
- package/dist/packager.js.map +1 -1
- package/dist/platformPackager.d.ts +5 -2
- package/dist/platformPackager.d.ts.map +1 -1
- package/dist/platformPackager.js +16 -13
- package/dist/platformPackager.js.map +1 -1
- package/dist/targets/ArchiveTarget.js +2 -2
- package/dist/targets/ArchiveTarget.js.map +1 -1
- package/dist/targets/archive.d.ts +10 -2
- package/dist/targets/archive.d.ts.map +1 -1
- package/dist/targets/archive.js +25 -6
- package/dist/targets/archive.js.map +1 -1
- package/dist/targets/linux/FlatpakTarget.d.ts.map +1 -1
- package/dist/targets/linux/FlatpakTarget.js +4 -1
- package/dist/targets/linux/FlatpakTarget.js.map +1 -1
- package/dist/targets/linux/FpmTarget.d.ts +6 -0
- package/dist/targets/linux/FpmTarget.d.ts.map +1 -1
- package/dist/targets/linux/FpmTarget.js +25 -3
- package/dist/targets/linux/FpmTarget.js.map +1 -1
- package/dist/targets/linux/LinuxTargetHelper.d.ts +14 -0
- package/dist/targets/linux/LinuxTargetHelper.d.ts.map +1 -1
- package/dist/targets/linux/LinuxTargetHelper.js +38 -59
- package/dist/targets/linux/LinuxTargetHelper.js.map +1 -1
- package/dist/targets/linux/appimage/AppImageTarget.d.ts +1 -0
- package/dist/targets/linux/appimage/AppImageTarget.d.ts.map +1 -1
- package/dist/targets/linux/appimage/AppImageTarget.js +8 -9
- package/dist/targets/linux/appimage/AppImageTarget.js.map +1 -1
- package/dist/targets/linux/appimage/appImageUtil.d.ts +4 -0
- package/dist/targets/linux/appimage/appImageUtil.d.ts.map +1 -1
- package/dist/targets/linux/appimage/appImageUtil.js +11 -4
- package/dist/targets/linux/appimage/appImageUtil.js.map +1 -1
- package/dist/targets/linux/appimage/appLauncher.d.ts.map +1 -1
- package/dist/targets/linux/appimage/appLauncher.js +5 -11
- package/dist/targets/linux/appimage/appLauncher.js.map +1 -1
- package/dist/targets/linux/launcherScript.d.ts +32 -0
- package/dist/targets/linux/launcherScript.d.ts.map +1 -0
- package/dist/targets/linux/launcherScript.js +24 -0
- package/dist/targets/linux/launcherScript.js.map +1 -0
- package/dist/targets/linux/snap/core24.d.ts +2 -0
- package/dist/targets/linux/snap/core24.d.ts.map +1 -1
- package/dist/targets/linux/snap/core24.js +48 -8
- package/dist/targets/linux/snap/core24.js.map +1 -1
- package/dist/targets/linux/snap/coreLegacy.d.ts +2 -2
- package/dist/targets/linux/snap/coreLegacy.d.ts.map +1 -1
- package/dist/targets/linux/snap/coreLegacy.js +9 -10
- package/dist/targets/linux/snap/coreLegacy.js.map +1 -1
- package/dist/targets/linux/snap/snapCommand.d.ts +13 -0
- package/dist/targets/linux/snap/snapCommand.d.ts.map +1 -0
- package/dist/targets/linux/snap/snapCommand.js +21 -0
- package/dist/targets/linux/snap/snapCommand.js.map +1 -0
- package/dist/targets/mac/MacTargetHelper.d.ts +12 -12
- package/dist/targets/mac/MacTargetHelper.d.ts.map +1 -1
- package/dist/targets/mac/MacTargetHelper.js +72 -67
- package/dist/targets/mac/MacTargetHelper.js.map +1 -1
- package/dist/targets/mac/pkg.d.ts.map +1 -1
- package/dist/targets/mac/pkg.js +4 -4
- package/dist/targets/mac/pkg.js.map +1 -1
- package/dist/targets/win/AppxTarget.d.ts.map +1 -1
- package/dist/targets/win/AppxTarget.js +9 -9
- package/dist/targets/win/AppxTarget.js.map +1 -1
- package/dist/targets/win/MsiTarget.d.ts.map +1 -1
- package/dist/targets/win/MsiTarget.js +8 -11
- package/dist/targets/win/MsiTarget.js.map +1 -1
- package/dist/targets/win/nsis/NsisTarget.js +5 -5
- package/dist/targets/win/nsis/NsisTarget.js.map +1 -1
- package/dist/targets/win/nsis/nsisScriptGenerator.js +2 -2
- package/dist/targets/win/nsis/nsisScriptGenerator.js.map +1 -1
- package/dist/targets/win/nsis/nsisUtil.d.ts.map +1 -1
- package/dist/targets/win/nsis/nsisUtil.js +2 -2
- package/dist/targets/win/nsis/nsisUtil.js.map +1 -1
- package/dist/toolsets/custom.d.ts +1 -0
- package/dist/toolsets/custom.d.ts.map +1 -1
- package/dist/toolsets/custom.js +19 -8
- package/dist/toolsets/custom.js.map +1 -1
- package/dist/toolsets/icons.d.ts.map +1 -1
- package/dist/toolsets/icons.js +11 -3
- package/dist/toolsets/icons.js.map +1 -1
- package/dist/toolsets/winCodeSign.d.ts +36 -0
- package/dist/toolsets/winCodeSign.d.ts.map +1 -1
- package/dist/toolsets/winCodeSign.js +84 -30
- package/dist/toolsets/winCodeSign.js.map +1 -1
- package/dist/toolsets/wine.d.ts.map +1 -1
- package/dist/toolsets/wine.js +20 -12
- package/dist/toolsets/wine.js.map +1 -1
- package/dist/util/appFileCopier.d.ts.map +1 -1
- package/dist/util/appFileCopier.js +9 -4
- package/dist/util/appFileCopier.js.map +1 -1
- package/dist/util/archCompatibility.d.ts +42 -0
- package/dist/util/archCompatibility.d.ts.map +1 -0
- package/dist/util/archCompatibility.js +202 -0
- package/dist/util/archCompatibility.js.map +1 -0
- package/dist/util/config/schemaValidator.d.ts.map +1 -1
- package/dist/util/config/schemaValidator.js +1 -1
- package/dist/util/config/schemaValidator.js.map +1 -1
- package/dist/util/electronGet.d.ts +8 -25
- package/dist/util/electronGet.d.ts.map +1 -1
- package/dist/util/electronGet.js +107 -87
- package/dist/util/electronGet.js.map +1 -1
- package/dist/util/flags.d.ts +0 -3
- package/dist/util/flags.d.ts.map +1 -1
- package/dist/util/flags.js +0 -9
- package/dist/util/flags.js.map +1 -1
- package/dist/util/installOrRebuild.d.ts +38 -0
- package/dist/util/installOrRebuild.d.ts.map +1 -0
- package/dist/util/{yarn.js → installOrRebuild.js} +65 -14
- package/dist/util/installOrRebuild.js.map +1 -0
- package/dist/util/langs.d.ts.map +1 -1
- package/dist/util/langs.js +1 -0
- package/dist/util/langs.js.map +1 -1
- package/dist/util/license.d.ts.map +1 -1
- package/dist/util/license.js +4 -1
- package/dist/util/license.js.map +1 -1
- package/dist/util/mac/macosIconComposer.d.ts +2 -1
- package/dist/util/mac/macosIconComposer.d.ts.map +1 -1
- package/dist/util/mac/macosIconComposer.js +40 -58
- package/dist/util/mac/macosIconComposer.js.map +1 -1
- package/dist/util/streamSpawnToFile.d.ts +47 -0
- package/dist/util/streamSpawnToFile.d.ts.map +1 -0
- package/dist/util/streamSpawnToFile.js +110 -0
- package/dist/util/streamSpawnToFile.js.map +1 -0
- package/dist/util/toolsetLock.d.ts +2 -0
- package/dist/util/toolsetLock.d.ts.map +1 -1
- package/dist/util/toolsetLock.js +31 -5
- package/dist/util/toolsetLock.js.map +1 -1
- package/dist/version.d.ts +1 -1
- package/dist/version.js +1 -1
- package/dist/version.js.map +1 -1
- package/dist/vm/ParallelsVm.d.ts.map +1 -1
- package/dist/vm/ParallelsVm.js +13 -2
- package/dist/vm/ParallelsVm.js.map +1 -1
- package/dist/vm/vm.d.ts.map +1 -1
- package/dist/vm/vm.js +4 -1
- package/dist/vm/vm.js.map +1 -1
- package/dist/winPackager.d.ts +1 -2
- package/dist/winPackager.d.ts.map +1 -1
- package/dist/winPackager.js +17 -22
- package/dist/winPackager.js.map +1 -1
- package/package.json +15 -14
- package/scheme.json +486 -439
- package/templates/appx/appxmanifest.xml +1 -2
- package/templates/nsis/assistedMessages.yml +17 -0
- package/templates/nsis/messages.yml +5 -0
- package/dist/codeSign/signManager.d.ts.map +0 -1
- package/dist/codeSign/signManager.js +0 -2
- package/dist/codeSign/signManager.js.map +0 -1
- package/dist/util/yarn.d.ts +0 -23
- package/dist/util/yarn.d.ts.map +0 -1
- package/dist/util/yarn.js.map +0 -1
package/dist/macPackager.d.ts
CHANGED
|
@@ -1,28 +1,31 @@
|
|
|
1
|
-
import { SignOptions } from "@electron/osx-sign
|
|
2
|
-
import type { Identity } from "@electron/osx-sign/dist/cjs/util-identities";
|
|
1
|
+
import type { SignOptions } from "@electron/osx-sign";
|
|
3
2
|
import { Arch, AsyncTaskManager } from "builder-util";
|
|
4
3
|
import { MemoLazy, Nullish } from "builder-util-runtime";
|
|
5
4
|
import { AppInfo } from "./appInfo.js";
|
|
6
|
-
import { CodeSigningInfo, CreateKeychainOptions } from "./codeSign/mac/macCodeSign.js";
|
|
5
|
+
import { CodeSigningInfo, CreateKeychainOptions, Identity } from "./codeSign/mac/macCodeSign.js";
|
|
7
6
|
import { Target } from "./core.js";
|
|
8
|
-
import { AfterPackContext } from "./index.js";
|
|
9
|
-
import { MacTargetHelper } from "./targets/mac/MacTargetHelper.js";
|
|
7
|
+
import { AfterPackContext, ElectronPlatformName } from "./index.js";
|
|
8
|
+
import { MacTargetHelper, PlatformType } from "./targets/mac/MacTargetHelper.js";
|
|
10
9
|
import { MacConfiguration, MasConfiguration } from "./options/macOptions.js";
|
|
11
10
|
import { Packager } from "./packager.js";
|
|
12
11
|
import { DoPackOptions, PlatformPackager } from "./platformPackager.js";
|
|
13
12
|
export type CustomMacSignOptions = SignOptions;
|
|
14
13
|
export type CustomMacSign = (configuration: CustomMacSignOptions, packager: MacPackager) => Promise<void>;
|
|
14
|
+
interface PlatformConfig {
|
|
15
|
+
type: PlatformType;
|
|
16
|
+
config: MacConfiguration | MasConfiguration;
|
|
17
|
+
platformName: ElectronPlatformName;
|
|
18
|
+
}
|
|
15
19
|
export declare class MacPackager extends PlatformPackager<MacConfiguration | MasConfiguration> {
|
|
16
20
|
readonly codeSigningInfo: MemoLazy<CreateKeychainOptions | null, CodeSigningInfo>;
|
|
17
21
|
private _iconPath;
|
|
18
|
-
private _activePackConfig;
|
|
19
22
|
readonly helper: MacTargetHelper;
|
|
20
23
|
constructor(info: Packager);
|
|
21
24
|
get defaultTarget(): Array<string>;
|
|
22
25
|
/**
|
|
23
26
|
* Get the merged configuration for a specific platform type
|
|
24
27
|
*/
|
|
25
|
-
|
|
28
|
+
getPlatformConfig(platformType: PlatformType): PlatformConfig;
|
|
26
29
|
expandArch(pattern: string, arch?: Arch | null): string[];
|
|
27
30
|
protected prepareAppInfo(appInfo: AppInfo): AppInfo;
|
|
28
31
|
getIconPath(): Promise<string | null>;
|
|
@@ -32,6 +35,11 @@ export declare class MacPackager extends PlatformPackager<MacConfiguration | Mas
|
|
|
32
35
|
* Handle universal build packing
|
|
33
36
|
*/
|
|
34
37
|
private doUniversalPack;
|
|
38
|
+
/**
|
|
39
|
+
* Builds the `singleArchFiles` glob passed to `@electron/universal` by scanning both packed slices for
|
|
40
|
+
* single-architecture binaries that can't be lipo-merged. Merges any user-provided `mac.universal.singleArchFiles`.
|
|
41
|
+
*/
|
|
42
|
+
private computeSingleArchFiles;
|
|
35
43
|
pack(outDir: string, arch: Arch, targets: Array<Target>, taskManager: AsyncTaskManager): Promise<void>;
|
|
36
44
|
private packMasTargets;
|
|
37
45
|
private packMacTargets;
|
|
@@ -40,11 +48,12 @@ export declare class MacPackager extends PlatformPackager<MacConfiguration | Mas
|
|
|
40
48
|
* Main signing method with platform awareness
|
|
41
49
|
*/
|
|
42
50
|
private sign;
|
|
43
|
-
protected doSign(opts: SignOptions,
|
|
51
|
+
protected doSign(opts: SignOptions, signConfig: MacConfiguration["sign"], identity: Identity | null): Promise<void>;
|
|
44
52
|
doFlat(appPath: string, outFile: string, identity: Identity, keychain: string | Nullish): Promise<any>;
|
|
45
53
|
getElectronSrcDir(dist: string): string;
|
|
46
54
|
getElectronDestinationDir(appOutDir: string): string;
|
|
47
|
-
applyCommonInfo(appPlist: any, contentsPath: string): Promise<void>;
|
|
48
|
-
protected signApp(packContext: AfterPackContext, isAsar: boolean): Promise<boolean>;
|
|
55
|
+
applyCommonInfo(appPlist: any, contentsPath: string, cascadedOptions: MacConfiguration | MasConfiguration): Promise<void>;
|
|
56
|
+
protected signApp(packContext: AfterPackContext, isAsar: boolean, platformType?: PlatformType): Promise<boolean>;
|
|
49
57
|
}
|
|
58
|
+
export {};
|
|
50
59
|
//# sourceMappingURL=macPackager.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"macPackager.d.ts","sourceRoot":"","sources":["../src/macPackager.ts"],"names":[],"mappings":"AACA,OAAO,
|
|
1
|
+
{"version":3,"file":"macPackager.d.ts","sourceRoot":"","sources":["../src/macPackager.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAA;AAGrD,OAAO,EACL,IAAI,EACJ,gBAAgB,EAYjB,MAAM,cAAc,CAAA;AACrB,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAA;AAKxD,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAA;AACtC,OAAO,EAAE,eAAe,EAAkB,qBAAqB,EAAE,QAAQ,EAAuC,MAAM,+BAA+B,CAAA;AACrJ,OAAO,EAAwB,MAAM,EAAE,MAAM,WAAW,CAAA;AACxD,OAAO,EAAE,gBAAgB,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAA;AACnE,OAAO,EAAE,eAAe,EAAE,YAAY,EAAE,MAAM,kCAAkC,CAAA;AAChF,OAAO,EAAuB,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAA;AACjG,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAA;AACxC,OAAO,EAAiB,aAAa,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAA;AAUtF,MAAM,MAAM,oBAAoB,GAAG,WAAW,CAAA;AAC9C,MAAM,MAAM,aAAa,GAAG,CAAC,aAAa,EAAE,oBAAoB,EAAE,QAAQ,EAAE,WAAW,KAAK,OAAO,CAAC,IAAI,CAAC,CAAA;AAMzG,UAAU,cAAc;IACtB,IAAI,EAAE,YAAY,CAAA;IAClB,MAAM,EAAE,gBAAgB,GAAG,gBAAgB,CAAA;IAC3C,YAAY,EAAE,oBAAoB,CAAA;CACnC;AAED,qBAAa,WAAY,SAAQ,gBAAgB,CAAC,gBAAgB,GAAG,gBAAgB,CAAC;IACpF,QAAQ,CAAC,eAAe,0DA+BvB;IAED,OAAO,CAAC,SAAS,CAAgD;IAEjE,QAAQ,CAAC,MAAM,kBAA4B;gBAE/B,IAAI,EAAE,QAAQ;IAI1B,IAAI,aAAa,IAAI,KAAK,CAAC,MAAM,CAAC,CAEjC;IAED;;OAEG;IACH,iBAAiB,CAAC,YAAY,EAAE,YAAY,GAAG,cAAc;IA2B7D,UAAU,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,IAAI,GAAG,IAAI,GAAG,MAAM,EAAE;IAUzD,SAAS,CAAC,cAAc,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO;IAK7C,WAAW,IAAI,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IAI3C,aAAa,CAAC,OAAO,EAAE,KAAK,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,MAAM,KAAK,IAAI,GAAG,IAAI;cA8BhG,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,gBAAgB,CAAC,GAAG,OAAO,CAAC,GAAG,CAAC;IAO7E;;OAEG;YACW,eAAe;IAyG7B;;;OAGG;YACW,sBAAsB;IA2B9B,IAAI,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,CAAC,MAAM,CAAC,EAAE,WAAW,EAAE,gBAAgB,GAAG,OAAO,CAAC,IAAI,CAAC;YAiB9F,cAAc;YAmCd,cAAc;YAmBd,OAAO;IAKrB;;OAEG;YACW,IAAI;cAqDF,MAAM,CAAC,IAAI,EAAE,WAAW,EAAE,UAAU,EAAE,gBAAgB,CAAC,MAAM,CAAC,EAAE,QAAQ,EAAE,QAAQ,GAAG,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;IAuB5G,MAAM,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC;IAY5G,iBAAiB,CAAC,IAAI,EAAE,MAAM;IAI9B,yBAAyB,CAAC,SAAS,EAAE,MAAM;IAK5C,eAAe,CAAC,QAAQ,EAAE,GAAG,EAAE,YAAY,EAAE,MAAM,EAAE,eAAe,EAAE,gBAAgB,GAAG,gBAAgB,GAAG,OAAO,CAAC,IAAI,CAAC;cAyE/G,OAAO,CAAC,WAAW,EAAE,gBAAgB,EAAE,MAAM,EAAE,OAAO,EAAE,YAAY,CAAC,EAAE,YAAY,GAAG,OAAO,CAAC,OAAO,CAAC;CAgCvH"}
|
package/dist/macPackager.js
CHANGED
|
@@ -14,10 +14,14 @@ import { chooseNotNull, PlatformPackager } from "./platformPackager.js";
|
|
|
14
14
|
import { ArchiveTarget } from "./targets/ArchiveTarget.js";
|
|
15
15
|
import { PkgTarget, prepareProductBuildArgs } from "./targets/mac/pkg.js";
|
|
16
16
|
import { createCommonTarget, NoOpTarget } from "./targets/targetFactory.js";
|
|
17
|
-
import { dynamicImport } from "./util/dynamicImport.js";
|
|
18
17
|
import { isMacOsHighSierra } from "./util/mac/macosVersion.js";
|
|
18
|
+
import { buildSingleArchFilesPattern, collectIdenticalSingleArchMachOFiles, collectSingleArchPackageNames } from "./util/archCompatibility.js";
|
|
19
19
|
import { expandMacro as doExpandMacro } from "./util/macroExpander.js";
|
|
20
20
|
import { resolveFunction } from "./util/resolve.js";
|
|
21
|
+
import { makeUniversalApp } from "@electron/universal";
|
|
22
|
+
function isElectronSignOptions(sign) {
|
|
23
|
+
return typeof sign === "object" && sign !== null;
|
|
24
|
+
}
|
|
21
25
|
export class MacPackager extends PlatformPackager {
|
|
22
26
|
constructor(info) {
|
|
23
27
|
super(info, Platform.MAC);
|
|
@@ -48,9 +52,6 @@ export class MacPackager extends PlatformPackager {
|
|
|
48
52
|
return Promise.resolve({ keychainFile: process.env.CSC_KEYCHAIN || null });
|
|
49
53
|
});
|
|
50
54
|
this._iconPath = new Lazy(() => this.getOrConvertIcon("icns"));
|
|
51
|
-
// Set/cleared in doPack so applyCommonInfo can read the per-pack platformSpecificBuildOptions
|
|
52
|
-
// (the framework call chain doesn't thread it through to applyCommonInfo). Fixes #8909.
|
|
53
|
-
this._activePackConfig = null;
|
|
54
55
|
this.helper = new MacTargetHelper(this);
|
|
55
56
|
}
|
|
56
57
|
get defaultTarget() {
|
|
@@ -61,29 +62,25 @@ export class MacPackager extends PlatformPackager {
|
|
|
61
62
|
*/
|
|
62
63
|
getPlatformConfig(platformType) {
|
|
63
64
|
let config;
|
|
64
|
-
let isDevelopment = false;
|
|
65
65
|
let platformName;
|
|
66
66
|
switch (platformType) {
|
|
67
67
|
case "mas":
|
|
68
68
|
config = deepAssign({}, this.platformSpecificBuildOptions, this.config.mas);
|
|
69
|
-
isDevelopment = false;
|
|
70
69
|
platformName = "mas";
|
|
71
70
|
break;
|
|
72
71
|
case "mas-dev":
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
});
|
|
76
|
-
isDevelopment = true;
|
|
72
|
+
// `mas-dev` cascades mac → mas → masDev. The development/distribution distinction is no longer
|
|
73
|
+
// carried as a config field; it is derived from `platformType` wherever signing happens.
|
|
74
|
+
config = deepAssign({}, this.platformSpecificBuildOptions, this.config.mas, this.config.masDev);
|
|
77
75
|
platformName = "mas";
|
|
78
76
|
break;
|
|
79
77
|
case "mac":
|
|
80
78
|
default:
|
|
81
79
|
config = this.platformSpecificBuildOptions;
|
|
82
|
-
isDevelopment = false;
|
|
83
80
|
platformName = this.platform.nodeName;
|
|
84
81
|
break;
|
|
85
82
|
}
|
|
86
|
-
return { type: platformType, config,
|
|
83
|
+
return { type: platformType, config, platformName };
|
|
87
84
|
}
|
|
88
85
|
expandArch(pattern, arch) {
|
|
89
86
|
if (arch === Arch.universal) {
|
|
@@ -130,96 +127,115 @@ export class MacPackager extends PlatformPackager {
|
|
|
130
127
|
if (config.arch === Arch.universal) {
|
|
131
128
|
return this.doUniversalPack(config);
|
|
132
129
|
}
|
|
133
|
-
|
|
134
|
-
// framework stack (doPack → beforeCopyExtraFiles → createMacApp → applyCommonInfo) without it.
|
|
135
|
-
this._activePackConfig = config.platformSpecificBuildOptions;
|
|
136
|
-
try {
|
|
137
|
-
return await super.doPack(config);
|
|
138
|
-
}
|
|
139
|
-
finally {
|
|
140
|
-
this._activePackConfig = null;
|
|
141
|
-
}
|
|
130
|
+
return await super.doPack(config);
|
|
142
131
|
}
|
|
143
132
|
/**
|
|
144
133
|
* Handle universal build packing
|
|
145
134
|
*/
|
|
146
135
|
async doUniversalPack(config) {
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
}
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
const arm64Arch = Arch.arm64;
|
|
166
|
-
const arm64AppOutPath = outDirName(arm64Arch);
|
|
167
|
-
await super.doPack({ ...options, appOutDir: arm64AppOutPath, arch: arm64Arch });
|
|
168
|
-
if (this.info.cancellationToken.cancelled) {
|
|
169
|
-
return;
|
|
170
|
-
}
|
|
171
|
-
const framework = this.info.framework;
|
|
172
|
-
log.info({
|
|
173
|
-
platform: platformName,
|
|
174
|
-
arch: Arch[arch],
|
|
175
|
-
[`${framework.name}`]: framework.version,
|
|
176
|
-
appOutDir: log.filePath(appOutDir),
|
|
177
|
-
}, `packaging`);
|
|
178
|
-
const appFile = `${this.appInfo.productFilename}.app`;
|
|
179
|
-
// Make sure the Assets.car file is the same for both architectures
|
|
180
|
-
const safeX64AppOutDir = sanitizeDirPath(x64AppOutDir);
|
|
181
|
-
const safeArm64AppOutPath = sanitizeDirPath(arm64AppOutPath);
|
|
182
|
-
const safeAppOutDir = sanitizeDirPath(appOutDir);
|
|
183
|
-
const sourceCatalogPath = path.join(safeX64AppOutDir, appFile, "Contents/Resources/Assets.car");
|
|
184
|
-
if (await exists(sourceCatalogPath)) {
|
|
185
|
-
const targetCatalogPath = path.join(safeArm64AppOutPath, appFile, "Contents/Resources/Assets.car");
|
|
186
|
-
await fs.copyFile(sourceCatalogPath, targetCatalogPath);
|
|
187
|
-
}
|
|
188
|
-
const { makeUniversalApp } = await dynamicImport("@electron/universal");
|
|
189
|
-
await makeUniversalApp({
|
|
190
|
-
x64AppPath: path.join(safeX64AppOutDir, appFile),
|
|
191
|
-
arm64AppPath: path.join(safeArm64AppOutPath, appFile),
|
|
192
|
-
outAppPath: path.join(safeAppOutDir, appFile),
|
|
193
|
-
force: true,
|
|
194
|
-
mergeASARs: platformSpecificBuildOptions.mergeASARs ?? true, // must be ?? to allow false
|
|
195
|
-
singleArchFiles: platformSpecificBuildOptions.singleArchFiles || undefined,
|
|
196
|
-
x64ArchFiles: platformSpecificBuildOptions.x64ArchFiles || undefined,
|
|
197
|
-
});
|
|
198
|
-
await fs.rm(x64AppOutDir, { recursive: true, force: true });
|
|
199
|
-
await fs.rm(arm64AppOutPath, { recursive: true, force: true });
|
|
200
|
-
// Give users a final opportunity to perform things on the combined universal package before signing
|
|
201
|
-
const packContext = {
|
|
202
|
-
appOutDir,
|
|
203
|
-
outDir,
|
|
204
|
-
arch,
|
|
205
|
-
targets,
|
|
206
|
-
packager: this,
|
|
207
|
-
electronPlatformName: platformName,
|
|
208
|
-
};
|
|
209
|
-
await this.info.emitAfterPack(packContext);
|
|
210
|
-
if (this.info.cancellationToken.cancelled) {
|
|
211
|
-
return;
|
|
212
|
-
}
|
|
213
|
-
await this.doAddElectronFuses(packContext);
|
|
214
|
-
// Mirror the base-class guard: skip signing when the caller explicitly set sign:false
|
|
215
|
-
// (e.g. packMasTargets passes sign:false so that signMas() is the sole signing step).
|
|
216
|
-
if (config.options?.sign ?? true) {
|
|
217
|
-
await this.doSignAfterPack(outDir, appOutDir, platformName, arch, platformSpecificBuildOptions, targets);
|
|
218
|
-
}
|
|
136
|
+
const { outDir, appOutDir, platformName, platformType, arch, platformSpecificBuildOptions, targets } = config;
|
|
137
|
+
const outDirName = (arch) => `${appOutDir}-${Arch[arch]}-temp`;
|
|
138
|
+
const options = {
|
|
139
|
+
...config,
|
|
140
|
+
options: {
|
|
141
|
+
sign: false,
|
|
142
|
+
disableAsarIntegrity: true,
|
|
143
|
+
disableFuses: true,
|
|
144
|
+
// Keep both slices symmetric: don't drop platform-mismatched modules per-arch (that asymmetry breaks
|
|
145
|
+
// the universal merge). Single-arch binaries are reconciled below via `computeSingleArchFiles`.
|
|
146
|
+
disableArchFilter: true,
|
|
147
|
+
},
|
|
148
|
+
};
|
|
149
|
+
const x64Arch = Arch.x64;
|
|
150
|
+
const x64AppOutDir = outDirName(x64Arch);
|
|
151
|
+
await super.doPack({ ...options, appOutDir: x64AppOutDir, arch: x64Arch });
|
|
152
|
+
if (this.info.cancellationToken.cancelled) {
|
|
153
|
+
return;
|
|
219
154
|
}
|
|
220
|
-
|
|
221
|
-
|
|
155
|
+
const arm64Arch = Arch.arm64;
|
|
156
|
+
const arm64AppOutPath = outDirName(arm64Arch);
|
|
157
|
+
await super.doPack({ ...options, appOutDir: arm64AppOutPath, arch: arm64Arch });
|
|
158
|
+
if (this.info.cancellationToken.cancelled) {
|
|
159
|
+
return;
|
|
222
160
|
}
|
|
161
|
+
const framework = this.info.framework;
|
|
162
|
+
log.info({
|
|
163
|
+
platform: platformName,
|
|
164
|
+
arch: Arch[arch],
|
|
165
|
+
[`${framework.name}`]: framework.version,
|
|
166
|
+
appOutDir: log.filePath(appOutDir),
|
|
167
|
+
}, `packaging`);
|
|
168
|
+
const appFile = `${this.appInfo.productFilename}.app`;
|
|
169
|
+
// Make sure the Assets.car file is the same for both architectures
|
|
170
|
+
const safeX64AppOutDir = sanitizeDirPath(x64AppOutDir);
|
|
171
|
+
const safeArm64AppOutPath = sanitizeDirPath(arm64AppOutPath);
|
|
172
|
+
const safeAppOutDir = sanitizeDirPath(appOutDir);
|
|
173
|
+
const sourceCatalogPath = path.join(safeX64AppOutDir, appFile, "Contents/Resources/Assets.car");
|
|
174
|
+
if (await exists(sourceCatalogPath)) {
|
|
175
|
+
const targetCatalogPath = path.join(safeArm64AppOutPath, appFile, "Contents/Resources/Assets.car");
|
|
176
|
+
await fs.copyFile(sourceCatalogPath, targetCatalogPath);
|
|
177
|
+
}
|
|
178
|
+
const universalOpts = platformSpecificBuildOptions.universal;
|
|
179
|
+
// Single-arch binaries that can't be merged into a universal Mach-O. Two sources:
|
|
180
|
+
// 1. `cpu`/`os`-declared platform packages (e.g. `@esbuild/darwin-arm64`), which the collection filter
|
|
181
|
+
// confines to their native slice — mark the whole package so unique non-binary siblings don't trip the merge.
|
|
182
|
+
// 2. Host binaries identical in both slices inside packages that declare no `cpu`/`os` (e.g. esbuild's
|
|
183
|
+
// install script overwriting `esbuild/bin/esbuild` with the platform binary) — mark the file.
|
|
184
|
+
// Both are reported to `@electron/universal` via `singleArchFiles`; otherwise it aborts on the arch mismatch.
|
|
185
|
+
const singleArchFiles = await this.computeSingleArchFiles(path.join(safeX64AppOutDir, appFile), path.join(safeArm64AppOutPath, appFile), universalOpts?.singleArchFiles ?? undefined);
|
|
186
|
+
await makeUniversalApp({
|
|
187
|
+
mergeASARs: true, // preserve electron-builder v2 default; user can override via mac.universal.mergeASARs
|
|
188
|
+
...universalOpts,
|
|
189
|
+
singleArchFiles,
|
|
190
|
+
x64AppPath: path.join(safeX64AppOutDir, appFile),
|
|
191
|
+
arm64AppPath: path.join(safeArm64AppOutPath, appFile),
|
|
192
|
+
outAppPath: path.join(safeAppOutDir, appFile),
|
|
193
|
+
force: true,
|
|
194
|
+
});
|
|
195
|
+
await fs.rm(x64AppOutDir, { recursive: true, force: true });
|
|
196
|
+
await fs.rm(arm64AppOutPath, { recursive: true, force: true });
|
|
197
|
+
// Give users a final opportunity to perform things on the combined universal package before signing
|
|
198
|
+
const packContext = {
|
|
199
|
+
appOutDir,
|
|
200
|
+
outDir,
|
|
201
|
+
arch,
|
|
202
|
+
targets,
|
|
203
|
+
packager: this,
|
|
204
|
+
electronPlatformName: platformName,
|
|
205
|
+
};
|
|
206
|
+
await this.info.emitAfterPack(packContext);
|
|
207
|
+
if (this.info.cancellationToken.cancelled) {
|
|
208
|
+
return;
|
|
209
|
+
}
|
|
210
|
+
await this.doAddElectronFuses(packContext);
|
|
211
|
+
// Mirror the base-class guard: skip signing when the caller explicitly set sign:false
|
|
212
|
+
// (e.g. packMasTargets passes sign:false so that signMas() is the sole signing step).
|
|
213
|
+
if (config.options?.sign ?? true) {
|
|
214
|
+
await this.doSignAfterPack(outDir, appOutDir, platformName, platformType, arch, platformSpecificBuildOptions, targets);
|
|
215
|
+
}
|
|
216
|
+
}
|
|
217
|
+
/**
|
|
218
|
+
* Builds the `singleArchFiles` glob passed to `@electron/universal` by scanning both packed slices for
|
|
219
|
+
* single-architecture binaries that can't be lipo-merged. Merges any user-provided `mac.universal.singleArchFiles`.
|
|
220
|
+
*/
|
|
221
|
+
async computeSingleArchFiles(x64AppPath, arm64AppPath, userPattern) {
|
|
222
|
+
const unpacked = (appPath) => path.join(appPath, "Contents", "Resources", "app.asar.unpacked");
|
|
223
|
+
const x64Unpacked = unpacked(x64AppPath);
|
|
224
|
+
const arm64Unpacked = unpacked(arm64AppPath);
|
|
225
|
+
// (1) `cpu`/`os`-declared platform packages confined to one slice — mark the whole package.
|
|
226
|
+
const packageNames = new Set();
|
|
227
|
+
await collectSingleArchPackageNames(path.join(x64Unpacked, "node_modules"), packageNames);
|
|
228
|
+
await collectSingleArchPackageNames(path.join(arm64Unpacked, "node_modules"), packageNames);
|
|
229
|
+
// (2) undeclared host binaries identical in both slices (e.g. `esbuild/bin/esbuild`) — mark the file.
|
|
230
|
+
const machOFiles = await collectIdenticalSingleArchMachOFiles(x64Unpacked, arm64Unpacked);
|
|
231
|
+
const patterns = [...Array.from(packageNames).map(name => `**/${name}/**`), ...machOFiles];
|
|
232
|
+
if (patterns.length === 0) {
|
|
233
|
+
return userPattern;
|
|
234
|
+
}
|
|
235
|
+
log.warn({ packages: Array.from(packageNames).sort().join(", ") || "(none)", files: machOFiles.sort().join(", ") || "(none)" }, "Universal build contains single-architecture binaries; they are copied as-is per slice (not lipo-merged), so each is only usable on architectures whose platform package was installed on this build host. " +
|
|
236
|
+
"If these are build-only tools (e.g. esbuild), move them to `devDependencies` or exclude them via `files` to omit them entirely. " +
|
|
237
|
+
"If they are needed at runtime, install every target architecture's variant so the universal app works on both Intel and Apple Silicon (pnpm/yarn: `supportedArchitectures`; npm: `--cpu`/`--os`).");
|
|
238
|
+
return buildSingleArchFilesPattern(patterns, userPattern);
|
|
223
239
|
}
|
|
224
240
|
async pack(outDir, arch, targets, taskManager) {
|
|
225
241
|
const masTargets = targets.filter(it => MacTargetHelper.isMasTarget(it.name));
|
|
@@ -247,22 +263,24 @@ export class MacPackager extends PlatformPackager {
|
|
|
247
263
|
if (relativeTargetOutDir.startsWith("..") || path.isAbsolute(relativeTargetOutDir)) {
|
|
248
264
|
throw new InvalidConfigurationError(`Invalid target output directory: ${targetOutDir}`);
|
|
249
265
|
}
|
|
250
|
-
|
|
266
|
+
let appPath = path.join(targetOutDir, `${this.appInfo.productFilename}.app`);
|
|
267
|
+
if (prepackaged != null) {
|
|
268
|
+
appPath = prepackaged;
|
|
269
|
+
}
|
|
270
|
+
else {
|
|
251
271
|
await this.doPack({
|
|
252
272
|
outDir: resolvedOutDir,
|
|
253
273
|
appOutDir: targetOutDir,
|
|
254
274
|
platformName: platformConfig.platformName,
|
|
275
|
+
platformType: platformConfig.type,
|
|
255
276
|
arch,
|
|
256
277
|
platformSpecificBuildOptions: platformConfig.config,
|
|
257
278
|
targets: [target],
|
|
258
279
|
options: { sign: false },
|
|
259
280
|
});
|
|
260
281
|
MacTargetHelper.assertSafePathForCommandUsage(this.appInfo.productFilename, "product filename");
|
|
261
|
-
await this.signMas(path.resolve(targetOutDir, `${path.basename(this.appInfo.productFilename)}.app`), targetOutDir, platformConfig, arch);
|
|
262
|
-
}
|
|
263
|
-
else {
|
|
264
|
-
await this.signMas(prepackaged, targetOutDir, platformConfig, arch);
|
|
265
282
|
}
|
|
283
|
+
await this.signMas(appPath, targetOutDir, arch, platformType);
|
|
266
284
|
}
|
|
267
285
|
}
|
|
268
286
|
async packMacTargets(outDir, arch, targets, prepackaged, taskManager) {
|
|
@@ -273,6 +291,7 @@ export class MacPackager extends PlatformPackager {
|
|
|
273
291
|
outDir,
|
|
274
292
|
appOutDir: path.dirname(appPath),
|
|
275
293
|
platformName: platformConfig.platformName,
|
|
294
|
+
platformType: platformConfig.type,
|
|
276
295
|
arch,
|
|
277
296
|
platformSpecificBuildOptions: platformConfig.config,
|
|
278
297
|
targets,
|
|
@@ -280,38 +299,46 @@ export class MacPackager extends PlatformPackager {
|
|
|
280
299
|
}
|
|
281
300
|
this.packageInDistributableFormat(appPath, arch, targets, taskManager);
|
|
282
301
|
}
|
|
283
|
-
async signMas(appPath, outDir,
|
|
284
|
-
const signed = await this.sign(appPath, outDir,
|
|
302
|
+
async signMas(appPath, outDir, arch, targetPlatform) {
|
|
303
|
+
const signed = await this.sign(appPath, outDir, arch, targetPlatform);
|
|
285
304
|
return signed;
|
|
286
305
|
}
|
|
287
306
|
/**
|
|
288
307
|
* Main signing method with platform awareness
|
|
289
308
|
*/
|
|
290
|
-
async sign(appPath, outDir,
|
|
309
|
+
async sign(appPath, outDir, arch, targetPlatform) {
|
|
291
310
|
if (!isSignAllowed()) {
|
|
292
311
|
return false;
|
|
293
312
|
}
|
|
294
|
-
|
|
295
|
-
const
|
|
313
|
+
// getPlatformConfig cascades mac → mas → masDev, so `sign` (and `sign.identity`) is already merged for this flavor.
|
|
314
|
+
const config = this.getPlatformConfig(targetPlatform).config.sign;
|
|
315
|
+
// sign: null → user explicitly disabled signing
|
|
316
|
+
if (config === null) {
|
|
317
|
+
return this.helper.handleNullIdentity();
|
|
318
|
+
}
|
|
319
|
+
const signOpts = isElectronSignOptions(config) ? config : undefined;
|
|
320
|
+
// sign.identity: null → explicit skip; undefined → auto-discover
|
|
321
|
+
const qualifier = signOpts?.identity;
|
|
296
322
|
if (qualifier === null) {
|
|
297
323
|
return this.helper.handleNullIdentity();
|
|
298
324
|
}
|
|
299
325
|
const keychainFile = (await this.codeSigningInfo.value).keychainFile;
|
|
300
|
-
|
|
301
|
-
const
|
|
302
|
-
const
|
|
303
|
-
const
|
|
326
|
+
// `config` is a custom fn/string module path when it's non-null and not an options object
|
|
327
|
+
const hasCustomSign = config != null && !signOpts;
|
|
328
|
+
const isMas = MacTargetHelper.isMasTarget(targetPlatform);
|
|
329
|
+
const isDevelopment = MacTargetHelper.isMasDevelopment(targetPlatform);
|
|
330
|
+
const identity = await this.helper.findSigningIdentity(targetPlatform, qualifier, keychainFile, hasCustomSign, signOpts);
|
|
304
331
|
if (!identity) {
|
|
305
332
|
return false;
|
|
306
333
|
}
|
|
307
334
|
if (!isMacOsHighSierra()) {
|
|
308
335
|
throw new InvalidConfigurationError("macOS High Sierra 10.13.6 is required to sign");
|
|
309
336
|
}
|
|
310
|
-
const signOptions = await this.helper.buildSignOptions(appPath, identity,
|
|
337
|
+
const signOptions = await this.helper.buildSignOptions(appPath, identity, signOpts, keychainFile, arch, targetPlatform);
|
|
311
338
|
await this.doSign(signOptions, config, identity);
|
|
312
339
|
// Handle MAS installer creation
|
|
313
340
|
if (isMas && !isDevelopment && outDir) {
|
|
314
|
-
await this.helper.createMasInstaller(appPath, outDir, config, keychainFile,
|
|
341
|
+
await this.helper.createMasInstaller(appPath, outDir, this.getPlatformConfig(targetPlatform).config, keychainFile, targetPlatform, arch, qualifier);
|
|
315
342
|
}
|
|
316
343
|
// Handle notarization for non-MAS builds
|
|
317
344
|
if (!isMas) {
|
|
@@ -320,8 +347,10 @@ export class MacPackager extends PlatformPackager {
|
|
|
320
347
|
return true;
|
|
321
348
|
}
|
|
322
349
|
//noinspection JSMethodCanBeStatic
|
|
323
|
-
async doSign(opts,
|
|
324
|
-
|
|
350
|
+
async doSign(opts, signConfig, identity) {
|
|
351
|
+
// Resolve a custom signer only when signConfig is a function or string module path.
|
|
352
|
+
// ElectronSignOptions objects and undefined use @electron/osx-sign directly.
|
|
353
|
+
const customSign = signConfig == null || isElectronSignOptions(signConfig) ? null : await resolveFunction(this.appInfo.type, signConfig, "sign", await this.info.getWorkspaceRoot());
|
|
325
354
|
const { app, platform, type, provisioningProfile } = opts;
|
|
326
355
|
log.info({
|
|
327
356
|
file: log.filePath(app),
|
|
@@ -351,7 +380,7 @@ export class MacPackager extends PlatformPackager {
|
|
|
351
380
|
return path.join(appOutDir, this.info.framework.distMacOsAppName);
|
|
352
381
|
}
|
|
353
382
|
// todo fileAssociations
|
|
354
|
-
async applyCommonInfo(appPlist, contentsPath) {
|
|
383
|
+
async applyCommonInfo(appPlist, contentsPath, cascadedOptions) {
|
|
355
384
|
const appInfo = this.appInfo;
|
|
356
385
|
const appFilename = appInfo.productFilename;
|
|
357
386
|
// https://github.com/electron-userland/electron-builder/issues/1278
|
|
@@ -392,9 +421,9 @@ export class MacPackager extends PlatformPackager {
|
|
|
392
421
|
if (minimumSystemVersion != null) {
|
|
393
422
|
appPlist.LSMinimumSystemVersion = minimumSystemVersion;
|
|
394
423
|
}
|
|
395
|
-
const activeOpts = this.
|
|
396
|
-
appPlist.CFBundleShortVersionString =
|
|
397
|
-
appPlist.CFBundleVersion =
|
|
424
|
+
// const activeOpts = this.getPlatformConfig(distType).config
|
|
425
|
+
appPlist.CFBundleShortVersionString = cascadedOptions.bundleShortVersion || appInfo.version;
|
|
426
|
+
appPlist.CFBundleVersion = cascadedOptions.bundleVersion || appInfo.buildVersion;
|
|
398
427
|
use(this.platformSpecificBuildOptions.category || this.config.category, it => (appPlist.LSApplicationCategoryType = it));
|
|
399
428
|
appPlist.NSHumanReadableCopyright = appInfo.copyright;
|
|
400
429
|
if (this.platformSpecificBuildOptions.darkModeSupport) {
|
|
@@ -410,9 +439,8 @@ export class MacPackager extends PlatformPackager {
|
|
|
410
439
|
}
|
|
411
440
|
}
|
|
412
441
|
}
|
|
413
|
-
async signApp(packContext, isAsar) {
|
|
414
|
-
const
|
|
415
|
-
const activeConfig = this._activePackConfig ?? this.platformSpecificBuildOptions;
|
|
442
|
+
async signApp(packContext, isAsar, platformType) {
|
|
443
|
+
const targetPlatform = platformType ?? (packContext.electronPlatformName === "mas" ? "mas" : "mac");
|
|
416
444
|
const readDirectoryAndSign = async (sourceDirectory, directories, shouldSign) => {
|
|
417
445
|
const normalizedSourceDirectory = path.resolve(sourceDirectory);
|
|
418
446
|
MacTargetHelper.assertSafePathForCommandUsage(normalizedSourceDirectory, "application output directory");
|
|
@@ -424,7 +452,7 @@ export class MacPackager extends PlatformPackager {
|
|
|
424
452
|
}
|
|
425
453
|
const signTarget = path.resolve(normalizedSourceDirectory, entryName);
|
|
426
454
|
const safeSignTarget = sanitizeDirPath(signTarget, normalizedSourceDirectory);
|
|
427
|
-
await this.sign(safeSignTarget, null,
|
|
455
|
+
await this.sign(safeSignTarget, null, packContext.arch, targetPlatform);
|
|
428
456
|
}
|
|
429
457
|
}));
|
|
430
458
|
return true;
|