app-builder-lib 27.0.0-alpha.2 → 27.0.0-alpha.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/Framework.d.ts +2 -0
- package/dist/Framework.d.ts.map +1 -1
- package/dist/Framework.js.map +1 -1
- package/dist/asar/asarFileChecker.d.ts +4 -2
- package/dist/asar/asarFileChecker.d.ts.map +1 -1
- package/dist/asar/asarFileChecker.js +2 -3
- package/dist/asar/asarFileChecker.js.map +1 -1
- package/dist/codeSign/certInfo.d.ts +14 -0
- package/dist/codeSign/certInfo.d.ts.map +1 -1
- package/dist/codeSign/certInfo.js +49 -0
- package/dist/codeSign/certInfo.js.map +1 -1
- package/dist/codeSign/mac/macCodeSign.d.ts +3 -3
- package/dist/codeSign/mac/macCodeSign.d.ts.map +1 -1
- package/dist/codeSign/mac/macCodeSign.js +40 -14
- package/dist/codeSign/mac/macCodeSign.js.map +1 -1
- package/dist/codeSign/win/hsmSignManager.d.ts +10 -0
- package/dist/codeSign/win/hsmSignManager.d.ts.map +1 -0
- package/dist/codeSign/win/hsmSignManager.js +50 -0
- package/dist/codeSign/win/hsmSignManager.js.map +1 -0
- package/dist/codeSign/win/pkcs11SignManager.d.ts +14 -0
- package/dist/codeSign/win/pkcs11SignManager.d.ts.map +1 -0
- package/dist/codeSign/win/pkcs11SignManager.js +82 -0
- package/dist/codeSign/win/pkcs11SignManager.js.map +1 -0
- package/dist/codeSign/{signManager.d.ts → win/signManager.d.ts} +8 -6
- package/dist/codeSign/win/signManager.d.ts.map +1 -0
- package/dist/codeSign/win/signManager.js +19 -0
- package/dist/codeSign/win/signManager.js.map +1 -0
- package/dist/codeSign/win/signtoolBaseSignManager.d.ts +71 -0
- package/dist/codeSign/win/signtoolBaseSignManager.d.ts.map +1 -0
- package/dist/codeSign/win/signtoolBaseSignManager.js +414 -0
- package/dist/codeSign/win/signtoolBaseSignManager.js.map +1 -0
- package/dist/codeSign/win/windowsCodeSign.d.ts.map +1 -1
- package/dist/codeSign/win/windowsCodeSign.js +9 -4
- package/dist/codeSign/win/windowsCodeSign.js.map +1 -1
- package/dist/codeSign/win/windowsSignAzureManager.d.ts +9 -3
- package/dist/codeSign/win/windowsSignAzureManager.d.ts.map +1 -1
- package/dist/codeSign/win/windowsSignAzureManager.js +130 -36
- package/dist/codeSign/win/windowsSignAzureManager.js.map +1 -1
- package/dist/codeSign/win/windowsSignToolManager.d.ts +1 -58
- package/dist/codeSign/win/windowsSignToolManager.d.ts.map +1 -1
- package/dist/codeSign/win/windowsSignToolManager.js +3 -363
- package/dist/codeSign/win/windowsSignToolManager.js.map +1 -1
- package/dist/configuration.d.ts +22 -123
- package/dist/configuration.d.ts.map +1 -1
- package/dist/configuration.js.map +1 -1
- package/dist/electron/ElectronFramework.d.ts +0 -2
- package/dist/electron/ElectronFramework.d.ts.map +1 -1
- package/dist/electron/ElectronFramework.js +15 -27
- package/dist/electron/ElectronFramework.js.map +1 -1
- package/dist/electron/injectFFMPEG.js +2 -2
- package/dist/electron/injectFFMPEG.js.map +1 -1
- package/dist/electron/mac/electronMac.js +10 -8
- package/dist/electron/mac/electronMac.js.map +1 -1
- package/dist/electron/win/electronWin.js +1 -2
- package/dist/electron/win/electronWin.js.map +1 -1
- package/dist/index.d.ts +8 -4
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3 -0
- package/dist/index.js.map +1 -1
- package/dist/indexInternal.d.ts +3 -3
- package/dist/indexInternal.d.ts.map +1 -1
- package/dist/indexInternal.js +2 -2
- package/dist/indexInternal.js.map +1 -1
- package/dist/macPackager.d.ts +19 -10
- package/dist/macPackager.d.ts.map +1 -1
- package/dist/macPackager.js +149 -121
- package/dist/macPackager.js.map +1 -1
- package/dist/node-module-collector/moduleManager.d.ts +9 -2
- package/dist/node-module-collector/moduleManager.d.ts.map +1 -1
- package/dist/node-module-collector/moduleManager.js +4 -2
- package/dist/node-module-collector/moduleManager.js.map +1 -1
- package/dist/node-module-collector/nodeModulesCollector.d.ts +13 -23
- package/dist/node-module-collector/nodeModulesCollector.d.ts.map +1 -1
- package/dist/node-module-collector/nodeModulesCollector.js +52 -122
- package/dist/node-module-collector/nodeModulesCollector.js.map +1 -1
- package/dist/node-module-collector/pnpmNodeModulesCollector.d.ts +48 -1
- package/dist/node-module-collector/pnpmNodeModulesCollector.d.ts.map +1 -1
- package/dist/node-module-collector/pnpmNodeModulesCollector.js +216 -17
- package/dist/node-module-collector/pnpmNodeModulesCollector.js.map +1 -1
- package/dist/node-module-collector/types.d.ts +2 -0
- package/dist/node-module-collector/types.d.ts.map +1 -1
- package/dist/node-module-collector/types.js.map +1 -1
- package/dist/options/FuseOptionsV1.d.ts +137 -0
- package/dist/options/FuseOptionsV1.d.ts.map +1 -0
- package/dist/options/FuseOptionsV1.js +2 -0
- package/dist/options/FuseOptionsV1.js.map +1 -0
- package/dist/options/PlatformSpecificBuildOptions.d.ts +1 -1
- package/dist/options/PlatformSpecificBuildOptions.d.ts.map +1 -1
- package/dist/options/PlatformSpecificBuildOptions.js.map +1 -1
- package/dist/options/linuxOptions.d.ts +0 -10
- package/dist/options/linuxOptions.d.ts.map +1 -1
- package/dist/options/linuxOptions.js.map +1 -1
- package/dist/options/macOptions.d.ts +93 -126
- package/dist/options/macOptions.d.ts.map +1 -1
- package/dist/options/macOptions.js.map +1 -1
- package/dist/options/winOptions.d.ts +137 -63
- package/dist/options/winOptions.d.ts.map +1 -1
- package/dist/options/winOptions.js +12 -1
- package/dist/options/winOptions.js.map +1 -1
- package/dist/packager.js +1 -1
- package/dist/packager.js.map +1 -1
- package/dist/platformPackager.d.ts +5 -2
- package/dist/platformPackager.d.ts.map +1 -1
- package/dist/platformPackager.js +16 -13
- package/dist/platformPackager.js.map +1 -1
- package/dist/targets/ArchiveTarget.js +2 -2
- package/dist/targets/ArchiveTarget.js.map +1 -1
- package/dist/targets/archive.d.ts +10 -2
- package/dist/targets/archive.d.ts.map +1 -1
- package/dist/targets/archive.js +25 -6
- package/dist/targets/archive.js.map +1 -1
- package/dist/targets/linux/FlatpakTarget.d.ts.map +1 -1
- package/dist/targets/linux/FlatpakTarget.js +4 -1
- package/dist/targets/linux/FlatpakTarget.js.map +1 -1
- package/dist/targets/linux/FpmTarget.d.ts +6 -0
- package/dist/targets/linux/FpmTarget.d.ts.map +1 -1
- package/dist/targets/linux/FpmTarget.js +25 -3
- package/dist/targets/linux/FpmTarget.js.map +1 -1
- package/dist/targets/linux/LinuxTargetHelper.d.ts +14 -0
- package/dist/targets/linux/LinuxTargetHelper.d.ts.map +1 -1
- package/dist/targets/linux/LinuxTargetHelper.js +38 -59
- package/dist/targets/linux/LinuxTargetHelper.js.map +1 -1
- package/dist/targets/linux/appimage/AppImageTarget.d.ts +1 -0
- package/dist/targets/linux/appimage/AppImageTarget.d.ts.map +1 -1
- package/dist/targets/linux/appimage/AppImageTarget.js +8 -9
- package/dist/targets/linux/appimage/AppImageTarget.js.map +1 -1
- package/dist/targets/linux/appimage/appImageUtil.d.ts +4 -0
- package/dist/targets/linux/appimage/appImageUtil.d.ts.map +1 -1
- package/dist/targets/linux/appimage/appImageUtil.js +11 -4
- package/dist/targets/linux/appimage/appImageUtil.js.map +1 -1
- package/dist/targets/linux/appimage/appLauncher.d.ts.map +1 -1
- package/dist/targets/linux/appimage/appLauncher.js +5 -11
- package/dist/targets/linux/appimage/appLauncher.js.map +1 -1
- package/dist/targets/linux/launcherScript.d.ts +32 -0
- package/dist/targets/linux/launcherScript.d.ts.map +1 -0
- package/dist/targets/linux/launcherScript.js +24 -0
- package/dist/targets/linux/launcherScript.js.map +1 -0
- package/dist/targets/linux/snap/core24.d.ts +2 -0
- package/dist/targets/linux/snap/core24.d.ts.map +1 -1
- package/dist/targets/linux/snap/core24.js +48 -8
- package/dist/targets/linux/snap/core24.js.map +1 -1
- package/dist/targets/linux/snap/coreLegacy.d.ts +2 -2
- package/dist/targets/linux/snap/coreLegacy.d.ts.map +1 -1
- package/dist/targets/linux/snap/coreLegacy.js +9 -10
- package/dist/targets/linux/snap/coreLegacy.js.map +1 -1
- package/dist/targets/linux/snap/snapCommand.d.ts +13 -0
- package/dist/targets/linux/snap/snapCommand.d.ts.map +1 -0
- package/dist/targets/linux/snap/snapCommand.js +21 -0
- package/dist/targets/linux/snap/snapCommand.js.map +1 -0
- package/dist/targets/mac/MacTargetHelper.d.ts +12 -12
- package/dist/targets/mac/MacTargetHelper.d.ts.map +1 -1
- package/dist/targets/mac/MacTargetHelper.js +72 -67
- package/dist/targets/mac/MacTargetHelper.js.map +1 -1
- package/dist/targets/mac/pkg.d.ts.map +1 -1
- package/dist/targets/mac/pkg.js +4 -4
- package/dist/targets/mac/pkg.js.map +1 -1
- package/dist/targets/win/AppxTarget.d.ts.map +1 -1
- package/dist/targets/win/AppxTarget.js +9 -9
- package/dist/targets/win/AppxTarget.js.map +1 -1
- package/dist/targets/win/MsiTarget.d.ts.map +1 -1
- package/dist/targets/win/MsiTarget.js +8 -11
- package/dist/targets/win/MsiTarget.js.map +1 -1
- package/dist/targets/win/nsis/NsisTarget.js +5 -5
- package/dist/targets/win/nsis/NsisTarget.js.map +1 -1
- package/dist/targets/win/nsis/nsisScriptGenerator.js +2 -2
- package/dist/targets/win/nsis/nsisScriptGenerator.js.map +1 -1
- package/dist/targets/win/nsis/nsisUtil.d.ts.map +1 -1
- package/dist/targets/win/nsis/nsisUtil.js +2 -2
- package/dist/targets/win/nsis/nsisUtil.js.map +1 -1
- package/dist/toolsets/custom.d.ts +1 -0
- package/dist/toolsets/custom.d.ts.map +1 -1
- package/dist/toolsets/custom.js +19 -8
- package/dist/toolsets/custom.js.map +1 -1
- package/dist/toolsets/icons.d.ts.map +1 -1
- package/dist/toolsets/icons.js +11 -3
- package/dist/toolsets/icons.js.map +1 -1
- package/dist/toolsets/winCodeSign.d.ts +36 -0
- package/dist/toolsets/winCodeSign.d.ts.map +1 -1
- package/dist/toolsets/winCodeSign.js +84 -30
- package/dist/toolsets/winCodeSign.js.map +1 -1
- package/dist/toolsets/wine.d.ts.map +1 -1
- package/dist/toolsets/wine.js +20 -12
- package/dist/toolsets/wine.js.map +1 -1
- package/dist/util/appFileCopier.d.ts.map +1 -1
- package/dist/util/appFileCopier.js +9 -4
- package/dist/util/appFileCopier.js.map +1 -1
- package/dist/util/archCompatibility.d.ts +42 -0
- package/dist/util/archCompatibility.d.ts.map +1 -0
- package/dist/util/archCompatibility.js +202 -0
- package/dist/util/archCompatibility.js.map +1 -0
- package/dist/util/config/schemaValidator.d.ts.map +1 -1
- package/dist/util/config/schemaValidator.js +1 -1
- package/dist/util/config/schemaValidator.js.map +1 -1
- package/dist/util/electronGet.d.ts +8 -25
- package/dist/util/electronGet.d.ts.map +1 -1
- package/dist/util/electronGet.js +107 -87
- package/dist/util/electronGet.js.map +1 -1
- package/dist/util/flags.d.ts +0 -3
- package/dist/util/flags.d.ts.map +1 -1
- package/dist/util/flags.js +0 -9
- package/dist/util/flags.js.map +1 -1
- package/dist/util/installOrRebuild.d.ts +38 -0
- package/dist/util/installOrRebuild.d.ts.map +1 -0
- package/dist/util/{yarn.js → installOrRebuild.js} +65 -14
- package/dist/util/installOrRebuild.js.map +1 -0
- package/dist/util/langs.d.ts.map +1 -1
- package/dist/util/langs.js +1 -0
- package/dist/util/langs.js.map +1 -1
- package/dist/util/license.d.ts.map +1 -1
- package/dist/util/license.js +4 -1
- package/dist/util/license.js.map +1 -1
- package/dist/util/mac/macosIconComposer.d.ts +2 -1
- package/dist/util/mac/macosIconComposer.d.ts.map +1 -1
- package/dist/util/mac/macosIconComposer.js +40 -58
- package/dist/util/mac/macosIconComposer.js.map +1 -1
- package/dist/util/streamSpawnToFile.d.ts +47 -0
- package/dist/util/streamSpawnToFile.d.ts.map +1 -0
- package/dist/util/streamSpawnToFile.js +110 -0
- package/dist/util/streamSpawnToFile.js.map +1 -0
- package/dist/util/toolsetLock.d.ts +2 -0
- package/dist/util/toolsetLock.d.ts.map +1 -1
- package/dist/util/toolsetLock.js +31 -5
- package/dist/util/toolsetLock.js.map +1 -1
- package/dist/version.d.ts +1 -1
- package/dist/version.js +1 -1
- package/dist/version.js.map +1 -1
- package/dist/vm/ParallelsVm.d.ts.map +1 -1
- package/dist/vm/ParallelsVm.js +13 -2
- package/dist/vm/ParallelsVm.js.map +1 -1
- package/dist/vm/vm.d.ts.map +1 -1
- package/dist/vm/vm.js +4 -1
- package/dist/vm/vm.js.map +1 -1
- package/dist/winPackager.d.ts +1 -2
- package/dist/winPackager.d.ts.map +1 -1
- package/dist/winPackager.js +17 -22
- package/dist/winPackager.js.map +1 -1
- package/package.json +15 -14
- package/scheme.json +486 -439
- package/templates/appx/appxmanifest.xml +1 -2
- package/templates/nsis/assistedMessages.yml +17 -0
- package/templates/nsis/messages.yml +5 -0
- package/dist/codeSign/signManager.d.ts.map +0 -1
- package/dist/codeSign/signManager.js +0 -2
- package/dist/codeSign/signManager.js.map +0 -1
- package/dist/util/yarn.d.ts +0 -23
- package/dist/util/yarn.d.ts.map +0 -1
- package/dist/util/yarn.js.map +0 -1
|
@@ -9,12 +9,14 @@ import { GetFileMatchersOptions } from "./fileMatcher.js";
|
|
|
9
9
|
import { Framework } from "./Framework.js";
|
|
10
10
|
import { Platform, SourceRepositoryInfo } from "./core.js";
|
|
11
11
|
import type { AfterPackContext, CompressionLevel, Configuration, ElectronPlatformName, FileAssociation, Packager, PackagerOptions, PlatformSpecificBuildOptions, Target, TargetSpecificOptions } from "./index.js";
|
|
12
|
+
import type { PlatformType } from "./targets/mac/MacTargetHelper.js";
|
|
12
13
|
import { IconFormat, IconInfo } from "./util/iconConverter.js";
|
|
13
14
|
import { AssetCatalogResult } from "./util/mac/macosIconComposer.js";
|
|
14
15
|
export type DoPackOptions<DC extends PlatformSpecificBuildOptions> = {
|
|
15
16
|
outDir: string;
|
|
16
17
|
appOutDir: string;
|
|
17
18
|
platformName: ElectronPlatformName;
|
|
19
|
+
platformType?: PlatformType;
|
|
18
20
|
arch: Arch;
|
|
19
21
|
platformSpecificBuildOptions: DC;
|
|
20
22
|
targets: Array<Target>;
|
|
@@ -22,6 +24,7 @@ export type DoPackOptions<DC extends PlatformSpecificBuildOptions> = {
|
|
|
22
24
|
sign?: boolean;
|
|
23
25
|
disableAsarIntegrity?: boolean;
|
|
24
26
|
disableFuses?: boolean;
|
|
27
|
+
disableArchFilter?: boolean;
|
|
25
28
|
};
|
|
26
29
|
};
|
|
27
30
|
export declare abstract class PlatformPackager<DC extends PlatformSpecificBuildOptions> {
|
|
@@ -90,10 +93,10 @@ export declare abstract class PlatformPackager<DC extends PlatformSpecificBuildO
|
|
|
90
93
|
* ```
|
|
91
94
|
*/
|
|
92
95
|
addElectronFuses(context: AfterPackContext, fuses: FuseConfig): Promise<number>;
|
|
93
|
-
protected doSignAfterPack(outDir: string, appOutDir: string, platformName: ElectronPlatformName, arch: Arch, platformSpecificBuildOptions: DC, targets: Array<Target>): Promise<void>;
|
|
96
|
+
protected doSignAfterPack(outDir: string, appOutDir: string, platformName: ElectronPlatformName, platformType: PlatformType | undefined, arch: Arch, platformSpecificBuildOptions: DC, targets: Array<Target>): Promise<void>;
|
|
94
97
|
protected createTransformerForExtraFiles(packContext: AfterPackContext): FileTransformer | null;
|
|
95
98
|
private copyAppFiles;
|
|
96
|
-
protected signApp(packContext: AfterPackContext, isAsar: boolean): Promise<boolean>;
|
|
99
|
+
protected signApp(packContext: AfterPackContext, isAsar: boolean, _platformType?: PlatformType): Promise<boolean>;
|
|
97
100
|
getIconPath(): Promise<string | null>;
|
|
98
101
|
private computeAsarOptions;
|
|
99
102
|
getElectronSrcDir(dist: string): string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"platformPackager.d.ts","sourceRoot":"","sources":["../src/platformPackager.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAgB,MAAM,iBAAiB,CAAA;AAE/D,OAAO,EACL,IAAI,EAEJ,gBAAgB,EAChB,WAAW,EAEX,eAAe,EAShB,MAAM,cAAc,CAAA;AACrB,OAAO,EAAE,iBAAiB,EAAc,OAAO,EAAE,MAAM,sBAAsB,CAAA;
|
|
1
|
+
{"version":3,"file":"platformPackager.d.ts","sourceRoot":"","sources":["../src/platformPackager.ts"],"names":[],"mappings":"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"}
|
package/dist/platformPackager.js
CHANGED
|
@@ -5,7 +5,6 @@ import { readdir } from "fs/promises";
|
|
|
5
5
|
import { Lazy } from "lazy-val";
|
|
6
6
|
import * as path from "path";
|
|
7
7
|
import * as fs from "fs/promises";
|
|
8
|
-
import * as os from "os";
|
|
9
8
|
import { AppInfo } from "./appInfo.js";
|
|
10
9
|
import { checkFileInArchive } from "./asar/asarFileChecker.js";
|
|
11
10
|
import { AsarPackager } from "./asar/asarUtil.js";
|
|
@@ -208,7 +207,7 @@ export class PlatformPackager {
|
|
|
208
207
|
}
|
|
209
208
|
// Due to node-gyp rewriting GYP_MSVS_VERSION when reused across the same session, we must reset the env var: https://github.com/electron-userland/electron-builder/issues/7256
|
|
210
209
|
delete process.env.GYP_MSVS_VERSION;
|
|
211
|
-
const { outDir, appOutDir, platformName, arch, platformSpecificBuildOptions, targets, options } = packOptions;
|
|
210
|
+
const { outDir, appOutDir, platformName, platformType, arch, platformSpecificBuildOptions, targets, options } = packOptions;
|
|
212
211
|
await this.info.emitBeforePack({
|
|
213
212
|
appOutDir,
|
|
214
213
|
outDir,
|
|
@@ -272,7 +271,7 @@ export class PlatformPackager {
|
|
|
272
271
|
? path.join(appOutDir, "resources")
|
|
273
272
|
: appOutDir;
|
|
274
273
|
const taskManager = new AsyncTaskManager(this.info.cancellationToken);
|
|
275
|
-
this.copyAppFiles(taskManager, asarOptions, resourcesPath, path.join(resourcesPath, "app"), packContext, platformSpecificBuildOptions, excludePatterns, macroExpander);
|
|
274
|
+
this.copyAppFiles(taskManager, asarOptions, resourcesPath, path.join(resourcesPath, "app"), packContext, platformSpecificBuildOptions, excludePatterns, macroExpander, options?.disableArchFilter ?? false);
|
|
276
275
|
await taskManager.awaitTasks();
|
|
277
276
|
if (this.info.cancellationToken.cancelled) {
|
|
278
277
|
return;
|
|
@@ -288,6 +287,7 @@ export class PlatformPackager {
|
|
|
288
287
|
appOutDir,
|
|
289
288
|
asarIntegrity,
|
|
290
289
|
platformName,
|
|
290
|
+
platformType,
|
|
291
291
|
});
|
|
292
292
|
}
|
|
293
293
|
if (this.info.cancellationToken.cancelled) {
|
|
@@ -309,7 +309,7 @@ export class PlatformPackager {
|
|
|
309
309
|
await this.doAddElectronFuses(packContext);
|
|
310
310
|
}
|
|
311
311
|
if (options?.sign ?? true) {
|
|
312
|
-
await this.doSignAfterPack(outDir, appOutDir, platformName, arch, platformSpecificBuildOptions, targets);
|
|
312
|
+
await this.doSignAfterPack(outDir, appOutDir, platformName, platformType, arch, platformSpecificBuildOptions, targets);
|
|
313
313
|
}
|
|
314
314
|
}
|
|
315
315
|
// the fuses MUST be flipped right before signing
|
|
@@ -351,6 +351,9 @@ export class PlatformPackager {
|
|
|
351
351
|
if (fuses.grantFileProtocolExtraPrivileges != null) {
|
|
352
352
|
config[FuseV1Options.GrantFileProtocolExtraPrivileges] = fuses.grantFileProtocolExtraPrivileges;
|
|
353
353
|
}
|
|
354
|
+
if (fuses.wasmTrapHandlers != null) {
|
|
355
|
+
config[FuseV1Options.WasmTrapHandlers] = fuses.wasmTrapHandlers;
|
|
356
|
+
}
|
|
354
357
|
return config;
|
|
355
358
|
}
|
|
356
359
|
/**
|
|
@@ -379,7 +382,7 @@ export class PlatformPackager {
|
|
|
379
382
|
const { flipFuses } = await dynamicImport("@electron/fuses");
|
|
380
383
|
return flipFuses(electronBinaryPath, fuses);
|
|
381
384
|
}
|
|
382
|
-
async doSignAfterPack(outDir, appOutDir, platformName, arch, platformSpecificBuildOptions, targets) {
|
|
385
|
+
async doSignAfterPack(outDir, appOutDir, platformName, platformType, arch, platformSpecificBuildOptions, targets) {
|
|
383
386
|
const asarOptions = await this.computeAsarOptions(platformSpecificBuildOptions);
|
|
384
387
|
const isAsar = asarOptions != null;
|
|
385
388
|
const packContext = {
|
|
@@ -390,7 +393,7 @@ export class PlatformPackager {
|
|
|
390
393
|
packager: this,
|
|
391
394
|
electronPlatformName: platformName,
|
|
392
395
|
};
|
|
393
|
-
const didSign = await this.signApp(packContext, isAsar);
|
|
396
|
+
const didSign = await this.signApp(packContext, isAsar, platformType);
|
|
394
397
|
if (didSign) {
|
|
395
398
|
await this.info.emitAfterSign(packContext);
|
|
396
399
|
}
|
|
@@ -402,7 +405,7 @@ export class PlatformPackager {
|
|
|
402
405
|
createTransformerForExtraFiles(packContext) {
|
|
403
406
|
return null;
|
|
404
407
|
}
|
|
405
|
-
copyAppFiles(taskManager, asarOptions, resourcePath, defaultDestination, packContext, platformSpecificBuildOptions, excludePatterns, macroExpander) {
|
|
408
|
+
copyAppFiles(taskManager, asarOptions, resourcePath, defaultDestination, packContext, platformSpecificBuildOptions, excludePatterns, macroExpander, disableArchFilter) {
|
|
406
409
|
const appDir = this.info.appDir;
|
|
407
410
|
const config = this.config;
|
|
408
411
|
const mainMatchers = getMainFileMatchers(appDir, defaultDestination, macroExpander, platformSpecificBuildOptions, this, packContext.outDir);
|
|
@@ -417,7 +420,7 @@ export class PlatformPackager {
|
|
|
417
420
|
return computeFileSets(matchers, this.info.isPrepackedAppAsar ? null : transformer, this).then(async (result) => {
|
|
418
421
|
if (!this.info.isPrepackedAppAsar && !this.info.areNodeModulesHandledExternally) {
|
|
419
422
|
const moduleFileMatcher = getNodeModuleFileMatcher(appDir, defaultDestination, macroExpander, platformSpecificBuildOptions, this.info);
|
|
420
|
-
result = result.concat(await computeNodeModuleFileSets(this, moduleFileMatcher));
|
|
423
|
+
result = result.concat(await computeNodeModuleFileSets(this, moduleFileMatcher, packContext.arch, !disableArchFilter));
|
|
421
424
|
}
|
|
422
425
|
return result.filter(it => it.files.length > 0);
|
|
423
426
|
});
|
|
@@ -474,7 +477,7 @@ export class PlatformPackager {
|
|
|
474
477
|
}
|
|
475
478
|
}
|
|
476
479
|
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
477
|
-
signApp(packContext, isAsar) {
|
|
480
|
+
signApp(packContext, isAsar, _platformType) {
|
|
478
481
|
return Promise.resolve(false);
|
|
479
482
|
}
|
|
480
483
|
getIconPath() {
|
|
@@ -529,7 +532,7 @@ export class PlatformPackager {
|
|
|
529
532
|
}
|
|
530
533
|
const relativeFile = path.relative(this.info.appDir, path.resolve(this.info.appDir, file));
|
|
531
534
|
if (isAsar) {
|
|
532
|
-
|
|
535
|
+
checkFileInArchive(path.join(resourcesDir, "app.asar"), relativeFile, messagePrefix);
|
|
533
536
|
return;
|
|
534
537
|
}
|
|
535
538
|
const pathParsed = path.parse(file);
|
|
@@ -548,7 +551,7 @@ export class PlatformPackager {
|
|
|
548
551
|
const asarPath = path.join(...pathSplit.slice(0, partWithAsarIndex + 1));
|
|
549
552
|
let mainPath = pathSplit.length > partWithAsarIndex + 1 ? path.join.apply(pathSplit.slice(partWithAsarIndex + 1)) : "";
|
|
550
553
|
mainPath += path.join(mainPath, pathParsed.base);
|
|
551
|
-
|
|
554
|
+
checkFileInArchive(path.join(resourcesDir, "app", asarPath), mainPath, messagePrefix);
|
|
552
555
|
}
|
|
553
556
|
else {
|
|
554
557
|
const fullPath = path.join(resourcesDir, "app", relativeFile);
|
|
@@ -657,7 +660,7 @@ export class PlatformPackager {
|
|
|
657
660
|
if (cachedPromise) {
|
|
658
661
|
return cachedPromise;
|
|
659
662
|
}
|
|
660
|
-
const promise = generateAssetCatalogForIcon(iconPath);
|
|
663
|
+
const promise = generateAssetCatalogForIcon(this.tempDirManager, iconPath);
|
|
661
664
|
this.assetCatalogResults.set(iconPath, promise);
|
|
662
665
|
return promise;
|
|
663
666
|
}
|
|
@@ -669,7 +672,7 @@ export class PlatformPackager {
|
|
|
669
672
|
const runner = async () => {
|
|
670
673
|
const { icnsFile } = await this.generateAssetCatalogData(iconPath);
|
|
671
674
|
// Generate icns file
|
|
672
|
-
const tempDir = await
|
|
675
|
+
const tempDir = await this.tempDirManager.createTempDir({ prefix: "icns-from-icon" });
|
|
673
676
|
const tempIcnsPath = path.resolve(tempDir, "Icon.icns");
|
|
674
677
|
await fs.writeFile(tempIcnsPath, icnsFile);
|
|
675
678
|
return tempIcnsPath;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"platformPackager.js","sourceRoot":"","sources":["../src/platformPackager.ts"],"names":[],"mappings":"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","sourcesContent":["import type { FuseConfig, FuseV1Config } from \"@electron/fuses\"\nimport { dynamicImport } from \"./util/dynamicImport.js\"\nimport {\n Arch,\n asArray,\n AsyncTaskManager,\n DebugLogger,\n defaultArchFromString,\n FileTransformer,\n getArchSuffix,\n getArtifactArchName,\n InvalidConfigurationError,\n isEmptyOrSpaces,\n log,\n orIfFileNotExist,\n sanitizeDirPath,\n statOrNull,\n} from \"builder-util\"\nimport { CancellationToken, deepAssign, Nullish } from \"builder-util-runtime\"\nimport { readdir } from \"fs/promises\"\nimport { Lazy } from \"lazy-val\"\nimport { Minimatch } from \"minimatch\"\nimport * as path from \"path\"\nimport * as fs from \"fs/promises\"\nimport * as os from \"os\"\nimport type { TmpDir } from \"temp-file\"\nimport type { Metadata } from \"./options/metadata.js\"\nimport type { ArtifactBuildStarted, ArtifactCreated } from \"./packagerApi.js\"\nimport { AppInfo } from \"./appInfo.js\"\nimport { checkFileInArchive } from \"./asar/asarFileChecker.js\"\nimport { AsarPackager } from \"./asar/asarUtil.js\"\nimport { AsarIntegrity, computeData } from \"./asar/integrity.js\"\nimport { FuseOptionsV1 } from \"./configuration.js\"\nimport { copyFiles, FileMatcher, getFileMatchers, GetFileMatchersOptions, getMainFileMatchers, getNodeModuleFileMatcher } from \"./fileMatcher.js\"\nimport { createTransformer } from \"./fileTransformer.js\"\nimport { Framework, isElectronBased } from \"./Framework.js\"\nimport { Platform, SourceRepositoryInfo } from \"./core.js\"\n// Type-only barrel import: keeping these erased avoids a runtime cycle\n// (index.ts → linuxPackager.ts → platformPackager.ts) that breaks ESM class init.\nimport type {\n AfterPackContext,\n AsarOptions,\n CompressionLevel,\n Configuration,\n ElectronPlatformName,\n FileAssociation,\n LinuxPackager,\n Packager,\n PackagerOptions,\n PlatformSpecificBuildOptions,\n Target,\n TargetSpecificOptions,\n} from \"./index.js\"\nimport { computeFileSets, computeNodeModuleFileSets, copyAppFiles, transformFiles } from \"./util/appFileCopier.js\"\nimport { convertIcon, IconFormat, IconInfo } from \"./util/iconConverter.js\"\nimport { expandMacro as doExpandMacro } from \"./util/macroExpander.js\"\nimport { AssetCatalogResult, generateAssetCatalogForIcon } from \"./util/mac/macosIconComposer.js\"\n\nexport type DoPackOptions<DC extends PlatformSpecificBuildOptions> = {\n outDir: string\n appOutDir: string\n platformName: ElectronPlatformName\n arch: Arch\n platformSpecificBuildOptions: DC\n targets: Array<Target>\n options?: {\n sign?: boolean\n disableAsarIntegrity?: boolean\n disableFuses?: boolean\n }\n}\n\nexport abstract class PlatformPackager<DC extends PlatformSpecificBuildOptions> {\n get packagerOptions(): PackagerOptions {\n return this.info.options\n }\n\n get buildResourcesDir(): string {\n return this.info.buildResourcesDir\n }\n\n get projectDir(): string {\n return this.info.projectDir\n }\n\n get config(): Configuration {\n return this.info.config\n }\n\n protected readonly platformSpecificBuildOptions: DC\n\n /** Platform-level build options (e.g. `config.mac`, `config.win`, `config.linux`). */\n get platformOptions(): DC {\n return this.platformSpecificBuildOptions\n }\n\n /**\n * Merge platform-level options with target-specific config under `key`.\n * Replaces the manual `deepAssign({}, packager.platformSpecificBuildOptions, config.X)` pattern.\n */\n getOptionsForTarget<T>(key: string): T {\n return deepAssign({}, this.platformSpecificBuildOptions, (this.config as any)[key] ?? {}) as T\n }\n\n get resourceList(): Promise<Array<string>> {\n return this._resourceList.value\n }\n\n private readonly _resourceList = new Lazy<Array<string>>(() => orIfFileNotExist(readdir(this.info.buildResourcesDir), []))\n\n readonly appInfo: AppInfo\n\n protected constructor(\n protected readonly info: Packager,\n readonly platform: Platform\n ) {\n this.platformSpecificBuildOptions = PlatformPackager.normalizePlatformSpecificBuildOptions((this.config as any)[platform.buildConfigurationKey])\n this.appInfo = this.prepareAppInfo(info.appInfo)\n }\n\n get compression(): CompressionLevel {\n const compression = this.platformSpecificBuildOptions.compression\n // explicitly set to null - request to use default value instead of parent (in the config)\n if (compression === null) {\n return \"normal\"\n }\n return compression || this.config.compression || \"normal\"\n }\n\n get debugLogger(): DebugLogger {\n return this.info.debugLogger\n }\n\n get tempDirManager(): TmpDir {\n return this.info.tempDirManager\n }\n\n get metadata(): Metadata {\n return this.info.metadata\n }\n\n get framework(): Framework {\n return this.info.framework\n }\n\n get cancellationToken(): CancellationToken {\n return this.info.cancellationToken\n }\n\n get repositoryInfo(): Promise<SourceRepositoryInfo | null> {\n return this.info.repositoryInfo\n }\n\n get relativeBuildResourcesDirname(): string {\n return this.info.relativeBuildResourcesDirname\n }\n\n get stageDirPathCustomizer(): (target: Target, packager: PlatformPackager<any>, arch: Arch) => string {\n return this.info.stageDirPathCustomizer\n }\n\n get areNodeModulesHandledExternally(): boolean {\n return this.info.areNodeModulesHandledExternally\n }\n\n get isPrepackedAppAsar(): boolean {\n return this.info.isPrepackedAppAsar\n }\n\n get appDir(): string {\n return this.info.appDir\n }\n\n getWorkspaceRoot(): Promise<string> {\n return this.info.getWorkspaceRoot()\n }\n\n get nodePackageName(): string {\n return this.info.nodePackageName\n }\n\n getPackageManager(): Promise<import(\"./node-module-collector/index.js\").PM> {\n return this.info.getPackageManager()\n }\n\n emitArtifactBuildStarted(event: ArtifactBuildStarted, logFields?: any): Promise<void> {\n return this.info.emitArtifactBuildStarted(event, logFields)\n }\n\n emitArtifactBuildCompleted(event: ArtifactCreated): Promise<void> {\n return this.info.emitArtifactBuildCompleted(event)\n }\n\n emitArtifactCreated(event: ArtifactCreated): Promise<void> {\n return this.info.emitArtifactCreated(event)\n }\n\n emitMsiProjectCreated(path: string): Promise<void> {\n return this.info.emitMsiProjectCreated(path)\n }\n\n emitAppxManifestCreated(path: string): Promise<void> {\n return this.info.emitAppxManifestCreated(path)\n }\n\n abstract get defaultTarget(): Array<string>\n\n // eslint-disable-next-line\n protected prepareAppInfo(appInfo: AppInfo) {\n return new AppInfo(this.info, null, this.platformSpecificBuildOptions)\n }\n\n private static normalizePlatformSpecificBuildOptions(options: any | Nullish): any {\n return options == null ? Object.create(null) : options\n }\n\n abstract createTargets(targets: Array<string>, mapper: (name: string, factory: (outDir: string) => Target) => void): void\n\n getCscPassword(): string {\n const password = this.doGetCscPassword()\n if (isEmptyOrSpaces(password)) {\n log.info({ reason: \"CSC_KEY_PASSWORD is not defined\" }, \"empty password will be used for code signing\")\n return \"\"\n } else {\n return password.trim()\n }\n }\n\n getCscLink(extraEnvName?: string | null): string | Nullish {\n // allow to specify as empty string\n const envValue = chooseNotNull(extraEnvName == null ? null : process.env[extraEnvName], process.env.CSC_LINK)\n return chooseNotNull(chooseNotNull(this.info.config.cscLink, this.platformSpecificBuildOptions.cscLink), envValue)\n }\n\n doGetCscPassword(): string | Nullish {\n // allow to specify as empty string\n return chooseNotNull(chooseNotNull(this.info.config.cscKeyPassword, this.platformSpecificBuildOptions.cscKeyPassword), process.env.CSC_KEY_PASSWORD)\n }\n\n protected computeAppOutDir(outDir: string, arch: Arch): string {\n // codeql[js/shell-command-constructed-from-input] - prepackaged and outDir are validated via sanitizeDirPath in the Packager constructor\n return path.resolve(\n this.packagerOptions.prepackaged ||\n path.join(\n outDir,\n `${this.platform.buildConfigurationKey}${getArchSuffix(arch, this.platformSpecificBuildOptions.defaultArch)}${this.platform === Platform.MAC ? \"\" : \"-unpacked\"}`\n )\n )\n }\n\n async pack(outDir: string, arch: Arch, targets: Array<Target>, taskManager: AsyncTaskManager): Promise<any> {\n const appOutDir = this.computeAppOutDir(outDir, arch)\n await this.doPack({\n outDir,\n appOutDir,\n platformName: this.platform.nodeName as ElectronPlatformName,\n arch,\n platformSpecificBuildOptions: this.platformSpecificBuildOptions,\n targets,\n })\n this.packageInDistributableFormat(appOutDir, arch, targets, taskManager)\n }\n\n protected packageInDistributableFormat(appOutDir: string, arch: Arch, targets: Array<Target>, taskManager: AsyncTaskManager): void {\n if (targets.find(it => !it.isAsyncSupported) == null) {\n PlatformPackager.buildAsyncTargets(targets, taskManager, appOutDir, arch)\n return\n }\n\n taskManager.add(async () => {\n // BluebirdPromise.map doesn't invoke target.build immediately, but for RemoteTarget it is very critical to call build() before finishBuild()\n const subTaskManager = new AsyncTaskManager(this.info.cancellationToken)\n PlatformPackager.buildAsyncTargets(targets, subTaskManager, appOutDir, arch)\n await subTaskManager.awaitTasks()\n\n for (const target of targets) {\n if (!target.isAsyncSupported && !this.info.cancellationToken.cancelled) {\n await target.build(appOutDir, arch)\n }\n }\n })\n }\n\n private static buildAsyncTargets(targets: Array<Target>, taskManager: AsyncTaskManager, appOutDir: string, arch: Arch) {\n for (const target of targets) {\n if (target.isAsyncSupported) {\n taskManager.addTask(target.build(appOutDir, arch))\n }\n }\n }\n\n private getExtraFileMatchers(isResources: boolean, appOutDir: string, options: GetFileMatchersOptions): Array<FileMatcher> | null {\n const outDir = this.platform === Platform.MAC ? path.join(appOutDir, `${this.appInfo.productFilename}.app`, \"Contents\") : appOutDir\n const base = isResources ? this.getResourcesDir(appOutDir) : outDir\n return getFileMatchers(this.config, isResources ? \"extraResources\" : \"extraFiles\", base, options)\n }\n\n createGetFileMatchersOptions(outDir: string, arch: Arch, customBuildOptions: PlatformSpecificBuildOptions): GetFileMatchersOptions {\n return {\n macroExpander: it => this.expandMacro(it, arch == null ? null : Arch[arch], { \"/*\": \"{,/**/*}\" }),\n customBuildOptions,\n globalOutDir: outDir,\n defaultSrc: this.projectDir,\n }\n }\n\n protected async doPack(packOptions: DoPackOptions<DC>) {\n if (this.packagerOptions.prepackaged != null) {\n return\n }\n\n if (this.info.cancellationToken.cancelled) {\n return\n }\n\n // Due to node-gyp rewriting GYP_MSVS_VERSION when reused across the same session, we must reset the env var: https://github.com/electron-userland/electron-builder/issues/7256\n delete process.env.GYP_MSVS_VERSION\n\n const { outDir, appOutDir, platformName, arch, platformSpecificBuildOptions, targets, options } = packOptions\n\n await this.info.emitBeforePack({\n appOutDir,\n outDir,\n arch,\n targets,\n packager: this,\n electronPlatformName: platformName,\n })\n\n await this.info.installAppDependencies(this.platform, arch)\n\n if (this.info.cancellationToken.cancelled) {\n return\n }\n\n const framework = this.info.framework\n log.info(\n {\n platform: platformName,\n arch: Arch[arch],\n [`${framework.name}`]: framework.version,\n appOutDir: log.filePath(appOutDir),\n },\n `packaging`\n )\n\n await framework.prepareApplicationStageDirectory({\n packager: this,\n appOutDir,\n platformName,\n arch: Arch[arch],\n version: framework.version,\n })\n\n await this.info.emitAfterExtract({\n appOutDir,\n outDir,\n arch,\n targets,\n packager: this,\n electronPlatformName: platformName,\n })\n\n const excludePatterns: Array<Minimatch> = []\n\n const computeParsedPatterns = (patterns: Array<FileMatcher> | null) => {\n if (patterns != null) {\n for (const pattern of patterns) {\n pattern.computeParsedPatterns(excludePatterns, this.info.projectDir)\n }\n }\n }\n\n const getFileMatchersOptions = this.createGetFileMatchersOptions(outDir, arch, platformSpecificBuildOptions)\n const macroExpander = getFileMatchersOptions.macroExpander\n const extraResourceMatchers = this.getExtraFileMatchers(true, appOutDir, getFileMatchersOptions)\n computeParsedPatterns(extraResourceMatchers)\n const extraFileMatchers = this.getExtraFileMatchers(false, appOutDir, getFileMatchersOptions)\n computeParsedPatterns(extraFileMatchers)\n\n const packContext: AfterPackContext = {\n appOutDir,\n outDir,\n arch,\n targets,\n packager: this,\n electronPlatformName: platformName,\n }\n\n const asarOptions = await this.computeAsarOptions(platformSpecificBuildOptions)\n const resourcesPath =\n this.platform === Platform.MAC\n ? path.join(appOutDir, framework.distMacOsAppName, \"Contents\", \"Resources\")\n : isElectronBased(framework)\n ? path.join(appOutDir, \"resources\")\n : appOutDir\n const taskManager = new AsyncTaskManager(this.info.cancellationToken)\n this.copyAppFiles(taskManager, asarOptions, resourcesPath, path.join(resourcesPath, \"app\"), packContext, platformSpecificBuildOptions, excludePatterns, macroExpander)\n await taskManager.awaitTasks()\n\n if (this.info.cancellationToken.cancelled) {\n return\n }\n\n if (framework.beforeCopyExtraFiles != null) {\n const resourcesRelativePath = this.platform === Platform.MAC ? \"Resources\" : isElectronBased(framework) ? \"resources\" : \"\"\n\n let asarIntegrity: AsarIntegrity | null = null\n if (!(asarOptions == null || options?.disableAsarIntegrity || asarOptions.disableIntegrity)) {\n asarIntegrity = await computeData({ resourcesPath, resourcesRelativePath, resourcesDestinationPath: this.getResourcesDir(appOutDir), extraResourceMatchers })\n }\n\n await framework.beforeCopyExtraFiles({\n packager: this,\n appOutDir,\n asarIntegrity,\n platformName,\n })\n }\n\n if (this.info.cancellationToken.cancelled) {\n return\n }\n\n const transformerForExtraFiles = this.createTransformerForExtraFiles(packContext)\n await copyFiles(extraResourceMatchers, transformerForExtraFiles)\n await copyFiles(extraFileMatchers, transformerForExtraFiles)\n\n if (this.info.cancellationToken.cancelled) {\n return\n }\n\n await this.info.emitAfterPack(packContext)\n\n if (framework.afterPack != null) {\n await framework.afterPack(packContext)\n }\n\n const isAsar = asarOptions != null\n await this.sanityCheckPackage(appOutDir, isAsar, framework, !!asarOptions?.disableSanityCheck)\n\n if (!options?.disableFuses) {\n await this.doAddElectronFuses(packContext)\n }\n if (options?.sign ?? true) {\n await this.doSignAfterPack(outDir, appOutDir, platformName, arch, platformSpecificBuildOptions, targets)\n }\n }\n\n // the fuses MUST be flipped right before signing\n protected async doAddElectronFuses(packContext: AfterPackContext) {\n if (this.config.electronFuses == null) {\n return\n }\n const fuseConfig = await this.generateFuseConfig(this.config.electronFuses)\n await this.addElectronFuses(packContext, fuseConfig)\n }\n\n private async generateFuseConfig(fuses: FuseOptionsV1): Promise<FuseV1Config> {\n const { FuseVersion, FuseV1Options } = await dynamicImport<typeof import(\"@electron/fuses\")>(\"@electron/fuses\")\n const config: FuseV1Config = {\n version: FuseVersion.V1,\n resetAdHocDarwinSignature: fuses.resetAdHocDarwinSignature,\n }\n // this is annoying, but we must filter out undefined entries because some older electron versions will receive `the fuse wire in this version of Electron is not long enough` even if entry is set undefined\n if (fuses.runAsNode != null) {\n config[FuseV1Options.RunAsNode] = fuses.runAsNode\n }\n if (fuses.enableCookieEncryption != null) {\n config[FuseV1Options.EnableCookieEncryption] = fuses.enableCookieEncryption\n }\n if (fuses.enableNodeOptionsEnvironmentVariable != null) {\n config[FuseV1Options.EnableNodeOptionsEnvironmentVariable] = fuses.enableNodeOptionsEnvironmentVariable\n }\n if (fuses.enableNodeCliInspectArguments != null) {\n config[FuseV1Options.EnableNodeCliInspectArguments] = fuses.enableNodeCliInspectArguments\n }\n if (fuses.enableEmbeddedAsarIntegrityValidation != null) {\n config[FuseV1Options.EnableEmbeddedAsarIntegrityValidation] = fuses.enableEmbeddedAsarIntegrityValidation\n }\n if (fuses.onlyLoadAppFromAsar != null) {\n config[FuseV1Options.OnlyLoadAppFromAsar] = fuses.onlyLoadAppFromAsar\n }\n if (fuses.loadBrowserProcessSpecificV8Snapshot != null) {\n config[FuseV1Options.LoadBrowserProcessSpecificV8Snapshot] = fuses.loadBrowserProcessSpecificV8Snapshot\n }\n if (fuses.grantFileProtocolExtraPrivileges != null) {\n config[FuseV1Options.GrantFileProtocolExtraPrivileges] = fuses.grantFileProtocolExtraPrivileges\n }\n return config\n }\n\n /**\n * Use `AfterPackContext` here to keep available for public API\n * @param {AfterPackContext} context\n * @param {FuseConfig} fuses\n *\n * Can be used in `afterPack` hook for custom fuse logic like below. It's an alternative approach if one wants to override electron-builder's @electron/fuses version\n * ```\n * await context.packager.addElectronFuses(context, { ... })\n * ```\n */\n public async addElectronFuses(context: AfterPackContext, fuses: FuseConfig) {\n const { appOutDir, electronPlatformName } = context\n\n const ext = {\n darwin: \".app\",\n mas: \".app\",\n win32: \".exe\",\n linux: \"\",\n }[electronPlatformName]\n\n // `\"executableName\" in this` instead of `instanceof LinuxPackager` keeps LinuxPackager a\n // type-only import, avoiding the index.ts → linuxPackager.ts → platformPackager.ts runtime cycle.\n const executableName = \"executableName\" in this ? (this as LinuxPackager).executableName : this.appInfo.productFilename\n const electronBinaryPath = path.join(appOutDir, `${executableName}${ext}`)\n\n log.info({ electronPath: log.filePath(electronBinaryPath) }, \"executing @electron/fuses\")\n const { flipFuses } = await dynamicImport<typeof import(\"@electron/fuses\")>(\"@electron/fuses\")\n return flipFuses(electronBinaryPath, fuses)\n }\n\n protected async doSignAfterPack(outDir: string, appOutDir: string, platformName: ElectronPlatformName, arch: Arch, platformSpecificBuildOptions: DC, targets: Array<Target>) {\n const asarOptions = await this.computeAsarOptions(platformSpecificBuildOptions)\n const isAsar = asarOptions != null\n const packContext = {\n appOutDir,\n outDir,\n arch,\n targets,\n packager: this,\n electronPlatformName: platformName,\n }\n const didSign = await this.signApp(packContext, isAsar)\n if (didSign) {\n await this.info.emitAfterSign(packContext)\n } else if (this.info.filterPackagerEventListeners(\"afterSign\", \"user\").length) {\n log.warn(null, `skipping \"afterSign\" hook as no signing occurred, perhaps you intended \"afterPack\"?`)\n }\n }\n\n // eslint-disable-next-line\n protected createTransformerForExtraFiles(packContext: AfterPackContext): FileTransformer | null {\n return null\n }\n\n private copyAppFiles(\n taskManager: AsyncTaskManager,\n asarOptions: AsarOptions | null,\n resourcePath: string,\n defaultDestination: string,\n packContext: AfterPackContext,\n platformSpecificBuildOptions: DC,\n excludePatterns: Array<Minimatch>,\n macroExpander: (it: string) => string\n ) {\n const appDir = this.info.appDir\n const config = this.config\n\n const mainMatchers = getMainFileMatchers(appDir, defaultDestination, macroExpander, platformSpecificBuildOptions, this, packContext.outDir)\n if (excludePatterns.length > 0) {\n for (const matcher of mainMatchers) {\n matcher.excludePatterns = excludePatterns\n }\n }\n\n const framework = this.info.framework\n const transformer = createTransformer(appDir, config, config.extraMetadata, framework.createTransformer == null ? null : framework.createTransformer())\n\n const _computeFileSets = (matchers: Array<FileMatcher>) => {\n return computeFileSets(matchers, this.info.isPrepackedAppAsar ? null : transformer, this).then(async result => {\n if (!this.info.isPrepackedAppAsar && !this.info.areNodeModulesHandledExternally) {\n const moduleFileMatcher = getNodeModuleFileMatcher(appDir, defaultDestination, macroExpander, platformSpecificBuildOptions, this.info)\n result = result.concat(await computeNodeModuleFileSets(this, moduleFileMatcher))\n }\n return result.filter(it => it.files.length > 0)\n })\n }\n\n if (this.info.isPrepackedAppAsar) {\n taskManager.add(async () => {\n const fileSets = await _computeFileSets([new FileMatcher(appDir, resourcePath, macroExpander)])\n fileSets.forEach(it => taskManager.addTask(copyAppFiles(it, this.info, transformer)))\n await taskManager.awaitTasks()\n })\n } else if (asarOptions == null) {\n // for ASAR all asar unpacked files will be extra transformed (e.g. sign of EXE and DLL) later,\n // for prepackaged asar extra transformation not supported yet,\n // so, extra transform if asar is disabled\n const transformerForExtraFiles = this.createTransformerForExtraFiles(packContext)\n const combinedTransformer: FileTransformer = file => {\n if (transformerForExtraFiles != null) {\n const result = transformerForExtraFiles(file)\n if (result != null) {\n return result\n }\n }\n return transformer(file)\n }\n taskManager.add(async () => {\n const fileSets = await _computeFileSets(mainMatchers)\n fileSets.forEach(it => taskManager.addTask(copyAppFiles(it, this.info, combinedTransformer)))\n await taskManager.awaitTasks()\n })\n } else {\n const unpackPatterns = asarOptions.unpack\n let fileMatcher: FileMatcher | null = null\n if (unpackPatterns != null) {\n fileMatcher = new FileMatcher(appDir, defaultDestination, macroExpander)\n const pats = Array.isArray(unpackPatterns) ? unpackPatterns : [unpackPatterns]\n pats.forEach(p => fileMatcher!.addPattern(p))\n if (fileMatcher.isEmpty()) {\n fileMatcher = null\n }\n }\n taskManager.addTask(\n _computeFileSets(mainMatchers).then(async fileSets => {\n for (const fileSet of fileSets) {\n await transformFiles(transformer, fileSet)\n }\n\n await new AsarPackager(this, {\n defaultDestination,\n resourcePath,\n options: asarOptions,\n unpackPattern: fileMatcher?.createFilter(),\n }).pack(fileSets)\n })\n )\n }\n }\n\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n protected signApp(packContext: AfterPackContext, isAsar: boolean): Promise<boolean> {\n return Promise.resolve(false)\n }\n\n getIconPath(): Promise<string | null> {\n return Promise.resolve(null)\n }\n\n private async computeAsarOptions(customBuildOptions: DC): Promise<AsarOptions | null> {\n if (!isElectronBased(this.info.framework)) {\n return null\n }\n\n const platformSpecific = customBuildOptions.asar\n const result = platformSpecific == null ? this.config.asar : platformSpecific\n if (result === false) {\n const appAsarStat = await statOrNull(path.join(this.info.appDir, \"app.asar\"))\n //noinspection ES6MissingAwait\n if (appAsarStat == null || !appAsarStat.isFile()) {\n log.warn(\n {\n solution: \"enable asar and use asar.unpack to unpack files that must be externally available\",\n },\n \"asar usage is disabled — this is strongly not recommended\"\n )\n }\n return null\n }\n\n if (result == null || (result as unknown) === true) {\n return {}\n }\n\n return deepAssign({}, result)\n }\n\n public getElectronSrcDir(dist: string): string {\n return path.resolve(this.projectDir, dist)\n }\n\n public getElectronDestinationDir(appOutDir: string): string {\n return appOutDir\n }\n\n getResourcesDir(appOutDir: string): string {\n if (this.platform === Platform.MAC) {\n return this.getMacOsResourcesDir(appOutDir)\n }\n if (isElectronBased(this.info.framework)) {\n return path.join(appOutDir, \"resources\")\n }\n return appOutDir\n }\n\n public getMacOsElectronFrameworkResourcesDir(appOutDir: string): string {\n const electronFrameworkName = path.basename(this.info.framework.distMacOsAppName, \".app\") + \" \" + \"Framework.framework\"\n return path.join(appOutDir, `${this.appInfo.productFilename}.app`, \"Contents\", \"Frameworks\", electronFrameworkName, \"Versions\", \"A\", \"Resources\")\n }\n public getMacOsResourcesDir(appOutDir: string): string {\n return path.join(appOutDir, `${this.appInfo.productFilename}.app`, \"Contents\", \"Resources\")\n }\n\n private async checkFileInPackage(resourcesDir: string, file: string, messagePrefix: string, isAsar: boolean, disableSanityCheckAsar: boolean) {\n if (isAsar && disableSanityCheckAsar) {\n return\n }\n const relativeFile = path.relative(this.info.appDir, path.resolve(this.info.appDir, file))\n if (isAsar) {\n await checkFileInArchive(path.join(resourcesDir, \"app.asar\"), relativeFile, messagePrefix)\n return\n }\n\n const pathParsed = path.parse(file)\n // Even when packaging to asar is disabled, it does not imply that the main file can not be inside an .asar archive.\n // This may occur when the packaging is done manually before processing with electron-builder.\n if (pathParsed.dir.includes(\".asar\")) {\n // The path needs to be split to the part with an asar archive which acts like a directory and the part with\n // the path to main file itself. (e.g. path/arch.asar/dir/index.js -> path/arch.asar, dir/index.js)\n // noinspection TypeScriptValidateJSTypes\n const pathSplit: Array<string> = pathParsed.dir.split(path.sep)\n let partWithAsarIndex = 0\n pathSplit.some((pathPart: string, index: number) => {\n partWithAsarIndex = index\n return pathPart.endsWith(\".asar\")\n })\n const asarPath = path.join(...pathSplit.slice(0, partWithAsarIndex + 1))\n let mainPath = pathSplit.length > partWithAsarIndex + 1 ? path.join.apply(pathSplit.slice(partWithAsarIndex + 1)) : \"\"\n mainPath += path.join(mainPath, pathParsed.base)\n await checkFileInArchive(path.join(resourcesDir, \"app\", asarPath), mainPath, messagePrefix)\n } else {\n const fullPath = path.join(resourcesDir, \"app\", relativeFile)\n const outStat = await statOrNull(fullPath)\n if (outStat == null) {\n throw new Error(`${messagePrefix} \"${fullPath}\" does not exist. Seems like a wrong configuration.`)\n } else {\n //noinspection ES6MissingAwait\n if (!outStat.isFile()) {\n throw new Error(`${messagePrefix} \"${fullPath}\" is not a file. Seems like a wrong configuration.`)\n }\n }\n }\n }\n\n private async sanityCheckPackage(appOutDir: string, isAsar: boolean, framework: Framework, disableSanityCheckAsar: boolean): Promise<any> {\n const outStat = await statOrNull(appOutDir)\n if (outStat == null) {\n throw new Error(`Output directory \"${appOutDir}\" does not exist. Seems like a wrong configuration.`)\n } else {\n //noinspection ES6MissingAwait\n if (!outStat.isDirectory()) {\n throw new Error(`Output directory \"${appOutDir}\" is not a directory. Seems like a wrong configuration.`)\n }\n }\n\n const resourcesDir = this.getResourcesDir(appOutDir)\n const mainFile = (framework.getMainFile == null ? null : framework.getMainFile(this.platform)) || this.info.metadata.main || \"index.js\"\n await this.checkFileInPackage(resourcesDir, mainFile, \"Application entry file\", isAsar, disableSanityCheckAsar)\n await this.checkFileInPackage(resourcesDir, \"package.json\", \"Application\", isAsar, disableSanityCheckAsar)\n }\n\n // tslint:disable-next-line:no-invalid-template-strings\n computeSafeArtifactName(\n suggestedName: string | null,\n ext: string,\n arch?: Arch | null,\n skipDefaultArch = true,\n defaultArch?: string,\n safePattern = \"${name}-${version}-${arch}.${ext}\"\n ): string | null {\n return computeSafeArtifactNameIfNeeded(suggestedName, () =>\n this.computeArtifactName(safePattern, ext, skipDefaultArch && arch === defaultArchFromString(defaultArch) ? null : arch)\n )\n }\n\n expandArtifactNamePattern(\n targetSpecificOptions: TargetSpecificOptions | Nullish,\n ext: string,\n arch?: Arch | null,\n defaultPattern?: string,\n skipDefaultArch = true,\n defaultArch?: string\n ): string {\n const { pattern, isUserForced } = this.artifactPatternConfig(targetSpecificOptions, defaultPattern)\n return this.computeArtifactName(pattern, ext, !isUserForced && skipDefaultArch && arch === defaultArchFromString(defaultArch) ? null : arch)\n }\n\n artifactPatternConfig(targetSpecificOptions: TargetSpecificOptions | Nullish, defaultPattern: string | undefined) {\n const userSpecifiedPattern = targetSpecificOptions?.artifactName || this.platformSpecificBuildOptions.artifactName || this.config.artifactName\n return {\n isUserForced: !!userSpecifiedPattern,\n pattern: userSpecifiedPattern || defaultPattern || \"${productName}-${version}-${arch}.${ext}\",\n }\n }\n\n expandArtifactBeautyNamePattern(targetSpecificOptions: TargetSpecificOptions | Nullish, ext: string, arch?: Arch | null): string {\n // tslint:disable-next-line:no-invalid-template-strings\n return this.expandArtifactNamePattern(targetSpecificOptions, ext, arch, \"${productName} ${version} ${arch}.${ext}\", true)\n }\n\n private computeArtifactName(pattern: any, ext: string, arch: Arch | Nullish): string {\n const archName = arch == null ? null : getArtifactArchName(arch, ext)\n return this.expandMacro(pattern, archName, {\n ext,\n })\n }\n\n expandMacro(pattern: string, arch?: string | null, extra: any = {}, isProductNameSanitized = true): string {\n return doExpandMacro(pattern, arch, this.appInfo, { os: this.platform.buildConfigurationKey, ...extra }, isProductNameSanitized)\n }\n\n generateName2(ext: string | null, classifier: string | Nullish, deployment: boolean): string {\n const dotExt = ext == null ? \"\" : `.${ext}`\n const separator = ext === \"deb\" ? \"_\" : \"-\"\n return `${deployment ? this.appInfo.name : this.appInfo.productFilename}${separator}${this.appInfo.version}${classifier == null ? \"\" : `${separator}${classifier}`}${dotExt}`\n }\n\n getTempFile(suffix: string): Promise<string> {\n return this.info.tempDirManager.getTempFile({ suffix })\n }\n\n get fileAssociations(): Array<FileAssociation> {\n return asArray(this.config.fileAssociations).concat(asArray(this.platformSpecificBuildOptions.fileAssociations))\n }\n\n async getResource(custom: string | Nullish, ...names: Array<string>): Promise<string | null> {\n const resourcesDir = this.info.buildResourcesDir\n if (custom === undefined) {\n const resourceList = await this.resourceList\n for (const name of names) {\n if (resourceList.includes(name)) {\n // sanitizeDirPath with resourcesDir base enforces containment — CodeQL recognises the startsWith check inside as a path-traversal sanitizer\n return sanitizeDirPath(path.join(resourcesDir, path.basename(name)), resourcesDir)\n }\n }\n } else if (custom != null && !isEmptyOrSpaces(custom)) {\n const resourceList = await this.resourceList\n if (resourceList.includes(custom)) {\n return sanitizeDirPath(path.join(resourcesDir, path.basename(custom)), resourcesDir)\n }\n\n // codeql[js/shell-command-constructed-from-input] - intentional: custom may be an absolute path outside the build resources dir; existence is verified below via statOrNull\n let p = path.resolve(resourcesDir, custom)\n if ((await statOrNull(p)) == null) {\n p = path.resolve(this.projectDir, custom)\n if ((await statOrNull(p)) == null) {\n throw new InvalidConfigurationError(\n `cannot find specified resource \"${custom}\", nor relative to \"${resourcesDir}\", neither relative to project dir (\"${this.projectDir}\")`\n )\n }\n }\n return p\n }\n return null\n }\n\n get forceCodeSigning(): boolean {\n const forceCodeSigningPlatform = this.platformSpecificBuildOptions.forceCodeSigning\n return (forceCodeSigningPlatform == null ? this.config.forceCodeSigning : forceCodeSigningPlatform) || false\n }\n\n private assetCatalogResults = new Map<string, Promise<AssetCatalogResult>>()\n protected generateAssetCatalogData(iconPath: string): Promise<AssetCatalogResult> {\n // Cache results\n const cachedPromise = this.assetCatalogResults.get(iconPath)\n if (cachedPromise) {\n return cachedPromise\n }\n\n const promise = generateAssetCatalogForIcon(iconPath)\n this.assetCatalogResults.set(iconPath, promise)\n return promise\n }\n\n private cachedIcnsFromIconFile = new Map<string, Promise<string>>()\n async generateIcnsFromIcon(iconPath: string): Promise<string> {\n const cachedPromise = this.cachedIcnsFromIconFile.get(iconPath)\n if (cachedPromise) {\n return cachedPromise\n }\n\n const runner = async () => {\n const { icnsFile } = await this.generateAssetCatalogData(iconPath)\n\n // Generate icns file\n const tempDir = await fs.mkdtemp(path.resolve(os.tmpdir(), \"icon-compile-\"))\n const tempIcnsPath = path.resolve(tempDir, \"Icon.icns\")\n await fs.writeFile(tempIcnsPath, icnsFile)\n\n return tempIcnsPath\n }\n const promise = runner()\n this.cachedIcnsFromIconFile.set(iconPath, promise)\n return promise\n }\n\n protected async getOrConvertIcon(format: IconFormat): Promise<string | null> {\n if (format === \"icns\") {\n const configuredIcon = this.platformSpecificBuildOptions.icon\n // If it is a .icon file, generate the icns file and return the path to the icns file\n if (configuredIcon?.endsWith(\".icon\")) {\n const iconPath = await this.getResource(configuredIcon)\n if (iconPath) {\n return this.generateIcnsFromIcon(iconPath)\n }\n }\n }\n\n const result = await this.resolveIcon(asArray(this.platformSpecificBuildOptions.icon || this.config.icon), [], format)\n if (result.length === 0) {\n const framework = this.info.framework\n if (framework.getDefaultIcon != null) {\n return framework.getDefaultIcon(this.platform)\n }\n\n log.warn({ reason: \"application icon is not set\" }, `default ${capitalizeFirstLetter(framework.name)} icon is used`)\n return this.getDefaultFrameworkIcon()\n } else {\n return result[0].file\n }\n }\n\n getDefaultFrameworkIcon(): string | null {\n const framework = this.info.framework\n return framework.getDefaultIcon == null ? null : framework.getDefaultIcon(this.platform)\n }\n\n // convert if need, validate size (it is a reason why tool is called even if file has target extension (already specified as foo.icns for example))\n async resolveIcon(sources: Array<string>, fallbackSources: Array<string>, outputFormat: IconFormat): Promise<Array<IconInfo>> {\n const output = this.expandMacro(this.config.directories!.output!)\n const outDir = sanitizeDirPath(path.resolve(this.projectDir, output, `.icon-${outputFormat}`))\n const roots = [this.buildResourcesDir, this.projectDir]\n\n const filteredSources = sources.filter(s => !s.endsWith(\".icon\"))\n const filteredFallbacks = fallbackSources.filter(s => !s.endsWith(\".icon\"))\n\n const result = await convertIcon({\n sources: filteredSources,\n fallbackSources: filteredFallbacks,\n roots,\n format: outputFormat,\n outDir,\n iconsToolset: this.info.config.toolsets?.icons,\n resourcesDir: this.buildResourcesDir,\n })\n\n if (result.error != null) {\n throw new InvalidConfigurationError(result.error, result.errorCode)\n }\n\n if (result.isFallback) {\n log.warn({ reason: \"application icon is not set\" }, `default ${capitalizeFirstLetter(this.info.framework.name)} icon is used`)\n }\n\n return result.icons\n }\n}\n\nexport function isSafeGithubName(name: string) {\n return /^[0-9A-Za-z._-]+$/.test(name)\n}\n\nexport function computeSafeArtifactNameIfNeeded(suggestedName: string | null, safeNameProducer: () => string): string | null {\n // GitHub only allows the listed characters in file names.\n if (suggestedName != null) {\n if (isSafeGithubName(suggestedName)) {\n return null\n }\n\n // prefer to use suggested name - so, if space is the only problem, just replace only space to dash\n suggestedName = suggestedName.replace(/ /g, \"-\")\n if (isSafeGithubName(suggestedName)) {\n return suggestedName\n }\n }\n\n return safeNameProducer()\n}\n\n// remove leading dot\nexport function normalizeExt(ext: string) {\n return ext.startsWith(\".\") ? ext.substring(1) : ext\n}\n\nexport function chooseNotNull<T>(v1: T | Nullish, v2: T | Nullish): T | Nullish {\n return v1 == null ? v2 : v1\n}\n\nfunction capitalizeFirstLetter(text: string) {\n return text.charAt(0).toUpperCase() + text.slice(1)\n}\n"]}
|
|
1
|
+
{"version":3,"file":"platformPackager.js","sourceRoot":"","sources":["../src/platformPackager.ts"],"names":[],"mappings":"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","sourcesContent":["import type { FuseConfig, FuseV1Config } from \"@electron/fuses\"\nimport { dynamicImport } from \"./util/dynamicImport.js\"\nimport {\n Arch,\n asArray,\n AsyncTaskManager,\n DebugLogger,\n defaultArchFromString,\n FileTransformer,\n getArchSuffix,\n getArtifactArchName,\n InvalidConfigurationError,\n isEmptyOrSpaces,\n log,\n orIfFileNotExist,\n sanitizeDirPath,\n statOrNull,\n} from \"builder-util\"\nimport { CancellationToken, deepAssign, Nullish } from \"builder-util-runtime\"\nimport { readdir } from \"fs/promises\"\nimport { Lazy } from \"lazy-val\"\nimport { Minimatch } from \"minimatch\"\nimport * as path from \"path\"\nimport * as fs from \"fs/promises\"\nimport type { TmpDir } from \"temp-file\"\nimport type { Metadata } from \"./options/metadata.js\"\nimport type { ArtifactBuildStarted, ArtifactCreated } from \"./packagerApi.js\"\nimport { AppInfo } from \"./appInfo.js\"\nimport { checkFileInArchive } from \"./asar/asarFileChecker.js\"\nimport { AsarPackager } from \"./asar/asarUtil.js\"\nimport { AsarIntegrity, computeData } from \"./asar/integrity.js\"\nimport { FuseOptionsV1 } from \"./options/FuseOptionsV1.js\"\nimport { copyFiles, FileMatcher, getFileMatchers, GetFileMatchersOptions, getMainFileMatchers, getNodeModuleFileMatcher } from \"./fileMatcher.js\"\nimport { createTransformer } from \"./fileTransformer.js\"\nimport { Framework, isElectronBased } from \"./Framework.js\"\nimport { Platform, SourceRepositoryInfo } from \"./core.js\"\n// Type-only barrel import: keeping these erased avoids a runtime cycle\n// (index.ts → linuxPackager.ts → platformPackager.ts) that breaks ESM class init.\nimport type {\n AfterPackContext,\n AsarOptions,\n CompressionLevel,\n Configuration,\n ElectronPlatformName,\n FileAssociation,\n LinuxPackager,\n Packager,\n PackagerOptions,\n PlatformSpecificBuildOptions,\n Target,\n TargetSpecificOptions,\n} from \"./index.js\"\nimport type { PlatformType } from \"./targets/mac/MacTargetHelper.js\"\nimport { computeFileSets, computeNodeModuleFileSets, copyAppFiles, transformFiles } from \"./util/appFileCopier.js\"\nimport { convertIcon, IconFormat, IconInfo } from \"./util/iconConverter.js\"\nimport { expandMacro as doExpandMacro } from \"./util/macroExpander.js\"\nimport { AssetCatalogResult, generateAssetCatalogForIcon } from \"./util/mac/macosIconComposer.js\"\n\nexport type DoPackOptions<DC extends PlatformSpecificBuildOptions> = {\n outDir: string\n appOutDir: string\n platformName: ElectronPlatformName\n // macOS-only: authoritative 3-way build flavor; `platformName` collapses mas/mas-dev to \"mas\".\n platformType?: PlatformType\n arch: Arch\n platformSpecificBuildOptions: DC\n targets: Array<Target>\n options?: {\n sign?: boolean\n disableAsarIntegrity?: boolean\n disableFuses?: boolean\n // Universal slices set this: keep platform-mismatched node modules so both slices stay symmetric.\n // Per-slice `cpu`/`os` filtering would leave packages in only one slice, which `@electron/universal`\n // refuses to merge. Single-arch binaries are instead reconciled via `singleArchFiles` after both packs.\n disableArchFilter?: boolean\n }\n}\n\nexport abstract class PlatformPackager<DC extends PlatformSpecificBuildOptions> {\n get packagerOptions(): PackagerOptions {\n return this.info.options\n }\n\n get buildResourcesDir(): string {\n return this.info.buildResourcesDir\n }\n\n get projectDir(): string {\n return this.info.projectDir\n }\n\n get config(): Configuration {\n return this.info.config\n }\n\n protected readonly platformSpecificBuildOptions: DC\n\n /** Platform-level build options (e.g. `config.mac`, `config.win`, `config.linux`). */\n get platformOptions(): DC {\n return this.platformSpecificBuildOptions\n }\n\n /**\n * Merge platform-level options with target-specific config under `key`.\n * Replaces the manual `deepAssign({}, packager.platformSpecificBuildOptions, config.X)` pattern.\n */\n getOptionsForTarget<T>(key: string): T {\n return deepAssign({}, this.platformSpecificBuildOptions, (this.config as any)[key] ?? {}) as T\n }\n\n get resourceList(): Promise<Array<string>> {\n return this._resourceList.value\n }\n\n private readonly _resourceList = new Lazy<Array<string>>(() => orIfFileNotExist(readdir(this.info.buildResourcesDir), []))\n\n readonly appInfo: AppInfo\n\n protected constructor(\n protected readonly info: Packager,\n readonly platform: Platform\n ) {\n this.platformSpecificBuildOptions = PlatformPackager.normalizePlatformSpecificBuildOptions((this.config as any)[platform.buildConfigurationKey])\n this.appInfo = this.prepareAppInfo(info.appInfo)\n }\n\n get compression(): CompressionLevel {\n const compression = this.platformSpecificBuildOptions.compression\n // explicitly set to null - request to use default value instead of parent (in the config)\n if (compression === null) {\n return \"normal\"\n }\n return compression || this.config.compression || \"normal\"\n }\n\n get debugLogger(): DebugLogger {\n return this.info.debugLogger\n }\n\n get tempDirManager(): TmpDir {\n return this.info.tempDirManager\n }\n\n get metadata(): Metadata {\n return this.info.metadata\n }\n\n get framework(): Framework {\n return this.info.framework\n }\n\n get cancellationToken(): CancellationToken {\n return this.info.cancellationToken\n }\n\n get repositoryInfo(): Promise<SourceRepositoryInfo | null> {\n return this.info.repositoryInfo\n }\n\n get relativeBuildResourcesDirname(): string {\n return this.info.relativeBuildResourcesDirname\n }\n\n get stageDirPathCustomizer(): (target: Target, packager: PlatformPackager<any>, arch: Arch) => string {\n return this.info.stageDirPathCustomizer\n }\n\n get areNodeModulesHandledExternally(): boolean {\n return this.info.areNodeModulesHandledExternally\n }\n\n get isPrepackedAppAsar(): boolean {\n return this.info.isPrepackedAppAsar\n }\n\n get appDir(): string {\n return this.info.appDir\n }\n\n getWorkspaceRoot(): Promise<string> {\n return this.info.getWorkspaceRoot()\n }\n\n get nodePackageName(): string {\n return this.info.nodePackageName\n }\n\n getPackageManager(): Promise<import(\"./node-module-collector/index.js\").PM> {\n return this.info.getPackageManager()\n }\n\n emitArtifactBuildStarted(event: ArtifactBuildStarted, logFields?: any): Promise<void> {\n return this.info.emitArtifactBuildStarted(event, logFields)\n }\n\n emitArtifactBuildCompleted(event: ArtifactCreated): Promise<void> {\n return this.info.emitArtifactBuildCompleted(event)\n }\n\n emitArtifactCreated(event: ArtifactCreated): Promise<void> {\n return this.info.emitArtifactCreated(event)\n }\n\n emitMsiProjectCreated(path: string): Promise<void> {\n return this.info.emitMsiProjectCreated(path)\n }\n\n emitAppxManifestCreated(path: string): Promise<void> {\n return this.info.emitAppxManifestCreated(path)\n }\n\n abstract get defaultTarget(): Array<string>\n\n // eslint-disable-next-line\n protected prepareAppInfo(appInfo: AppInfo) {\n return new AppInfo(this.info, null, this.platformSpecificBuildOptions)\n }\n\n private static normalizePlatformSpecificBuildOptions(options: any | Nullish): any {\n return options == null ? Object.create(null) : options\n }\n\n abstract createTargets(targets: Array<string>, mapper: (name: string, factory: (outDir: string) => Target) => void): void\n\n getCscPassword(): string {\n const password = this.doGetCscPassword()\n if (isEmptyOrSpaces(password)) {\n log.info({ reason: \"CSC_KEY_PASSWORD is not defined\" }, \"empty password will be used for code signing\")\n return \"\"\n } else {\n return password.trim()\n }\n }\n\n getCscLink(extraEnvName?: string | null): string | Nullish {\n // allow to specify as empty string\n const envValue = chooseNotNull(extraEnvName == null ? null : process.env[extraEnvName], process.env.CSC_LINK)\n return chooseNotNull(chooseNotNull(this.info.config.cscLink, this.platformSpecificBuildOptions.cscLink), envValue)\n }\n\n doGetCscPassword(): string | Nullish {\n // allow to specify as empty string\n return chooseNotNull(chooseNotNull(this.info.config.cscKeyPassword, this.platformSpecificBuildOptions.cscKeyPassword), process.env.CSC_KEY_PASSWORD)\n }\n\n protected computeAppOutDir(outDir: string, arch: Arch): string {\n // codeql[js/shell-command-constructed-from-input] - prepackaged and outDir are validated via sanitizeDirPath in the Packager constructor\n return path.resolve(\n this.packagerOptions.prepackaged ||\n path.join(\n outDir,\n `${this.platform.buildConfigurationKey}${getArchSuffix(arch, this.platformSpecificBuildOptions.defaultArch)}${this.platform === Platform.MAC ? \"\" : \"-unpacked\"}`\n )\n )\n }\n\n async pack(outDir: string, arch: Arch, targets: Array<Target>, taskManager: AsyncTaskManager): Promise<any> {\n const appOutDir = this.computeAppOutDir(outDir, arch)\n await this.doPack({\n outDir,\n appOutDir,\n platformName: this.platform.nodeName as ElectronPlatformName,\n arch,\n platformSpecificBuildOptions: this.platformSpecificBuildOptions,\n targets,\n })\n this.packageInDistributableFormat(appOutDir, arch, targets, taskManager)\n }\n\n protected packageInDistributableFormat(appOutDir: string, arch: Arch, targets: Array<Target>, taskManager: AsyncTaskManager): void {\n if (targets.find(it => !it.isAsyncSupported) == null) {\n PlatformPackager.buildAsyncTargets(targets, taskManager, appOutDir, arch)\n return\n }\n\n taskManager.add(async () => {\n // BluebirdPromise.map doesn't invoke target.build immediately, but for RemoteTarget it is very critical to call build() before finishBuild()\n const subTaskManager = new AsyncTaskManager(this.info.cancellationToken)\n PlatformPackager.buildAsyncTargets(targets, subTaskManager, appOutDir, arch)\n await subTaskManager.awaitTasks()\n\n for (const target of targets) {\n if (!target.isAsyncSupported && !this.info.cancellationToken.cancelled) {\n await target.build(appOutDir, arch)\n }\n }\n })\n }\n\n private static buildAsyncTargets(targets: Array<Target>, taskManager: AsyncTaskManager, appOutDir: string, arch: Arch) {\n for (const target of targets) {\n if (target.isAsyncSupported) {\n taskManager.addTask(target.build(appOutDir, arch))\n }\n }\n }\n\n private getExtraFileMatchers(isResources: boolean, appOutDir: string, options: GetFileMatchersOptions): Array<FileMatcher> | null {\n const outDir = this.platform === Platform.MAC ? path.join(appOutDir, `${this.appInfo.productFilename}.app`, \"Contents\") : appOutDir\n const base = isResources ? this.getResourcesDir(appOutDir) : outDir\n return getFileMatchers(this.config, isResources ? \"extraResources\" : \"extraFiles\", base, options)\n }\n\n createGetFileMatchersOptions(outDir: string, arch: Arch, customBuildOptions: PlatformSpecificBuildOptions): GetFileMatchersOptions {\n return {\n macroExpander: it => this.expandMacro(it, arch == null ? null : Arch[arch], { \"/*\": \"{,/**/*}\" }),\n customBuildOptions,\n globalOutDir: outDir,\n defaultSrc: this.projectDir,\n }\n }\n\n protected async doPack(packOptions: DoPackOptions<DC>) {\n if (this.packagerOptions.prepackaged != null) {\n return\n }\n\n if (this.info.cancellationToken.cancelled) {\n return\n }\n\n // Due to node-gyp rewriting GYP_MSVS_VERSION when reused across the same session, we must reset the env var: https://github.com/electron-userland/electron-builder/issues/7256\n delete process.env.GYP_MSVS_VERSION\n\n const { outDir, appOutDir, platformName, platformType, arch, platformSpecificBuildOptions, targets, options } = packOptions\n\n await this.info.emitBeforePack({\n appOutDir,\n outDir,\n arch,\n targets,\n packager: this,\n electronPlatformName: platformName,\n })\n\n await this.info.installAppDependencies(this.platform, arch)\n\n if (this.info.cancellationToken.cancelled) {\n return\n }\n\n const framework = this.info.framework\n log.info(\n {\n platform: platformName,\n arch: Arch[arch],\n [`${framework.name}`]: framework.version,\n appOutDir: log.filePath(appOutDir),\n },\n `packaging`\n )\n\n await framework.prepareApplicationStageDirectory({\n packager: this,\n appOutDir,\n platformName,\n arch: Arch[arch],\n version: framework.version,\n })\n\n await this.info.emitAfterExtract({\n appOutDir,\n outDir,\n arch,\n targets,\n packager: this,\n electronPlatformName: platformName,\n })\n\n const excludePatterns: Array<Minimatch> = []\n\n const computeParsedPatterns = (patterns: Array<FileMatcher> | null) => {\n if (patterns != null) {\n for (const pattern of patterns) {\n pattern.computeParsedPatterns(excludePatterns, this.info.projectDir)\n }\n }\n }\n\n const getFileMatchersOptions = this.createGetFileMatchersOptions(outDir, arch, platformSpecificBuildOptions)\n const macroExpander = getFileMatchersOptions.macroExpander\n const extraResourceMatchers = this.getExtraFileMatchers(true, appOutDir, getFileMatchersOptions)\n computeParsedPatterns(extraResourceMatchers)\n const extraFileMatchers = this.getExtraFileMatchers(false, appOutDir, getFileMatchersOptions)\n computeParsedPatterns(extraFileMatchers)\n\n const packContext: AfterPackContext = {\n appOutDir,\n outDir,\n arch,\n targets,\n packager: this,\n electronPlatformName: platformName,\n }\n\n const asarOptions = await this.computeAsarOptions(platformSpecificBuildOptions)\n const resourcesPath =\n this.platform === Platform.MAC\n ? path.join(appOutDir, framework.distMacOsAppName, \"Contents\", \"Resources\")\n : isElectronBased(framework)\n ? path.join(appOutDir, \"resources\")\n : appOutDir\n const taskManager = new AsyncTaskManager(this.info.cancellationToken)\n this.copyAppFiles(\n taskManager,\n asarOptions,\n resourcesPath,\n path.join(resourcesPath, \"app\"),\n packContext,\n platformSpecificBuildOptions,\n excludePatterns,\n macroExpander,\n options?.disableArchFilter ?? false\n )\n await taskManager.awaitTasks()\n\n if (this.info.cancellationToken.cancelled) {\n return\n }\n\n if (framework.beforeCopyExtraFiles != null) {\n const resourcesRelativePath = this.platform === Platform.MAC ? \"Resources\" : isElectronBased(framework) ? \"resources\" : \"\"\n\n let asarIntegrity: AsarIntegrity | null = null\n if (!(asarOptions == null || options?.disableAsarIntegrity || asarOptions.disableIntegrity)) {\n asarIntegrity = await computeData({ resourcesPath, resourcesRelativePath, resourcesDestinationPath: this.getResourcesDir(appOutDir), extraResourceMatchers })\n }\n\n await framework.beforeCopyExtraFiles({\n packager: this,\n appOutDir,\n asarIntegrity,\n platformName,\n platformType,\n })\n }\n\n if (this.info.cancellationToken.cancelled) {\n return\n }\n\n const transformerForExtraFiles = this.createTransformerForExtraFiles(packContext)\n await copyFiles(extraResourceMatchers, transformerForExtraFiles)\n await copyFiles(extraFileMatchers, transformerForExtraFiles)\n\n if (this.info.cancellationToken.cancelled) {\n return\n }\n\n await this.info.emitAfterPack(packContext)\n\n if (framework.afterPack != null) {\n await framework.afterPack(packContext)\n }\n\n const isAsar = asarOptions != null\n await this.sanityCheckPackage(appOutDir, isAsar, framework, !!asarOptions?.disableSanityCheck)\n\n if (!options?.disableFuses) {\n await this.doAddElectronFuses(packContext)\n }\n if (options?.sign ?? true) {\n await this.doSignAfterPack(outDir, appOutDir, platformName, platformType, arch, platformSpecificBuildOptions, targets)\n }\n }\n\n // the fuses MUST be flipped right before signing\n protected async doAddElectronFuses(packContext: AfterPackContext) {\n if (this.config.electronFuses == null) {\n return\n }\n const fuseConfig = await this.generateFuseConfig(this.config.electronFuses)\n await this.addElectronFuses(packContext, fuseConfig)\n }\n\n private async generateFuseConfig(fuses: FuseOptionsV1): Promise<FuseV1Config> {\n const { FuseVersion, FuseV1Options } = await dynamicImport<typeof import(\"@electron/fuses\")>(\"@electron/fuses\")\n const config: FuseV1Config = {\n version: FuseVersion.V1,\n resetAdHocDarwinSignature: fuses.resetAdHocDarwinSignature,\n }\n // this is annoying, but we must filter out undefined entries because some older electron versions will receive `the fuse wire in this version of Electron is not long enough` even if entry is set undefined\n if (fuses.runAsNode != null) {\n config[FuseV1Options.RunAsNode] = fuses.runAsNode\n }\n if (fuses.enableCookieEncryption != null) {\n config[FuseV1Options.EnableCookieEncryption] = fuses.enableCookieEncryption\n }\n if (fuses.enableNodeOptionsEnvironmentVariable != null) {\n config[FuseV1Options.EnableNodeOptionsEnvironmentVariable] = fuses.enableNodeOptionsEnvironmentVariable\n }\n if (fuses.enableNodeCliInspectArguments != null) {\n config[FuseV1Options.EnableNodeCliInspectArguments] = fuses.enableNodeCliInspectArguments\n }\n if (fuses.enableEmbeddedAsarIntegrityValidation != null) {\n config[FuseV1Options.EnableEmbeddedAsarIntegrityValidation] = fuses.enableEmbeddedAsarIntegrityValidation\n }\n if (fuses.onlyLoadAppFromAsar != null) {\n config[FuseV1Options.OnlyLoadAppFromAsar] = fuses.onlyLoadAppFromAsar\n }\n if (fuses.loadBrowserProcessSpecificV8Snapshot != null) {\n config[FuseV1Options.LoadBrowserProcessSpecificV8Snapshot] = fuses.loadBrowserProcessSpecificV8Snapshot\n }\n if (fuses.grantFileProtocolExtraPrivileges != null) {\n config[FuseV1Options.GrantFileProtocolExtraPrivileges] = fuses.grantFileProtocolExtraPrivileges\n }\n if (fuses.wasmTrapHandlers != null) {\n config[FuseV1Options.WasmTrapHandlers] = fuses.wasmTrapHandlers\n }\n return config\n }\n\n /**\n * Use `AfterPackContext` here to keep available for public API\n * @param {AfterPackContext} context\n * @param {FuseConfig} fuses\n *\n * Can be used in `afterPack` hook for custom fuse logic like below. It's an alternative approach if one wants to override electron-builder's @electron/fuses version\n * ```\n * await context.packager.addElectronFuses(context, { ... })\n * ```\n */\n public async addElectronFuses(context: AfterPackContext, fuses: FuseConfig) {\n const { appOutDir, electronPlatformName } = context\n\n const ext = {\n darwin: \".app\",\n mas: \".app\",\n win32: \".exe\",\n linux: \"\",\n }[electronPlatformName]\n\n // `\"executableName\" in this` instead of `instanceof LinuxPackager` keeps LinuxPackager a\n // type-only import, avoiding the index.ts → linuxPackager.ts → platformPackager.ts runtime cycle.\n const executableName = \"executableName\" in this ? (this as LinuxPackager).executableName : this.appInfo.productFilename\n const electronBinaryPath = path.join(appOutDir, `${executableName}${ext}`)\n\n log.info({ electronPath: log.filePath(electronBinaryPath) }, \"executing @electron/fuses\")\n const { flipFuses } = await dynamicImport<typeof import(\"@electron/fuses\")>(\"@electron/fuses\")\n return flipFuses(electronBinaryPath, fuses)\n }\n\n protected async doSignAfterPack(\n outDir: string,\n appOutDir: string,\n platformName: ElectronPlatformName,\n platformType: PlatformType | undefined,\n arch: Arch,\n platformSpecificBuildOptions: DC,\n targets: Array<Target>\n ) {\n const asarOptions = await this.computeAsarOptions(platformSpecificBuildOptions)\n const isAsar = asarOptions != null\n const packContext = {\n appOutDir,\n outDir,\n arch,\n targets,\n packager: this,\n electronPlatformName: platformName,\n }\n const didSign = await this.signApp(packContext, isAsar, platformType)\n if (didSign) {\n await this.info.emitAfterSign(packContext)\n } else if (this.info.filterPackagerEventListeners(\"afterSign\", \"user\").length) {\n log.warn(null, `skipping \"afterSign\" hook as no signing occurred, perhaps you intended \"afterPack\"?`)\n }\n }\n\n // eslint-disable-next-line\n protected createTransformerForExtraFiles(packContext: AfterPackContext): FileTransformer | null {\n return null\n }\n\n private copyAppFiles(\n taskManager: AsyncTaskManager,\n asarOptions: AsarOptions | null,\n resourcePath: string,\n defaultDestination: string,\n packContext: AfterPackContext,\n platformSpecificBuildOptions: DC,\n excludePatterns: Array<Minimatch>,\n macroExpander: (it: string) => string,\n disableArchFilter: boolean\n ) {\n const appDir = this.info.appDir\n const config = this.config\n\n const mainMatchers = getMainFileMatchers(appDir, defaultDestination, macroExpander, platformSpecificBuildOptions, this, packContext.outDir)\n if (excludePatterns.length > 0) {\n for (const matcher of mainMatchers) {\n matcher.excludePatterns = excludePatterns\n }\n }\n\n const framework = this.info.framework\n const transformer = createTransformer(appDir, config, config.extraMetadata, framework.createTransformer == null ? null : framework.createTransformer())\n\n const _computeFileSets = (matchers: Array<FileMatcher>) => {\n return computeFileSets(matchers, this.info.isPrepackedAppAsar ? null : transformer, this).then(async result => {\n if (!this.info.isPrepackedAppAsar && !this.info.areNodeModulesHandledExternally) {\n const moduleFileMatcher = getNodeModuleFileMatcher(appDir, defaultDestination, macroExpander, platformSpecificBuildOptions, this.info)\n result = result.concat(await computeNodeModuleFileSets(this, moduleFileMatcher, packContext.arch, !disableArchFilter))\n }\n return result.filter(it => it.files.length > 0)\n })\n }\n\n if (this.info.isPrepackedAppAsar) {\n taskManager.add(async () => {\n const fileSets = await _computeFileSets([new FileMatcher(appDir, resourcePath, macroExpander)])\n fileSets.forEach(it => taskManager.addTask(copyAppFiles(it, this.info, transformer)))\n await taskManager.awaitTasks()\n })\n } else if (asarOptions == null) {\n // for ASAR all asar unpacked files will be extra transformed (e.g. sign of EXE and DLL) later,\n // for prepackaged asar extra transformation not supported yet,\n // so, extra transform if asar is disabled\n const transformerForExtraFiles = this.createTransformerForExtraFiles(packContext)\n const combinedTransformer: FileTransformer = file => {\n if (transformerForExtraFiles != null) {\n const result = transformerForExtraFiles(file)\n if (result != null) {\n return result\n }\n }\n return transformer(file)\n }\n taskManager.add(async () => {\n const fileSets = await _computeFileSets(mainMatchers)\n fileSets.forEach(it => taskManager.addTask(copyAppFiles(it, this.info, combinedTransformer)))\n await taskManager.awaitTasks()\n })\n } else {\n const unpackPatterns = asarOptions.unpack\n let fileMatcher: FileMatcher | null = null\n if (unpackPatterns != null) {\n fileMatcher = new FileMatcher(appDir, defaultDestination, macroExpander)\n const pats = Array.isArray(unpackPatterns) ? unpackPatterns : [unpackPatterns]\n pats.forEach(p => fileMatcher!.addPattern(p))\n if (fileMatcher.isEmpty()) {\n fileMatcher = null\n }\n }\n taskManager.addTask(\n _computeFileSets(mainMatchers).then(async fileSets => {\n for (const fileSet of fileSets) {\n await transformFiles(transformer, fileSet)\n }\n\n await new AsarPackager(this, {\n defaultDestination,\n resourcePath,\n options: asarOptions,\n unpackPattern: fileMatcher?.createFilter(),\n }).pack(fileSets)\n })\n )\n }\n }\n\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n protected signApp(packContext: AfterPackContext, isAsar: boolean, _platformType?: PlatformType): Promise<boolean> {\n return Promise.resolve(false)\n }\n\n getIconPath(): Promise<string | null> {\n return Promise.resolve(null)\n }\n\n private async computeAsarOptions(customBuildOptions: DC): Promise<AsarOptions | null> {\n if (!isElectronBased(this.info.framework)) {\n return null\n }\n\n const platformSpecific = customBuildOptions.asar\n const result = platformSpecific == null ? this.config.asar : platformSpecific\n if (result === false) {\n const appAsarStat = await statOrNull(path.join(this.info.appDir, \"app.asar\"))\n //noinspection ES6MissingAwait\n if (appAsarStat == null || !appAsarStat.isFile()) {\n log.warn(\n {\n solution: \"enable asar and use asar.unpack to unpack files that must be externally available\",\n },\n \"asar usage is disabled — this is strongly not recommended\"\n )\n }\n return null\n }\n\n if (result == null || (result as unknown) === true) {\n return {}\n }\n\n return deepAssign({}, result)\n }\n\n public getElectronSrcDir(dist: string): string {\n return path.resolve(this.projectDir, dist)\n }\n\n public getElectronDestinationDir(appOutDir: string): string {\n return appOutDir\n }\n\n getResourcesDir(appOutDir: string): string {\n if (this.platform === Platform.MAC) {\n return this.getMacOsResourcesDir(appOutDir)\n }\n if (isElectronBased(this.info.framework)) {\n return path.join(appOutDir, \"resources\")\n }\n return appOutDir\n }\n\n public getMacOsElectronFrameworkResourcesDir(appOutDir: string): string {\n const electronFrameworkName = path.basename(this.info.framework.distMacOsAppName, \".app\") + \" \" + \"Framework.framework\"\n return path.join(appOutDir, `${this.appInfo.productFilename}.app`, \"Contents\", \"Frameworks\", electronFrameworkName, \"Versions\", \"A\", \"Resources\")\n }\n public getMacOsResourcesDir(appOutDir: string): string {\n return path.join(appOutDir, `${this.appInfo.productFilename}.app`, \"Contents\", \"Resources\")\n }\n\n private async checkFileInPackage(resourcesDir: string, file: string, messagePrefix: string, isAsar: boolean, disableSanityCheckAsar: boolean) {\n if (isAsar && disableSanityCheckAsar) {\n return\n }\n const relativeFile = path.relative(this.info.appDir, path.resolve(this.info.appDir, file))\n if (isAsar) {\n checkFileInArchive(path.join(resourcesDir, \"app.asar\"), relativeFile, messagePrefix)\n return\n }\n\n const pathParsed = path.parse(file)\n // Even when packaging to asar is disabled, it does not imply that the main file can not be inside an .asar archive.\n // This may occur when the packaging is done manually before processing with electron-builder.\n if (pathParsed.dir.includes(\".asar\")) {\n // The path needs to be split to the part with an asar archive which acts like a directory and the part with\n // the path to main file itself. (e.g. path/arch.asar/dir/index.js -> path/arch.asar, dir/index.js)\n // noinspection TypeScriptValidateJSTypes\n const pathSplit: Array<string> = pathParsed.dir.split(path.sep)\n let partWithAsarIndex = 0\n pathSplit.some((pathPart: string, index: number) => {\n partWithAsarIndex = index\n return pathPart.endsWith(\".asar\")\n })\n const asarPath = path.join(...pathSplit.slice(0, partWithAsarIndex + 1))\n let mainPath = pathSplit.length > partWithAsarIndex + 1 ? path.join.apply(pathSplit.slice(partWithAsarIndex + 1)) : \"\"\n mainPath += path.join(mainPath, pathParsed.base)\n checkFileInArchive(path.join(resourcesDir, \"app\", asarPath), mainPath, messagePrefix)\n } else {\n const fullPath = path.join(resourcesDir, \"app\", relativeFile)\n const outStat = await statOrNull(fullPath)\n if (outStat == null) {\n throw new Error(`${messagePrefix} \"${fullPath}\" does not exist. Seems like a wrong configuration.`)\n } else {\n //noinspection ES6MissingAwait\n if (!outStat.isFile()) {\n throw new Error(`${messagePrefix} \"${fullPath}\" is not a file. Seems like a wrong configuration.`)\n }\n }\n }\n }\n\n private async sanityCheckPackage(appOutDir: string, isAsar: boolean, framework: Framework, disableSanityCheckAsar: boolean): Promise<any> {\n const outStat = await statOrNull(appOutDir)\n if (outStat == null) {\n throw new Error(`Output directory \"${appOutDir}\" does not exist. Seems like a wrong configuration.`)\n } else {\n //noinspection ES6MissingAwait\n if (!outStat.isDirectory()) {\n throw new Error(`Output directory \"${appOutDir}\" is not a directory. Seems like a wrong configuration.`)\n }\n }\n\n const resourcesDir = this.getResourcesDir(appOutDir)\n const mainFile = (framework.getMainFile == null ? null : framework.getMainFile(this.platform)) || this.info.metadata.main || \"index.js\"\n await this.checkFileInPackage(resourcesDir, mainFile, \"Application entry file\", isAsar, disableSanityCheckAsar)\n await this.checkFileInPackage(resourcesDir, \"package.json\", \"Application\", isAsar, disableSanityCheckAsar)\n }\n\n // tslint:disable-next-line:no-invalid-template-strings\n computeSafeArtifactName(\n suggestedName: string | null,\n ext: string,\n arch?: Arch | null,\n skipDefaultArch = true,\n defaultArch?: string,\n safePattern = \"${name}-${version}-${arch}.${ext}\"\n ): string | null {\n return computeSafeArtifactNameIfNeeded(suggestedName, () =>\n this.computeArtifactName(safePattern, ext, skipDefaultArch && arch === defaultArchFromString(defaultArch) ? null : arch)\n )\n }\n\n expandArtifactNamePattern(\n targetSpecificOptions: TargetSpecificOptions | Nullish,\n ext: string,\n arch?: Arch | null,\n defaultPattern?: string,\n skipDefaultArch = true,\n defaultArch?: string\n ): string {\n const { pattern, isUserForced } = this.artifactPatternConfig(targetSpecificOptions, defaultPattern)\n return this.computeArtifactName(pattern, ext, !isUserForced && skipDefaultArch && arch === defaultArchFromString(defaultArch) ? null : arch)\n }\n\n artifactPatternConfig(targetSpecificOptions: TargetSpecificOptions | Nullish, defaultPattern: string | undefined) {\n const userSpecifiedPattern = targetSpecificOptions?.artifactName || this.platformSpecificBuildOptions.artifactName || this.config.artifactName\n return {\n isUserForced: !!userSpecifiedPattern,\n pattern: userSpecifiedPattern || defaultPattern || \"${productName}-${version}-${arch}.${ext}\",\n }\n }\n\n expandArtifactBeautyNamePattern(targetSpecificOptions: TargetSpecificOptions | Nullish, ext: string, arch?: Arch | null): string {\n // tslint:disable-next-line:no-invalid-template-strings\n return this.expandArtifactNamePattern(targetSpecificOptions, ext, arch, \"${productName} ${version} ${arch}.${ext}\", true)\n }\n\n private computeArtifactName(pattern: any, ext: string, arch: Arch | Nullish): string {\n const archName = arch == null ? null : getArtifactArchName(arch, ext)\n return this.expandMacro(pattern, archName, {\n ext,\n })\n }\n\n expandMacro(pattern: string, arch?: string | null, extra: any = {}, isProductNameSanitized = true): string {\n return doExpandMacro(pattern, arch, this.appInfo, { os: this.platform.buildConfigurationKey, ...extra }, isProductNameSanitized)\n }\n\n generateName2(ext: string | null, classifier: string | Nullish, deployment: boolean): string {\n const dotExt = ext == null ? \"\" : `.${ext}`\n const separator = ext === \"deb\" ? \"_\" : \"-\"\n return `${deployment ? this.appInfo.name : this.appInfo.productFilename}${separator}${this.appInfo.version}${classifier == null ? \"\" : `${separator}${classifier}`}${dotExt}`\n }\n\n getTempFile(suffix: string): Promise<string> {\n return this.info.tempDirManager.getTempFile({ suffix })\n }\n\n get fileAssociations(): Array<FileAssociation> {\n return asArray(this.config.fileAssociations).concat(asArray(this.platformSpecificBuildOptions.fileAssociations))\n }\n\n async getResource(custom: string | Nullish, ...names: Array<string>): Promise<string | null> {\n const resourcesDir = this.info.buildResourcesDir\n if (custom === undefined) {\n const resourceList = await this.resourceList\n for (const name of names) {\n if (resourceList.includes(name)) {\n // sanitizeDirPath with resourcesDir base enforces containment — CodeQL recognises the startsWith check inside as a path-traversal sanitizer\n return sanitizeDirPath(path.join(resourcesDir, path.basename(name)), resourcesDir)\n }\n }\n } else if (custom != null && !isEmptyOrSpaces(custom)) {\n const resourceList = await this.resourceList\n if (resourceList.includes(custom)) {\n return sanitizeDirPath(path.join(resourcesDir, path.basename(custom)), resourcesDir)\n }\n\n // codeql[js/shell-command-constructed-from-input] - intentional: custom may be an absolute path outside the build resources dir; existence is verified below via statOrNull\n let p = path.resolve(resourcesDir, custom)\n if ((await statOrNull(p)) == null) {\n p = path.resolve(this.projectDir, custom)\n if ((await statOrNull(p)) == null) {\n throw new InvalidConfigurationError(\n `cannot find specified resource \"${custom}\", nor relative to \"${resourcesDir}\", neither relative to project dir (\"${this.projectDir}\")`\n )\n }\n }\n return p\n }\n return null\n }\n\n get forceCodeSigning(): boolean {\n const forceCodeSigningPlatform = this.platformSpecificBuildOptions.forceCodeSigning\n return (forceCodeSigningPlatform == null ? this.config.forceCodeSigning : forceCodeSigningPlatform) || false\n }\n\n private assetCatalogResults = new Map<string, Promise<AssetCatalogResult>>()\n protected generateAssetCatalogData(iconPath: string): Promise<AssetCatalogResult> {\n // Cache results\n const cachedPromise = this.assetCatalogResults.get(iconPath)\n if (cachedPromise) {\n return cachedPromise\n }\n\n const promise = generateAssetCatalogForIcon(this.tempDirManager, iconPath)\n this.assetCatalogResults.set(iconPath, promise)\n return promise\n }\n\n private cachedIcnsFromIconFile = new Map<string, Promise<string>>()\n async generateIcnsFromIcon(iconPath: string): Promise<string> {\n const cachedPromise = this.cachedIcnsFromIconFile.get(iconPath)\n if (cachedPromise) {\n return cachedPromise\n }\n\n const runner = async () => {\n const { icnsFile } = await this.generateAssetCatalogData(iconPath)\n\n // Generate icns file\n const tempDir = await this.tempDirManager.createTempDir({ prefix: \"icns-from-icon\" })\n const tempIcnsPath = path.resolve(tempDir, \"Icon.icns\")\n await fs.writeFile(tempIcnsPath, icnsFile)\n\n return tempIcnsPath\n }\n const promise = runner()\n this.cachedIcnsFromIconFile.set(iconPath, promise)\n return promise\n }\n\n protected async getOrConvertIcon(format: IconFormat): Promise<string | null> {\n if (format === \"icns\") {\n const configuredIcon = this.platformSpecificBuildOptions.icon\n // If it is a .icon file, generate the icns file and return the path to the icns file\n if (configuredIcon?.endsWith(\".icon\")) {\n const iconPath = await this.getResource(configuredIcon)\n if (iconPath) {\n return this.generateIcnsFromIcon(iconPath)\n }\n }\n }\n\n const result = await this.resolveIcon(asArray(this.platformSpecificBuildOptions.icon || this.config.icon), [], format)\n if (result.length === 0) {\n const framework = this.info.framework\n if (framework.getDefaultIcon != null) {\n return framework.getDefaultIcon(this.platform)\n }\n\n log.warn({ reason: \"application icon is not set\" }, `default ${capitalizeFirstLetter(framework.name)} icon is used`)\n return this.getDefaultFrameworkIcon()\n } else {\n return result[0].file\n }\n }\n\n getDefaultFrameworkIcon(): string | null {\n const framework = this.info.framework\n return framework.getDefaultIcon == null ? null : framework.getDefaultIcon(this.platform)\n }\n\n // convert if need, validate size (it is a reason why tool is called even if file has target extension (already specified as foo.icns for example))\n async resolveIcon(sources: Array<string>, fallbackSources: Array<string>, outputFormat: IconFormat): Promise<Array<IconInfo>> {\n const output = this.expandMacro(this.config.directories!.output!)\n const outDir = sanitizeDirPath(path.resolve(this.projectDir, output, `.icon-${outputFormat}`))\n const roots = [this.buildResourcesDir, this.projectDir]\n\n const filteredSources = sources.filter(s => !s.endsWith(\".icon\"))\n const filteredFallbacks = fallbackSources.filter(s => !s.endsWith(\".icon\"))\n\n const result = await convertIcon({\n sources: filteredSources,\n fallbackSources: filteredFallbacks,\n roots,\n format: outputFormat,\n outDir,\n iconsToolset: this.info.config.toolsets?.icons,\n resourcesDir: this.buildResourcesDir,\n })\n\n if (result.error != null) {\n throw new InvalidConfigurationError(result.error, result.errorCode)\n }\n\n if (result.isFallback) {\n log.warn({ reason: \"application icon is not set\" }, `default ${capitalizeFirstLetter(this.info.framework.name)} icon is used`)\n }\n\n return result.icons\n }\n}\n\nexport function isSafeGithubName(name: string) {\n return /^[0-9A-Za-z._-]+$/.test(name)\n}\n\nexport function computeSafeArtifactNameIfNeeded(suggestedName: string | null, safeNameProducer: () => string): string | null {\n // GitHub only allows the listed characters in file names.\n if (suggestedName != null) {\n if (isSafeGithubName(suggestedName)) {\n return null\n }\n\n // prefer to use suggested name - so, if space is the only problem, just replace only space to dash\n suggestedName = suggestedName.replace(/ /g, \"-\")\n if (isSafeGithubName(suggestedName)) {\n return suggestedName\n }\n }\n\n return safeNameProducer()\n}\n\n// remove leading dot\nexport function normalizeExt(ext: string) {\n return ext.startsWith(\".\") ? ext.substring(1) : ext\n}\n\nexport function chooseNotNull<T>(v1: T | Nullish, v2: T | Nullish): T | Nullish {\n return v1 == null ? v2 : v1\n}\n\nfunction capitalizeFirstLetter(text: string) {\n return text.charAt(0).toUpperCase() + text.slice(1)\n}\n"]}
|
|
@@ -2,7 +2,7 @@ import { defaultArchFromString } from "builder-util";
|
|
|
2
2
|
import * as path from "path";
|
|
3
3
|
import { Platform, Target } from "../core.js";
|
|
4
4
|
import { copyFiles, getFileMatchers } from "../fileMatcher.js";
|
|
5
|
-
import { archive, tar } from "./archive.js";
|
|
5
|
+
import { archive, shouldPreserveSymlinks, tar } from "./archive.js";
|
|
6
6
|
import { appendBlockmap, createBlockmap } from "./differentialUpdateInfoBuilder.js";
|
|
7
7
|
export class ArchiveTarget extends Target {
|
|
8
8
|
constructor(name, outDir, packager, isWriteUpdateInfo = false) {
|
|
@@ -64,7 +64,7 @@ export class ArchiveTarget extends Target {
|
|
|
64
64
|
const archiveOptions = {
|
|
65
65
|
compression: packager.compression,
|
|
66
66
|
withoutDir,
|
|
67
|
-
preserveSymlinks:
|
|
67
|
+
preserveSymlinks: shouldPreserveSymlinks(packager.platform),
|
|
68
68
|
};
|
|
69
69
|
await archive(format, artifactPath, dirToArchive, archiveOptions);
|
|
70
70
|
if (this.isWriteUpdateInfo && format === "zip") {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ArchiveTarget.js","sourceRoot":"","sources":["../../src/targets/ArchiveTarget.ts"],"names":[],"mappings":"AAAA,OAAO,EAAQ,qBAAqB,EAAE,MAAM,cAAc,CAAA;AAC1D,OAAO,KAAK,IAAI,MAAM,MAAM,CAAA;AAC5B,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAyB,MAAM,YAAY,CAAA;AACpE,OAAO,EAAE,SAAS,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAA;AAE9D,OAAO,EAAE,OAAO,EAAE,GAAG,EAAE,MAAM,cAAc,CAAA;
|
|
1
|
+
{"version":3,"file":"ArchiveTarget.js","sourceRoot":"","sources":["../../src/targets/ArchiveTarget.ts"],"names":[],"mappings":"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","sourcesContent":["import { Arch, defaultArchFromString } from \"builder-util\"\nimport * as path from \"path\"\nimport { Platform, Target, TargetSpecificOptions } from \"../core.js\"\nimport { copyFiles, getFileMatchers } from \"../fileMatcher.js\"\nimport { PlatformPackager } from \"../platformPackager.js\"\nimport { archive, shouldPreserveSymlinks, tar } from \"./archive.js\"\nimport { appendBlockmap, createBlockmap } from \"./differentialUpdateInfoBuilder.js\"\n\nexport class ArchiveTarget extends Target {\n readonly options: TargetSpecificOptions\n\n constructor(\n name: string,\n readonly outDir: string,\n private readonly packager: PlatformPackager<any>,\n private readonly isWriteUpdateInfo = false\n ) {\n super(name)\n this.options = (this.packager.config as any)[this.name]\n }\n\n async build(appOutDir: string, arch: Arch): Promise<any> {\n const packager = this.packager\n const isMac = packager.platform === Platform.MAC\n const format = this.name\n\n let defaultPattern: string\n const defaultArch: Arch = defaultArchFromString(packager.platformOptions.defaultArch)\n if (packager.platform === Platform.LINUX) {\n // tslint:disable-next-line:no-invalid-template-strings\n defaultPattern = \"${name}-${version}\" + (arch === defaultArch ? \"\" : \"-${arch}\") + \".${ext}\"\n } else {\n // tslint:disable-next-line:no-invalid-template-strings\n defaultPattern = \"${productName}-${version}\" + (arch === defaultArch ? \"\" : \"-${arch}\") + \"-${os}.${ext}\"\n }\n\n this.buildQueueManager.add(async () => {\n const artifactName = packager.expandArtifactNamePattern(this.options, format, arch, defaultPattern, false)\n const artifactPath = path.join(this.outDir, artifactName)\n\n await packager.emitArtifactBuildStarted({\n targetPresentableName: `${isMac ? \"macOS \" : \"\"}${format}`,\n file: artifactPath,\n arch,\n })\n let updateInfo: any = null\n if (format.startsWith(\"tar.\")) {\n await tar({\n compression: packager.compression,\n format,\n outFile: artifactPath,\n dirToArchive: appOutDir,\n isMacApp: isMac,\n tempDirManager: packager.tempDirManager,\n linuxToolsMac: packager.config.toolsets?.linuxToolsMac,\n buildResourcesDir: packager.buildResourcesDir,\n })\n } else {\n let withoutDir = !isMac\n let dirToArchive = appOutDir\n if (isMac) {\n dirToArchive = path.dirname(appOutDir)\n const fileMatchers = getFileMatchers(packager.config, \"extraDistFiles\", dirToArchive, packager.createGetFileMatchersOptions(this.outDir, arch, packager.platformOptions))\n if (fileMatchers == null) {\n dirToArchive = appOutDir\n } else {\n await copyFiles(fileMatchers, null, true)\n withoutDir = true\n }\n }\n\n const archiveOptions = {\n compression: packager.compression,\n withoutDir,\n preserveSymlinks: shouldPreserveSymlinks(packager.platform),\n }\n await archive(format, artifactPath, dirToArchive, archiveOptions)\n\n if (this.isWriteUpdateInfo && format === \"zip\") {\n if (isMac) {\n updateInfo = await createBlockmap(artifactPath, this, packager, artifactName)\n } else {\n updateInfo = await appendBlockmap(artifactPath)\n }\n }\n }\n\n await packager.emitArtifactBuildCompleted({\n updateInfo,\n file: artifactPath,\n // tslint:disable-next-line:no-invalid-template-strings\n safeArtifactName: packager.computeSafeArtifactName(\n artifactName,\n format,\n arch,\n false,\n packager.platformOptions.defaultArch,\n defaultPattern.replace(\"${productName}\", \"${name}\")\n ),\n target: this,\n arch,\n packager,\n isWriteUpdateInfo: this.isWriteUpdateInfo,\n })\n })\n return Promise.resolve()\n }\n}\n"]}
|