app-builder-lib 22.7.0 → 22.8.0

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.
@@ -9,6 +9,7 @@ interface SignOptions extends BaseSignOptions {
9
9
  binaries?: string[];
10
10
  entitlements?: string;
11
11
  'entitlements-inherit'?: string;
12
+ 'entitlements-loginhelper'?: string;
12
13
  'gatekeeper-assess'?: boolean;
13
14
  hardenedRuntime?: boolean;
14
15
  'identity-validation'?: boolean;
@@ -206,7 +206,12 @@ function signApplicationAsync (opts) {
206
206
  continue
207
207
  }
208
208
  debuglog('Signing... ' + filePath)
209
- await execFileAsync('codesign', args.concat('--entitlements', opts['entitlements-inherit'], filePath))
209
+ let entitlementsFile = opts['entitlements-inherit']
210
+ if (filePath.includes('Library/LoginItems')) {
211
+ entitlementsFile = opts['entitlements-loginhelper']
212
+ }
213
+
214
+ await execFileAsync('codesign', args.concat('--entitlements', entitlementsFile, filePath))
210
215
  }
211
216
  debuglog('Signing... ' + opts.app)
212
217
  await execFileAsync('codesign', args.concat('--entitlements', opts.entitlements, opts.app))
@@ -335,6 +340,12 @@ const signAsync = module.exports.signAsync = function (opts) {
335
340
  }
336
341
  }
337
342
  }
343
+ if (!opts['entitlements-loginhelper']) {
344
+ filePath = opts.entitlements
345
+ debugwarn('No `entitlements-loginhelper` passed in arguments:', '\n',
346
+ '* Sandbox entitlements file for login helper is default to:', filePath)
347
+ opts['entitlements-loginhelper'] = filePath
348
+ }
338
349
  })
