app-builder-lib 27.0.0-alpha.7 → 27.0.0-alpha.8
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/codeSign/mac/macCodeSign.d.ts.map +1 -1
- package/dist/codeSign/mac/macCodeSign.js +6 -4
- package/dist/codeSign/mac/macCodeSign.js.map +1 -1
- package/dist/codeSign/signResult.d.ts +26 -0
- package/dist/codeSign/signResult.d.ts.map +1 -0
- package/dist/codeSign/signResult.js +12 -0
- package/dist/codeSign/signResult.js.map +1 -0
- package/dist/codeSign/win/signManager.d.ts +2 -1
- package/dist/codeSign/win/signManager.d.ts.map +1 -1
- package/dist/codeSign/win/signManager.js.map +1 -1
- package/dist/codeSign/win/signtoolBaseSignManager.d.ts +2 -1
- package/dist/codeSign/win/signtoolBaseSignManager.d.ts.map +1 -1
- package/dist/codeSign/win/signtoolBaseSignManager.js +3 -3
- package/dist/codeSign/win/signtoolBaseSignManager.js.map +1 -1
- package/dist/codeSign/win/windowsCodeSign.d.ts +2 -1
- package/dist/codeSign/win/windowsCodeSign.d.ts.map +1 -1
- package/dist/codeSign/win/windowsCodeSign.js +16 -7
- package/dist/codeSign/win/windowsCodeSign.js.map +1 -1
- package/dist/codeSign/win/windowsSignAzureManager.d.ts +2 -1
- package/dist/codeSign/win/windowsSignAzureManager.d.ts.map +1 -1
- package/dist/codeSign/win/windowsSignAzureManager.js +2 -2
- package/dist/codeSign/win/windowsSignAzureManager.js.map +1 -1
- package/dist/configuration.d.ts +14 -3
- package/dist/configuration.d.ts.map +1 -1
- package/dist/configuration.js.map +1 -1
- package/dist/core.d.ts +5 -0
- package/dist/core.d.ts.map +1 -1
- package/dist/core.js.map +1 -1
- package/dist/fileMatcher.d.ts.map +1 -1
- package/dist/fileMatcher.js +1 -0
- package/dist/fileMatcher.js.map +1 -1
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -1
- package/dist/macPackager.d.ts +16 -8
- package/dist/macPackager.d.ts.map +1 -1
- package/dist/macPackager.js +59 -31
- package/dist/macPackager.js.map +1 -1
- package/dist/options/PlatformSpecificBuildOptions.d.ts +2 -2
- package/dist/options/PlatformSpecificBuildOptions.js.map +1 -1
- package/dist/options/linuxOptions.d.ts +8 -2
- package/dist/options/linuxOptions.d.ts.map +1 -1
- package/dist/options/linuxOptions.js.map +1 -1
- package/dist/options/macOptions.d.ts +1 -1
- package/dist/options/macOptions.js.map +1 -1
- package/dist/options/pkgOptions.d.ts +1 -1
- package/dist/options/pkgOptions.js.map +1 -1
- package/dist/options/winOptions.d.ts +3 -3
- package/dist/options/winOptions.js.map +1 -1
- package/dist/packager.d.ts.map +1 -1
- package/dist/packager.js +5 -2
- package/dist/packager.js.map +1 -1
- package/dist/platformPackager.d.ts +2 -1
- package/dist/platformPackager.d.ts.map +1 -1
- package/dist/platformPackager.js +5 -3
- package/dist/platformPackager.js.map +1 -1
- package/dist/publish/PublishManager.js +37 -0
- package/dist/publish/PublishManager.js.map +1 -1
- package/dist/publish/updateInfoBuilder.d.ts.map +1 -1
- package/dist/publish/updateInfoBuilder.js +6 -4
- package/dist/publish/updateInfoBuilder.js.map +1 -1
- package/dist/targets/linux/FpmTarget.d.ts +7 -0
- package/dist/targets/linux/FpmTarget.d.ts.map +1 -1
- package/dist/targets/linux/FpmTarget.js +20 -2
- package/dist/targets/linux/FpmTarget.js.map +1 -1
- package/dist/targets/mac/MacTargetHelper.d.ts +5 -3
- package/dist/targets/mac/MacTargetHelper.d.ts.map +1 -1
- package/dist/targets/mac/MacTargetHelper.js +3 -3
- package/dist/targets/mac/MacTargetHelper.js.map +1 -1
- package/dist/targets/mac/pkg.js +1 -1
- package/dist/targets/mac/pkg.js.map +1 -1
- package/dist/toolsets/7zip.d.ts +32 -0
- package/dist/toolsets/7zip.d.ts.map +1 -1
- package/dist/toolsets/7zip.js +39 -13
- package/dist/toolsets/7zip.js.map +1 -1
- package/dist/toolsets/linuxToolsMac.d.ts.map +1 -1
- package/dist/toolsets/linuxToolsMac.js +15 -5
- package/dist/toolsets/linuxToolsMac.js.map +1 -1
- package/dist/util/electronGet.d.ts +11 -0
- package/dist/util/electronGet.d.ts.map +1 -1
- package/dist/util/electronGet.js +46 -3
- package/dist/util/electronGet.js.map +1 -1
- package/dist/util/installOrRebuild.d.ts +6 -0
- package/dist/util/installOrRebuild.d.ts.map +1 -1
- package/dist/util/installOrRebuild.js +47 -0
- package/dist/util/installOrRebuild.js.map +1 -1
- package/dist/util/repositoryInfo.js +6 -3
- package/dist/util/repositoryInfo.js.map +1 -1
- package/dist/version.d.ts +1 -1
- package/dist/version.js +1 -1
- package/dist/version.js.map +1 -1
- package/dist/winPackager.d.ts +4 -3
- package/dist/winPackager.d.ts.map +1 -1
- package/dist/winPackager.js +22 -16
- package/dist/winPackager.js.map +1 -1
- package/package.json +10 -10
- package/scheme.json +28 -26
- package/templates/nsis/common.nsh +2 -2
- package/templates/nsis/include/allowOnlyOneInstallerInstance.nsh +68 -4
- package/templates/nsis/include/extractAppPackage.nsh +1 -1
- package/templates/nsis/include/installUtil.nsh +2 -2
- package/templates/nsis/include/installer.nsh +1 -1
- package/templates/nsis/installer.nsi +1 -1
|
@@ -25,7 +25,7 @@ async function getGitUrlFromGitConfig(projectDir) {
|
|
|
25
25
|
}
|
|
26
26
|
async function _getInfo(projectDir, repo) {
|
|
27
27
|
if (repo != null) {
|
|
28
|
-
return parseRepositoryUrl(typeof repo === "string" ? repo : repo.url);
|
|
28
|
+
return parseRepositoryUrl(typeof repo === "string" ? repo : repo.url, "package.json");
|
|
29
29
|
}
|
|
30
30
|
const slug = process.env.TRAVIS_REPO_SLUG || process.env.APPVEYOR_REPO_NAME;
|
|
31
31
|
if (slug != null) {
|
|
@@ -33,6 +33,7 @@ async function _getInfo(projectDir, repo) {
|
|
|
33
33
|
return {
|
|
34
34
|
user: splitted[0],
|
|
35
35
|
project: splitted[1],
|
|
36
|
+
source: process.env.TRAVIS_REPO_SLUG ? "TRAVIS_REPO_SLUG" : "APPVEYOR_REPO_NAME",
|
|
36
37
|
};
|
|
37
38
|
}
|
|
38
39
|
const user = process.env.CIRCLE_PROJECT_USERNAME;
|
|
@@ -41,12 +42,13 @@ async function _getInfo(projectDir, repo) {
|
|
|
41
42
|
return {
|
|
42
43
|
user,
|
|
43
44
|
project,
|
|
45
|
+
source: "CIRCLE_PROJECT_USERNAME+CIRCLE_PROJECT_REPONAME",
|
|
44
46
|
};
|
|
45
47
|
}
|
|
46
48
|
const url = await getGitUrlFromGitConfig(projectDir);
|
|
47
|
-
return url == null ? null : parseRepositoryUrl(url);
|
|
49
|
+
return url == null ? null : parseRepositoryUrl(url, ".git/config");
|
|
48
50
|
}
|
|
49
|
-
function parseRepositoryUrl(url) {
|
|
51
|
+
function parseRepositoryUrl(url, source) {
|
|
50
52
|
const info = fromUrl(url);
|
|
51
53
|
if (info == null) {
|
|
52
54
|
return null;
|
|
@@ -71,6 +73,7 @@ function parseRepositoryUrl(url) {
|
|
|
71
73
|
delete info.opts;
|
|
72
74
|
delete info.browsefiletemplate;
|
|
73
75
|
delete info.auth;
|
|
76
|
+
info.source = source;
|
|
74
77
|
return info;
|
|
75
78
|
}
|
|
76
79
|
//# sourceMappingURL=repositoryInfo.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"repositoryInfo.js","sourceRoot":"","sources":["../../src/util/repositoryInfo.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,MAAM,cAAc,CAAA;AACnD,OAAO,OAAO,MAAM,UAAU,CAAA;AAC9B,
|
|
1
|
+
{"version":3,"file":"repositoryInfo.js","sourceRoot":"","sources":["../../src/util/repositoryInfo.ts"],"names":[],"mappings":"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","sourcesContent":["import { orNullIfFileNotExist } from \"builder-util\"\nimport fsExtra from \"fs-extra\"\nimport { fromUrl } from \"hosted-git-info\"\nimport * as path from \"path\"\nimport { SourceRepositoryInfo } from \"../core.js\"\nimport { Metadata, RepositoryInfo } from \"../options/metadata.js\"\n\nexport function getRepositoryInfo(projectDir: string, metadata?: Metadata, devMetadata?: Metadata | null): Promise<SourceRepositoryInfo | null> {\n return _getInfo(projectDir, (devMetadata == null ? null : devMetadata.repository) || (metadata == null ? null : metadata.repository))\n}\n\nasync function getGitUrlFromGitConfig(projectDir: string): Promise<string | null> {\n const data = await orNullIfFileNotExist(fsExtra.readFile(path.join(projectDir, \".git\", \"config\"), \"utf8\"))\n if (data == null) {\n return null\n }\n\n const conf = data.split(/\\r?\\n/)\n const i = conf.indexOf('[remote \"origin\"]')\n if (i !== -1) {\n let u = conf[i + 1]\n if (!/^\\s*url =/.exec(u)) {\n u = conf[i + 2]\n }\n\n if (/^\\s*url =/.exec(u)) {\n return u.replace(/^\\s*url = /, \"\")\n }\n }\n return null\n}\n\nasync function _getInfo(projectDir: string, repo?: RepositoryInfo | string | null): Promise<SourceRepositoryInfo | null> {\n if (repo != null) {\n return parseRepositoryUrl(typeof repo === \"string\" ? repo : repo.url, \"package.json\")\n }\n\n const slug = process.env.TRAVIS_REPO_SLUG || process.env.APPVEYOR_REPO_NAME\n if (slug != null) {\n const splitted = slug.split(\"/\")\n return {\n user: splitted[0],\n project: splitted[1],\n source: process.env.TRAVIS_REPO_SLUG ? \"TRAVIS_REPO_SLUG\" : \"APPVEYOR_REPO_NAME\",\n }\n }\n\n const user = process.env.CIRCLE_PROJECT_USERNAME\n const project = process.env.CIRCLE_PROJECT_REPONAME\n if (user != null && project != null) {\n return {\n user,\n project,\n source: \"CIRCLE_PROJECT_USERNAME+CIRCLE_PROJECT_REPONAME\",\n }\n }\n\n const url = await getGitUrlFromGitConfig(projectDir)\n return url == null ? null : parseRepositoryUrl(url, \".git/config\")\n}\n\nfunction parseRepositoryUrl(url: string, source: string): SourceRepositoryInfo | null {\n const info: any = fromUrl(url)\n if (info == null) {\n return null\n }\n delete info.protocols\n delete info.treepath\n delete info.filetemplate\n delete info.bugstemplate\n delete info.gittemplate\n delete info.tarballtemplate\n delete info.sshtemplate\n delete info.sshurltemplate\n delete info.browsetemplate\n delete info.docstemplate\n delete info.httpstemplate\n delete info.shortcuttemplate\n delete info.pathtemplate\n delete info.pathmatch\n delete info.protocols_re\n delete info.committish\n delete info.default\n delete info.opts\n delete info.browsefiletemplate\n delete info.auth\n info.source = source\n return info\n}\n"]}
|
package/dist/version.d.ts
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export declare const PACKAGE_VERSION = "27.0.0-alpha.
|
|
1
|
+
export declare const PACKAGE_VERSION = "27.0.0-alpha.8";
|
|
2
2
|
//# sourceMappingURL=version.d.ts.map
|
package/dist/version.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export const PACKAGE_VERSION = "27.0.0-alpha.
|
|
1
|
+
export const PACKAGE_VERSION = "27.0.0-alpha.8";
|
|
2
2
|
//# sourceMappingURL=version.js.map
|
package/dist/version.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"version.js","sourceRoot":"","sources":["../src/version.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,eAAe,GAAG,gBAAgB,CAAA","sourcesContent":["export const PACKAGE_VERSION = \"27.0.0-alpha.
|
|
1
|
+
{"version":3,"file":"version.js","sourceRoot":"","sources":["../src/version.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,eAAe,GAAG,gBAAgB,CAAA","sourcesContent":["export const PACKAGE_VERSION = \"27.0.0-alpha.8\"\n"]}
|
package/dist/winPackager.d.ts
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { Arch, FileTransformer } from "builder-util";
|
|
2
2
|
import { Nullish } from "builder-util-runtime";
|
|
3
3
|
import { Lazy } from "lazy-val";
|
|
4
|
+
import { SigningResult } from "./codeSign/signResult.js";
|
|
4
5
|
import { AfterPackContext } from "./configuration.js";
|
|
5
6
|
import { Target } from "./core.js";
|
|
6
7
|
import { RequestedExecutionLevel, WindowsConfiguration } from "./options/winOptions.js";
|
|
@@ -18,12 +19,12 @@ export declare class WinPackager extends PlatformPackager<WindowsConfiguration>
|
|
|
18
19
|
createTargets(targets: Array<string>, mapper: (name: string, factory: (outDir: string) => Target) => void): void;
|
|
19
20
|
getIconPath(): Promise<string | null>;
|
|
20
21
|
doGetCscPassword(): string | Nullish;
|
|
21
|
-
signIf(file: string): Promise<
|
|
22
|
+
signIf(file: string): Promise<SigningResult>;
|
|
22
23
|
private _sign;
|
|
23
|
-
signAndEditResources(file: string, arch: Arch, outDir: string, internalName?: string | null, requestedExecutionLevel?: RequestedExecutionLevel | null): Promise<
|
|
24
|
+
signAndEditResources(file: string, arch: Arch, outDir: string, internalName?: string | null, requestedExecutionLevel?: RequestedExecutionLevel | null): Promise<SigningResult>;
|
|
24
25
|
private shouldSignFile;
|
|
25
26
|
protected createTransformerForExtraFiles(packContext: AfterPackContext): FileTransformer | null;
|
|
26
|
-
protected signApp(packContext: AfterPackContext, isAsar: boolean): Promise<
|
|
27
|
+
protected signApp(packContext: AfterPackContext, isAsar: boolean): Promise<SigningResult>;
|
|
27
28
|
private walkSignableFiles;
|
|
28
29
|
}
|
|
29
30
|
//# sourceMappingURL=winPackager.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"winPackager.d.ts","sourceRoot":"","sources":["../src/winPackager.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAA+B,eAAe,EAAwC,MAAM,cAAc,CAAA;AAEvH,OAAO,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAA;AAI9C,OAAO,EAAE,IAAI,EAAE,MAAM,UAAU,CAAA;
|
|
1
|
+
{"version":3,"file":"winPackager.d.ts","sourceRoot":"","sources":["../src/winPackager.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAA+B,eAAe,EAAwC,MAAM,cAAc,CAAA;AAEvH,OAAO,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAA;AAI9C,OAAO,EAAE,IAAI,EAAE,MAAM,UAAU,CAAA;AAI/B,OAAO,EAA0D,aAAa,EAAE,MAAM,0BAA0B,CAAA;AAGhH,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAA;AACrD,OAAO,EAAwB,MAAM,EAAE,MAAM,WAAW,CAAA;AACxD,OAAO,EAA4B,uBAAuB,EAAsC,oBAAoB,EAAE,MAAM,yBAAyB,CAAA;AACrJ,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAA;AACxC,OAAO,EAAiB,gBAAgB,EAAE,MAAM,uBAAuB,CAAA;AAavE,OAAO,EAAgB,SAAS,EAAE,MAAM,YAAY,CAAA;AAIpD,qBAAa,WAAY,SAAQ,gBAAgB,CAAC,oBAAoB,CAAC;IACrE,SAAS,sBAA+C;IAExD,QAAQ,CAAC,EAAE,kBAAgI;IAE3I,QAAQ,CAAC,cAAc,4DAIrB;IAGF,OAAO,CAAC,YAAY,CAAmD;IAEvE,IAAI,8BAA8B,IAAI,OAAO,CAE5C;gBAEW,IAAI,EAAE,QAAQ;IAI1B,IAAI,aAAa,IAAI,KAAK,CAAC,MAAM,CAAC,CAEjC;IAED,aAAa,CAAC,OAAO,EAAE,KAAK,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,MAAM,KAAK,IAAI,GAAG,IAAI;IA2DhH,WAAW;IAIX,gBAAgB,IAAI,MAAM,GAAG,OAAO;IAM9B,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,CAAC;YAkBpC,KAAK;IAeb,oBAAoB,CACxB,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,IAAI,EACV,MAAM,EAAE,MAAM,EACd,YAAY,CAAC,EAAE,MAAM,GAAG,IAAI,EAC5B,uBAAuB,CAAC,EAAE,uBAAuB,GAAG,IAAI,GACvD,OAAO,CAAC,aAAa,CAAC;IAqFzB,OAAO,CAAC,cAAc;IAkBtB,SAAS,CAAC,8BAA8B,CAAC,WAAW,EAAE,gBAAgB,GAAG,eAAe,GAAG,IAAI;cAgB/E,OAAO,CAAC,WAAW,EAAE,gBAAgB,EAAE,MAAM,EAAE,OAAO,GAAG,OAAO,CAAC,aAAa,CAAC;IA0C/F,OAAO,CAAC,iBAAiB;CAG1B"}
|
package/dist/winPackager.js
CHANGED
|
@@ -7,6 +7,7 @@ import { Lazy } from "lazy-val";
|
|
|
7
7
|
import * as path from "path";
|
|
8
8
|
import { readAsarHeader } from "./asar/asar.js";
|
|
9
9
|
import { createSignManager } from "./codeSign/win/signManager.js";
|
|
10
|
+
import { combineSignResults, isSignResultSigned } from "./codeSign/signResult.js";
|
|
10
11
|
import { signWindows } from "./codeSign/win/windowsCodeSign.js";
|
|
11
12
|
import { DIR_TARGET, Platform } from "./core.js";
|
|
12
13
|
import { isWindowsSigningDisabled, resolveWindowsSigningConfiguration } from "./options/winOptions.js";
|
|
@@ -38,7 +39,9 @@ export class WinPackager extends PlatformPackager {
|
|
|
38
39
|
await manager.initialize();
|
|
39
40
|
return manager;
|
|
40
41
|
});
|
|
41
|
-
|
|
42
|
+
// Sequences the sign requests; per-file failures are logged and swallowed in the queue itself (hence `| void`)
|
|
43
|
+
// so it keeps flowing to the next file — each caller still observes its own failure via the promise `signIf` returns.
|
|
44
|
+
this.signingQueue = Promise.resolve();
|
|
42
45
|
}
|
|
43
46
|
get defaultTarget() {
|
|
44
47
|
return ["nsis"];
|
|
@@ -107,16 +110,15 @@ export class WinPackager extends PlatformPackager {
|
|
|
107
110
|
const logFields = { file: log.filePath(file) };
|
|
108
111
|
if (!this.shouldSignFile(file, true)) {
|
|
109
112
|
log.info(logFields, "file signing skipped via signExts configuration");
|
|
110
|
-
return
|
|
113
|
+
return "skipped:filtered";
|
|
111
114
|
}
|
|
112
115
|
if (isWindowsSigningDisabled(this.platformSpecificBuildOptions)) {
|
|
113
116
|
log.info(logFields, "file signing disabled (`sign: false` or `sign: null`)");
|
|
114
|
-
return
|
|
117
|
+
return "skipped:disabled";
|
|
115
118
|
}
|
|
116
119
|
const promise = this.signingQueue.then(() => this._sign(file));
|
|
117
120
|
this.signingQueue = promise.catch(e => {
|
|
118
121
|
log.warn({ file: log.filePath(file), error: e.message }, "signing failed for file, queue will continue to next file");
|
|
119
|
-
return false;
|
|
120
122
|
});
|
|
121
123
|
return promise;
|
|
122
124
|
}
|
|
@@ -125,11 +127,11 @@ export class WinPackager extends PlatformPackager {
|
|
|
125
127
|
path: file,
|
|
126
128
|
options: this.platformSpecificBuildOptions,
|
|
127
129
|
};
|
|
128
|
-
const
|
|
129
|
-
if (!
|
|
130
|
-
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`);
|
|
130
|
+
const result = await signWindows(signOptions, this);
|
|
131
|
+
if (!isSignResultSigned(result) && this.forceCodeSigning) {
|
|
132
|
+
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/docs/features/code-signing`);
|
|
131
133
|
}
|
|
132
|
-
return
|
|
134
|
+
return result;
|
|
133
135
|
}
|
|
134
136
|
async signAndEditResources(file, arch, outDir, internalName, requestedExecutionLevel) {
|
|
135
137
|
const appInfo = this.appInfo;
|
|
@@ -190,17 +192,19 @@ export class WinPackager extends PlatformPackager {
|
|
|
190
192
|
buildCacheManager = new BuildCacheManager(outDir, file, arch);
|
|
191
193
|
if (await buildCacheManager.copyIfValid(await digest(hash, files))) {
|
|
192
194
|
timer.end();
|
|
193
|
-
|
|
195
|
+
// the cache is only used when signing is configured (cscInfo != null), so the restored executable was signed when it was cached
|
|
196
|
+
return "signed";
|
|
194
197
|
}
|
|
195
198
|
timer.end();
|
|
196
199
|
}
|
|
197
200
|
const timer = time("resource-edit&sign");
|
|
198
201
|
await editWindowsResources(opts);
|
|
199
|
-
await this.signIf(file);
|
|
202
|
+
const signResult = await this.signIf(file);
|
|
200
203
|
timer.end();
|
|
201
204
|
if (buildCacheManager != null) {
|
|
202
205
|
await buildCacheManager.save();
|
|
203
206
|
}
|
|
207
|
+
return signResult;
|
|
204
208
|
}
|
|
205
209
|
shouldSignFile(file, fallbackValue = false) {
|
|
206
210
|
const isExe = file.endsWith(".exe");
|
|
@@ -227,7 +231,7 @@ export class WinPackager extends PlatformPackager {
|
|
|
227
231
|
if (this.shouldSignFile(file)) {
|
|
228
232
|
const parentDir = path.dirname(file);
|
|
229
233
|
if (parentDir !== packContext.appOutDir) {
|
|
230
|
-
return new CopyFileTransformer(file => this.signIf(file));
|
|
234
|
+
return new CopyFileTransformer(file => this.signIf(file).then(isSignResultSigned));
|
|
231
235
|
}
|
|
232
236
|
}
|
|
233
237
|
return null;
|
|
@@ -239,17 +243,19 @@ export class WinPackager extends PlatformPackager {
|
|
|
239
243
|
if (signingDisabled && this.forceCodeSigning) {
|
|
240
244
|
throw new InvalidConfigurationError("Signing is disabled (`sign: false`) but `forceCodeSigning` is enabled. Remove one of these options.");
|
|
241
245
|
}
|
|
246
|
+
const results = [];
|
|
242
247
|
const files = await readdir(packContext.appOutDir);
|
|
243
248
|
for (const file of files) {
|
|
244
249
|
if (file === exeFileName) {
|
|
245
|
-
await this.signAndEditResources(path.join(packContext.appOutDir, exeFileName), packContext.arch, packContext.outDir, path.basename(exeFileName, ".exe"), this.platformSpecificBuildOptions.requestedExecutionLevel);
|
|
250
|
+
results.push(await this.signAndEditResources(path.join(packContext.appOutDir, exeFileName), packContext.arch, packContext.outDir, path.basename(exeFileName, ".exe"), this.platformSpecificBuildOptions.requestedExecutionLevel));
|
|
246
251
|
}
|
|
247
252
|
else if (this.shouldSignFile(file)) {
|
|
248
|
-
await this.signIf(path.join(packContext.appOutDir, file));
|
|
253
|
+
results.push(await this.signIf(path.join(packContext.appOutDir, file)));
|
|
249
254
|
}
|
|
250
255
|
}
|
|
256
|
+
// the combined result gates the `afterSign` hook — a signed result wins (see PlatformPackager.doSignAfterPack)
|
|
251
257
|
if (!isAsar || signingDisabled) {
|
|
252
|
-
return
|
|
258
|
+
return combineSignResults(results);
|
|
253
259
|
}
|
|
254
260
|
const filesToSign = await Promise.all([
|
|
255
261
|
this.walkSignableFiles(packContext.appOutDir, "resources", "app.asar.unpacked"),
|
|
@@ -257,9 +263,9 @@ export class WinPackager extends PlatformPackager {
|
|
|
257
263
|
this.walkSignableFiles(packContext.appOutDir, "swiftshader"),
|
|
258
264
|
]);
|
|
259
265
|
for (const file of filesToSign.flat(1)) {
|
|
260
|
-
await this.signIf(file);
|
|
266
|
+
results.push(await this.signIf(file));
|
|
261
267
|
}
|
|
262
|
-
return
|
|
268
|
+
return combineSignResults(results);
|
|
263
269
|
}
|
|
264
270
|
walkSignableFiles(baseDir, ...subpath) {
|
|
265
271
|
return walk(path.join(baseDir, ...subpath), (file, stat) => stat.isDirectory() || this.shouldSignFile(file));
|
package/dist/winPackager.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"winPackager.js","sourceRoot":"","sources":["../src/winPackager.ts"],"names":[],"mappings":"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","sourcesContent":["import { Arch, CopyFileTransformer, exists, FileTransformer, InvalidConfigurationError, log, walk } from \"builder-util\"\nimport { createRequire } from \"node:module\"\nimport { Nullish } from \"builder-util-runtime\"\nimport { isCI } from \"ci-info\"\nimport { createHash } from \"crypto\"\nimport { readdir } from \"fs/promises\"\nimport { Lazy } from \"lazy-val\"\nimport * as path from \"path\"\nimport { readAsarHeader } from \"./asar/asar.js\"\nimport { createSignManager } from \"./codeSign/win/signManager.js\"\nimport { signWindows, WindowsSignOptions } from \"./codeSign/win/windowsCodeSign.js\"\nimport { FileCodeSigningInfo } from \"./codeSign/win/signtoolBaseSignManager.js\"\nimport { AfterPackContext } from \"./configuration.js\"\nimport { DIR_TARGET, Platform, Target } from \"./core.js\"\nimport { isWindowsSigningDisabled, RequestedExecutionLevel, resolveWindowsSigningConfiguration, WindowsConfiguration } from \"./options/winOptions.js\"\nimport { Packager } from \"./packager.js\"\nimport { chooseNotNull, PlatformPackager } from \"./platformPackager.js\"\nimport MsixTarget from \"./targets/win/MsixTarget.js\"\nimport AppXTarget from \"./targets/win/AppxTarget.js\"\nimport MsiTarget from \"./targets/win/MsiTarget.js\"\nimport MsiWrappedTarget from \"./targets/win/MsiWrappedTarget.js\"\nimport { NsisTarget } from \"./targets/win/nsis/NsisTarget.js\"\nimport { AppPackageHelper, CopyElevateHelper } from \"./targets/win/nsis/nsisUtil.js\"\nimport { WebInstallerTarget } from \"./targets/win/nsis/WebInstallerTarget.js\"\nimport { createCommonTarget } from \"./targets/targetFactory.js\"\nimport { BuildCacheManager, digest } from \"./util/cacheManager.js\"\nimport { isBuildCacheEnabled } from \"./util/flags.js\"\nimport { editWindowsResources, ResourceEditOptions } from \"./util/win/resEdit.js\"\nimport { time } from \"./util/timer.js\"\nimport { getWindowsVm, VmManager } from \"./vm/vm.js\"\n\nconst _require = createRequire(import.meta.url)\n\nexport class WinPackager extends PlatformPackager<WindowsConfiguration> {\n _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 signingManager = new Lazy(async () => {\n const manager = createSignManager(this)\n await manager.initialize()\n return manager\n })\n private signingQueue = Promise.resolve(true)\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 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 } 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 } else {\n const targetClass: typeof NsisTarget | typeof AppXTarget | typeof MsixTarget | typeof MsiTarget | typeof MsiWrappedTarget | null = (() => {\n switch (name) {\n case \"squirrel\":\n try {\n return _require(\"electron-builder-squirrel-windows\").default\n } catch (e: any) {\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 AppXTarget\n\n case \"msi\":\n return MsiTarget\n\n case \"msiwrapped\":\n return MsiWrappedTarget\n\n case \"msix\":\n return MsixTarget\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 doGetCscPassword(): string | Nullish {\n const signing = resolveWindowsSigningConfiguration(this.platformSpecificBuildOptions)\n const certPassword = signing?.type === \"signtool\" ? signing.certificatePassword : null\n return chooseNotNull(chooseNotNull(certPassword, process.env.WIN_CSC_KEY_PASSWORD), super.doGetCscPassword())\n }\n\n async signIf(file: string): Promise<boolean> {\n const logFields = { file: log.filePath(file) }\n if (!this.shouldSignFile(file, true)) {\n log.info(logFields, \"file signing skipped via signExts configuration\")\n return false\n }\n if (isWindowsSigningDisabled(this.platformSpecificBuildOptions)) {\n log.info(logFields, \"file signing disabled (`sign: false` or `sign: null`)\")\n return false\n }\n\n const promise = this.signingQueue.then(() => this._sign(file))\n this.signingQueue = promise.catch(e => {\n log.warn({ file: log.filePath(file), error: e.message }, \"signing failed for file, queue will continue to next file\")\n return false\n })\n return promise\n }\n\n private async _sign(file: string): Promise<boolean> {\n const signOptions: WindowsSignOptions = {\n path: file,\n options: this.platformSpecificBuildOptions,\n }\n\n const didSignSuccessfully = await signWindows(signOptions, this)\n if (!didSignSuccessfully && this.forceCodeSigning) {\n throw new InvalidConfigurationError(\n `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 }\n return didSignSuccessfully\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 versionStrings: Record<string, string> = {\n FileDescription: appInfo.productName,\n ProductName: appInfo.productName,\n LegalCopyright: appInfo.copyright,\n }\n\n if (internalName != null) {\n versionStrings.InternalName = internalName\n versionStrings.OriginalFilename = \"\"\n }\n\n if (appInfo.companyName != null) {\n versionStrings.CompanyName = appInfo.companyName\n }\n if (this.platformSpecificBuildOptions.legalTrademarks != null) {\n versionStrings.LegalTrademarks = this.platformSpecificBuildOptions.legalTrademarks\n }\n\n const iconPath = await this.getIconPath()\n if (iconPath != null) {\n files.push(iconPath)\n }\n\n const opts: ResourceEditOptions = {\n file,\n versionStrings,\n fileVersion: appInfo.shortVersion || appInfo.buildVersion,\n productVersion: appInfo.shortVersionWindows || appInfo.getVersionInWeirdWindowsForm(),\n requestedExecutionLevel,\n iconPath,\n }\n\n const config = this.config\n const cscInfoForCacheDigest = !isBuildCacheEnabled() || isCI || config.electronDist != null ? null : await (await this.signingManager.value).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(opts))\n const signingConfig = resolveWindowsSigningConfiguration(this.platformSpecificBuildOptions)\n const certSha1 = signingConfig?.type === \"signtool\" || signingConfig?.type === \"hsm\" ? signingConfig.certificateSha1 : null\n const subjectName = signingConfig?.type === \"signtool\" || signingConfig?.type === \"hsm\" ? signingConfig.certificateSubjectName : null\n hash.update(certSha1 || \"no certificateSha1\")\n hash.update(subjectName || \"no subjectName\")\n\n const asar = path.resolve(this.getResourcesDir(outDir), \"app.asar\")\n if (await exists(asar)) {\n hash.update((await readAsarHeader(asar)).header)\n } else {\n hash.update(\"no asar\")\n }\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(\"resource-edit&sign\")\n await editWindowsResources(opts)\n await this.signIf(file)\n timer.end()\n\n if (buildCacheManager != null) {\n await buildCacheManager.save()\n }\n }\n\n private shouldSignFile(file: string, fallbackValue = false): boolean {\n const isExe = file.endsWith(\".exe\")\n const signExts = this.platformSpecificBuildOptions.signExts\n if (!signExts?.length) {\n return isExe || fallbackValue\n }\n // process patterns ( !exe => exclude .exe, .dll => include .dll )\n // we process first to allow literal negatives in case a filename matches \"help!.txt\" or similar\n if (signExts.some(ext => file.endsWith(ext))) {\n return true\n }\n // process negative patterns\n if (signExts.some(ext => ext.startsWith(\"!\") && file.endsWith(ext.substring(1)))) {\n return false\n }\n return isExe || fallbackValue\n }\n\n protected createTransformerForExtraFiles(packContext: AfterPackContext): FileTransformer | null {\n if (isWindowsSigningDisabled(this.platformSpecificBuildOptions)) {\n return null\n }\n\n return file => {\n if (this.shouldSignFile(file)) {\n const parentDir = path.dirname(file)\n if (parentDir !== packContext.appOutDir) {\n return new CopyFileTransformer(file => this.signIf(file))\n }\n }\n return null\n }\n }\n\n protected async signApp(packContext: AfterPackContext, isAsar: boolean): Promise<boolean> {\n const exeFileName = `${this.appInfo.productFilename}.exe`\n const signingDisabled = isWindowsSigningDisabled(this.platformSpecificBuildOptions)\n if (signingDisabled && this.forceCodeSigning) {\n throw new InvalidConfigurationError(\"Signing is disabled (`sign: false`) but `forceCodeSigning` is enabled. Remove one of these options.\")\n }\n\n const files = await readdir(packContext.appOutDir)\n for (const file of files) {\n if (file === exeFileName) {\n await this.signAndEditResources(\n path.join(packContext.appOutDir, exeFileName),\n packContext.arch,\n packContext.outDir,\n path.basename(exeFileName, \".exe\"),\n this.platformSpecificBuildOptions.requestedExecutionLevel\n )\n } else if (this.shouldSignFile(file)) {\n await this.signIf(path.join(packContext.appOutDir, file))\n }\n }\n\n if (!isAsar || signingDisabled) {\n return true\n }\n\n const filesToSign = await Promise.all([\n this.walkSignableFiles(packContext.appOutDir, \"resources\", \"app.asar.unpacked\"),\n // Note: The `swiftshader` directory is absent in modern electron versions. `swiftshader/` held Chromium's legacy SwiftShader GL fallback (libEGL.dll / libGLESv2.dll), removed in Chromium 102 (Electron 19+) in favor of SwANGLE (ANGLE + SwiftShader Vulkan). This is kept here only for backwards compat with older Electron; `walk` no-ops on a missing dir (readdir ENOENT is swallowed), so this is harmless when the directory is absent.\n this.walkSignableFiles(packContext.appOutDir, \"swiftshader\"),\n ])\n for (const file of filesToSign.flat(1)) {\n await this.signIf(file)\n }\n\n return true\n }\n\n private walkSignableFiles(baseDir: string, ...subpath: string[]): Promise<string[]> {\n return walk(path.join(baseDir, ...subpath), (file, stat) => stat.isDirectory() || this.shouldSignFile(file))\n }\n}\n"]}
|
|
1
|
+
{"version":3,"file":"winPackager.js","sourceRoot":"","sources":["../src/winPackager.ts"],"names":[],"mappings":"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","sourcesContent":["import { Arch, CopyFileTransformer, exists, FileTransformer, InvalidConfigurationError, log, walk } from \"builder-util\"\nimport { createRequire } from \"node:module\"\nimport { Nullish } from \"builder-util-runtime\"\nimport { isCI } from \"ci-info\"\nimport { createHash } from \"crypto\"\nimport { readdir } from \"fs/promises\"\nimport { Lazy } from \"lazy-val\"\nimport * as path from \"path\"\nimport { readAsarHeader } from \"./asar/asar.js\"\nimport { createSignManager } from \"./codeSign/win/signManager.js\"\nimport { combineSignResults, isSignResultSigned, SignFileResult, SigningResult } from \"./codeSign/signResult.js\"\nimport { signWindows, WindowsSignOptions } from \"./codeSign/win/windowsCodeSign.js\"\nimport { FileCodeSigningInfo } from \"./codeSign/win/signtoolBaseSignManager.js\"\nimport { AfterPackContext } from \"./configuration.js\"\nimport { DIR_TARGET, Platform, Target } from \"./core.js\"\nimport { isWindowsSigningDisabled, RequestedExecutionLevel, resolveWindowsSigningConfiguration, WindowsConfiguration } from \"./options/winOptions.js\"\nimport { Packager } from \"./packager.js\"\nimport { chooseNotNull, PlatformPackager } from \"./platformPackager.js\"\nimport MsixTarget from \"./targets/win/MsixTarget.js\"\nimport AppXTarget from \"./targets/win/AppxTarget.js\"\nimport MsiTarget from \"./targets/win/MsiTarget.js\"\nimport MsiWrappedTarget from \"./targets/win/MsiWrappedTarget.js\"\nimport { NsisTarget } from \"./targets/win/nsis/NsisTarget.js\"\nimport { AppPackageHelper, CopyElevateHelper } from \"./targets/win/nsis/nsisUtil.js\"\nimport { WebInstallerTarget } from \"./targets/win/nsis/WebInstallerTarget.js\"\nimport { createCommonTarget } from \"./targets/targetFactory.js\"\nimport { BuildCacheManager, digest } from \"./util/cacheManager.js\"\nimport { isBuildCacheEnabled } from \"./util/flags.js\"\nimport { editWindowsResources, ResourceEditOptions } from \"./util/win/resEdit.js\"\nimport { time } from \"./util/timer.js\"\nimport { getWindowsVm, VmManager } from \"./vm/vm.js\"\n\nconst _require = createRequire(import.meta.url)\n\nexport class WinPackager extends PlatformPackager<WindowsConfiguration> {\n _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 signingManager = new Lazy(async () => {\n const manager = createSignManager(this)\n await manager.initialize()\n return manager\n })\n // Sequences the sign requests; per-file failures are logged and swallowed in the queue itself (hence `| void`)\n // so it keeps flowing to the next file — each caller still observes its own failure via the promise `signIf` returns.\n private signingQueue: Promise<SigningResult | void> = Promise.resolve()\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 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 } 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 } else {\n const targetClass: typeof NsisTarget | typeof AppXTarget | typeof MsixTarget | typeof MsiTarget | typeof MsiWrappedTarget | null = (() => {\n switch (name) {\n case \"squirrel\":\n try {\n return _require(\"electron-builder-squirrel-windows\").default\n } catch (e: any) {\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 AppXTarget\n\n case \"msi\":\n return MsiTarget\n\n case \"msiwrapped\":\n return MsiWrappedTarget\n\n case \"msix\":\n return MsixTarget\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 doGetCscPassword(): string | Nullish {\n const signing = resolveWindowsSigningConfiguration(this.platformSpecificBuildOptions)\n const certPassword = signing?.type === \"signtool\" ? signing.certificatePassword : null\n return chooseNotNull(chooseNotNull(certPassword, process.env.WIN_CSC_KEY_PASSWORD), super.doGetCscPassword())\n }\n\n async signIf(file: string): Promise<SigningResult> {\n const logFields = { file: log.filePath(file) }\n if (!this.shouldSignFile(file, true)) {\n log.info(logFields, \"file signing skipped via signExts configuration\")\n return \"skipped:filtered\"\n }\n if (isWindowsSigningDisabled(this.platformSpecificBuildOptions)) {\n log.info(logFields, \"file signing disabled (`sign: false` or `sign: null`)\")\n return \"skipped:disabled\"\n }\n\n const promise = this.signingQueue.then(() => this._sign(file))\n this.signingQueue = promise.catch(e => {\n log.warn({ file: log.filePath(file), error: e.message }, \"signing failed for file, queue will continue to next file\")\n })\n return promise\n }\n\n private async _sign(file: string): Promise<SignFileResult> {\n const signOptions: WindowsSignOptions = {\n path: file,\n options: this.platformSpecificBuildOptions,\n }\n\n const result = await signWindows(signOptions, this)\n if (!isSignResultSigned(result) && this.forceCodeSigning) {\n throw new InvalidConfigurationError(\n `App is not signed and \"forceCodeSigning\" is set to true, please ensure that code signing configuration is correct, please see https://electron.build/docs/features/code-signing`\n )\n }\n return result\n }\n\n async signAndEditResources(\n file: string,\n arch: Arch,\n outDir: string,\n internalName?: string | null,\n requestedExecutionLevel?: RequestedExecutionLevel | null\n ): Promise<SigningResult> {\n const appInfo = this.appInfo\n\n const files: Array<string> = []\n\n const versionStrings: Record<string, string> = {\n FileDescription: appInfo.productName,\n ProductName: appInfo.productName,\n LegalCopyright: appInfo.copyright,\n }\n\n if (internalName != null) {\n versionStrings.InternalName = internalName\n versionStrings.OriginalFilename = \"\"\n }\n\n if (appInfo.companyName != null) {\n versionStrings.CompanyName = appInfo.companyName\n }\n if (this.platformSpecificBuildOptions.legalTrademarks != null) {\n versionStrings.LegalTrademarks = this.platformSpecificBuildOptions.legalTrademarks\n }\n\n const iconPath = await this.getIconPath()\n if (iconPath != null) {\n files.push(iconPath)\n }\n\n const opts: ResourceEditOptions = {\n file,\n versionStrings,\n fileVersion: appInfo.shortVersion || appInfo.buildVersion,\n productVersion: appInfo.shortVersionWindows || appInfo.getVersionInWeirdWindowsForm(),\n requestedExecutionLevel,\n iconPath,\n }\n\n const config = this.config\n const cscInfoForCacheDigest = !isBuildCacheEnabled() || isCI || config.electronDist != null ? null : await (await this.signingManager.value).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(opts))\n const signingConfig = resolveWindowsSigningConfiguration(this.platformSpecificBuildOptions)\n const certSha1 = signingConfig?.type === \"signtool\" || signingConfig?.type === \"hsm\" ? signingConfig.certificateSha1 : null\n const subjectName = signingConfig?.type === \"signtool\" || signingConfig?.type === \"hsm\" ? signingConfig.certificateSubjectName : null\n hash.update(certSha1 || \"no certificateSha1\")\n hash.update(subjectName || \"no subjectName\")\n\n const asar = path.resolve(this.getResourcesDir(outDir), \"app.asar\")\n if (await exists(asar)) {\n hash.update((await readAsarHeader(asar)).header)\n } else {\n hash.update(\"no asar\")\n }\n\n buildCacheManager = new BuildCacheManager(outDir, file, arch)\n if (await buildCacheManager.copyIfValid(await digest(hash, files))) {\n timer.end()\n // the cache is only used when signing is configured (cscInfo != null), so the restored executable was signed when it was cached\n return \"signed\"\n }\n timer.end()\n }\n\n const timer = time(\"resource-edit&sign\")\n await editWindowsResources(opts)\n const signResult = await this.signIf(file)\n timer.end()\n\n if (buildCacheManager != null) {\n await buildCacheManager.save()\n }\n return signResult\n }\n\n private shouldSignFile(file: string, fallbackValue = false): boolean {\n const isExe = file.endsWith(\".exe\")\n const signExts = this.platformSpecificBuildOptions.signExts\n if (!signExts?.length) {\n return isExe || fallbackValue\n }\n // process patterns ( !exe => exclude .exe, .dll => include .dll )\n // we process first to allow literal negatives in case a filename matches \"help!.txt\" or similar\n if (signExts.some(ext => file.endsWith(ext))) {\n return true\n }\n // process negative patterns\n if (signExts.some(ext => ext.startsWith(\"!\") && file.endsWith(ext.substring(1)))) {\n return false\n }\n return isExe || fallbackValue\n }\n\n protected createTransformerForExtraFiles(packContext: AfterPackContext): FileTransformer | null {\n if (isWindowsSigningDisabled(this.platformSpecificBuildOptions)) {\n return null\n }\n\n return file => {\n if (this.shouldSignFile(file)) {\n const parentDir = path.dirname(file)\n if (parentDir !== packContext.appOutDir) {\n return new CopyFileTransformer(file => this.signIf(file).then(isSignResultSigned))\n }\n }\n return null\n }\n }\n\n protected async signApp(packContext: AfterPackContext, isAsar: boolean): Promise<SigningResult> {\n const exeFileName = `${this.appInfo.productFilename}.exe`\n const signingDisabled = isWindowsSigningDisabled(this.platformSpecificBuildOptions)\n if (signingDisabled && this.forceCodeSigning) {\n throw new InvalidConfigurationError(\"Signing is disabled (`sign: false`) but `forceCodeSigning` is enabled. Remove one of these options.\")\n }\n\n const results: Array<SigningResult> = []\n const files = await readdir(packContext.appOutDir)\n for (const file of files) {\n if (file === exeFileName) {\n results.push(\n await this.signAndEditResources(\n path.join(packContext.appOutDir, exeFileName),\n packContext.arch,\n packContext.outDir,\n path.basename(exeFileName, \".exe\"),\n this.platformSpecificBuildOptions.requestedExecutionLevel\n )\n )\n } else if (this.shouldSignFile(file)) {\n results.push(await this.signIf(path.join(packContext.appOutDir, file)))\n }\n }\n\n // the combined result gates the `afterSign` hook — a signed result wins (see PlatformPackager.doSignAfterPack)\n if (!isAsar || signingDisabled) {\n return combineSignResults(results)\n }\n\n const filesToSign = await Promise.all([\n this.walkSignableFiles(packContext.appOutDir, \"resources\", \"app.asar.unpacked\"),\n // Note: The `swiftshader` directory is absent in modern electron versions. `swiftshader/` held Chromium's legacy SwiftShader GL fallback (libEGL.dll / libGLESv2.dll), removed in Chromium 102 (Electron 19+) in favor of SwANGLE (ANGLE + SwiftShader Vulkan). This is kept here only for backwards compat with older Electron; `walk` no-ops on a missing dir (readdir ENOENT is swallowed), so this is harmless when the directory is absent.\n this.walkSignableFiles(packContext.appOutDir, \"swiftshader\"),\n ])\n for (const file of filesToSign.flat(1)) {\n results.push(await this.signIf(file))\n }\n\n return combineSignResults(results)\n }\n\n private walkSignableFiles(baseDir: string, ...subpath: string[]): Promise<string[]> {\n return walk(path.join(baseDir, ...subpath), (file, stat) => stat.isDirectory() || this.shouldSignFile(file))\n }\n}\n"]}
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "app-builder-lib",
|
|
3
3
|
"description": "electron-builder lib",
|
|
4
|
-
"version": "27.0.0-alpha.
|
|
4
|
+
"version": "27.0.0-alpha.8",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "./dist/index.js",
|
|
7
7
|
"exports": {
|
|
@@ -76,8 +76,8 @@
|
|
|
76
76
|
"chromium-pickle-js": "^0.2.0",
|
|
77
77
|
"ci-info": "4.3.1",
|
|
78
78
|
"debug": "^4.3.4",
|
|
79
|
-
"dotenv": "^
|
|
80
|
-
"dotenv-expand": "^
|
|
79
|
+
"dotenv": "^17.4.2",
|
|
80
|
+
"dotenv-expand": "^13.0.0",
|
|
81
81
|
"ejs": "^3.1.8",
|
|
82
82
|
"fs-extra": "^11.3.0",
|
|
83
83
|
"hosted-git-info": "^4.1.0",
|
|
@@ -98,9 +98,9 @@
|
|
|
98
98
|
"undici": "^7.27.1",
|
|
99
99
|
"unzipper": "^0.12.3",
|
|
100
100
|
"which": "^5.0.0",
|
|
101
|
-
"builder-util": "
|
|
102
|
-
"builder-util
|
|
103
|
-
"electron-publish": "27.0.0-alpha.
|
|
101
|
+
"builder-util-runtime": "10.0.0-alpha.7",
|
|
102
|
+
"builder-util": "27.0.0-alpha.8",
|
|
103
|
+
"electron-publish": "27.0.0-alpha.8"
|
|
104
104
|
},
|
|
105
105
|
"///": "babel in devDependencies for proton tests",
|
|
106
106
|
"devDependencies": {
|
|
@@ -115,12 +115,12 @@
|
|
|
115
115
|
"@types/unzipper": "^0.10.11",
|
|
116
116
|
"@types/which": "^3.0.4",
|
|
117
117
|
"toml": "^3.0.0",
|
|
118
|
-
"dmg-builder": "27.0.0-alpha.
|
|
119
|
-
"electron-builder-squirrel-windows": "27.0.0-alpha.
|
|
118
|
+
"dmg-builder": "27.0.0-alpha.8",
|
|
119
|
+
"electron-builder-squirrel-windows": "27.0.0-alpha.8"
|
|
120
120
|
},
|
|
121
121
|
"peerDependencies": {
|
|
122
|
-
"dmg-builder": "27.0.0-alpha.
|
|
123
|
-
"electron-builder-squirrel-windows": "27.0.0-alpha.
|
|
122
|
+
"dmg-builder": "27.0.0-alpha.8",
|
|
123
|
+
"electron-builder-squirrel-windows": "27.0.0-alpha.8"
|
|
124
124
|
},
|
|
125
125
|
"//": "electron-builder-squirrel-windows and dmg-builder added as dev dep for tests (as otherwise `require` doesn't work using Yarn 2)",
|
|
126
126
|
"types": "./dist/index.d.ts",
|