339
350
  .then(async function () {
340
351
  // Pre-sign operations
package/out/core.js CHANGED
@@ -15,72 +15,66 @@ function _builderUtil() {
15
15
  return data;
16
16
  }
17
17
 
18
- let Platform =
19
- /** @class */
20
- (() => {
21
- class Platform {
22
- constructor(name, buildConfigurationKey, nodeName) {
23
- this.name = name;
24
- this.buildConfigurationKey = buildConfigurationKey;
25
- this.nodeName = nodeName;
26
- }
27
-
28
- toString() {
29
- return this.name;
30
- }
31
-
32
- createTarget(type, ...archs) {
33
- if (type == null && (archs == null || archs.length === 0)) {
34
- return new Map([[this, new Map()]]);
35
- }
18
+ class Platform {
19
+ constructor(name, buildConfigurationKey, nodeName) {
20
+ this.name = name;
21
+ this.buildConfigurationKey = buildConfigurationKey;
22
+ this.nodeName = nodeName;
23
+ }
36
24
 
37
- const archToType = new Map();
25
+ toString() {
26
+ return this.name;
27
+ }
38
28
 
39
- if (this === Platform.MAC) {
40
- archs = [_builderUtil().Arch.x64];
41
- }
29
+ createTarget(type, ...archs) {
30
+ if (type == null && (archs == null || archs.length === 0)) {
31
+ return new Map([[this, new Map()]]);
32
+ }
42
33
 
43
- for (const arch of archs == null || archs.length === 0 ? [(0, _builderUtil().archFromString)(process.arch)] : archs) {
44
- archToType.set(arch, type == null ? [] : Array.isArray(type) ? type : [type]);
45
- }
34
+ const archToType = new Map();
46
35
 
47
- return new Map([[this, archToType]]);
36
+ if (this === Platform.MAC) {
37
+ archs = [_builderUtil().Arch.x64];
48
38
  }
49
39
 
50
- static current() {
51
- return Platform.fromString(process.platform);
40
+ for (const arch of archs == null || archs.length === 0 ? [(0, _builderUtil().archFromString)(process.arch)] : archs) {
41
+ archToType.set(arch, type == null ? [] : Array.isArray(type) ? type : [type]);
52
42
  }
53
43
 
54
- static fromString(name) {
55
- name = name.toLowerCase();
44
+ return new Map([[this, archToType]]);
45
+ }
56
46
 
57
- switch (name) {
58
- case Platform.MAC.nodeName:
59
- case Platform.MAC.name:
60
- return Platform.MAC;
47
+ static current() {
48
+ return Platform.fromString(process.platform);
49
+ }
61
50
 
62
- case Platform.WINDOWS.nodeName:
63
- case Platform.WINDOWS.name:
64
- case Platform.WINDOWS.buildConfigurationKey:
65
- return Platform.WINDOWS;
51
+ static fromString(name) {
52
+ name = name.toLowerCase();
66
53
 
67
- case Platform.LINUX.nodeName:
68
- return Platform.LINUX;
54
+ switch (name) {
55
+ case Platform.MAC.nodeName:
56
+ case Platform.MAC.name:
57
+ return Platform.MAC;
69
58
 
70
- default:
71
- throw new Error(`Unknown platform: ${name}`);
72
- }
73
- }
59
+ case Platform.WINDOWS.nodeName:
60
+ case Platform.WINDOWS.name:
61
+ case Platform.WINDOWS.buildConfigurationKey:
62
+ return Platform.WINDOWS;
74
63
 
64
+ case Platform.LINUX.nodeName:
65
+ return Platform.LINUX;
66
+
67
+ default:
68
+ throw new Error(`Unknown platform: ${name}`);
69
+ }
75
70
  }
76
71
 
77
- Platform.MAC = new Platform("mac", "mac", "darwin");
78
- Platform.LINUX = new Platform("linux", "linux", "linux");
79
- Platform.WINDOWS = new Platform("windows", "win", "win32");
80
- return Platform;
81
- })();
72
+ }
82
73
 
83
74
  exports.Platform = Platform;
75
+ Platform.MAC = new Platform("mac", "mac", "darwin");
76
+ Platform.LINUX = new Platform("linux", "linux", "linux");
77
+ Platform.WINDOWS = new Platform("windows", "win", "win32");
84
78
 
85
79
  class Target {
86
80
  constructor(name, isAsyncSupported = true) {
package/out/core.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/core.ts"],"names":[],"mappings":"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","sourcesContent":["import { Arch, archFromString, ArchType } from \"builder-util\"\nimport { AllPublishOptions } from \"builder-util-runtime\"\nimport { SnapStoreOptions } from \"./publish/SnapStorePublisher\"\n\n// https://github.com/YousefED/typescript-json-schema/issues/80\nexport type Publish = AllPublishOptions | SnapStoreOptions | Array<AllPublishOptions | SnapStoreOptions> | null\n\nexport type TargetConfigType = Array<string | TargetConfiguration> | string | TargetConfiguration | null\n\nexport interface TargetConfiguration {\n /**\n * The target name. e.g. `snap`.\n */\n readonly target: string\n\n /**\n * The arch or list of archs.\n */\n readonly arch?: Array<ArchType> | ArchType\n}\n\nexport class Platform {\n static MAC = new Platform(\"mac\", \"mac\", \"darwin\")\n static LINUX = new Platform(\"linux\", \"linux\", \"linux\")\n static WINDOWS = new Platform(\"windows\", \"win\", \"win32\")\n\n constructor(public name: string, public buildConfigurationKey: string, public nodeName: NodeJS.Platform) {\n }\n\n toString() {\n return this.name\n }\n\n createTarget(type?: string | Array<string> | null, ...archs: Array<Arch>): Map<Platform, Map<Arch, Array<string>>> {\n if (type == null && (archs == null || archs.length === 0)) {\n return new Map([[this, new Map()]])\n }\n\n const archToType = new Map()\n if (this === Platform.MAC) {\n archs = [Arch.x64]\n }\n\n for (const arch of (archs == null || archs.length === 0 ? [archFromString(process.arch)] : archs)) {\n archToType.set(arch, type == null ? [] : (Array.isArray(type) ? type : [type]))\n }\n return new Map([[this, archToType]])\n }\n\n static current(): Platform {\n return Platform.fromString(process.platform)\n }\n\n static fromString(name: string): Platform {\n name = name.toLowerCase()\n switch (name) {\n case Platform.MAC.nodeName:\n case Platform.MAC.name:\n return Platform.MAC\n\n case Platform.WINDOWS.nodeName:\n case Platform.WINDOWS.name:\n case Platform.WINDOWS.buildConfigurationKey:\n return Platform.WINDOWS\n\n case Platform.LINUX.nodeName:\n return Platform.LINUX\n\n default:\n throw new Error(`Unknown platform: ${name}`)\n }\n }\n}\n\nexport abstract class Target {\n abstract readonly outDir: string\n abstract readonly options: TargetSpecificOptions | null | undefined\n\n protected constructor(readonly name: string, readonly isAsyncSupported: boolean = true) {\n }\n\n async checkOptions(): Promise<any> {\n // ignore\n }\n\n abstract build(appOutDir: string, arch: Arch): Promise<any>\n\n finishBuild(): Promise<any> {\n return Promise.resolve()\n }\n}\n\nexport interface TargetSpecificOptions {\n /**\n The [artifact file name template](/configuration/configuration#artifact-file-name-template).\n */\n readonly artifactName?: string | null\n\n publish?: Publish\n}\n\nexport const DEFAULT_TARGET = \"default\"\nexport const DIR_TARGET = \"dir\"\n\nexport type CompressionLevel = \"store\" | \"normal\" | \"maximum\"\n\nexport interface BeforeBuildContext {\n readonly appDir: string\n readonly electronVersion: string\n readonly platform: Platform\n readonly arch: string\n}\n\nexport interface SourceRepositoryInfo {\n type?: string\n domain?: string\n user: string\n project: string\n}"],"sourceRoot":""}
1
+ {"version":3,"sources":["../src/core.ts"],"names":[],"mappings":"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","sourcesContent":["import { Arch, archFromString, ArchType } from \"builder-util\"\nimport { AllPublishOptions } from \"builder-util-runtime\"\nimport { SnapStoreOptions } from \"./publish/SnapStorePublisher\"\n\n// https://github.com/YousefED/typescript-json-schema/issues/80\nexport type Publish = AllPublishOptions | SnapStoreOptions | Array<AllPublishOptions | SnapStoreOptions> | null\n\nexport type TargetConfigType = Array<string | TargetConfiguration> | string | TargetConfiguration | null\n\nexport interface TargetConfiguration {\n /**\n * The target name. e.g. `snap`.\n */\n readonly target: string\n\n /**\n * The arch or list of archs.\n */\n readonly arch?: Array<ArchType> | ArchType\n}\n\nexport class Platform {\n static MAC = new Platform(\"mac\", \"mac\", \"darwin\")\n static LINUX = new Platform(\"linux\", \"linux\", \"linux\")\n static WINDOWS = new Platform(\"windows\", \"win\", \"win32\")\n\n constructor(public name: string, public buildConfigurationKey: string, public nodeName: NodeJS.Platform) {\n }\n\n toString() {\n return this.name\n }\n\n createTarget(type?: string | Array<string> | null, ...archs: Array<Arch>): Map<Platform, Map<Arch, Array<string>>> {\n if (type == null && (archs == null || archs.length === 0)) {\n return new Map([[this, new Map()]])\n }\n\n const archToType = new Map()\n if (this === Platform.MAC) {\n archs = [Arch.x64]\n }\n\n for (const arch of (archs == null || archs.length === 0 ? [archFromString(process.arch)] : archs)) {\n archToType.set(arch, type == null ? [] : (Array.isArray(type) ? type : [type]))\n }\n return new Map([[this, archToType]])\n }\n\n static current(): Platform {\n return Platform.fromString(process.platform)\n }\n\n static fromString(name: string): Platform {\n name = name.toLowerCase()\n switch (name) {\n case Platform.MAC.nodeName:\n case Platform.MAC.name:\n return Platform.MAC\n\n case Platform.WINDOWS.nodeName:\n case Platform.WINDOWS.name:\n case Platform.WINDOWS.buildConfigurationKey:\n return Platform.WINDOWS\n\n case Platform.LINUX.nodeName:\n return Platform.LINUX\n\n default:\n throw new Error(`Unknown platform: ${name}`)\n }\n }\n}\n\nexport abstract class Target {\n abstract readonly outDir: string\n abstract readonly options: TargetSpecificOptions | null | undefined\n\n protected constructor(readonly name: string, readonly isAsyncSupported: boolean = true) {\n }\n\n async checkOptions(): Promise<any> {\n // ignore\n }\n\n abstract build(appOutDir: string, arch: Arch): Promise<any>\n\n finishBuild(): Promise<any> {\n return Promise.resolve()\n }\n}\n\nexport interface TargetSpecificOptions {\n /**\n The [artifact file name template](/configuration/configuration#artifact-file-name-template).\n */\n readonly artifactName?: string | null\n\n publish?: Publish\n}\n\nexport const DEFAULT_TARGET = \"default\"\nexport const DIR_TARGET = \"dir\"\n\nexport type CompressionLevel = \"store\" | \"normal\" | \"maximum\"\n\nexport interface BeforeBuildContext {\n readonly appDir: string\n readonly electronVersion: string\n readonly platform: Platform\n readonly arch: string\n}\n\nexport interface SourceRepositoryInfo {\n type?: string\n domain?: string\n user: string\n project: string\n}"],"sourceRoot":""}
@@ -420,6 +420,8 @@ class MacPackager extends _platformPackager().PlatformPackager {
420
420
  if (customSignOptions.provisioningProfile != null) {
421
421
  signOptions["provisioning-profile"] = customSignOptions.provisioningProfile;
422
422
  }
423
+
424
+ signOptions['entitlements-loginhelper'] = customSignOptions.entitlementsLoginHelper;
423
425
  } //noinspection JSMethodCanBeStatic
424
426
 
425
427
 
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/macPackager.ts"],"names":[],"mappings":";;;;;;;AAAA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AACA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AACA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AACA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AACA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AACA;;AACA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AACA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AACA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AACA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AACA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AAIA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AACA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AACA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AACA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AACA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AACA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;;;;;;;AAEc,MAAO,WAAP,SAA2B,oCAA3B,CAA6D;AA0BzE,EAAA,WAAA,CAAY,IAAZ,EAA0B;AACxB,UAAM,IAAN,EAAY,iBAAS,GAArB;AA1BO,SAAA,eAAA,GAAkB,KAAI,eAAJ,EAA0B,MAAK;AACxD,YAAM,OAAO,GAAG,KAAK,UAAL,EAAhB;;AACA,UAAI,OAAO,IAAI,IAAX,IAAmB,OAAO,CAAC,QAAR,KAAqB,QAA5C,EAAsD;AACpD,eAAO,OAAO,CAAC,OAAR,CAAgB;AAAC,UAAA,YAAY,EAAE,OAAO,CAAC,GAAR,CAAY,YAAZ,IAA4B;AAA3C,SAAhB,CAAP;AACD;;AAED,aAAO,mCAAe;AACpB,QAAA,MAAM,EAAE,KAAK,IAAL,CAAU,cADE;AAEpB,QAAA,OAFoB;AAGpB,QAAA,cAAc,EAAE,KAAK,cAAL,EAHI;AAIpB,QAAA,QAAQ,EAAE,uCAAc,KAAK,4BAAL,CAAkC,gBAAhD,EAAkE,OAAO,CAAC,GAAR,CAAY,kBAA9E,CAJU;AAKpB,QAAA,eAAe,EAAE,uCAAc,KAAK,4BAAL,CAAkC,uBAAhD,EAAyE,OAAO,CAAC,GAAR,CAAY,0BAArF,CALG;AAMpB,QAAA,UAAU,EAAE,KAAK;AANG,OAAf,EAQJ,IARI,CAQC,MAAM,IAAG;AACb,cAAM,YAAY,GAAG,MAAM,CAAC,YAA5B;;AACA,YAAI,YAAY,IAAI,IAApB,EAA0B;AACxB,eAAK,IAAL,CAAU,oBAAV,CAA+B,MAAM,mCAAe,YAAf,CAArC;AACD;;AACD,eAAO,MAAP;AACD,OAdI,CAAP;AAeD,KArB0B,CAAlB;AAuBD,SAAA,SAAA,GAAY,KAAI,eAAJ,EAAS,MAAM,KAAK,gBAAL,CAAsB,MAAtB,CAAf,CAAZ;AAIP;;AAED,MAAI,aAAJ,GAAiB;AACf,WAAO,KAAK,IAAL,CAAU,SAAV,CAAoB,mBAA3B;AACD,GAhCwE,CAkCzE;;;AACU,EAAA,cAAc,CAAC,OAAD,EAAiB;AACvC,WAAO,KAAI,kBAAJ,EAAY,KAAK,IAAjB,EAAuB,KAAK,4BAAL,CAAkC,aAAzD,EAAwE,KAAK,4BAA7E,CAAP;AACD;;AAED,QAAM,WAAN,GAAiB;AACf,WAAO,KAAK,SAAL,CAAe,KAAtB;AACD;;AAED,EAAA,aAAa,CAAC,OAAD,EAAyB,MAAzB,EAA4F;AACvG,SAAK,MAAM,IAAX,IAAmB,OAAnB,EAA4B;AAC1B,cAAQ,IAAR;AACE,aAAK,kBAAL;AACE;;AAEF,aAAK,KAAL;AAAY;AACV;AACA,kBAAM;AAAC,cAAA;AAAD,gBAAc,OAAO,CAAC,aAAD,CAA3B;;AACA,YAAA,MAAM,CAAC,IAAD,EAAO,MAAM,IAAI,IAAI,SAAJ,CAAc,IAAd,EAAoB,MAApB,CAAjB,CAAN;AACA;AACD;;AAED,aAAK,KAAL;AACE;AACA,UAAA,MAAM,CAAC,IAAD,EAAO,MAAM,IAAI,KAAI,8BAAJ,EAAkB,IAAlB,EAAwB,MAAxB,EAAgC,IAAhC,EAAsC,IAAtC,CAAjB,CAAN;AACA;;AAEF,aAAK,KAAL;AACE,UAAA,MAAM,CAAC,IAAD,EAAO,MAAM,IAAI,KAAI,gBAAJ,EAAc,IAAd,EAAoB,MAApB,CAAjB,CAAN;AACA;;AAEF;AACE,UAAA,MAAM,CAAC,IAAD,EAAO,MAAM,IAAI,IAAI,KAAK,KAAT,IAAkB,IAAI,KAAK,SAA3B,GAAuC,KAAI,2BAAJ,EAAe,IAAf,CAAvC,GAA8D,yCAAmB,IAAnB,EAAyB,MAAzB,EAAiC,IAAjC,CAA/E,CAAN;AACA;AAtBJ;AAwBD;AACF;;AAED,QAAM,IAAN,CAAW,MAAX,EAA2B,IAA3B,EAAuC,OAAvC,EAA+D,WAA/D,EAA4F;AAC1F,QAAI,aAAa,GAAwB,IAAzC;AAEA,UAAM,MAAM,GAAG,OAAO,CAAC,MAAR,KAAmB,CAAnB,IAAwB,OAAO,CAAC,IAAR,CAAa,EAAE,IAAI,EAAE,CAAC,IAAH,KAAY,KAAZ,IAAqB,EAAE,CAAC,IAAH,KAAY,SAApD,CAAvC;AACA,UAAM,WAAW,GAAG,KAAK,eAAL,CAAqB,WAAzC;;AAEA,QAAI,CAAC,MAAD,IAAW,OAAO,CAAC,MAAR,GAAiB,CAAhC,EAAmC;AACjC,YAAM,OAAO,GAAG,WAAW,IAAI,IAAf,GAAsB,IAAI,CAAC,IAAL,CAAU,KAAK,gBAAL,CAAsB,MAAtB,EAA8B,IAA9B,CAAV,EAA+C,GAAG,KAAK,OAAL,CAAa,eAAe,MAA9E,CAAtB,GAA8G,WAA9H;AACA,MAAA,aAAa,GAAG,CAAC,WAAW,GAAG,OAAO,CAAC,OAAR,EAAH,GAAuB,KAAK,MAAL,CAAY,MAAZ,EAAoB,IAAI,CAAC,OAAL,CAAa,OAAb,CAApB,EAA2C,KAAK,QAAL,CAAc,QAAzD,EAA2F,IAA3F,EAAiG,KAAK,4BAAtG,EAAoI,OAApI,CAAnC,EACb,IADa,CACR,MAAM,KAAK,4BAAL,CAAkC,OAAlC,EAA2C,oBAAK,GAAhD,EAAqD,OAArD,EAA8D,WAA9D,CADE,CAAhB;AAED;;AAED,SAAK,MAAM,MAAX,IAAqB,OAArB,EAA8B;AAC5B,YAAM,UAAU,GAAG,MAAM,CAAC,IAA1B;;AACA,UAAI,EAAE,UAAU,KAAK,KAAf,IAAwB,UAAU,KAAK,SAAzC,CAAJ,EAAyD;AACvD;AACD;;AAED,YAAM,eAAe,GAAG,+BAAW,EAAX,EAAe,KAAK,4BAApB,EAAkD,KAAK,MAAL,CAAY,GAA9D,CAAxB;;AACA,UAAI,UAAU,KAAK,SAAnB,EAA8B;AAC5B,uCAAW,eAAX,EAA4B,KAAK,MAAL,CAAY,MAAxC,EAAgD;AAC9C,UAAA,IAAI,EAAE;AADwC,SAAhD;AAGD;;AAED,YAAM,YAAY,GAAG,IAAI,CAAC,IAAL,CAAU,MAAV,EAAkB,UAAlB,CAArB;;AACA,UAAI,WAAW,IAAI,IAAnB,EAAyB;AACvB,cAAM,KAAK,MAAL,CAAY,MAAZ,EAAoB,YAApB,EAAkC,KAAlC,EAAyC,IAAzC,EAA+C,eAA/C,EAAgE,CAAC,MAAD,CAAhE,CAAN;AACA,cAAM,KAAK,IAAL,CAAU,IAAI,CAAC,IAAL,CAAU,YAAV,EAAwB,GAAG,KAAK,OAAL,CAAa,eAAe,MAAvD,CAAV,EAA0E,YAA1E,EAAwF,eAAxF,CAAN;AACD,OAHD,MAIK;AACH,cAAM,KAAK,IAAL,CAAU,WAAV,EAAuB,YAAvB,EAAqC,eAArC,CAAN;AACD;AACF;;AAED,QAAI,aAAa,IAAI,IAArB,EAA2B;AACzB,YAAM,aAAN;AACD;AACF;;AAEO,QAAM,IAAN,CAAW,OAAX,EAA4B,MAA5B,EAAmD,UAAnD,EAAsF;AAC5F,QAAI,CAAC,mCAAL,EAAsB;AACpB;AACD;;AAED,UAAM,KAAK,GAAG,UAAU,IAAI,IAA5B;AACA,UAAM,OAAO,GAAG,UAAU,IAAI,IAAd,GAAqB,KAAK,4BAA1B,GAAyD,UAAzE;AACA,UAAM,SAAS,GAAG,OAAO,CAAC,QAA1B;;AAEA,QAAI,CAAC,KAAD,IAAU,SAAS,KAAK,IAA5B,EAAkC;AAChC,UAAI,KAAK,gBAAT,EAA2B;AACzB,cAAM,KAAI,wCAAJ,EAA8B,yEAA9B,CAAN;AACD;;AACD,yBAAI,IAAJ,CAAS;AAAC,QAAA,MAAM,EAAE;AAAT,OAAT,EAAyD,4BAAzD;;AACA;AACD;;AAED,UAAM,YAAY,GAAG,CAAC,MAAM,KAAK,eAAL,CAAqB,KAA5B,EAAmC,YAAxD;AACA,UAAM,YAAY,GAAG,OAAO,CAAC,IAA7B;AACA,UAAM,IAAI,GAAG,YAAY,IAAI,cAA7B;AACA,UAAM,aAAa,GAAG,IAAI,KAAK,aAA/B;AACA,UAAM,eAAe,GAAG,kBAAkB,CAAC,KAAD,EAAQ,aAAR,CAA1C;AACA,QAAI,QAAQ,GAAG,MAAM,iCAAa,eAAb,EAA8B,SAA9B,EAAyC,YAAzC,CAArB;;AACA,QAAI,QAAQ,IAAI,IAAhB,EAAsB;AACpB,UAAI,CAAC,KAAD,IAAU,CAAC,aAAX,IAA4B,YAAY,KAAK,cAAjD,EAAiE;AAC/D,QAAA,QAAQ,GAAG,MAAM,iCAAa,eAAb,EAA8B,SAA9B,EAAyC,YAAzC,CAAjB;;AACA,YAAI,QAAQ,IAAI,IAAhB,EAAsB;AACpB,6BAAI,IAAJ,CAAS,gGAAT;AACD;AACF;;AAED,UAAI,QAAQ,IAAI,IAAhB,EAAsB;AACpB,cAAM,gCAAY,KAAZ,EAAmB,eAAnB,EAAoC,SAApC,EAA+C,YAA/C,EAA6D,KAAK,gBAAlE,CAAN;AACA;AACD;AACF;;AAED,QAAI,CAAC,wCAAL,EAA0B;AACxB,YAAM,KAAI,wCAAJ,EAA8B,+CAA9B,CAAN;AACD;;AAED,UAAM,WAAW,GAAQ;AACvB,6BAAuB,KADA;AAEvB;AACA;AACA,MAAA,MAAM,EAAG,IAAD,IAAiB;AACvB,eAAO,IAAI,CAAC,QAAL,CAAc,OAAd,KAA0B,IAAI,CAAC,UAAL,CAAgB,mBAAhB,EAAqC,OAAO,CAAC,MAA7C,CAA1B,IACL;AACA,QAAA,IAAI,CAAC,QAAL,CAAc,yCAAd,CAFF;AAGD,OARsB;AASvB,MAAA,QAAQ,EAAE,QATa;AAUvB,MAAA,IAVuB;AAWvB,MAAA,QAAQ,EAAE,KAAK,GAAG,KAAH,GAAW,QAXH;AAYvB,MAAA,OAAO,EAAE,KAAK,MAAL,CAAY,eAZE;AAavB,MAAA,GAAG,EAAE,OAbkB;AAcvB,MAAA,QAAQ,EAAE,YAAY,IAAI,SAdH;AAevB,MAAA,QAAQ,EAAE,OAAO,CAAC,QAAR,IAAoB,SAfP;AAgBvB,MAAA,YAAY,EAAE,KAAK,IAAI,KAAK,4BAAL,CAAkC,YAAlC,IAAkD,IAA3D,GAAkE,SAAlE,GAA8E,MAAM,KAAK,WAAL,CAAiB,KAAK,4BAAL,CAAkC,YAAnD,CAhB3E;AAiBvB;AACA;AACA,2BAAqB,OAAO,CAAC,gBAAR,KAA6B,IAnB3B;AAoBvB,MAAA,eAAe,EAAE,KAAK,GAAG,UAAU,IAAI,UAAU,CAAC,eAAX,KAA+B,IAAhD,GAAuD,OAAO,CAAC,eAAR,KAA4B;AApBlF,KAAzB;AAuBA,UAAM,KAAK,iBAAL,CAAuB,WAAvB,EAAoC,UAApC,CAAN;;AACA,uBAAI,IAAJ,CAAS;AACP,MAAA,IAAI,EAAE,mBAAI,QAAJ,CAAa,OAAb,CADC;AAEP,MAAA,YAAY,EAAE,QAAQ,CAAC,IAFhB;AAGP,MAAA,YAAY,EAAE,QAAQ,CAAC,IAHhB;AAIP,MAAA,mBAAmB,EAAE,WAAW,CAAC,sBAAD,CAAX,IAAuC;AAJrD,KAAT,EAKG,SALH;;AAMA,UAAM,KAAK,MAAL,CAAY,WAAZ,CAAN,CAvE4F,CAyE5F;;AACA,QAAI,UAAU,IAAI,IAAd,IAAsB,CAAC,aAA3B,EAA0C;AACxC,YAAM,QAAQ,GAAG,aAAa,GAAG,eAAH,GAAqB,mCAAnD;AACA,YAAM,oBAAoB,GAAG,MAAM,iCAAa,QAAb,EAAuB,UAAU,CAAC,QAAlC,EAA4C,YAA5C,CAAnC;;AACA,UAAI,oBAAoB,IAAI,IAA5B,EAAkC;AAChC,cAAM,KAAI,wCAAJ,EAA8B,sBAAsB,QAAQ,kFAA5D,CAAN;AACD,OALuC,CAOxC;;;AACA,YAAM,YAAY,GAAG,KAAK,yBAAL,CAA+B,UAA/B,EAA2C,KAA3C,CAArB;AACA,YAAM,YAAY,GAAG,IAAI,CAAC,IAAL,CAAU,MAAV,EAAmB,YAAnB,CAArB;AACA,YAAM,KAAK,MAAL,CAAY,OAAZ,EAAqB,YAArB,EAAmC,oBAAnC,EAAyD,YAAzD,CAAN;AACA,YAAM,KAAK,uBAAL,CAA6B,YAA7B,EAA2C,IAA3C,EAAiD,oBAAK,GAAtD,EAA2D,KAAK,uBAAL,CAA6B,YAA7B,EAA2C,KAA3C,CAA3D,CAAN;AACD;AACF;;AAEO,QAAM,iBAAN,CAAwB,WAAxB,EAA0C,UAA1C,EAA6E;AACnF,UAAM,YAAY,GAAG,MAAM,KAAK,YAAhC;AACA,UAAM,iBAAiB,GAAG,UAAU,IAAI,KAAK,4BAA7C;AACA,UAAM,kBAAkB,GAAG,UAAU,IAAI,IAAd,GAAqB,KAArB,GAA6B,KAAxD;AAEA,QAAI,YAAY,GAAG,iBAAiB,CAAC,YAArC;;AACA,QAAI,YAAY,IAAI,IAApB,EAA0B;AACxB,YAAM,CAAC,GAAG,gBAAgB,kBAAkB,QAA5C;;AACA,UAAI,YAAY,CAAC,QAAb,CAAsB,CAAtB,CAAJ,EAA8B;AAC5B,QAAA,YAAY,GAAG,IAAI,CAAC,IAAL,CAAU,KAAK,IAAL,CAAU,iBAApB,EAAuC,CAAvC,CAAf;AACD,OAFD,MAGK;AACH,QAAA,YAAY,GAAG,oCAAgB,wBAAhB,CAAf;AACD;AACF;;AACD,IAAA,WAAW,CAAC,YAAZ,GAA2B,YAA3B;AAEA,QAAI,mBAAmB,GAAG,iBAAiB,CAAC,mBAA5C;;AACA,QAAI,mBAAmB,IAAI,IAA3B,EAAiC;AAC/B,YAAM,CAAC,GAAG,gBAAgB,kBAAkB,gBAA5C;;AACA,UAAI,YAAY,CAAC,QAAb,CAAsB,CAAtB,CAAJ,EAA8B;AAC5B,QAAA,mBAAmB,GAAG,IAAI,CAAC,IAAL,CAAU,KAAK,IAAL,CAAU,iBAApB,EAAuC,CAAvC,CAAtB;AACD,OAFD,MAGK;AACH,QAAA,mBAAmB,GAAG,oCAAgB,wBAAhB,CAAtB;AACD;AACF;;AACD,IAAA,WAAW,CAAC,sBAAD,CAAX,GAAsC,mBAAtC;;AAEA,QAAI,iBAAiB,CAAC,mBAAlB,IAAyC,IAA7C,EAAmD;AACjD,MAAA,WAAW,CAAC,sBAAD,CAAX,GAAsC,iBAAiB,CAAC,mBAAxD;AACD;AACF,GAzOwE,CA2OzE;;;AACU,QAAM,MAAN,CAAa,IAAb,EAA8B;AACtC,WAAO,kCAAU,IAAV,CAAP;AACD,GA9OwE,CAgPzE;;;AACU,QAAM,MAAN,CAAa,OAAb,EAA8B,OAA9B,EAA+C,QAA/C,EAAmE,QAAnE,EAAsG;AAC9G;AACA,UAAM,uBAAO,IAAI,CAAC,OAAL,CAAa,OAAb,CAAP,CAAN;AAEA,UAAM,IAAI,GAAG,oCAAwB,QAAxB,EAAkC,QAAlC,CAAb;AACA,IAAA,IAAI,CAAC,IAAL,CAAU,aAAV,EAAyB,OAAzB,EAAkC,eAAlC;AACA,IAAA,IAAI,CAAC,IAAL,CAAU,OAAV;AACA,WAAO,MAAM,yBAAK,cAAL,EAAqB,IAArB,CAAb;AACD;;AAEM,EAAA,iBAAiB,CAAC,IAAD,EAAa;AACnC,WAAO,IAAI,CAAC,OAAL,CAAa,KAAK,UAAlB,EAA8B,IAA9B,EAAoC,KAAK,IAAL,CAAU,SAAV,CAAoB,gBAAxD,CAAP;AACD;;AAEM,EAAA,yBAAyB,CAAC,SAAD,EAAkB;AAChD,WAAO,IAAI,CAAC,IAAL,CAAU,SAAV,EAAqB,KAAK,IAAL,CAAU,SAAV,CAAoB,gBAAzC,CAAP;AACD,GAjQwE,CAmQzE;;;AACA,QAAM,eAAN,CAAsB,QAAtB,EAAqC,YAArC,EAAyD;AACvD,UAAM,OAAO,GAAG,KAAK,OAArB;AACA,UAAM,WAAW,GAAG,OAAO,CAAC,eAA5B,CAFuD,CAIvD;;AACA,IAAA,QAAQ,CAAC,kBAAT,GAA8B,WAAW,CAAC,QAAZ,CAAqB,SAArB,IAAkC,WAAW,CAAC,SAAZ,CAAsB,CAAtB,EAAyB,WAAW,CAAC,MAAZ,GAAqB,UAAU,MAAxD,CAAlC,GAAoG,WAAlI;AAEA,UAAM,IAAI,GAAG,MAAM,KAAK,WAAL,EAAnB;;AACA,QAAI,IAAI,IAAI,IAAZ,EAAkB;AAChB,YAAM,OAAO,GAAG,QAAQ,CAAC,gBAAzB;AACA,YAAM,aAAa,GAAG,IAAI,CAAC,IAAL,CAAU,YAAV,EAAwB,WAAxB,CAAtB;;AACA,UAAI,OAAO,IAAI,IAAf,EAAqB;AACnB,cAAM,0BAAe,IAAI,CAAC,IAAL,CAAU,aAAV,EAAyB,OAAzB,CAAf,CAAN;AACD;;AACD,YAAM,YAAY,GAAG,GAAG,WAAW,OAAnC;AACA,MAAA,QAAQ,CAAC,gBAAT,GAA4B,YAA5B;AACA,YAAM,oBAAS,IAAT,EAAe,IAAI,CAAC,IAAL,CAAU,aAAV,EAAyB,YAAzB,CAAf,CAAN;AACD;;AACD,IAAA,QAAQ,CAAC,YAAT,GAAwB,OAAO,CAAC,WAAhC;AACA,IAAA,QAAQ,CAAC,mBAAT,GAA+B,OAAO,CAAC,WAAvC;AAEA,UAAM,oBAAoB,GAAG,KAAK,4BAAL,CAAkC,oBAA/D;;AACA,QAAI,oBAAoB,IAAI,IAA5B,EAAkC;AAChC,MAAA,QAAQ,CAAC,sBAAT,GAAkC,oBAAlC;AACD;;AAED,IAAA,QAAQ,CAAC,kBAAT,GAA8B,OAAO,CAAC,mBAAtC;AAEA,IAAA,QAAQ,CAAC,0BAAT,GAAsC,KAAK,4BAAL,CAAkC,kBAAlC,IAAwD,OAAO,CAAC,OAAtG;AACA,IAAA,QAAQ,CAAC,eAAT,GAA2B,OAAO,CAAC,YAAnC;AAEA,4BAAI,KAAK,4BAAL,CAAkC,QAAlC,IAA+C,KAAK,MAAL,CAAoB,QAAvE,EAAiF,EAAE,IAAI,QAAQ,CAAC,yBAAT,GAAqC,EAA5H;AACA,IAAA,QAAQ,CAAC,wBAAT,GAAoC,OAAO,CAAC,SAA5C;;AAEA,QAAI,KAAK,4BAAL,CAAkC,eAAtC,EAAuD;AACrD,MAAA,QAAQ,CAAC,8BAAT,GAA0C,KAA1C;AACD;;AAED,UAAM,UAAU,GAAG,KAAK,4BAAL,CAAkC,UAArD;;AACA,QAAI,UAAU,IAAI,IAAlB,EAAwB;AACtB,MAAA,MAAM,CAAC,MAAP,CAAc,QAAd,EAAwB,UAAxB;AACD;AACF;;AAES,QAAM,OAAN,CAAc,WAAd,EAA6C,MAA7C,EAA4D;AACpE,UAAM,WAAW,GAAG,GAAG,KAAK,OAAL,CAAa,eAAe,MAAnD;AAEA,UAAM,uBAAgB,GAAhB,CAAoB,wBAAQ,WAAW,CAAC,SAApB,CAApB,EAAqD,IAAD,IAAsB;AAC9E,UAAI,IAAI,KAAK,WAAb,EAA0B;AACxB,eAAO,KAAK,IAAL,CAAU,IAAI,CAAC,IAAL,CAAU,WAAW,CAAC,SAAtB,EAAiC,IAAjC,CAAV,EAAkD,IAAlD,EAAwD,IAAxD,CAAP;AACD;;AACD,aAAO,IAAP;AACD,KALK,CAAN;;AAOA,QAAI,CAAC,MAAL,EAAa;AACX;AACD;;AAED,UAAM,eAAe,GAAG,IAAI,CAAC,IAAL,CAAU,WAAW,CAAC,SAAtB,EAAiC,WAAjC,EAA8C,mBAA9C,CAAxB;AACA,UAAM,uBAAgB,GAAhB,CAAoB,iCAAiB,wBAAQ,eAAR,CAAjB,EAA2C,EAA3C,CAApB,EAAqE,IAAD,IAAsB;AAC9F,UAAI,IAAI,CAAC,QAAL,CAAc,MAAd,CAAJ,EAA2B;AACzB,eAAO,KAAK,IAAL,CAAU,IAAI,CAAC,IAAL,CAAU,eAAV,EAA2B,IAA3B,CAAV,EAA4C,IAA5C,EAAkD,IAAlD,CAAP;AACD,OAFD,MAGK;AACH,eAAO,IAAP;AACD;AACF,KAPK,CAAN;AAQD;;AAvUwE;;;;AA0U3E,SAAS,kBAAT,CAA4B,KAA5B,EAA4C,aAA5C,EAAkE;AAChE,MAAI,aAAJ,EAAmB;AACjB,WAAO,eAAP;AACD;;AACD,SAAO,KAAK,GAAG,qCAAH,GAA2C,0BAAvD;AACD,C","sourcesContent":["import BluebirdPromise from \"bluebird-lst\"\nimport { deepAssign, Arch, AsyncTaskManager, exec, InvalidConfigurationError, log, use } from \"builder-util\"\nimport { signAsync, SignOptions } from \"../electron-osx-sign\"\nimport { mkdirs, readdir } from \"fs-extra\"\nimport { Lazy } from \"lazy-val\"\nimport * as path from \"path\"\nimport { copyFile, unlinkIfExists } from \"builder-util/out/fs\"\nimport { orIfFileNotExist } from \"builder-util/out/promise\"\nimport { AppInfo } from \"./appInfo\"\nimport { CertType, CodeSigningInfo, createKeychain, findIdentity, Identity, isSignAllowed, removeKeychain, reportError } from \"./codeSign/macCodeSign\"\nimport { DIR_TARGET, Platform, Target } from \"./core\"\nimport { AfterPackContext, ElectronPlatformName } from \"./index\"\nimport { MacConfiguration, MasConfiguration } from \"./options/macOptions\"\nimport { Packager } from \"./packager\"\nimport { chooseNotNull, PlatformPackager } from \"./platformPackager\"\nimport { ArchiveTarget } from \"./targets/ArchiveTarget\"\nimport { PkgTarget, prepareProductBuildArgs } from \"./targets/pkg\"\nimport { createCommonTarget, NoOpTarget } from \"./targets/targetFactory\"\nimport { isMacOsHighSierra } from \"./util/macosVersion\"\nimport { getTemplatePath } from \"./util/pathManager\"\n\nexport default class MacPackager extends PlatformPackager<MacConfiguration> {\n readonly codeSigningInfo = new Lazy<CodeSigningInfo>(() => {\n const cscLink = this.getCscLink()\n if (cscLink == null || process.platform !== \"darwin\") {\n return Promise.resolve({keychainFile: process.env.CSC_KEYCHAIN || null})\n }\n\n return createKeychain({\n tmpDir: this.info.tempDirManager,\n cscLink,\n cscKeyPassword: this.getCscPassword(),\n cscILink: chooseNotNull(this.platformSpecificBuildOptions.cscInstallerLink, process.env.CSC_INSTALLER_LINK),\n cscIKeyPassword: chooseNotNull(this.platformSpecificBuildOptions.cscInstallerKeyPassword, process.env.CSC_INSTALLER_KEY_PASSWORD),\n currentDir: this.projectDir\n })\n .then(result => {\n const keychainFile = result.keychainFile\n if (keychainFile != null) {\n this.info.disposeOnBuildFinish(() => removeKeychain(keychainFile))\n }\n return result\n })\n })\n\n private _iconPath = new Lazy(() => this.getOrConvertIcon(\"icns\"))\n\n constructor(info: Packager) {\n super(info, Platform.MAC)\n }\n\n get defaultTarget(): Array<string> {\n return this.info.framework.macOsDefaultTargets\n }\n\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n protected prepareAppInfo(appInfo: AppInfo): AppInfo {\n return new AppInfo(this.info, this.platformSpecificBuildOptions.bundleVersion, this.platformSpecificBuildOptions)\n }\n\n async getIconPath(): Promise<string | null> {\n return this._iconPath.value\n }\n\n createTargets(targets: Array<string>, mapper: (name: string, factory: (outDir: string) => Target) => void): void {\n for (const name of targets) {\n switch (name) {\n case DIR_TARGET:\n break\n\n case \"dmg\": {\n // eslint-disable-next-line @typescript-eslint/no-var-requires\n const {DmgTarget} = require(\"dmg-builder\")\n mapper(name, outDir => new DmgTarget(this, outDir))\n break\n }\n\n case \"zip\":\n // https://github.com/electron-userland/electron-builder/issues/2313\n mapper(name, outDir => new ArchiveTarget(name, outDir, this, true))\n break\n\n case \"pkg\":\n mapper(name, outDir => new PkgTarget(this, outDir))\n break\n\n default:\n mapper(name, outDir => name === \"mas\" || name === \"mas-dev\" ? new NoOpTarget(name) : createCommonTarget(name, outDir, this))\n break\n }\n }\n }\n\n async pack(outDir: string, arch: Arch, targets: Array<Target>, taskManager: AsyncTaskManager): Promise<any> {\n let nonMasPromise: Promise<any> | null = null\n\n const hasMas = targets.length !== 0 && targets.some(it => it.name === \"mas\" || it.name === \"mas-dev\")\n const prepackaged = this.packagerOptions.prepackaged\n\n if (!hasMas || targets.length > 1) {\n const appPath = prepackaged == null ? path.join(this.computeAppOutDir(outDir, arch), `${this.appInfo.productFilename}.app`) : prepackaged\n nonMasPromise = (prepackaged ? Promise.resolve() : this.doPack(outDir, path.dirname(appPath), this.platform.nodeName as ElectronPlatformName, arch, this.platformSpecificBuildOptions, targets))\n .then(() => this.packageInDistributableFormat(appPath, Arch.x64, targets, taskManager))\n }\n\n for (const target of targets) {\n const targetName = target.name\n if (!(targetName === \"mas\" || targetName === \"mas-dev\")) {\n continue\n }\n\n const masBuildOptions = deepAssign({}, this.platformSpecificBuildOptions, this.config.mas)\n if (targetName === \"mas-dev\") {\n deepAssign(masBuildOptions, this.config.masDev, {\n type: \"development\",\n })\n }\n\n const targetOutDir = path.join(outDir, targetName)\n if (prepackaged == null) {\n await this.doPack(outDir, targetOutDir, \"mas\", arch, masBuildOptions, [target])\n await this.sign(path.join(targetOutDir, `${this.appInfo.productFilename}.app`), targetOutDir, masBuildOptions)\n }\n else {\n await this.sign(prepackaged, targetOutDir, masBuildOptions)\n }\n }\n\n if (nonMasPromise != null) {\n await nonMasPromise\n }\n }\n\n private async sign(appPath: string, outDir: string | null, masOptions: MasConfiguration | null): Promise<void> {\n if (!isSignAllowed()) {\n return\n }\n\n const isMas = masOptions != null\n const options = masOptions == null ? this.platformSpecificBuildOptions : masOptions\n const qualifier = options.identity\n\n if (!isMas && qualifier === null) {\n if (this.forceCodeSigning) {\n throw new InvalidConfigurationError(\"identity explicitly is set to null, but forceCodeSigning is set to true\")\n }\n log.info({reason: \"identity explicitly is set to null\"}, \"skipped macOS code signing\")\n return\n }\n\n const keychainFile = (await this.codeSigningInfo.value).keychainFile\n const explicitType = options.type\n const type = explicitType || \"distribution\"\n const isDevelopment = type === \"development\"\n const certificateType = getCertificateType(isMas, isDevelopment)\n let identity = await findIdentity(certificateType, qualifier, keychainFile)\n if (identity == null) {\n if (!isMas && !isDevelopment && explicitType !== \"distribution\") {\n identity = await findIdentity(\"Mac Developer\", qualifier, keychainFile)\n if (identity != null) {\n log.warn(\"Mac Developer is used to sign app — it is only for development and testing, not for production\")\n }\n }\n\n if (identity == null) {\n await reportError(isMas, certificateType, qualifier, keychainFile, this.forceCodeSigning)\n return\n }\n }\n\n if (!isMacOsHighSierra()) {\n throw new InvalidConfigurationError(\"macOS High Sierra 10.13.6 is required to sign\")\n }\n\n const signOptions: any = {\n \"identity-validation\": false,\n // https://github.com/electron-userland/electron-builder/issues/1699\n // kext are signed by the chipset manufacturers. You need a special certificate (only available on request) from Apple to be able to sign kext.\n ignore: (file: string) => {\n return file.endsWith(\".kext\") || file.startsWith(\"/Contents/PlugIns\", appPath.length) ||\n // https://github.com/electron-userland/electron-builder/issues/2010\n file.includes(\"/node_modules/puppeteer/.local-chromium\")\n },\n identity: identity!,\n type,\n platform: isMas ? \"mas\" : \"darwin\",\n version: this.config.electronVersion,\n app: appPath,\n keychain: keychainFile || undefined,\n binaries: options.binaries || undefined,\n requirements: isMas || this.platformSpecificBuildOptions.requirements == null ? undefined : await this.getResource(this.platformSpecificBuildOptions.requirements),\n // https://github.com/electron-userland/electron-osx-sign/issues/196\n // will fail on 10.14.5+ because a signed but unnotarized app is also rejected.\n \"gatekeeper-assess\": options.gatekeeperAssess === true,\n hardenedRuntime: isMas ? masOptions && masOptions.hardenedRuntime === true : options.hardenedRuntime !== false,\n }\n\n await this.adjustSignOptions(signOptions, masOptions)\n log.info({\n file: log.filePath(appPath),\n identityName: identity.name,\n identityHash: identity.hash,\n provisioningProfile: signOptions[\"provisioning-profile\"] || \"none\",\n }, \"signing\")\n await this.doSign(signOptions)\n\n // https://github.com/electron-userland/electron-builder/issues/1196#issuecomment-312310209\n if (masOptions != null && !isDevelopment) {\n const certType = isDevelopment ? \"Mac Developer\" : \"3rd Party Mac Developer Installer\"\n const masInstallerIdentity = await findIdentity(certType, masOptions.identity, keychainFile)\n if (masInstallerIdentity == null) {\n throw new InvalidConfigurationError(`Cannot find valid \"${certType}\" identity to sign MAS installer, please see https://electron.build/code-signing`)\n }\n\n // mas uploaded to AppStore, so, use \"-\" instead of space for name\n const artifactName = this.expandArtifactNamePattern(masOptions, \"pkg\")\n const artifactPath = path.join(outDir!, artifactName)\n await this.doFlat(appPath, artifactPath, masInstallerIdentity, keychainFile)\n await this.dispatchArtifactCreated(artifactPath, null, Arch.x64, this.computeSafeArtifactName(artifactName, \"pkg\"))\n }\n }\n\n private async adjustSignOptions(signOptions: any, masOptions: MasConfiguration | null) {\n const resourceList = await this.resourceList\n const customSignOptions = masOptions || this.platformSpecificBuildOptions\n const entitlementsSuffix = masOptions == null ? \"mac\" : \"mas\"\n\n let entitlements = customSignOptions.entitlements\n if (entitlements == null) {\n const p = `entitlements.${entitlementsSuffix}.plist`\n if (resourceList.includes(p)) {\n entitlements = path.join(this.info.buildResourcesDir, p)\n }\n else {\n entitlements = getTemplatePath(\"entitlements.mac.plist\")\n }\n }\n signOptions.entitlements = entitlements\n\n let entitlementsInherit = customSignOptions.entitlementsInherit\n if (entitlementsInherit == null) {\n const p = `entitlements.${entitlementsSuffix}.inherit.plist`\n if (resourceList.includes(p)) {\n entitlementsInherit = path.join(this.info.buildResourcesDir, p)\n }\n else {\n entitlementsInherit = getTemplatePath(\"entitlements.mac.plist\")\n }\n }\n signOptions[\"entitlements-inherit\"] = entitlementsInherit\n\n if (customSignOptions.provisioningProfile != null) {\n signOptions[\"provisioning-profile\"] = customSignOptions.provisioningProfile\n }\n }\n\n //noinspection JSMethodCanBeStatic\n protected async doSign(opts: SignOptions): Promise<any> {\n return signAsync(opts)\n }\n\n //noinspection JSMethodCanBeStatic\n protected async doFlat(appPath: string, outFile: string, identity: Identity, keychain: string | null | undefined): Promise<any> {\n // productbuild doesn't created directory for out file\n await mkdirs(path.dirname(outFile))\n\n const args = prepareProductBuildArgs(identity, keychain)\n args.push(\"--component\", appPath, \"/Applications\")\n args.push(outFile)\n return await exec(\"productbuild\", args)\n }\n\n public getElectronSrcDir(dist: string) {\n return path.resolve(this.projectDir, dist, this.info.framework.distMacOsAppName)\n }\n\n public getElectronDestinationDir(appOutDir: string) {\n return path.join(appOutDir, this.info.framework.distMacOsAppName)\n }\n\n // todo fileAssociations\n async applyCommonInfo(appPlist: any, contentsPath: string) {\n const appInfo = this.appInfo\n const appFilename = appInfo.productFilename\n\n // https://github.com/electron-userland/electron-builder/issues/1278\n appPlist.CFBundleExecutable = appFilename.endsWith(\" Helper\") ? appFilename.substring(0, appFilename.length - \" Helper\".length) : appFilename\n\n const icon = await this.getIconPath()\n if (icon != null) {\n const oldIcon = appPlist.CFBundleIconFile\n const resourcesPath = path.join(contentsPath, \"Resources\")\n if (oldIcon != null) {\n await unlinkIfExists(path.join(resourcesPath, oldIcon))\n }\n const iconFileName = `${appFilename}.icns`\n appPlist.CFBundleIconFile = iconFileName\n await copyFile(icon, path.join(resourcesPath, iconFileName))\n }\n appPlist.CFBundleName = appInfo.productName\n appPlist.CFBundleDisplayName = appInfo.productName\n\n const minimumSystemVersion = this.platformSpecificBuildOptions.minimumSystemVersion\n if (minimumSystemVersion != null) {\n appPlist.LSMinimumSystemVersion = minimumSystemVersion\n }\n\n appPlist.CFBundleIdentifier = appInfo.macBundleIdentifier\n\n appPlist.CFBundleShortVersionString = this.platformSpecificBuildOptions.bundleShortVersion || appInfo.version\n appPlist.CFBundleVersion = appInfo.buildVersion\n\n use(this.platformSpecificBuildOptions.category || (this.config as any).category, it => appPlist.LSApplicationCategoryType = it)\n appPlist.NSHumanReadableCopyright = appInfo.copyright\n\n if (this.platformSpecificBuildOptions.darkModeSupport) {\n appPlist.NSRequiresAquaSystemAppearance = false\n }\n\n const extendInfo = this.platformSpecificBuildOptions.extendInfo\n if (extendInfo != null) {\n Object.assign(appPlist, extendInfo)\n }\n }\n\n protected async signApp(packContext: AfterPackContext, isAsar: boolean): Promise<any> {\n const appFileName = `${this.appInfo.productFilename}.app`\n\n await BluebirdPromise.map(readdir(packContext.appOutDir), (file: string): any => {\n if (file === appFileName) {\n return this.sign(path.join(packContext.appOutDir, file), null, null)\n }\n return null\n })\n\n if (!isAsar) {\n return\n }\n\n const outResourcesDir = path.join(packContext.appOutDir, \"resources\", \"app.asar.unpacked\")\n await BluebirdPromise.map(orIfFileNotExist(readdir(outResourcesDir), []), (file: string): any => {\n if (file.endsWith(\".app\")) {\n return this.sign(path.join(outResourcesDir, file), null, null)\n }\n else {\n return null\n }\n })\n }\n}\n\nfunction getCertificateType(isMas: boolean, isDevelopment: boolean): CertType {\n if (isDevelopment) {\n return \"Mac Developer\"\n }\n return isMas ? \"3rd Party Mac Developer Application\" : \"Developer ID Application\"\n}\n"],"sourceRoot":""}
1
+ {"version":3,"sources":["../src/macPackager.ts"],"names":[],"mappings":"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","sourcesContent":["import BluebirdPromise from \"bluebird-lst\"\nimport { deepAssign, Arch, AsyncTaskManager, exec, InvalidConfigurationError, log, use } from \"builder-util\"\nimport { signAsync, SignOptions } from \"../electron-osx-sign\"\nimport { mkdirs, readdir } from \"fs-extra\"\nimport { Lazy } from \"lazy-val\"\nimport * as path from \"path\"\nimport { copyFile, unlinkIfExists } from \"builder-util/out/fs\"\nimport { orIfFileNotExist } from \"builder-util/out/promise\"\nimport { AppInfo } from \"./appInfo\"\nimport { CertType, CodeSigningInfo, createKeychain, findIdentity, Identity, isSignAllowed, removeKeychain, reportError } from \"./codeSign/macCodeSign\"\nimport { DIR_TARGET, Platform, Target } from \"./core\"\nimport { AfterPackContext, ElectronPlatformName } from \"./index\"\nimport { MacConfiguration, MasConfiguration } from \"./options/macOptions\"\nimport { Packager } from \"./packager\"\nimport { chooseNotNull, PlatformPackager } from \"./platformPackager\"\nimport { ArchiveTarget } from \"./targets/ArchiveTarget\"\nimport { PkgTarget, prepareProductBuildArgs } from \"./targets/pkg\"\nimport { createCommonTarget, NoOpTarget } from \"./targets/targetFactory\"\nimport { isMacOsHighSierra } from \"./util/macosVersion\"\nimport { getTemplatePath } from \"./util/pathManager\"\n\nexport default class MacPackager extends PlatformPackager<MacConfiguration> {\n readonly codeSigningInfo = new Lazy<CodeSigningInfo>(() => {\n const cscLink = this.getCscLink()\n if (cscLink == null || process.platform !== \"darwin\") {\n return Promise.resolve({keychainFile: process.env.CSC_KEYCHAIN || null})\n }\n\n return createKeychain({\n tmpDir: this.info.tempDirManager,\n cscLink,\n cscKeyPassword: this.getCscPassword(),\n cscILink: chooseNotNull(this.platformSpecificBuildOptions.cscInstallerLink, process.env.CSC_INSTALLER_LINK),\n cscIKeyPassword: chooseNotNull(this.platformSpecificBuildOptions.cscInstallerKeyPassword, process.env.CSC_INSTALLER_KEY_PASSWORD),\n currentDir: this.projectDir\n })\n .then(result => {\n const keychainFile = result.keychainFile\n if (keychainFile != null) {\n this.info.disposeOnBuildFinish(() => removeKeychain(keychainFile))\n }\n return result\n })\n })\n\n private _iconPath = new Lazy(() => this.getOrConvertIcon(\"icns\"))\n\n constructor(info: Packager) {\n super(info, Platform.MAC)\n }\n\n get defaultTarget(): Array<string> {\n return this.info.framework.macOsDefaultTargets\n }\n\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n protected prepareAppInfo(appInfo: AppInfo): AppInfo {\n return new AppInfo(this.info, this.platformSpecificBuildOptions.bundleVersion, this.platformSpecificBuildOptions)\n }\n\n async getIconPath(): Promise<string | null> {\n return this._iconPath.value\n }\n\n createTargets(targets: Array<string>, mapper: (name: string, factory: (outDir: string) => Target) => void): void {\n for (const name of targets) {\n switch (name) {\n case DIR_TARGET:\n break\n\n case \"dmg\": {\n // eslint-disable-next-line @typescript-eslint/no-var-requires\n const {DmgTarget} = require(\"dmg-builder\")\n mapper(name, outDir => new DmgTarget(this, outDir))\n break\n }\n\n case \"zip\":\n // https://github.com/electron-userland/electron-builder/issues/2313\n mapper(name, outDir => new ArchiveTarget(name, outDir, this, true))\n break\n\n case \"pkg\":\n mapper(name, outDir => new PkgTarget(this, outDir))\n break\n\n default:\n mapper(name, outDir => name === \"mas\" || name === \"mas-dev\" ? new NoOpTarget(name) : createCommonTarget(name, outDir, this))\n break\n }\n }\n }\n\n async pack(outDir: string, arch: Arch, targets: Array<Target>, taskManager: AsyncTaskManager): Promise<any> {\n let nonMasPromise: Promise<any> | null = null\n\n const hasMas = targets.length !== 0 && targets.some(it => it.name === \"mas\" || it.name === \"mas-dev\")\n const prepackaged = this.packagerOptions.prepackaged\n\n if (!hasMas || targets.length > 1) {\n const appPath = prepackaged == null ? path.join(this.computeAppOutDir(outDir, arch), `${this.appInfo.productFilename}.app`) : prepackaged\n nonMasPromise = (prepackaged ? Promise.resolve() : this.doPack(outDir, path.dirname(appPath), this.platform.nodeName as ElectronPlatformName, arch, this.platformSpecificBuildOptions, targets))\n .then(() => this.packageInDistributableFormat(appPath, Arch.x64, targets, taskManager))\n }\n\n for (const target of targets) {\n const targetName = target.name\n if (!(targetName === \"mas\" || targetName === \"mas-dev\")) {\n continue\n }\n\n const masBuildOptions = deepAssign({}, this.platformSpecificBuildOptions, this.config.mas)\n if (targetName === \"mas-dev\") {\n deepAssign(masBuildOptions, this.config.masDev, {\n type: \"development\",\n })\n }\n\n const targetOutDir = path.join(outDir, targetName)\n if (prepackaged == null) {\n await this.doPack(outDir, targetOutDir, \"mas\", arch, masBuildOptions, [target])\n await this.sign(path.join(targetOutDir, `${this.appInfo.productFilename}.app`), targetOutDir, masBuildOptions)\n }\n else {\n await this.sign(prepackaged, targetOutDir, masBuildOptions)\n }\n }\n\n if (nonMasPromise != null) {\n await nonMasPromise\n }\n }\n\n private async sign(appPath: string, outDir: string | null, masOptions: MasConfiguration | null): Promise<void> {\n if (!isSignAllowed()) {\n return\n }\n\n const isMas = masOptions != null\n const options = masOptions == null ? this.platformSpecificBuildOptions : masOptions\n const qualifier = options.identity\n\n if (!isMas && qualifier === null) {\n if (this.forceCodeSigning) {\n throw new InvalidConfigurationError(\"identity explicitly is set to null, but forceCodeSigning is set to true\")\n }\n log.info({reason: \"identity explicitly is set to null\"}, \"skipped macOS code signing\")\n return\n }\n\n const keychainFile = (await this.codeSigningInfo.value).keychainFile\n const explicitType = options.type\n const type = explicitType || \"distribution\"\n const isDevelopment = type === \"development\"\n const certificateType = getCertificateType(isMas, isDevelopment)\n let identity = await findIdentity(certificateType, qualifier, keychainFile)\n if (identity == null) {\n if (!isMas && !isDevelopment && explicitType !== \"distribution\") {\n identity = await findIdentity(\"Mac Developer\", qualifier, keychainFile)\n if (identity != null) {\n log.warn(\"Mac Developer is used to sign app — it is only for development and testing, not for production\")\n }\n }\n\n if (identity == null) {\n await reportError(isMas, certificateType, qualifier, keychainFile, this.forceCodeSigning)\n return\n }\n }\n\n if (!isMacOsHighSierra()) {\n throw new InvalidConfigurationError(\"macOS High Sierra 10.13.6 is required to sign\")\n }\n\n const signOptions: any = {\n \"identity-validation\": false,\n // https://github.com/electron-userland/electron-builder/issues/1699\n // kext are signed by the chipset manufacturers. You need a special certificate (only available on request) from Apple to be able to sign kext.\n ignore: (file: string) => {\n return file.endsWith(\".kext\") || file.startsWith(\"/Contents/PlugIns\", appPath.length) ||\n // https://github.com/electron-userland/electron-builder/issues/2010\n file.includes(\"/node_modules/puppeteer/.local-chromium\")\n },\n identity: identity!,\n type,\n platform: isMas ? \"mas\" : \"darwin\",\n version: this.config.electronVersion,\n app: appPath,\n keychain: keychainFile || undefined,\n binaries: options.binaries || undefined,\n requirements: isMas || this.platformSpecificBuildOptions.requirements == null ? undefined : await this.getResource(this.platformSpecificBuildOptions.requirements),\n // https://github.com/electron-userland/electron-osx-sign/issues/196\n // will fail on 10.14.5+ because a signed but unnotarized app is also rejected.\n \"gatekeeper-assess\": options.gatekeeperAssess === true,\n hardenedRuntime: isMas ? masOptions && masOptions.hardenedRuntime === true : options.hardenedRuntime !== false,\n }\n\n await this.adjustSignOptions(signOptions, masOptions)\n log.info({\n file: log.filePath(appPath),\n identityName: identity.name,\n identityHash: identity.hash,\n provisioningProfile: signOptions[\"provisioning-profile\"] || \"none\",\n }, \"signing\")\n await this.doSign(signOptions)\n\n // https://github.com/electron-userland/electron-builder/issues/1196#issuecomment-312310209\n if (masOptions != null && !isDevelopment) {\n const certType = isDevelopment ? \"Mac Developer\" : \"3rd Party Mac Developer Installer\"\n const masInstallerIdentity = await findIdentity(certType, masOptions.identity, keychainFile)\n if (masInstallerIdentity == null) {\n throw new InvalidConfigurationError(`Cannot find valid \"${certType}\" identity to sign MAS installer, please see https://electron.build/code-signing`)\n }\n\n // mas uploaded to AppStore, so, use \"-\" instead of space for name\n const artifactName = this.expandArtifactNamePattern(masOptions, \"pkg\")\n const artifactPath = path.join(outDir!, artifactName)\n await this.doFlat(appPath, artifactPath, masInstallerIdentity, keychainFile)\n await this.dispatchArtifactCreated(artifactPath, null, Arch.x64, this.computeSafeArtifactName(artifactName, \"pkg\"))\n }\n }\n\n private async adjustSignOptions(signOptions: any, masOptions: MasConfiguration | null) {\n const resourceList = await this.resourceList\n const customSignOptions = masOptions || this.platformSpecificBuildOptions\n const entitlementsSuffix = masOptions == null ? \"mac\" : \"mas\"\n\n let entitlements = customSignOptions.entitlements\n if (entitlements == null) {\n const p = `entitlements.${entitlementsSuffix}.plist`\n if (resourceList.includes(p)) {\n entitlements = path.join(this.info.buildResourcesDir, p)\n }\n else {\n entitlements = getTemplatePath(\"entitlements.mac.plist\")\n }\n }\n signOptions.entitlements = entitlements\n\n let entitlementsInherit = customSignOptions.entitlementsInherit\n if (entitlementsInherit == null) {\n const p = `entitlements.${entitlementsSuffix}.inherit.plist`\n if (resourceList.includes(p)) {\n entitlementsInherit = path.join(this.info.buildResourcesDir, p)\n }\n else {\n entitlementsInherit = getTemplatePath(\"entitlements.mac.plist\")\n }\n }\n signOptions[\"entitlements-inherit\"] = entitlementsInherit\n\n if (customSignOptions.provisioningProfile != null) {\n signOptions[\"provisioning-profile\"] = customSignOptions.provisioningProfile\n }\n signOptions['entitlements-loginhelper'] = customSignOptions.entitlementsLoginHelper\n }\n\n //noinspection JSMethodCanBeStatic\n protected async doSign(opts: SignOptions): Promise<any> {\n return signAsync(opts)\n }\n\n //noinspection JSMethodCanBeStatic\n protected async doFlat(appPath: string, outFile: string, identity: Identity, keychain: string | null | undefined): Promise<any> {\n // productbuild doesn't created directory for out file\n await mkdirs(path.dirname(outFile))\n\n const args = prepareProductBuildArgs(identity, keychain)\n args.push(\"--component\", appPath, \"/Applications\")\n args.push(outFile)\n return await exec(\"productbuild\", args)\n }\n\n public getElectronSrcDir(dist: string) {\n return path.resolve(this.projectDir, dist, this.info.framework.distMacOsAppName)\n }\n\n public getElectronDestinationDir(appOutDir: string) {\n return path.join(appOutDir, this.info.framework.distMacOsAppName)\n }\n\n // todo fileAssociations\n async applyCommonInfo(appPlist: any, contentsPath: string) {\n const appInfo = this.appInfo\n const appFilename = appInfo.productFilename\n\n // https://github.com/electron-userland/electron-builder/issues/1278\n appPlist.CFBundleExecutable = appFilename.endsWith(\" Helper\") ? appFilename.substring(0, appFilename.length - \" Helper\".length) : appFilename\n\n const icon = await this.getIconPath()\n if (icon != null) {\n const oldIcon = appPlist.CFBundleIconFile\n const resourcesPath = path.join(contentsPath, \"Resources\")\n if (oldIcon != null) {\n await unlinkIfExists(path.join(resourcesPath, oldIcon))\n }\n const iconFileName = `${appFilename}.icns`\n appPlist.CFBundleIconFile = iconFileName\n await copyFile(icon, path.join(resourcesPath, iconFileName))\n }\n appPlist.CFBundleName = appInfo.productName\n appPlist.CFBundleDisplayName = appInfo.productName\n\n const minimumSystemVersion = this.platformSpecificBuildOptions.minimumSystemVersion\n if (minimumSystemVersion != null) {\n appPlist.LSMinimumSystemVersion = minimumSystemVersion\n }\n\n appPlist.CFBundleIdentifier = appInfo.macBundleIdentifier\n\n appPlist.CFBundleShortVersionString = this.platformSpecificBuildOptions.bundleShortVersion || appInfo.version\n appPlist.CFBundleVersion = appInfo.buildVersion\n\n use(this.platformSpecificBuildOptions.category || (this.config as any).category, it => appPlist.LSApplicationCategoryType = it)\n appPlist.NSHumanReadableCopyright = appInfo.copyright\n\n if (this.platformSpecificBuildOptions.darkModeSupport) {\n appPlist.NSRequiresAquaSystemAppearance = false\n }\n\n const extendInfo = this.platformSpecificBuildOptions.extendInfo\n if (extendInfo != null) {\n Object.assign(appPlist, extendInfo)\n }\n }\n\n protected async signApp(packContext: AfterPackContext, isAsar: boolean): Promise<any> {\n const appFileName = `${this.appInfo.productFilename}.app`\n\n await BluebirdPromise.map(readdir(packContext.appOutDir), (file: string): any => {\n if (file === appFileName) {\n return this.sign(path.join(packContext.appOutDir, file), null, null)\n }\n return null\n })\n\n if (!isAsar) {\n return\n }\n\n const outResourcesDir = path.join(packContext.appOutDir, \"resources\", \"app.asar.unpacked\")\n await BluebirdPromise.map(orIfFileNotExist(readdir(outResourcesDir), []), (file: string): any => {\n if (file.endsWith(\".app\")) {\n return this.sign(path.join(outResourcesDir, file), null, null)\n }\n else {\n return null\n }\n })\n }\n}\n\nfunction getCertificateType(isMas: boolean, isDevelopment: boolean): CertType {\n if (isDevelopment) {\n return \"Mac Developer\"\n }\n return isMas ? \"3rd Party Mac Developer Application\" : \"Developer ID Application\"\n}\n"],"sourceRoot":""}
@@ -61,6 +61,10 @@ export interface SnapOptions extends CommonLinuxOptions, TargetSpecificOptions {
61
61
  * ```
62
62
  */
63
63
  readonly plugs?: Array<string | PlugDescriptor> | PlugDescriptor | null;
64
+ /**
65
+ * The list of [slots](https://snapcraft.io/docs/reference/interfaces).
66
+ */
67
+ readonly slots?: Array<string> | null;
64
68
  /**
65
69
  * Specifies any [parts](https://snapcraft.io/docs/reference/parts) that should be built before this part.
66
70
  * Defaults to `["desktop-gtk2""]`.
@@ -77,6 +81,20 @@ export interface SnapOptions extends CommonLinuxOptions, TargetSpecificOptions {
77
81
  * @default false
78
82
  */
79
83
  readonly autoStart?: boolean;
84
+ /**
85
+ * Specifies any files to make accessible from locations such as `/usr`, `/var`, and `/etc`. See [snap layouts](https://snapcraft.io/docs/snap-layouts) to learn more.
86
+ */
87
+ readonly layout?: {
88
+ [key: string]: {
89
+ [key: string]: string;
90
+ };
91
+ } | null;
92
+ /**
93
+ * Specifies which files from the app part to stage and which to exclude. Individual files, directories, wildcards, globstars, and exclusions are accepted. See [Snapcraft filesets](https://snapcraft.io/docs/snapcraft-filesets) to learn more about the format.
94
+ *
95
+ * The defaults can be found in [snap.ts](https://github.com/electron-userland/electron-builder/blob/master/packages/app-builder-lib/templates/snap/snapcraft.yaml#L29).
96
+ */
97
+ readonly appPartStage?: Array<string> | null;
80
98
  }
81
99
  export interface PlugDescriptor {
82
100
  [key: string]: {
@@ -35,6 +35,7 @@ export interface MacConfiguration extends PlatformSpecificBuildOptions {
35
35
  * This option only applies when signing with `entitlements` provided.
36
36
  */
37
37
  readonly entitlementsInherit?: string | null;
38
+ readonly entitlementsLoginHelper?: string | null;
38
39
  /**
39
40
  * The path to the provisioning profile to use when signing, absolute or relative to the app root.
40
41
  */
package/out/packager.js CHANGED
@@ -364,7 +364,7 @@ class Packager {
364
364
 
365
365
  try {
366
366
  _builderUtil().log.info({
367
- version: "22.7.0",
367
+ version: "22.8.0",
368
368
  os: require("os").release()
369
369
  }, "electron-builder");
370
370
  } catch (e) {
@@ -138,6 +138,11 @@ class SnapTarget extends _core().Target {
138
138
  plugs: plugNames,
139
139
  adapter: "none"
140
140
  };
141
+
142
+ if (options.slots != null) {
143
+ appDescriptor.slots = options.slots;
144
+ }
145
+
141
146
  const snap = (0, _jsYaml().safeLoad)((await (0, _fsExtra().readFile)(path.join((0, _pathManager().getTemplatePath)("snap"), "snapcraft.yaml"), "utf-8")));
142
147
 
143
148
  if (this.isUseTemplateApp) {
@@ -152,6 +157,14 @@ class SnapTarget extends _core().Target {
152
157
  snap.confinement = options.confinement;
153
158
  }
154
159
 
160
+ if (options.appPartStage != null) {
161
+ snap.parts.app.stage = options.appPartStage;
162
+ }
163
+
164
+ if (options.layout != null) {
165
+ snap.layout = options.layout;
166
+ }
167
+
155
168
  (0, _builderUtil().deepAssign)(snap, {
156
169
  name: snapName,
157
170
  version: appInfo.version,
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/targets/snap.ts"],"names":[],"mappings":"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","sourcesContent":["import { Arch, deepAssign, executeAppBuilder, InvalidConfigurationError, log, replaceDefault as _replaceDefault, serializeToYaml, toLinuxArchString } from \"builder-util\"\nimport { asArray } from \"builder-util-runtime\"\nimport { outputFile, readFile } from \"fs-extra\"\nimport { safeLoad } from \"js-yaml\"\nimport * as path from \"path\"\nimport * as semver from \"semver\"\nimport { SnapOptions } from \"..\"\nimport { Target } from \"../core\"\nimport { LinuxPackager } from \"../linuxPackager\"\nimport { PlugDescriptor } from \"../options/SnapOptions\"\nimport { getTemplatePath } from \"../util/pathManager\"\nimport { LinuxTargetHelper } from \"./LinuxTargetHelper\"\nimport { createStageDirPath } from \"./targetUtil\"\n\nconst defaultPlugs = [\"desktop\", \"desktop-legacy\", \"home\", \"x11\", \"wayland\", \"unity7\", \"browser-support\", \"network\", \"gsettings\", \"audio-playback\", \"pulseaudio\", \"opengl\"]\n\nexport default class SnapTarget extends Target {\n readonly options: SnapOptions = {...this.packager.platformSpecificBuildOptions, ...(this.packager.config as any)[this.name]}\n\n public isUseTemplateApp = false\n\n constructor(name: string, private readonly packager: LinuxPackager, private readonly helper: LinuxTargetHelper, readonly outDir: string) {\n super(name)\n }\n\n private replaceDefault(inList: Array<string> | null | undefined, defaultList: Array<string>) {\n const result = _replaceDefault(inList, defaultList)\n if (result !== defaultList) {\n this.isUseTemplateApp = false\n }\n return result\n }\n\n private async createDescriptor(arch: Arch): Promise<any> {\n if (!this.isElectronVersionGreaterOrEqualThen(\"4.0.0\")) {\n if (!this.isElectronVersionGreaterOrEqualThen(\"2.0.0-beta.1\")) {\n throw new InvalidConfigurationError(\"Electron 2 and higher is required to build Snap\")\n }\n\n log.warn(\"Electron 4 and higher is highly recommended for Snap\")\n }\n\n const appInfo = this.packager.appInfo\n const snapName = this.packager.executableName.toLowerCase()\n const options = this.options\n\n const plugs = normalizePlugConfiguration(this.options.plugs)\n\n const plugNames = this.replaceDefault(plugs == null ? null : Object.getOwnPropertyNames(plugs), defaultPlugs)\n const buildPackages = asArray(options.buildPackages)\n const defaultStagePackages = getDefaultStagePackages()\n const stagePackages = this.replaceDefault(options.stagePackages, defaultStagePackages)\n\n this.isUseTemplateApp = this.options.useTemplateApp !== false &&\n (arch === Arch.x64 || arch === Arch.armv7l) &&\n buildPackages.length === 0 &&\n isArrayEqualRegardlessOfSort(stagePackages, defaultStagePackages)\n\n const appDescriptor: any = {\n command: \"command.sh\",\n plugs: plugNames,\n adapter: \"none\",\n }\n\n const snap: any = safeLoad(await readFile(path.join(getTemplatePath(\"snap\"), \"snapcraft.yaml\"), \"utf-8\"))\n if (this.isUseTemplateApp) {\n delete appDescriptor.adapter\n }\n if (options.grade != null) {\n snap.grade = options.grade\n }\n if (options.confinement != null) {\n snap.confinement = options.confinement\n }\n deepAssign(snap, {\n name: snapName,\n version: appInfo.version,\n summary: options.summary || appInfo.productName,\n description: this.helper.getDescription(options),\n architectures: [toLinuxArchString(arch, \"snap\")],\n apps: {\n [snapName]: appDescriptor\n },\n parts: {\n app: {\n \"stage-packages\": stagePackages,\n }\n },\n })\n\n if (options.autoStart) {\n appDescriptor.autostart = `${snap.name}.desktop`\n }\n\n if (options.confinement === \"classic\") {\n delete appDescriptor.plugs\n delete snap.plugs\n }\n else {\n const archTriplet = archNameToTriplet(arch)\n appDescriptor.environment = {\n // https://github.com/electron-userland/electron-builder/issues/4007\n // https://github.com/electron/electron/issues/9056\n DISABLE_WAYLAND: \"1\",\n TMPDIR: \"$XDG_RUNTIME_DIR\",\n PATH: \"$SNAP/usr/sbin:$SNAP/usr/bin:$SNAP/sbin:$SNAP/bin:$PATH\",\n SNAP_DESKTOP_RUNTIME: \"$SNAP/gnome-platform\",\n LD_LIBRARY_PATH: [\n \"$SNAP_LIBRARY_PATH\",\n \"$SNAP/lib:$SNAP/usr/lib:$SNAP/lib/\" + archTriplet + \":$SNAP/usr/lib/\" + archTriplet,\n \"$LD_LIBRARY_PATH:$SNAP/lib:$SNAP/usr/lib\",\n \"$SNAP/lib/\" + archTriplet + \":$SNAP/usr/lib/\" + archTriplet\n ].join(\":\"),\n ...options.environment,\n }\n\n if (plugs != null) {\n for (const plugName of plugNames) {\n const plugOptions = plugs[plugName]\n if (plugOptions == null) {\n continue\n }\n\n snap.plugs[plugName] = plugOptions\n }\n }\n }\n\n if (buildPackages.length > 0) {\n snap.parts.app[\"build-packages\"] = buildPackages\n }\n if (options.after != null) {\n snap.parts.app.after = options.after\n }\n\n if (options.assumes != null) {\n snap.assumes = asArray(options.assumes)\n }\n\n return snap\n }\n\n async build(appOutDir: string, arch: Arch): Promise<any> {\n const packager = this.packager\n const options = this.options\n // tslint:disable-next-line:no-invalid-template-strings\n const artifactName = packager.expandArtifactNamePattern(this.options, \"snap\", arch, \"${name}_${version}_${arch}.${ext}\", false)\n const artifactPath = path.join(this.outDir, artifactName)\n await packager.info.callArtifactBuildStarted({\n targetPresentableName: \"snap\",\n file: artifactPath,\n arch,\n })\n\n const snap = await this.createDescriptor(arch)\n if (this.isUseTemplateApp) {\n delete snap.parts\n }\n\n const stageDir = await createStageDirPath(this, packager, arch)\n const snapArch = toLinuxArchString(arch, \"snap\")\n const args = [\n \"snap\",\n \"--app\", appOutDir,\n \"--stage\", stageDir,\n \"--arch\", snapArch,\n \"--output\", artifactPath,\n \"--executable\", this.packager.executableName,\n ]\n\n await this.helper.icons\n if (this.helper.maxIconPath != null) {\n if (!this.isUseTemplateApp) {\n snap.icon = \"snap/gui/icon.png\"\n }\n args.push(\"--icon\", this.helper.maxIconPath)\n }\n\n // snapcraft.yaml inside a snap directory\n const snapMetaDir = path.join(stageDir, this.isUseTemplateApp ? \"meta\" : \"snap\")\n const desktopFile = path.join(snapMetaDir, \"gui\", `${snap.name}.desktop`)\n await this.helper.writeDesktopEntry(this.options, packager.executableName, desktopFile, {\n // tslint:disable:no-invalid-template-strings\n Icon: \"${SNAP}/meta/gui/icon.png\"\n })\n\n if (this.isElectronVersionGreaterOrEqualThen(\"5.0.0\") && !isBrowserSandboxAllowed(snap)) {\n args.push(\"--extraAppArgs=--no-sandbox\")\n if (this.isUseTemplateApp) {\n args.push(\"--exclude\", \"chrome-sandbox\")\n }\n }\n\n if (packager.packagerOptions.effectiveOptionComputed != null && await packager.packagerOptions.effectiveOptionComputed({snap, desktopFile, args})) {\n return\n }\n\n await outputFile(path.join(snapMetaDir, this.isUseTemplateApp ? \"snap.yaml\" : \"snapcraft.yaml\"), serializeToYaml(snap))\n\n const hooksDir = await packager.getResource(options.hooks, \"snap-hooks\")\n if (hooksDir != null) {\n args.push(\"--hooks\", hooksDir)\n }\n\n if (this.isUseTemplateApp) {\n args.push(\"--template-url\", `electron4:${snapArch}`)\n }\n await executeAppBuilder(args)\n\n await packager.info.callArtifactBuildCompleted({\n file: artifactPath,\n safeArtifactName: packager.computeSafeArtifactName(artifactName, \"snap\", arch, false),\n target: this,\n arch,\n packager,\n publishConfig: options.publish == null ? {provider: \"snapStore\"} : null,\n })\n }\n\n private isElectronVersionGreaterOrEqualThen(version: string) {\n return semver.gte(this.packager.config.electronVersion || \"7.0.0\", version)\n }\n}\n\nfunction archNameToTriplet(arch: Arch): string {\n switch (arch) {\n case Arch.x64:\n return \"x86_64-linux-gnu\"\n case Arch.ia32:\n return \"i386-linux-gnu\"\n case Arch.armv7l:\n // noinspection SpellCheckingInspection\n return \"arm-linux-gnueabihf\"\n case Arch.arm64:\n return \"aarch64-linux-gnu\"\n\n default:\n throw new Error(`Unsupported arch ${arch}`)\n }\n}\n\nfunction isArrayEqualRegardlessOfSort(a: Array<string>, b: Array<string>) {\n a = a.slice()\n b = b.slice()\n a.sort()\n b.sort()\n return a.length === b.length && a.every((value, index) => value === b[index])\n}\n\nfunction normalizePlugConfiguration(raw: Array<string | PlugDescriptor> | PlugDescriptor | null | undefined): { [key: string]: {[name: string]: any } | null } | null {\n if (raw == null) {\n return null\n }\n\n const result: any = {}\n for (const item of (Array.isArray(raw) ? raw : [raw])) {\n if (typeof item === \"string\") {\n result[item] = null\n }\n else {\n Object.assign(result, item)\n }\n }\n return result\n}\n\nfunction isBrowserSandboxAllowed(snap: any): boolean {\n if (snap.plugs != null) {\n for (const plugName of Object.keys(snap.plugs)) {\n const plug = snap.plugs[plugName]\n if (plug.interface === \"browser-support\" && plug[\"allow-sandbox\"] === true) {\n return true\n }\n }\n }\n return false\n}\n\nfunction getDefaultStagePackages() {\n // libxss1 - was \"error while loading shared libraries: libXss.so.1\" on Xubuntu 16.04\n // noinspection SpellCheckingInspection\n return [\"libnspr4\", \"libnss3\", \"libxss1\", \"libappindicator3-1\", \"libsecret-1-0\"]\n}\n"],"sourceRoot":""}
1
+ {"version":3,"sources":["../../src/targets/snap.ts"],"names":[],"mappings":"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","sourcesContent":["import { Arch, deepAssign, executeAppBuilder, InvalidConfigurationError, log, replaceDefault as _replaceDefault, serializeToYaml, toLinuxArchString } from \"builder-util\"\nimport { asArray } from \"builder-util-runtime\"\nimport { outputFile, readFile } from \"fs-extra\"\nimport { safeLoad } from \"js-yaml\"\nimport * as path from \"path\"\nimport * as semver from \"semver\"\nimport { SnapOptions } from \"..\"\nimport { Target } from \"../core\"\nimport { LinuxPackager } from \"../linuxPackager\"\nimport { PlugDescriptor } from \"../options/SnapOptions\"\nimport { getTemplatePath } from \"../util/pathManager\"\nimport { LinuxTargetHelper } from \"./LinuxTargetHelper\"\nimport { createStageDirPath } from \"./targetUtil\"\n\nconst defaultPlugs = [\"desktop\", \"desktop-legacy\", \"home\", \"x11\", \"wayland\", \"unity7\", \"browser-support\", \"network\", \"gsettings\", \"audio-playback\", \"pulseaudio\", \"opengl\"]\n\nexport default class SnapTarget extends Target {\n readonly options: SnapOptions = {...this.packager.platformSpecificBuildOptions, ...(this.packager.config as any)[this.name]}\n\n public isUseTemplateApp = false\n\n constructor(name: string, private readonly packager: LinuxPackager, private readonly helper: LinuxTargetHelper, readonly outDir: string) {\n super(name)\n }\n\n private replaceDefault(inList: Array<string> | null | undefined, defaultList: Array<string>) {\n const result = _replaceDefault(inList, defaultList)\n if (result !== defaultList) {\n this.isUseTemplateApp = false\n }\n return result\n }\n\n private async createDescriptor(arch: Arch): Promise<any> {\n if (!this.isElectronVersionGreaterOrEqualThen(\"4.0.0\")) {\n if (!this.isElectronVersionGreaterOrEqualThen(\"2.0.0-beta.1\")) {\n throw new InvalidConfigurationError(\"Electron 2 and higher is required to build Snap\")\n }\n\n log.warn(\"Electron 4 and higher is highly recommended for Snap\")\n }\n\n const appInfo = this.packager.appInfo\n const snapName = this.packager.executableName.toLowerCase()\n const options = this.options\n\n const plugs = normalizePlugConfiguration(this.options.plugs)\n\n const plugNames = this.replaceDefault(plugs == null ? null : Object.getOwnPropertyNames(plugs), defaultPlugs)\n const buildPackages = asArray(options.buildPackages)\n const defaultStagePackages = getDefaultStagePackages()\n const stagePackages = this.replaceDefault(options.stagePackages, defaultStagePackages)\n\n this.isUseTemplateApp = this.options.useTemplateApp !== false &&\n (arch === Arch.x64 || arch === Arch.armv7l) &&\n buildPackages.length === 0 &&\n isArrayEqualRegardlessOfSort(stagePackages, defaultStagePackages)\n\n const appDescriptor: any = {\n command: \"command.sh\",\n plugs: plugNames,\n adapter: \"none\",\n }\n\n if (options.slots != null) {\n appDescriptor.slots = options.slots\n }\n\n const snap: any = safeLoad(await readFile(path.join(getTemplatePath(\"snap\"), \"snapcraft.yaml\"), \"utf-8\"))\n if (this.isUseTemplateApp) {\n delete appDescriptor.adapter\n }\n if (options.grade != null) {\n snap.grade = options.grade\n }\n if (options.confinement != null) {\n snap.confinement = options.confinement\n }\n if (options.appPartStage != null) {\n snap.parts.app.stage = options.appPartStage\n }\n if (options.layout != null) {\n snap.layout = options.layout\n }\n deepAssign(snap, {\n name: snapName,\n version: appInfo.version,\n summary: options.summary || appInfo.productName,\n description: this.helper.getDescription(options),\n architectures: [toLinuxArchString(arch, \"snap\")],\n apps: {\n [snapName]: appDescriptor\n },\n parts: {\n app: {\n \"stage-packages\": stagePackages,\n }\n },\n })\n\n if (options.autoStart) {\n appDescriptor.autostart = `${snap.name}.desktop`\n }\n\n if (options.confinement === \"classic\") {\n delete appDescriptor.plugs\n delete snap.plugs\n }\n else {\n const archTriplet = archNameToTriplet(arch)\n appDescriptor.environment = {\n // https://github.com/electron-userland/electron-builder/issues/4007\n // https://github.com/electron/electron/issues/9056\n DISABLE_WAYLAND: \"1\",\n TMPDIR: \"$XDG_RUNTIME_DIR\",\n PATH: \"$SNAP/usr/sbin:$SNAP/usr/bin:$SNAP/sbin:$SNAP/bin:$PATH\",\n SNAP_DESKTOP_RUNTIME: \"$SNAP/gnome-platform\",\n LD_LIBRARY_PATH: [\n \"$SNAP_LIBRARY_PATH\",\n \"$SNAP/lib:$SNAP/usr/lib:$SNAP/lib/\" + archTriplet + \":$SNAP/usr/lib/\" + archTriplet,\n \"$LD_LIBRARY_PATH:$SNAP/lib:$SNAP/usr/lib\",\n \"$SNAP/lib/\" + archTriplet + \":$SNAP/usr/lib/\" + archTriplet\n ].join(\":\"),\n ...options.environment,\n }\n\n if (plugs != null) {\n for (const plugName of plugNames) {\n const plugOptions = plugs[plugName]\n if (plugOptions == null) {\n continue\n }\n\n snap.plugs[plugName] = plugOptions\n }\n }\n }\n\n if (buildPackages.length > 0) {\n snap.parts.app[\"build-packages\"] = buildPackages\n }\n if (options.after != null) {\n snap.parts.app.after = options.after\n }\n\n if (options.assumes != null) {\n snap.assumes = asArray(options.assumes)\n }\n\n return snap\n }\n\n async build(appOutDir: string, arch: Arch): Promise<any> {\n const packager = this.packager\n const options = this.options\n // tslint:disable-next-line:no-invalid-template-strings\n const artifactName = packager.expandArtifactNamePattern(this.options, \"snap\", arch, \"${name}_${version}_${arch}.${ext}\", false)\n const artifactPath = path.join(this.outDir, artifactName)\n await packager.info.callArtifactBuildStarted({\n targetPresentableName: \"snap\",\n file: artifactPath,\n arch,\n })\n\n const snap = await this.createDescriptor(arch)\n if (this.isUseTemplateApp) {\n delete snap.parts\n }\n\n const stageDir = await createStageDirPath(this, packager, arch)\n const snapArch = toLinuxArchString(arch, \"snap\")\n const args = [\n \"snap\",\n \"--app\", appOutDir,\n \"--stage\", stageDir,\n \"--arch\", snapArch,\n \"--output\", artifactPath,\n \"--executable\", this.packager.executableName,\n ]\n\n await this.helper.icons\n if (this.helper.maxIconPath != null) {\n if (!this.isUseTemplateApp) {\n snap.icon = \"snap/gui/icon.png\"\n }\n args.push(\"--icon\", this.helper.maxIconPath)\n }\n\n // snapcraft.yaml inside a snap directory\n const snapMetaDir = path.join(stageDir, this.isUseTemplateApp ? \"meta\" : \"snap\")\n const desktopFile = path.join(snapMetaDir, \"gui\", `${snap.name}.desktop`)\n await this.helper.writeDesktopEntry(this.options, packager.executableName, desktopFile, {\n // tslint:disable:no-invalid-template-strings\n Icon: \"${SNAP}/meta/gui/icon.png\"\n })\n\n if (this.isElectronVersionGreaterOrEqualThen(\"5.0.0\") && !isBrowserSandboxAllowed(snap)) {\n args.push(\"--extraAppArgs=--no-sandbox\")\n if (this.isUseTemplateApp) {\n args.push(\"--exclude\", \"chrome-sandbox\")\n }\n }\n\n if (packager.packagerOptions.effectiveOptionComputed != null && await packager.packagerOptions.effectiveOptionComputed({snap, desktopFile, args})) {\n return\n }\n\n await outputFile(path.join(snapMetaDir, this.isUseTemplateApp ? \"snap.yaml\" : \"snapcraft.yaml\"), serializeToYaml(snap))\n\n const hooksDir = await packager.getResource(options.hooks, \"snap-hooks\")\n if (hooksDir != null) {\n args.push(\"--hooks\", hooksDir)\n }\n\n if (this.isUseTemplateApp) {\n args.push(\"--template-url\", `electron4:${snapArch}`)\n }\n await executeAppBuilder(args)\n\n await packager.info.callArtifactBuildCompleted({\n file: artifactPath,\n safeArtifactName: packager.computeSafeArtifactName(artifactName, \"snap\", arch, false),\n target: this,\n arch,\n packager,\n publishConfig: options.publish == null ? {provider: \"snapStore\"} : null,\n })\n }\n\n private isElectronVersionGreaterOrEqualThen(version: string) {\n return semver.gte(this.packager.config.electronVersion || \"7.0.0\", version)\n }\n}\n\nfunction archNameToTriplet(arch: Arch): string {\n switch (arch) {\n case Arch.x64:\n return \"x86_64-linux-gnu\"\n case Arch.ia32:\n return \"i386-linux-gnu\"\n case Arch.armv7l:\n // noinspection SpellCheckingInspection\n return \"arm-linux-gnueabihf\"\n case Arch.arm64:\n return \"aarch64-linux-gnu\"\n\n default:\n throw new Error(`Unsupported arch ${arch}`)\n }\n}\n\nfunction isArrayEqualRegardlessOfSort(a: Array<string>, b: Array<string>) {\n a = a.slice()\n b = b.slice()\n a.sort()\n b.sort()\n return a.length === b.length && a.every((value, index) => value === b[index])\n}\n\nfunction normalizePlugConfiguration(raw: Array<string | PlugDescriptor> | PlugDescriptor | null | undefined): { [key: string]: {[name: string]: any } | null } | null {\n if (raw == null) {\n return null\n }\n\n const result: any = {}\n for (const item of (Array.isArray(raw) ? raw : [raw])) {\n if (typeof item === \"string\") {\n result[item] = null\n }\n else {\n Object.assign(result, item)\n }\n }\n return result\n}\n\nfunction isBrowserSandboxAllowed(snap: any): boolean {\n if (snap.plugs != null) {\n for (const plugName of Object.keys(snap.plugs)) {\n const plug = snap.plugs[plugName]\n if (plug.interface === \"browser-support\" && plug[\"allow-sandbox\"] === true) {\n return true\n }\n }\n }\n return false\n}\n\nfunction getDefaultStagePackages() {\n // libxss1 - was \"error while loading shared libraries: libXss.so.1\" on Xubuntu 16.04\n // noinspection SpellCheckingInspection\n return [\"libnspr4\", \"libnss3\", \"libxss1\", \"libappindicator3-1\", \"libsecret-1-0\"]\n}\n"],"sourceRoot":""}
@@ -64,86 +64,80 @@ function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj;
64
64
 
65
65
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
66
66
 
67
- let BuildCacheManager =
68
- /** @class */
69
- (() => {
70
- class BuildCacheManager {
71
- constructor(outDir, executableFile, arch) {
72
- this.executableFile = executableFile;
73
- this.cacheInfo = null;
74
- this.newDigest = null;
75
- this.cacheDir = path.join(outDir, ".cache", _builderUtil().Arch[arch]);
76
- this.cacheFile = path.join(this.cacheDir, "app.exe");
77
- this.cacheInfoFile = path.join(this.cacheDir, "info.json");
78
- }
79
-
80
- async copyIfValid(digest) {
81
- this.newDigest = digest;
82
- this.cacheInfo = await (0, _promise().orNullIfFileNotExist)((0, _fsExtra().readJson)(this.cacheInfoFile));
83
- const oldDigest = this.cacheInfo == null ? null : this.cacheInfo.executableDigest;
84
-
85
- if (oldDigest !== digest) {
86
- _builderUtil().log.debug({
87
- oldDigest,
88
- newDigest: digest
89
- }, "no valid cached executable found");
67
+ class BuildCacheManager {
68
+ constructor(outDir, executableFile, arch) {
69
+ this.executableFile = executableFile;
70
+ this.cacheInfo = null;
71
+ this.newDigest = null;
72
+ this.cacheDir = path.join(outDir, ".cache", _builderUtil().Arch[arch]);
73
+ this.cacheFile = path.join(this.cacheDir, "app.exe");
74
+ this.cacheInfoFile = path.join(this.cacheDir, "info.json");
75
+ }
90
76
 
91
- return false;
92
- }
77
+ async copyIfValid(digest) {
78
+ this.newDigest = digest;
79
+ this.cacheInfo = await (0, _promise().orNullIfFileNotExist)((0, _fsExtra().readJson)(this.cacheInfoFile));
80
+ const oldDigest = this.cacheInfo == null ? null : this.cacheInfo.executableDigest;
93
81
 
82
+ if (oldDigest !== digest) {
94
83
  _builderUtil().log.debug({
95
- cacheFile: this.cacheFile,
96
- file: this.executableFile
97
- }, `copying cached executable`);
98
-
99
- try {
100
- await (0, _fs().copyFile)(this.cacheFile, this.executableFile, false);
101
- return true;
102
- } catch (e) {
103
- if (e.code === "ENOENT" || e.code === "ENOTDIR") {
104
- _builderUtil().log.debug({
105
- error: e.code
106
- }, "copy cached executable failed");
107
- } else {
108
- _builderUtil().log.warn({
109
- error: e.stack || e
110
- }, `cannot copy cached executable`);
111
- }
112
- }
84
+ oldDigest,
85
+ newDigest: digest
86
+ }, "no valid cached executable found");
113
87
 
114
88
  return false;
115
89
  }
116
90
 
117
- async save() {
118
- if (this.newDigest == null) {
119
- throw new Error("call copyIfValid before");
120
- }
91
+ _builderUtil().log.debug({
92
+ cacheFile: this.cacheFile,
93
+ file: this.executableFile
94
+ }, `copying cached executable`);
121
95
 
122
- if (this.cacheInfo == null) {
123
- this.cacheInfo = {
124
- executableDigest: this.newDigest
125
- };
96
+ try {
97
+ await (0, _fs().copyFile)(this.cacheFile, this.executableFile, false);
98
+ return true;
99
+ } catch (e) {
100
+ if (e.code === "ENOENT" || e.code === "ENOTDIR") {
101
+ _builderUtil().log.debug({
102
+ error: e.code
103
+ }, "copy cached executable failed");
126
104
  } else {
127
- this.cacheInfo.executableDigest = this.newDigest;
128
- }
129
-
130
- try {
131
- await (0, _fsExtra().ensureDir)(this.cacheDir);
132
- await Promise.all([(0, _fsExtra().writeJson)(this.cacheInfoFile, this.cacheInfo), (0, _fs().copyFile)(this.executableFile, this.cacheFile, false)]);
133
- } catch (e) {
134
105
  _builderUtil().log.warn({
135
106
  error: e.stack || e
136
- }, `cannot save build cache`);
107
+ }, `cannot copy cached executable`);
137
108
  }
138
109
  }
139
110
 
111
+ return false;
140
112
  }
141
113
 
142
- BuildCacheManager.VERSION = "0";
143
- return BuildCacheManager;
144
- })();
114
+ async save() {
115
+ if (this.newDigest == null) {
116
+ throw new Error("call copyIfValid before");
117
+ }
118
+
119
+ if (this.cacheInfo == null) {
120
+ this.cacheInfo = {
121
+ executableDigest: this.newDigest
122
+ };
123
+ } else {
124
+ this.cacheInfo.executableDigest = this.newDigest;
125
+ }
126
+
127
+ try {
128
+ await (0, _fsExtra().ensureDir)(this.cacheDir);
129
+ await Promise.all([(0, _fsExtra().writeJson)(this.cacheInfoFile, this.cacheInfo), (0, _fs().copyFile)(this.executableFile, this.cacheFile, false)]);
130
+ } catch (e) {
131
+ _builderUtil().log.warn({
132
+ error: e.stack || e
133
+ }, `cannot save build cache`);
134
+ }
135
+ }
136
+
137
+ }
145
138
 
146
139
  exports.BuildCacheManager = BuildCacheManager;
140
+ BuildCacheManager.VERSION = "0";
147
141
 
148
142
  async function digest(hash, files) {
149
143
  // do not use pipe - better do bulk file read (https://github.com/yarnpkg/yarn/commit/7a63e0d23c46a4564bc06645caf8a59690f04d01)
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/util/cacheManager.ts"],"names":[],"mappings":"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","sourcesContent":["import BluebirdPromise from \"bluebird-lst\"\nimport { Arch, log } from \"builder-util\"\nimport { copyFile } from \"builder-util/out/fs\"\nimport { orNullIfFileNotExist } from \"builder-util/out/promise\"\nimport { Hash } from \"crypto\"\nimport { ensureDir, readFile, readJson, writeJson } from \"fs-extra\"\nimport * as path from \"path\"\n\nexport interface BuildCacheInfo {\n executableDigest: string\n}\n\nexport class BuildCacheManager {\n static VERSION: string = \"0\"\n\n readonly cacheDir: string\n readonly cacheInfoFile: string\n readonly cacheFile: string\n\n cacheInfo: BuildCacheInfo | null = null\n\n private newDigest: string | null = null\n\n constructor(outDir: string, private readonly executableFile: string, arch: Arch) {\n this.cacheDir = path.join(outDir, \".cache\", Arch[arch])\n this.cacheFile = path.join(this.cacheDir, \"app.exe\")\n this.cacheInfoFile = path.join(this.cacheDir, \"info.json\")\n }\n\n async copyIfValid(digest: string): Promise<boolean> {\n this.newDigest = digest\n\n this.cacheInfo = await orNullIfFileNotExist(readJson(this.cacheInfoFile))\n const oldDigest = this.cacheInfo == null ? null : this.cacheInfo.executableDigest\n if (oldDigest !== digest) {\n log.debug({oldDigest, newDigest: digest}, \"no valid cached executable found\")\n return false\n }\n\n log.debug({cacheFile: this.cacheFile, file: this.executableFile}, `copying cached executable`)\n try {\n await copyFile(this.cacheFile, this.executableFile, false)\n return true\n }\n catch (e) {\n if (e.code === \"ENOENT\" || e.code === \"ENOTDIR\") {\n log.debug({error: e.code}, \"copy cached executable failed\")\n }\n else {\n log.warn({error: e.stack || e}, `cannot copy cached executable`)\n }\n }\n return false\n }\n\n async save() {\n if (this.newDigest == null) {\n throw new Error(\"call copyIfValid before\")\n }\n\n if (this.cacheInfo == null) {\n this.cacheInfo = {executableDigest: this.newDigest}\n }\n else {\n this.cacheInfo.executableDigest = this.newDigest\n }\n\n try {\n await ensureDir(this.cacheDir)\n await Promise.all([writeJson(this.cacheInfoFile, this.cacheInfo), copyFile(this.executableFile, this.cacheFile, false)])\n }\n catch (e) {\n log.warn({error: e.stack || e}, `cannot save build cache`)\n }\n }\n}\n\nexport async function digest(hash: Hash, files: Array<string>) {\n // do not use pipe - better do bulk file read (https://github.com/yarnpkg/yarn/commit/7a63e0d23c46a4564bc06645caf8a59690f04d01)\n for (const content of await BluebirdPromise.map(files, it => readFile(it))) {\n hash.update(content)\n }\n\n hash.update(BuildCacheManager.VERSION)\n return hash.digest(\"base64\")\n}"],"sourceRoot":""}
1
+ {"version":3,"sources":["../../src/util/cacheManager.ts"],"names":[],"mappings":"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","sourcesContent":["import BluebirdPromise from \"bluebird-lst\"\nimport { Arch, log } from \"builder-util\"\nimport { copyFile } from \"builder-util/out/fs\"\nimport { orNullIfFileNotExist } from \"builder-util/out/promise\"\nimport { Hash } from \"crypto\"\nimport { ensureDir, readFile, readJson, writeJson } from \"fs-extra\"\nimport * as path from \"path\"\n\nexport interface BuildCacheInfo {\n executableDigest: string\n}\n\nexport class BuildCacheManager {\n static VERSION: string = \"0\"\n\n readonly cacheDir: string\n readonly cacheInfoFile: string\n readonly cacheFile: string\n\n cacheInfo: BuildCacheInfo | null = null\n\n private newDigest: string | null = null\n\n constructor(outDir: string, private readonly executableFile: string, arch: Arch) {\n this.cacheDir = path.join(outDir, \".cache\", Arch[arch])\n this.cacheFile = path.join(this.cacheDir, \"app.exe\")\n this.cacheInfoFile = path.join(this.cacheDir, \"info.json\")\n }\n\n async copyIfValid(digest: string): Promise<boolean> {\n this.newDigest = digest\n\n this.cacheInfo = await orNullIfFileNotExist(readJson(this.cacheInfoFile))\n const oldDigest = this.cacheInfo == null ? null : this.cacheInfo.executableDigest\n if (oldDigest !== digest) {\n log.debug({oldDigest, newDigest: digest}, \"no valid cached executable found\")\n return false\n }\n\n log.debug({cacheFile: this.cacheFile, file: this.executableFile}, `copying cached executable`)\n try {\n await copyFile(this.cacheFile, this.executableFile, false)\n return true\n }\n catch (e) {\n if (e.code === \"ENOENT\" || e.code === \"ENOTDIR\") {\n log.debug({error: e.code}, \"copy cached executable failed\")\n }\n else {\n log.warn({error: e.stack || e}, `cannot copy cached executable`)\n }\n }\n return false\n }\n\n async save() {\n if (this.newDigest == null) {\n throw new Error(\"call copyIfValid before\")\n }\n\n if (this.cacheInfo == null) {\n this.cacheInfo = {executableDigest: this.newDigest}\n }\n else {\n this.cacheInfo.executableDigest = this.newDigest\n }\n\n try {\n await ensureDir(this.cacheDir)\n await Promise.all([writeJson(this.cacheInfoFile, this.cacheInfo), copyFile(this.executableFile, this.cacheFile, false)])\n }\n catch (e) {\n log.warn({error: e.stack || e}, `cannot save build cache`)\n }\n }\n}\n\nexport async function digest(hash: Hash, files: Array<string>) {\n // do not use pipe - better do bulk file read (https://github.com/yarnpkg/yarn/commit/7a63e0d23c46a4564bc06645caf8a59690f04d01)\n for (const content of await BluebirdPromise.map(files, it => readFile(it))) {\n hash.update(content)\n }\n\n hash.update(BuildCacheManager.VERSION)\n return hash.digest(\"base64\")\n}"],"sourceRoot":""}
@@ -311,7 +311,7 @@ async function validateConfig(config, debugLogger) {
311
311
 
312
312
 
313
313
  validateSchema((await schemeDataPromise.value), config, {
314
- name: `electron-builder ${"22.7.0"}`,
314
+ name: `electron-builder ${"22.8.0"}`,
315
315
  postFormatter: (formattedError, error) => {
316
316
  if (debugLogger.isEnabled) {
317
317
  debugLogger.add("invalidConfig", (0, _builderUtil().safeStringifyJson)(error));
@@ -557,7 +557,7 @@ class WinPackager extends _platformPackager().PlatformPackager {
557
557
 
558
558
  const outResourcesDir = path.join(packContext.appOutDir, "resources", "app.asar.unpacked"); // noinspection JSUnusedLocalSymbols
559
559
 
560
- const fileToSign = await (0, _fs().walk)(outResourcesDir, (file, stat) => stat.isDirectory() || file.endsWith(".exe") || file.endsWith(".dll"));
560
+ const fileToSign = await (0, _fs().walk)(outResourcesDir, (file, stat) => stat.isDirectory() || file.endsWith(".exe") || this.isSignDlls() && file.endsWith(".dll"));
561
561
  await _bluebirdLst().default.map(fileToSign, file => this.sign(file), {
562
562
  concurrency: 4
563
563
  });
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/winPackager.ts"],"names":[],"mappings":"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","sourcesContent":["import BluebirdPromise from \"bluebird-lst\"\nimport { Arch, asArray, InvalidConfigurationError, log, use, executeAppBuilder } from \"builder-util\"\nimport { parseDn } from \"builder-util-runtime\"\nimport { CopyFileTransformer, FileTransformer, walk } from \"builder-util/out/fs\"\nimport { createHash } from \"crypto\"\nimport { readdir } from \"fs-extra\"\nimport isCI from \"is-ci\"\nimport { Lazy } from \"lazy-val\"\nimport * as path from \"path\"\nimport { downloadCertificate } from \"./codeSign/codesign\"\nimport { CertificateFromStoreInfo, CertificateInfo, FileCodeSigningInfo, getCertificateFromStoreInfo, getCertInfo, sign, WindowsSignOptions } from \"./codeSign/windowsCodeSign\"\nimport { AfterPackContext } from \"./configuration\"\nimport { DIR_TARGET, Platform, Target } from \"./core\"\nimport { RequestedExecutionLevel, WindowsConfiguration } from \"./options/winOptions\"\nimport { Packager } from \"./packager\"\nimport { chooseNotNull, PlatformPackager } from \"./platformPackager\"\nimport AppXTarget from \"./targets/AppxTarget\"\nimport { NsisTarget } from \"./targets/nsis/NsisTarget\"\nimport { AppPackageHelper, CopyElevateHelper } from \"./targets/nsis/nsisUtil\"\nimport { WebInstallerTarget } from \"./targets/nsis/WebInstallerTarget\"\nimport { createCommonTarget } from \"./targets/targetFactory\"\nimport { BuildCacheManager, digest } from \"./util/cacheManager\"\nimport { isBuildCacheEnabled } from \"./util/flags\"\nimport { time } from \"./util/timer\"\nimport { getWindowsVm, VmManager } from \"./vm/vm\"\n\nexport class WinPackager extends PlatformPackager<WindowsConfiguration> {\n readonly cscInfo = new Lazy<FileCodeSigningInfo | CertificateFromStoreInfo | null>(() => {\n const platformSpecificBuildOptions = this.platformSpecificBuildOptions\n if (platformSpecificBuildOptions.certificateSubjectName != null || platformSpecificBuildOptions.certificateSha1 != null) {\n return this.vm.value\n .then(vm => getCertificateFromStoreInfo(platformSpecificBuildOptions, vm))\n .catch(e => {\n // https://github.com/electron-userland/electron-builder/pull/2397\n if (platformSpecificBuildOptions.sign == null) {\n throw e\n }\n else {\n log.debug({error: e}, \"getCertificateFromStoreInfo error\")\n return null\n }\n })\n }\n\n const certificateFile = platformSpecificBuildOptions.certificateFile\n if (certificateFile != null) {\n const certificatePassword = this.getCscPassword()\n return Promise.resolve({\n file: certificateFile,\n password: certificatePassword == null ? null : certificatePassword.trim(),\n })\n }\n\n const cscLink = this.getCscLink(\"WIN_CSC_LINK\")\n if (cscLink == null) {\n return Promise.resolve(null)\n }\n\n return downloadCertificate(cscLink, this.info.tempDirManager, this.projectDir)\n // before then\n .catch(e => {\n if (e instanceof InvalidConfigurationError) {\n throw new InvalidConfigurationError(`Env WIN_CSC_LINK is not correct, cannot resolve: ${e.message}`)\n }\n else {\n throw e\n }\n })\n .then(path => {\n return {\n file: path!!,\n password: this.getCscPassword(),\n }\n })\n })\n\n private _iconPath = new Lazy(() => this.getOrConvertIcon(\"ico\"))\n\n readonly vm = new Lazy<VmManager>(() => process.platform === \"win32\" ? Promise.resolve(new VmManager()) : getWindowsVm(this.debugLogger))\n\n readonly computedPublisherName = new Lazy<Array<string> | null>(async () => {\n const publisherName = (this.platformSpecificBuildOptions as WindowsConfiguration).publisherName\n if (publisherName === null) {\n return null\n }\n else if (publisherName != null) {\n return asArray(publisherName)\n }\n\n const certInfo = await this.lazyCertInfo.value\n return certInfo == null ? null : [certInfo.commonName]\n })\n\n readonly lazyCertInfo = new Lazy<CertificateInfo | null>(async () => {\n const cscInfo = await this.cscInfo.value\n if (cscInfo == null) {\n return null\n }\n\n if (\"subject\" in cscInfo) {\n const bloodyMicrosoftSubjectDn = (cscInfo as CertificateFromStoreInfo).subject\n return {\n commonName: parseDn(bloodyMicrosoftSubjectDn).get(\"CN\")!!,\n bloodyMicrosoftSubjectDn,\n }\n }\n\n const cscFile = (cscInfo as FileCodeSigningInfo).file\n if (cscFile == null) {\n return null\n }\n return await getCertInfo(cscFile, (cscInfo as FileCodeSigningInfo).password || \"\")\n })\n\n get isForceCodeSigningVerification(): boolean {\n return this.platformSpecificBuildOptions.verifyUpdateCodeSignature !== false\n }\n\n constructor(info: Packager) {\n super(info, Platform.WINDOWS)\n }\n\n get defaultTarget(): Array<string> {\n return [\"nsis\"]\n }\n\n protected doGetCscPassword(): string | undefined | null {\n return chooseNotNull(chooseNotNull(this.platformSpecificBuildOptions.certificatePassword, process.env.WIN_CSC_KEY_PASSWORD), super.doGetCscPassword())\n }\n\n createTargets(targets: Array<string>, mapper: (name: string, factory: (outDir: string) => Target) => void): void {\n let copyElevateHelper: CopyElevateHelper | null\n const getCopyElevateHelper = () => {\n if (copyElevateHelper == null) {\n copyElevateHelper = new CopyElevateHelper()\n }\n return copyElevateHelper\n }\n\n let helper: AppPackageHelper | null\n const getHelper = () => {\n if (helper == null) {\n helper = new AppPackageHelper(getCopyElevateHelper())\n }\n return helper\n }\n\n for (const name of targets) {\n if (name === DIR_TARGET) {\n continue\n }\n\n if (name === \"nsis\" || name === \"portable\") {\n mapper(name, outDir => new NsisTarget(this, outDir, name, getHelper()))\n }\n else if (name === \"nsis-web\") {\n // package file format differs from nsis target\n mapper(name, outDir => new WebInstallerTarget(this, path.join(outDir, name), name, new AppPackageHelper(getCopyElevateHelper())))\n }\n else {\n const targetClass: typeof NsisTarget | typeof AppXTarget | null = (() => {\n switch (name) {\n case \"squirrel\":\n try {\n return require(\"electron-builder-squirrel-windows\").default\n }\n catch (e) {\n throw new InvalidConfigurationError(`Module electron-builder-squirrel-windows must be installed in addition to build Squirrel.Windows: ${e.stack || e}`)\n }\n\n case \"appx\":\n return require(\"./targets/AppxTarget\").default\n\n case \"msi\":\n return require(\"./targets/MsiTarget\").default\n\n default:\n return null\n }\n })()\n\n mapper(name, outDir => targetClass === null ? createCommonTarget(name, outDir, this) : new (targetClass as any)(this, outDir, name))\n }\n }\n }\n\n getIconPath() {\n return this._iconPath.value\n }\n\n async sign(file: string, logMessagePrefix?: string): Promise<void> {\n const signOptions: WindowsSignOptions = {\n path: file,\n name: this.appInfo.productName,\n site: await this.appInfo.computePackageUrl(),\n options: this.platformSpecificBuildOptions,\n }\n\n const cscInfo = await this.cscInfo.value\n if (cscInfo == null) {\n if (this.platformSpecificBuildOptions.sign != null) {\n await sign(signOptions, this)\n }\n else if (this.forceCodeSigning) {\n throw new InvalidConfigurationError(`App is not signed and \"forceCodeSigning\" is set to true, please ensure that code signing configuration is correct, please see https://electron.build/code-signing`)\n }\n return\n }\n\n if (logMessagePrefix == null) {\n logMessagePrefix = \"signing\"\n }\n\n if (\"file\" in cscInfo) {\n log.info({\n file: log.filePath(file),\n certificateFile: (cscInfo as FileCodeSigningInfo).file,\n }, logMessagePrefix)\n }\n else {\n const info = cscInfo as CertificateFromStoreInfo\n log.info({\n file: log.filePath(file),\n subject: info.subject,\n thumbprint: info.thumbprint,\n store: info.store,\n user: info.isLocalMachineStore ? \"local machine\" : \"current user\",\n }, logMessagePrefix)\n }\n\n await this.doSign({\n ...signOptions,\n cscInfo,\n options: {\n ...this.platformSpecificBuildOptions,\n },\n })\n }\n\n private async doSign(options: WindowsSignOptions) {\n for (let i = 0; i < 3; i++) {\n try {\n await sign(options, this)\n break\n }\n catch (e) {\n // https://github.com/electron-userland/electron-builder/issues/1414\n const message = e.message\n if (message != null && message.includes(\"Couldn't resolve host name\")) {\n log.warn({error: message, attempt: i + 1}, `cannot sign`)\n continue\n }\n throw e\n }\n }\n }\n\n async signAndEditResources(file: string, arch: Arch, outDir: string, internalName?: string | null, requestedExecutionLevel?: RequestedExecutionLevel | null) {\n const appInfo = this.appInfo\n\n const files: Array<string> = []\n\n const args = [\n file,\n \"--set-version-string\", \"FileDescription\", appInfo.productName,\n \"--set-version-string\", \"ProductName\", appInfo.productName,\n \"--set-version-string\", \"LegalCopyright\", appInfo.copyright,\n \"--set-file-version\", appInfo.shortVersion || appInfo.buildVersion,\n \"--set-product-version\", appInfo.shortVersionWindows || appInfo.getVersionInWeirdWindowsForm(),\n ]\n\n if (internalName != null) {\n args.push(\n \"--set-version-string\", \"InternalName\", internalName,\n \"--set-version-string\", \"OriginalFilename\", \"\",\n )\n }\n\n if (requestedExecutionLevel != null && requestedExecutionLevel !== \"asInvoker\") {\n args.push(\"--set-requested-execution-level\", requestedExecutionLevel)\n }\n\n use(appInfo.companyName, it => args.push(\"--set-version-string\", \"CompanyName\", it!))\n use(this.platformSpecificBuildOptions.legalTrademarks, it => args.push(\"--set-version-string\", \"LegalTrademarks\", it!))\n const iconPath = await this.getIconPath()\n use(iconPath, it => {\n files.push(it)\n args.push(\"--set-icon\", it)\n })\n\n const config = this.config\n const cscInfoForCacheDigest = !isBuildCacheEnabled() || isCI || config.electronDist != null ? null : await this.cscInfo.value\n let buildCacheManager: BuildCacheManager | null = null\n // resources editing doesn't change executable for the same input and executed quickly - no need to complicate\n if (cscInfoForCacheDigest != null) {\n const cscFile = (cscInfoForCacheDigest as FileCodeSigningInfo).file\n if (cscFile != null) {\n files.push(cscFile)\n }\n\n const timer = time(\"executable cache\")\n const hash = createHash(\"sha512\")\n hash.update(config.electronVersion || \"no electronVersion\")\n hash.update(JSON.stringify(this.platformSpecificBuildOptions))\n hash.update(JSON.stringify(args))\n hash.update(this.platformSpecificBuildOptions.certificateSha1 || \"no certificateSha1\")\n hash.update(this.platformSpecificBuildOptions.certificateSubjectName || \"no subjectName\")\n\n buildCacheManager = new BuildCacheManager(outDir, file, arch)\n if (await buildCacheManager.copyIfValid(await digest(hash, files))) {\n timer.end()\n return\n }\n timer.end()\n }\n\n const timer = time(\"wine&sign\")\n // rcedit crashed of executed using wine, resourcehacker works\n if (process.platform === \"win32\" || this.info.framework.name === \"electron\") {\n await executeAppBuilder([\"rcedit\", \"--args\", JSON.stringify(args)], undefined /* child-process */, {}, 3 /* retry five times */)\n }\n\n await this.sign(file)\n timer.end()\n\n if (buildCacheManager != null) {\n await buildCacheManager.save()\n }\n }\n\n private isSignDlls(): boolean {\n return this.platformSpecificBuildOptions.signDlls === true\n }\n\n protected createTransformerForExtraFiles(packContext: AfterPackContext): FileTransformer | null {\n if (this.platformSpecificBuildOptions.signAndEditExecutable === false) {\n return null\n }\n\n return file => {\n if (file.endsWith(\".exe\") || (this.isSignDlls() && file.endsWith(\".dll\"))) {\n const parentDir = path.dirname(file)\n if (parentDir !== packContext.appOutDir) {\n return new CopyFileTransformer(file => this.sign(file))\n }\n }\n return null\n }\n }\n\n protected async signApp(packContext: AfterPackContext, isAsar: boolean): Promise<any> {\n const exeFileName = `${this.appInfo.productFilename}.exe`\n if (this.platformSpecificBuildOptions.signAndEditExecutable === false) {\n return\n }\n\n await BluebirdPromise.map(readdir(packContext.appOutDir), (file: string): any => {\n if (file === exeFileName) {\n return this.signAndEditResources(path.join(packContext.appOutDir, exeFileName), packContext.arch, packContext.outDir, path.basename(exeFileName, \".exe\"), this.platformSpecificBuildOptions.requestedExecutionLevel)\n }\n else if (file.endsWith(\".exe\") || (this.isSignDlls() && file.endsWith(\".dll\"))) {\n return this.sign(path.join(packContext.appOutDir, file))\n }\n return null\n })\n\n if (!isAsar) {\n return\n }\n\n const outResourcesDir = path.join(packContext.appOutDir, \"resources\", \"app.asar.unpacked\")\n // noinspection JSUnusedLocalSymbols\n const fileToSign = await walk(outResourcesDir, (file, stat) => stat.isDirectory() || file.endsWith(\".exe\") || file.endsWith(\".dll\"))\n await BluebirdPromise.map(fileToSign, file => this.sign(file), {concurrency: 4})\n }\n}"],"sourceRoot":""}
1
+ {"version":3,"sources":["../src/winPackager.ts"],"names":[],"mappings":"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","sourcesContent":["import BluebirdPromise from \"bluebird-lst\"\nimport { Arch, asArray, InvalidConfigurationError, log, use, executeAppBuilder } from \"builder-util\"\nimport { parseDn } from \"builder-util-runtime\"\nimport { CopyFileTransformer, FileTransformer, walk } from \"builder-util/out/fs\"\nimport { createHash } from \"crypto\"\nimport { readdir } from \"fs-extra\"\nimport isCI from \"is-ci\"\nimport { Lazy } from \"lazy-val\"\nimport * as path from \"path\"\nimport { downloadCertificate } from \"./codeSign/codesign\"\nimport { CertificateFromStoreInfo, CertificateInfo, FileCodeSigningInfo, getCertificateFromStoreInfo, getCertInfo, sign, WindowsSignOptions } from \"./codeSign/windowsCodeSign\"\nimport { AfterPackContext } from \"./configuration\"\nimport { DIR_TARGET, Platform, Target } from \"./core\"\nimport { RequestedExecutionLevel, WindowsConfiguration } from \"./options/winOptions\"\nimport { Packager } from \"./packager\"\nimport { chooseNotNull, PlatformPackager } from \"./platformPackager\"\nimport AppXTarget from \"./targets/AppxTarget\"\nimport { NsisTarget } from \"./targets/nsis/NsisTarget\"\nimport { AppPackageHelper, CopyElevateHelper } from \"./targets/nsis/nsisUtil\"\nimport { WebInstallerTarget } from \"./targets/nsis/WebInstallerTarget\"\nimport { createCommonTarget } from \"./targets/targetFactory\"\nimport { BuildCacheManager, digest } from \"./util/cacheManager\"\nimport { isBuildCacheEnabled } from \"./util/flags\"\nimport { time } from \"./util/timer\"\nimport { getWindowsVm, VmManager } from \"./vm/vm\"\n\nexport class WinPackager extends PlatformPackager<WindowsConfiguration> {\n readonly cscInfo = new Lazy<FileCodeSigningInfo | CertificateFromStoreInfo | null>(() => {\n const platformSpecificBuildOptions = this.platformSpecificBuildOptions\n if (platformSpecificBuildOptions.certificateSubjectName != null || platformSpecificBuildOptions.certificateSha1 != null) {\n return this.vm.value\n .then(vm => getCertificateFromStoreInfo(platformSpecificBuildOptions, vm))\n .catch(e => {\n // https://github.com/electron-userland/electron-builder/pull/2397\n if (platformSpecificBuildOptions.sign == null) {\n throw e\n }\n else {\n log.debug({error: e}, \"getCertificateFromStoreInfo error\")\n return null\n }\n })\n }\n\n const certificateFile = platformSpecificBuildOptions.certificateFile\n if (certificateFile != null) {\n const certificatePassword = this.getCscPassword()\n return Promise.resolve({\n file: certificateFile,\n password: certificatePassword == null ? null : certificatePassword.trim(),\n })\n }\n\n const cscLink = this.getCscLink(\"WIN_CSC_LINK\")\n if (cscLink == null) {\n return Promise.resolve(null)\n }\n\n return downloadCertificate(cscLink, this.info.tempDirManager, this.projectDir)\n // before then\n .catch(e => {\n if (e instanceof InvalidConfigurationError) {\n throw new InvalidConfigurationError(`Env WIN_CSC_LINK is not correct, cannot resolve: ${e.message}`)\n }\n else {\n throw e\n }\n })\n .then(path => {\n return {\n file: path!!,\n password: this.getCscPassword(),\n }\n })\n })\n\n private _iconPath = new Lazy(() => this.getOrConvertIcon(\"ico\"))\n\n readonly vm = new Lazy<VmManager>(() => process.platform === \"win32\" ? Promise.resolve(new VmManager()) : getWindowsVm(this.debugLogger))\n\n readonly computedPublisherName = new Lazy<Array<string> | null>(async () => {\n const publisherName = (this.platformSpecificBuildOptions as WindowsConfiguration).publisherName\n if (publisherName === null) {\n return null\n }\n else if (publisherName != null) {\n return asArray(publisherName)\n }\n\n const certInfo = await this.lazyCertInfo.value\n return certInfo == null ? null : [certInfo.commonName]\n })\n\n readonly lazyCertInfo = new Lazy<CertificateInfo | null>(async () => {\n const cscInfo = await this.cscInfo.value\n if (cscInfo == null) {\n return null\n }\n\n if (\"subject\" in cscInfo) {\n const bloodyMicrosoftSubjectDn = (cscInfo as CertificateFromStoreInfo).subject\n return {\n commonName: parseDn(bloodyMicrosoftSubjectDn).get(\"CN\")!!,\n bloodyMicrosoftSubjectDn,\n }\n }\n\n const cscFile = (cscInfo as FileCodeSigningInfo).file\n if (cscFile == null) {\n return null\n }\n return await getCertInfo(cscFile, (cscInfo as FileCodeSigningInfo).password || \"\")\n })\n\n get isForceCodeSigningVerification(): boolean {\n return this.platformSpecificBuildOptions.verifyUpdateCodeSignature !== false\n }\n\n constructor(info: Packager) {\n super(info, Platform.WINDOWS)\n }\n\n get defaultTarget(): Array<string> {\n return [\"nsis\"]\n }\n\n protected doGetCscPassword(): string | undefined | null {\n return chooseNotNull(chooseNotNull(this.platformSpecificBuildOptions.certificatePassword, process.env.WIN_CSC_KEY_PASSWORD), super.doGetCscPassword())\n }\n\n createTargets(targets: Array<string>, mapper: (name: string, factory: (outDir: string) => Target) => void): void {\n let copyElevateHelper: CopyElevateHelper | null\n const getCopyElevateHelper = () => {\n if (copyElevateHelper == null) {\n copyElevateHelper = new CopyElevateHelper()\n }\n return copyElevateHelper\n }\n\n let helper: AppPackageHelper | null\n const getHelper = () => {\n if (helper == null) {\n helper = new AppPackageHelper(getCopyElevateHelper())\n }\n return helper\n }\n\n for (const name of targets) {\n if (name === DIR_TARGET) {\n continue\n }\n\n if (name === \"nsis\" || name === \"portable\") {\n mapper(name, outDir => new NsisTarget(this, outDir, name, getHelper()))\n }\n else if (name === \"nsis-web\") {\n // package file format differs from nsis target\n mapper(name, outDir => new WebInstallerTarget(this, path.join(outDir, name), name, new AppPackageHelper(getCopyElevateHelper())))\n }\n else {\n const targetClass: typeof NsisTarget | typeof AppXTarget | null = (() => {\n switch (name) {\n case \"squirrel\":\n try {\n return require(\"electron-builder-squirrel-windows\").default\n }\n catch (e) {\n throw new InvalidConfigurationError(`Module electron-builder-squirrel-windows must be installed in addition to build Squirrel.Windows: ${e.stack || e}`)\n }\n\n case \"appx\":\n return require(\"./targets/AppxTarget\").default\n\n case \"msi\":\n return require(\"./targets/MsiTarget\").default\n\n default:\n return null\n }\n })()\n\n mapper(name, outDir => targetClass === null ? createCommonTarget(name, outDir, this) : new (targetClass as any)(this, outDir, name))\n }\n }\n }\n\n getIconPath() {\n return this._iconPath.value\n }\n\n async sign(file: string, logMessagePrefix?: string): Promise<void> {\n const signOptions: WindowsSignOptions = {\n path: file,\n name: this.appInfo.productName,\n site: await this.appInfo.computePackageUrl(),\n options: this.platformSpecificBuildOptions,\n }\n\n const cscInfo = await this.cscInfo.value\n if (cscInfo == null) {\n if (this.platformSpecificBuildOptions.sign != null) {\n await sign(signOptions, this)\n }\n else if (this.forceCodeSigning) {\n throw new InvalidConfigurationError(`App is not signed and \"forceCodeSigning\" is set to true, please ensure that code signing configuration is correct, please see https://electron.build/code-signing`)\n }\n return\n }\n\n if (logMessagePrefix == null) {\n logMessagePrefix = \"signing\"\n }\n\n if (\"file\" in cscInfo) {\n log.info({\n file: log.filePath(file),\n certificateFile: (cscInfo as FileCodeSigningInfo).file,\n }, logMessagePrefix)\n }\n else {\n const info = cscInfo as CertificateFromStoreInfo\n log.info({\n file: log.filePath(file),\n subject: info.subject,\n thumbprint: info.thumbprint,\n store: info.store,\n user: info.isLocalMachineStore ? \"local machine\" : \"current user\",\n }, logMessagePrefix)\n }\n\n await this.doSign({\n ...signOptions,\n cscInfo,\n options: {\n ...this.platformSpecificBuildOptions,\n },\n })\n }\n\n private async doSign(options: WindowsSignOptions) {\n for (let i = 0; i < 3; i++) {\n try {\n await sign(options, this)\n break\n }\n catch (e) {\n // https://github.com/electron-userland/electron-builder/issues/1414\n const message = e.message\n if (message != null && message.includes(\"Couldn't resolve host name\")) {\n log.warn({error: message, attempt: i + 1}, `cannot sign`)\n continue\n }\n throw e\n }\n }\n }\n\n async signAndEditResources(file: string, arch: Arch, outDir: string, internalName?: string | null, requestedExecutionLevel?: RequestedExecutionLevel | null) {\n const appInfo = this.appInfo\n\n const files: Array<string> = []\n\n const args = [\n file,\n \"--set-version-string\", \"FileDescription\", appInfo.productName,\n \"--set-version-string\", \"ProductName\", appInfo.productName,\n \"--set-version-string\", \"LegalCopyright\", appInfo.copyright,\n \"--set-file-version\", appInfo.shortVersion || appInfo.buildVersion,\n \"--set-product-version\", appInfo.shortVersionWindows || appInfo.getVersionInWeirdWindowsForm(),\n ]\n\n if (internalName != null) {\n args.push(\n \"--set-version-string\", \"InternalName\", internalName,\n \"--set-version-string\", \"OriginalFilename\", \"\",\n )\n }\n\n if (requestedExecutionLevel != null && requestedExecutionLevel !== \"asInvoker\") {\n args.push(\"--set-requested-execution-level\", requestedExecutionLevel)\n }\n\n use(appInfo.companyName, it => args.push(\"--set-version-string\", \"CompanyName\", it!))\n use(this.platformSpecificBuildOptions.legalTrademarks, it => args.push(\"--set-version-string\", \"LegalTrademarks\", it!))\n const iconPath = await this.getIconPath()\n use(iconPath, it => {\n files.push(it)\n args.push(\"--set-icon\", it)\n })\n\n const config = this.config\n const cscInfoForCacheDigest = !isBuildCacheEnabled() || isCI || config.electronDist != null ? null : await this.cscInfo.value\n let buildCacheManager: BuildCacheManager | null = null\n // resources editing doesn't change executable for the same input and executed quickly - no need to complicate\n if (cscInfoForCacheDigest != null) {\n const cscFile = (cscInfoForCacheDigest as FileCodeSigningInfo).file\n if (cscFile != null) {\n files.push(cscFile)\n }\n\n const timer = time(\"executable cache\")\n const hash = createHash(\"sha512\")\n hash.update(config.electronVersion || \"no electronVersion\")\n hash.update(JSON.stringify(this.platformSpecificBuildOptions))\n hash.update(JSON.stringify(args))\n hash.update(this.platformSpecificBuildOptions.certificateSha1 || \"no certificateSha1\")\n hash.update(this.platformSpecificBuildOptions.certificateSubjectName || \"no subjectName\")\n\n buildCacheManager = new BuildCacheManager(outDir, file, arch)\n if (await buildCacheManager.copyIfValid(await digest(hash, files))) {\n timer.end()\n return\n }\n timer.end()\n }\n\n const timer = time(\"wine&sign\")\n // rcedit crashed of executed using wine, resourcehacker works\n if (process.platform === \"win32\" || this.info.framework.name === \"electron\") {\n await executeAppBuilder([\"rcedit\", \"--args\", JSON.stringify(args)], undefined /* child-process */, {}, 3 /* retry five times */)\n }\n\n await this.sign(file)\n timer.end()\n\n if (buildCacheManager != null) {\n await buildCacheManager.save()\n }\n }\n\n private isSignDlls(): boolean {\n return this.platformSpecificBuildOptions.signDlls === true\n }\n\n protected createTransformerForExtraFiles(packContext: AfterPackContext): FileTransformer | null {\n if (this.platformSpecificBuildOptions.signAndEditExecutable === false) {\n return null\n }\n\n return file => {\n if (file.endsWith(\".exe\") || (this.isSignDlls() && file.endsWith(\".dll\"))) {\n const parentDir = path.dirname(file)\n if (parentDir !== packContext.appOutDir) {\n return new CopyFileTransformer(file => this.sign(file))\n }\n }\n return null\n }\n }\n\n protected async signApp(packContext: AfterPackContext, isAsar: boolean): Promise<any> {\n const exeFileName = `${this.appInfo.productFilename}.exe`\n if (this.platformSpecificBuildOptions.signAndEditExecutable === false) {\n return\n }\n\n await BluebirdPromise.map(readdir(packContext.appOutDir), (file: string): any => {\n if (file === exeFileName) {\n return this.signAndEditResources(path.join(packContext.appOutDir, exeFileName), packContext.arch, packContext.outDir, path.basename(exeFileName, \".exe\"), this.platformSpecificBuildOptions.requestedExecutionLevel)\n }\n else if (file.endsWith(\".exe\") || (this.isSignDlls() && file.endsWith(\".dll\"))) {\n return this.sign(path.join(packContext.appOutDir, file))\n }\n return null\n })\n\n if (!isAsar) {\n return\n }\n\n const outResourcesDir = path.join(packContext.appOutDir, \"resources\", \"app.asar.unpacked\")\n // noinspection JSUnusedLocalSymbols\n const fileToSign = await walk(outResourcesDir, (file, stat) => stat.isDirectory() || file.endsWith(\".exe\") || (this.isSignDlls() && file.endsWith(\".dll\")))\n await BluebirdPromise.map(fileToSign, file => this.sign(file), {concurrency: 4})\n }\n}"],"sourceRoot":""}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "app-builder-lib",
3
3
  "description": "electron-builder lib",
4
- "version": "22.7.0",
4
+ "version": "22.8.0",
5
5
  "main": "out/index.js",
6
6
  "files": [
7
7
  "out",
@@ -46,14 +46,14 @@
46
46
  "@develar/schema-utils": "~2.6.5",
47
47
  "async-exit-hook": "^2.0.1",
48
48
  "bluebird-lst": "^1.0.9",
49
- "builder-util": "22.7.0",
50
- "builder-util-runtime": "8.7.1",
49
+ "builder-util": "22.8.0",
50
+ "builder-util-runtime": "8.7.2",
51
51
  "chromium-pickle-js": "^0.2.0",
52
- "debug": "^4.2.0",
52
+ "debug": "^4.1.1",
53
53
  "ejs": "^3.1.3",
54
- "electron-publish": "22.7.0",
55
- "fs-extra": "^9.0.0",
56
- "hosted-git-info": "^3.0.4",
54
+ "electron-publish": "22.8.0",
55
+ "fs-extra": "^9.0.1",
56
+ "hosted-git-info": "^3.0.5",
57
57
  "is-ci": "^2.0.0",
58
58
  "isbinaryfile": "^4.0.6",
59
59
  "js-yaml": "^3.14.0",
@@ -67,34 +67,34 @@
67
67
  },
68
68
  "///": "babel in devDependencies for proton tests",
69
69
  "devDependencies": {
70
- "@babel/core": "^7.9.6",
71
- "@babel/plugin-proposal-class-properties": "^7.8.3",
72
- "@babel/plugin-proposal-decorators": "^7.8.3",
73
- "@babel/plugin-proposal-do-expressions": "^7.8.3",
74
- "@babel/plugin-proposal-export-default-from": "^7.8.3",
75
- "@babel/plugin-proposal-export-namespace-from": "^7.8.3",
76
- "@babel/plugin-proposal-function-bind": "^7.8.3",
77
- "@babel/plugin-proposal-function-sent": "^7.8.3",
78
- "@babel/plugin-proposal-json-strings": "^7.8.3",
79
- "@babel/plugin-proposal-logical-assignment-operators": "^7.8.3",
80
- "@babel/plugin-proposal-nullish-coalescing-operator": "^7.8.3",
81
- "@babel/plugin-proposal-numeric-separator": "^7.8.3",
82
- "@babel/plugin-proposal-optional-chaining": "^7.9.0",
83
- "@babel/plugin-proposal-pipeline-operator": "^7.8.3",
84
- "@babel/plugin-proposal-throw-expressions": "^7.8.3",
70
+ "@babel/core": "^7.10.4",
71
+ "@babel/plugin-proposal-class-properties": "^7.10.4",
72
+ "@babel/plugin-proposal-decorators": "^7.10.4",
73
+ "@babel/plugin-proposal-do-expressions": "^7.10.4",
74
+ "@babel/plugin-proposal-export-default-from": "^7.10.4",
75
+ "@babel/plugin-proposal-export-namespace-from": "^7.10.4",
76
+ "@babel/plugin-proposal-function-bind": "^7.10.4",
77
+ "@babel/plugin-proposal-function-sent": "^7.10.4",
78
+ "@babel/plugin-proposal-json-strings": "^7.10.4",
79
+ "@babel/plugin-proposal-logical-assignment-operators": "^7.10.4",
80
+ "@babel/plugin-proposal-nullish-coalescing-operator": "^7.10.4",
81
+ "@babel/plugin-proposal-numeric-separator": "^7.10.4",
82
+ "@babel/plugin-proposal-optional-chaining": "^7.10.4",
83
+ "@babel/plugin-proposal-pipeline-operator": "^7.10.4",
84
+ "@babel/plugin-proposal-throw-expressions": "^7.10.4",
85
85
  "@babel/plugin-syntax-dynamic-import": "^7.8.3",
86
- "@babel/plugin-syntax-import-meta": "^7.8.3",
87
- "@babel/preset-env": "^7.9.6",
88
- "@babel/preset-react": "^7.9.4",
86
+ "@babel/plugin-syntax-import-meta": "^7.10.4",
87
+ "@babel/preset-env": "^7.10.4",
88
+ "@babel/preset-react": "^7.10.4",
89
89
  "@types/debug": "^4.1.5",
90
- "@types/ejs": "^3.0.3",
90
+ "@types/ejs": "^3.0.4",
91
91
  "@types/fs-extra": "^9.0.1",
92
92
  "@types/is-ci": "^2.0.0",
93
93
  "@types/js-yaml": "^3.12.3",
94
94
  "@types/normalize-package-data": "^2.4.0",
95
- "@types/semver": "^7.2.0",
96
- "dmg-builder": "22.7.0",
97
- "electron-builder-squirrel-windows": "22.7.0"
95
+ "@types/semver": "^7.3.1",
96
+ "dmg-builder": "22.8.0",
97
+ "electron-builder-squirrel-windows": "22.8.0"
98
98
  },
99
99
  "//": "electron-builder-squirrel-windows and dmg-builder added as dev dep for tests (as otherwise `require` doesn't work using Yarn 2)",
100
100
  "typings": "./out/index.d.ts"
package/scheme.json CHANGED
@@ -1982,6 +1982,13 @@
1982
1982
  "string"
1983
1983
  ]
1984
1984
  },
1985
+ "entitlementsLoginHelper": {
1986
+ "desciption": "Path to login helper entitlement file. When using App Sandbox, the the `com.apple.security.inherit` key that is normally in the inheritted entitlements cannot be inherited since the login helper is a standalone executable. Defaults to the value provided for `entitlements`.\n\nThis option only applies when signing with `entitlements` provided.",
1987
+ "type": [
1988
+ "null",
1989
+ "string"
1990
+ ]
1991
+ },
1985
1992
  "extendInfo": {
1986
1993
  "description": "The extra entries for `Info.plist`."
1987
1994
  },
@@ -2522,6 +2529,13 @@
2522
2529
  "string"
2523
2530
  ]
2524
2531
  },
2532
+ "entitlementsLoginHelper": {
2533
+ "desciption": "Path to login helper entitlement file. When using App Sandbox, the the `com.apple.security.inherit` key that is normally in the inheritted entitlements cannot be inherited since the login helper is a standalone executable. Defaults to the value provided for `entitlements`.\n\nThis option only applies when signing with `entitlements` provided.",
2534
+ "type": [
2535
+ "null",
2536
+ "string"
2537
+ ]
2538
+ },
2525
2539
  "extendInfo": {
2526
2540
  "description": "The extra entries for `Info.plist`."
2527
2541
  },
@@ -4289,6 +4303,12 @@
4289
4303
  ],
4290
4304
  "description": "Specifies any [parts](https://snapcraft.io/docs/reference/parts) that should be built before this part.\nDefaults to `[\"desktop-gtk2\"\"]`.\n\nIf list contains `default`, it will be replaced to default list, so, `[\"default\", \"foo\"]` can be used to add custom parts `foo` in addition to defaults."
4291
4305
  },
4306
+ "appPartStage": {
4307
+ "type": "array",
4308
+ "items": {
4309
+ "type": "string"
4310
+ }
4311
+ },
4292
4312
  "artifactName": {
4293
4313
  "description": "The [artifact file name template](/configuration/configuration#artifact-file-name-template).",
4294
4314
  "type": [
@@ -4418,6 +4438,9 @@
4418
4438
  "string"
4419
4439
  ]
4420
4440
  },
4441
+ "layout": {
4442
+ "type": "object"
4443
+ },
4421
4444
  "mimeTypes": {
4422
4445
  "anyOf": [
4423
4446
  {
@@ -4456,6 +4479,24 @@
4456
4479
  ],
4457
4480
  "description": "The list of [plugs](https://snapcraft.io/docs/reference/interfaces).\nDefaults to `[\"desktop\", \"desktop-legacy\", \"home\", \"x11\", \"unity7\", \"browser-support\", \"network\", \"gsettings\", \"audio-playback\", \"pulseaudio\", \"opengl\"]`.\n\nIf list contains `default`, it will be replaced to default list, so, `[\"default\", \"foo\"]` can be used to add custom plug `foo` in addition to defaults.\n\nAdditional attributes can be specified using object instead of just name of plug:\n```\n[\n {\n \"browser-sandbox\": {\n \"interface\": \"browser-support\",\n \"allow-sandbox\": true\n },\n },\n \"another-simple-plug-name\"\n]\n```"
4458
4481
  },
4482
+ "slots": {
4483
+ "anyOf": [
4484
+ {
4485
+ "items": {
4486
+ "anyOf": [
4487
+ {
4488
+ "type": "string"
4489
+ }
4490
+ ]
4491
+ },
4492
+ "type": "array"
4493
+ },
4494
+ {
4495
+ "type": "null"
4496
+ }
4497
+ ],
4498
+ "description": "The list of [slots](https://snapcraft.io/docs/reference/interfaces)."
4499
+ },
4459
4500
  "publish": {
4460
4501
  "anyOf": [
4461
4502
  {
@@ -6084,4 +6125,4 @@
6084
6125
  }
6085
6126
  },
6086
6127
  "type": "object"
6087
- }
6128
+ }
@@ -59,7 +59,11 @@
59
59
  !endif
60
60
 
61
61
  !insertmacro MUI_PAGE_INSTFILES
62
- !insertmacro MUI_PAGE_FINISH
62
+ !ifmacrodef customFinishPage
63
+ !insertmacro customFinishPage
64
+ !else
65
+ !insertmacro MUI_PAGE_FINISH
66
+ !endif
63
67
  !else
64
68
  !insertmacro MUI_UNPAGE_WELCOME
65
69
  !ifndef INSTALL_MODE_PER_ALL_USERS