app-builder-lib 26.11.0 → 26.12.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (89) hide show
  1. package/out/binDownload.js +4 -1
  2. package/out/binDownload.js.map +1 -1
  3. package/out/codeSign/codesign.js +7 -23
  4. package/out/codeSign/codesign.js.map +1 -1
  5. package/out/configuration.d.ts +36 -2
  6. package/out/configuration.js.map +1 -1
  7. package/out/fileMatcher.d.ts +2 -1
  8. package/out/fileMatcher.js +0 -1
  9. package/out/fileMatcher.js.map +1 -1
  10. package/out/index.d.ts +1 -1
  11. package/out/index.js.map +1 -1
  12. package/out/linuxPackager.js +1 -1
  13. package/out/linuxPackager.js.map +1 -1
  14. package/out/macPackager.js +0 -12
  15. package/out/macPackager.js.map +1 -1
  16. package/out/node-module-collector/moduleManager.d.ts +1 -0
  17. package/out/node-module-collector/moduleManager.js +2 -0
  18. package/out/node-module-collector/moduleManager.js.map +1 -1
  19. package/out/node-module-collector/nodeModulesCollector.d.ts +3 -2
  20. package/out/node-module-collector/nodeModulesCollector.js +25 -5
  21. package/out/node-module-collector/nodeModulesCollector.js.map +1 -1
  22. package/out/node-module-collector/pnpmNodeModulesCollector.js +5 -1
  23. package/out/node-module-collector/pnpmNodeModulesCollector.js.map +1 -1
  24. package/out/options/SnapOptions.d.ts +415 -56
  25. package/out/options/SnapOptions.js.map +1 -1
  26. package/out/options/linuxOptions.d.ts +8 -0
  27. package/out/options/linuxOptions.js.map +1 -1
  28. package/out/platformPackager.js +1 -1
  29. package/out/platformPackager.js.map +1 -1
  30. package/out/publish/PublishManager.js +2 -2
  31. package/out/publish/PublishManager.js.map +1 -1
  32. package/out/publish/updateInfoBuilder.d.ts +4 -0
  33. package/out/publish/updateInfoBuilder.js +14 -2
  34. package/out/publish/updateInfoBuilder.js.map +1 -1
  35. package/out/targets/ArchiveTarget.js +1 -1
  36. package/out/targets/ArchiveTarget.js.map +1 -1
  37. package/out/targets/LinuxTargetHelper.d.ts +3 -0
  38. package/out/targets/LinuxTargetHelper.js +68 -0
  39. package/out/targets/LinuxTargetHelper.js.map +1 -1
  40. package/out/targets/MsiTarget.js +6 -3
  41. package/out/targets/MsiTarget.js.map +1 -1
  42. package/out/targets/archive.js +2 -6
  43. package/out/targets/archive.js.map +1 -1
  44. package/out/targets/nsis/NsisTarget.js +12 -12
  45. package/out/targets/nsis/NsisTarget.js.map +1 -1
  46. package/out/targets/nsis/nsisUtil.d.ts +0 -7
  47. package/out/targets/nsis/nsisUtil.js +5 -48
  48. package/out/targets/nsis/nsisUtil.js.map +1 -1
  49. package/out/targets/snap/SnapTarget.d.ts +36 -0
  50. package/out/targets/snap/SnapTarget.js +104 -0
  51. package/out/targets/snap/SnapTarget.js.map +1 -0
  52. package/out/targets/snap/core24.d.ts +52 -0
  53. package/out/targets/snap/core24.js +447 -0
  54. package/out/targets/snap/core24.js.map +1 -0
  55. package/out/targets/snap/coreCustom.d.ts +28 -0
  56. package/out/targets/snap/coreCustom.js +63 -0
  57. package/out/targets/snap/coreCustom.js.map +1 -0
  58. package/out/targets/snap/coreLegacy.d.ts +20 -0
  59. package/out/targets/{snap.js → snap/coreLegacy.js} +96 -155
  60. package/out/targets/snap/coreLegacy.js.map +1 -0
  61. package/out/targets/snap/snapcraftBuilder.d.ts +39 -0
  62. package/out/targets/snap/snapcraftBuilder.js +418 -0
  63. package/out/targets/snap/snapcraftBuilder.js.map +1 -0
  64. package/out/toolsets/linux.d.ts +5 -0
  65. package/out/toolsets/linux.js +55 -23
  66. package/out/toolsets/linux.js.map +1 -1
  67. package/out/toolsets/windows.d.ts +19 -0
  68. package/out/toolsets/windows.js +136 -18
  69. package/out/toolsets/windows.js.map +1 -1
  70. package/out/util/electronGet.d.ts +4 -1
  71. package/out/util/electronGet.js +19 -19
  72. package/out/util/electronGet.js.map +1 -1
  73. package/out/util/envPath.d.ts +2 -0
  74. package/out/util/envPath.js +28 -0
  75. package/out/util/envPath.js.map +1 -0
  76. package/out/util/toolsetLock.d.ts +1 -0
  77. package/out/util/toolsetLock.js +23 -0
  78. package/out/util/toolsetLock.js.map +1 -0
  79. package/out/version.d.ts +1 -1
  80. package/out/version.js +1 -1
  81. package/out/version.js.map +1 -1
  82. package/out/vm/vm.d.ts +1 -0
  83. package/out/vm/vm.js +18 -0
  84. package/out/vm/vm.js.map +1 -1
  85. package/package.json +8 -8
  86. package/scheme.json +1401 -107
  87. package/templates/nsis/multiUser.nsh +14 -12
  88. package/out/targets/snap.d.ts +0 -17
  89. package/out/targets/snap.js.map +0 -1
@@ -2,12 +2,14 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.appimageChecksums = void 0;
4
4
  exports.getLinuxToolsPath = getLinuxToolsPath;
5
+ exports.getLinuxToolsMacToolset = getLinuxToolsMacToolset;
5
6
  exports.getFpmPath = getFpmPath;
6
7
  exports.getAppImageTools = getAppImageTools;
7
8
  const builder_util_1 = require("builder-util");
8
9
  const path = require("path");
9
10
  const binDownload_1 = require("../binDownload");
10
11
  const electronGet_1 = require("../util/electronGet");
12
+ const builder_util_2 = require("builder-util");
11
13
  const fpmChecksums = {
12
14
  "fpm-1.17.0-ruby-3.4.3-darwin-arm64.7z": "6cc6d4785875bc7d79bdf52ca146080a4c300e1d663376ae79615fb548030ede",
13
15
  "fpm-1.17.0-ruby-3.4.3-darwin-x86_64.7z": "f7cb468c5e64177124c9d3a5f400ac20ffcb411aa5aa0ea224a808ff5a2d3bbf",
@@ -26,12 +28,41 @@ exports.appimageChecksums = {
26
28
  "appimage-tools-runtime-20251108.tar.gz": "84021a78ee214ae6fd33a2d62a92ba25542dd10bc86bf117a9b2d0bba44e7665",
27
29
  },
28
30
  };
29
- function getLinuxToolsPath() {
30
- return (0, binDownload_1.getBinFromUrl)("linux-tools-mac-10.12.3", "linux-tools-mac-10.12.3.7z", "58ff69a6f5082c78b809b72c929f5f2a82e6c3974c014bd1382fc87d9da1075c");
31
+ // no legacy toolset as macos arm64 BSD gtar/ar/lzip are not compatible with linux targets, so we always use newer toolset on macos for linux archives
32
+ const linuxToolsMacChecksums = {
33
+ "linux-tools-mac-darwin-arm64.tar.gz": "204e76f08364352edb28a6a4be87e8f9bd9340213865d9a0d1c664aa46fcf053",
34
+ "linux-tools-mac-darwin-x86_64.tar.gz": "7ee26dfbd0d2a4c2c83b55a9416a30cc84876eef01c6497ca49bb016a190c726",
35
+ };
36
+ async function getLinuxToolsPath() {
37
+ const envPath = await (0, builder_util_2.resolveEnvToolsetPath)("LINUX_TOOLS_MAC_PATH");
38
+ if (envPath != null) {
39
+ return envPath;
40
+ }
41
+ const arch = process.arch === "arm64" ? "arm64" : "x86_64";
42
+ const toolsetVersion = "1.0.0";
43
+ const filename = `linux-tools-mac-darwin-${arch}.tar.gz`;
44
+ return await (0, electronGet_1.downloadBuilderToolset)({
45
+ releaseName: `linux-tools-mac@${toolsetVersion}`,
46
+ filenameWithExt: filename,
47
+ checksums: {
48
+ [filename]: linuxToolsMacChecksums[filename],
49
+ },
50
+ githubOrgRepo: "electron-userland/electron-builder-binaries",
51
+ });
52
+ }
53
+ async function getLinuxToolsMacToolset() {
54
+ const linuxToolsPath = await getLinuxToolsPath();
55
+ const bin = (pkg) => path.join(linuxToolsPath, "bin", pkg);
56
+ return {
57
+ ar: bin("ar"),
58
+ lzip: bin("lzip"),
59
+ gtar: bin("gtar"),
60
+ };
31
61
  }
32
62
  async function getFpmPath() {
33
- if (process.env.CUSTOM_FPM_PATH != null) {
34
- return path.resolve(process.env.CUSTOM_FPM_PATH);
63
+ const customFpmPath = await (0, builder_util_2.resolveEnvToolsetPath)("CUSTOM_FPM_PATH");
64
+ if (customFpmPath != null) {
65
+ return customFpmPath;
35
66
  }
36
67
  const exec = "fpm";
37
68
  if (process.platform === "win32" || process.env.USE_SYSTEM_FPM === "true") {
@@ -58,29 +89,30 @@ async function getFpmPath() {
58
89
  return path.join(fpmPath, exec);
59
90
  }
60
91
  async function getAppImageTools(appimageToolVersion, targetArch) {
61
- var _a;
62
92
  // nullish and 0.0.0 are both considered legacy, but utilize an upstream dependency to download runtimes, so thus, we ignore logic here
63
93
  if (appimageToolVersion == null || appimageToolVersion === "0.0.0") {
64
94
  throw new Error("Legacy AppImage toolset was selected, but electron-builder is attempting to download newer runtime. Please file a GH issue if you see this error. Exiting early");
65
95
  }
66
- const override = (_a = process.env.APPIMAGE_TOOLS_PATH) === null || _a === void 0 ? void 0 : _a.trim();
67
- const filenameWithExt = "appimage-tools-runtime-20251108.tar.gz";
68
- let artifactPath = override ||
69
- (await (0, electronGet_1.downloadBuilderToolset)({
70
- releaseName: `appimage@${appimageToolVersion}`,
71
- filenameWithExt,
72
- checksums: {
73
- [filenameWithExt]: exports.appimageChecksums[appimageToolVersion][filenameWithExt],
74
- },
75
- githubOrgRepo: "electron-userland/electron-builder-binaries",
76
- }));
77
- artifactPath = path.resolve(artifactPath);
78
96
  const runtimeArch = targetArch === builder_util_1.Arch.armv7l ? "arm32" : targetArch === builder_util_1.Arch.arm64 ? "arm64" : targetArch === builder_util_1.Arch.ia32 ? "ia32" : "x64";
79
- return {
80
- mksquashfs: path.join(artifactPath, "mksquashfs"),
81
- desktopFileValidate: path.join(artifactPath, "desktop-file-validate"),
82
- runtime: path.join(artifactPath, "runtimes", `runtime-${runtimeArch}`),
83
- runtimeLibraries: path.join(artifactPath, "lib", runtimeArch),
84
- };
97
+ const getPaths = (artifactPath) => ({
98
+ mksquashfs: path.resolve(artifactPath, "mksquashfs"),
99
+ desktopFileValidate: path.resolve(artifactPath, "desktop-file-validate"),
100
+ runtime: path.resolve(artifactPath, "runtimes", `runtime-${runtimeArch}`),
101
+ runtimeLibraries: path.resolve(artifactPath, "lib", runtimeArch),
102
+ });
103
+ const filenameWithExt = "appimage-tools-runtime-20251108.tar.gz";
104
+ const envPath = await (0, builder_util_2.resolveEnvToolsetPath)("APPIMAGE_TOOLS_PATH");
105
+ if (envPath != null) {
106
+ return getPaths(envPath);
107
+ }
108
+ const artifact = await (0, electronGet_1.downloadBuilderToolset)({
109
+ releaseName: `appimage@${appimageToolVersion}`,
110
+ filenameWithExt,
111
+ checksums: {
112
+ [filenameWithExt]: exports.appimageChecksums[appimageToolVersion][filenameWithExt],
113
+ },
114
+ githubOrgRepo: "electron-userland/electron-builder-binaries",
115
+ });
116
+ return getPaths(artifact);
85
117
  }
86
118
  //# sourceMappingURL=linux.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"linux.js","sourceRoot":"","sources":["../../src/toolsets/linux.ts"],"names":[],"mappings":";;;AA0BA,8CAEC;AAED,gCA2BC;AAED,4CA+BC;AA1FD,+CAAmC;AACnC,6BAA4B;AAC5B,gDAA8C;AAC9C,qDAA4D;AAG5D,MAAM,YAAY,GAAG;IACnB,uCAAuC,EAAE,kEAAkE;IAC3G,wCAAwC,EAAE,kEAAkE;IAC5G,sCAAsC,EAAE,kEAAkE;IAC1G,wCAAwC,EAAE,kEAAkE;IAC5G,qCAAqC,EAAE,kEAAkE;CACjG,CAAA;AAEG,QAAA,iBAAiB,GAAG;IAC/B,OAAO,EAAE;IACP,SAAS;KACV;IACD,OAAO,EAAE;QACP,wCAAwC,EAAE,kEAAkE;KAC7G;IACD,OAAO,EAAE;QACP,wCAAwC,EAAE,kEAAkE;KAC7G;CACO,CAAA;AAEV,SAAgB,iBAAiB;IAC/B,OAAO,IAAA,2BAAa,EAAC,yBAAyB,EAAE,4BAA4B,EAAE,kEAAkE,CAAC,CAAA;AACnJ,CAAC;AAEM,KAAK,UAAU,UAAU;IAC9B,IAAI,OAAO,CAAC,GAAG,CAAC,eAAe,IAAI,IAAI,EAAE,CAAC;QACxC,OAAO,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,eAAe,CAAC,CAAA;IAClD,CAAC;IACD,MAAM,IAAI,GAAG,KAAK,CAAA;IAClB,IAAI,OAAO,CAAC,QAAQ,KAAK,OAAO,IAAI,OAAO,CAAC,GAAG,CAAC,cAAc,KAAK,MAAM,EAAE,CAAC;QAC1E,OAAO,IAAI,CAAA;IACb,CAAC;IACD,MAAM,MAAM,GAAG,GAAG,EAAE;QAClB,IAAI,OAAO,CAAC,QAAQ,KAAK,OAAO,EAAE,CAAC;YACjC,IAAI,OAAO,CAAC,IAAI,IAAI,KAAK,EAAE,CAAC;gBAC1B,OAAO,sCAAsC,CAAA;YAC/C,CAAC;iBAAM,IAAI,OAAO,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC;gBACpC,OAAO,wCAAwC,CAAA;YACjD,CAAC;YACD,OAAO,qCAAqC,CAAA;QAC9C,CAAC;QACD,eAAe;QACf,IAAI,OAAO,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC;YAC7B,OAAO,uCAAuC,CAAA;QAChD,CAAC;QACD,OAAO,wCAAwC,CAAA;IACjD,CAAC,CAAA;IAED,MAAM,QAAQ,GAAG,MAAM,EAAE,CAAA;IACzB,MAAM,OAAO,GAAG,MAAM,IAAA,2BAAa,EAAC,WAAW,EAAE,QAAQ,EAAE,YAAY,CAAC,QAAQ,CAAC,CAAC,CAAA;IAClF,OAAO,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,CAAA;AACjC,CAAC;AAEM,KAAK,UAAU,gBAAgB,CAAC,mBAA8C,EAAE,UAAgB;;IACrG,uIAAuI;IACvI,IAAI,mBAAmB,IAAI,IAAI,IAAI,mBAAmB,KAAK,OAAO,EAAE,CAAC;QACnE,MAAM,IAAI,KAAK,CACb,iKAAiK,CAClK,CAAA;IACH,CAAC;IAED,MAAM,QAAQ,GAAG,MAAA,OAAO,CAAC,GAAG,CAAC,mBAAmB,0CAAE,IAAI,EAAE,CAAA;IACxD,MAAM,eAAe,GAAG,wCAAwC,CAAA;IAChE,IAAI,YAAY,GACd,QAAQ;QACR,CAAC,MAAM,IAAA,oCAAsB,EAAC;YAC5B,WAAW,EAAE,YAAY,mBAAmB,EAAE;YAC9C,eAAe;YACf,SAAS,EAAE;gBACT,CAAC,eAAe,CAAC,EAAE,yBAAiB,CAAC,mBAAmB,CAAC,CAAC,eAAe,CAAC;aAC3E;YACD,aAAa,EAAE,6CAA6C;SAC7D,CAAC,CAAC,CAAA;IAEL,YAAY,GAAG,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,CAAA;IAEzC,MAAM,WAAW,GAAG,UAAU,KAAK,mBAAI,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,UAAU,KAAK,mBAAI,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,UAAU,KAAK,mBAAI,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAA;IAE1I,OAAO;QACL,UAAU,EAAE,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,YAAY,CAAC;QACjD,mBAAmB,EAAE,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,uBAAuB,CAAC;QACrE,OAAO,EAAE,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,UAAU,EAAE,WAAW,WAAW,EAAE,CAAC;QACtE,gBAAgB,EAAE,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,KAAK,EAAE,WAAW,CAAC;KAC9D,CAAA;AACH,CAAC","sourcesContent":["import { Arch } from \"builder-util\"\nimport * as path from \"path\"\nimport { getBinFromUrl } from \"../binDownload\"\nimport { downloadBuilderToolset } from \"../util/electronGet\"\nimport { ToolsetConfig } from \"../configuration\"\n\nconst fpmChecksums = {\n \"fpm-1.17.0-ruby-3.4.3-darwin-arm64.7z\": \"6cc6d4785875bc7d79bdf52ca146080a4c300e1d663376ae79615fb548030ede\",\n \"fpm-1.17.0-ruby-3.4.3-darwin-x86_64.7z\": \"f7cb468c5e64177124c9d3a5f400ac20ffcb411aa5aa0ea224a808ff5a2d3bbf\",\n \"fpm-1.17.0-ruby-3.4.3-linux-amd64.7z\": \"44b0ec6025c14ec137f56180e62675c0eae36233cdce53d0953d9c73ced8989f\",\n \"fpm-1.17.0-ruby-3.4.3-linux-arm64v8.7z\": \"338b50cfa7f12d745a997d1a3d000bcd0410008050fa7d8c4476a78a61c0564e\",\n \"fpm-1.17.0-ruby-3.4.3-linux-i386.7z\": \"181124e2e9856855c21229ea9096bb7006a9e3e712d133ce332597ba878cd7b6\",\n} as const\n\nexport const appimageChecksums = {\n \"0.0.0\": {\n // legacy\n },\n \"1.0.2\": {\n \"appimage-tools-runtime-20251108.tar.gz\": \"a784a8c26331ec2e945c23d6bdb14af5c9df27f5939825d84b8709c61dc81eb0\",\n },\n \"1.0.3\": {\n \"appimage-tools-runtime-20251108.tar.gz\": \"84021a78ee214ae6fd33a2d62a92ba25542dd10bc86bf117a9b2d0bba44e7665\",\n },\n} as const\n\nexport function getLinuxToolsPath() {\n return getBinFromUrl(\"linux-tools-mac-10.12.3\", \"linux-tools-mac-10.12.3.7z\", \"58ff69a6f5082c78b809b72c929f5f2a82e6c3974c014bd1382fc87d9da1075c\")\n}\n\nexport async function getFpmPath() {\n if (process.env.CUSTOM_FPM_PATH != null) {\n return path.resolve(process.env.CUSTOM_FPM_PATH)\n }\n const exec = \"fpm\"\n if (process.platform === \"win32\" || process.env.USE_SYSTEM_FPM === \"true\") {\n return exec\n }\n const getKey = () => {\n if (process.platform === \"linux\") {\n if (process.arch == \"x64\") {\n return \"fpm-1.17.0-ruby-3.4.3-linux-amd64.7z\"\n } else if (process.arch === \"arm64\") {\n return \"fpm-1.17.0-ruby-3.4.3-linux-arm64v8.7z\"\n }\n return \"fpm-1.17.0-ruby-3.4.3-linux-i386.7z\"\n }\n // darwin arm64\n if (process.arch === \"arm64\") {\n return \"fpm-1.17.0-ruby-3.4.3-darwin-arm64.7z\"\n }\n return \"fpm-1.17.0-ruby-3.4.3-darwin-x86_64.7z\"\n }\n\n const filename = getKey()\n const fpmPath = await getBinFromUrl(\"fpm@2.1.4\", filename, fpmChecksums[filename])\n return path.join(fpmPath, exec)\n}\n\nexport async function getAppImageTools(appimageToolVersion: ToolsetConfig[\"appimage\"], targetArch: Arch) {\n // nullish and 0.0.0 are both considered legacy, but utilize an upstream dependency to download runtimes, so thus, we ignore logic here\n if (appimageToolVersion == null || appimageToolVersion === \"0.0.0\") {\n throw new Error(\n \"Legacy AppImage toolset was selected, but electron-builder is attempting to download newer runtime. Please file a GH issue if you see this error. Exiting early\"\n )\n }\n\n const override = process.env.APPIMAGE_TOOLS_PATH?.trim()\n const filenameWithExt = \"appimage-tools-runtime-20251108.tar.gz\"\n let artifactPath =\n override ||\n (await downloadBuilderToolset({\n releaseName: `appimage@${appimageToolVersion}`,\n filenameWithExt,\n checksums: {\n [filenameWithExt]: appimageChecksums[appimageToolVersion][filenameWithExt],\n },\n githubOrgRepo: \"electron-userland/electron-builder-binaries\",\n }))\n\n artifactPath = path.resolve(artifactPath)\n\n const runtimeArch = targetArch === Arch.armv7l ? \"arm32\" : targetArch === Arch.arm64 ? \"arm64\" : targetArch === Arch.ia32 ? \"ia32\" : \"x64\"\n\n return {\n mksquashfs: path.join(artifactPath, \"mksquashfs\"),\n desktopFileValidate: path.join(artifactPath, \"desktop-file-validate\"),\n runtime: path.join(artifactPath, \"runtimes\", `runtime-${runtimeArch}`),\n runtimeLibraries: path.join(artifactPath, \"lib\", runtimeArch),\n }\n}\n"]}
1
+ {"version":3,"file":"linux.js","sourceRoot":"","sources":["../../src/toolsets/linux.ts"],"names":[],"mappings":"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","sourcesContent":["import { Arch } from \"builder-util\"\nimport * as path from \"path\"\nimport { getBinFromUrl } from \"../binDownload\"\nimport { ToolsetConfig } from \"../configuration\"\nimport { downloadBuilderToolset } from \"../util/electronGet\"\nimport { resolveEnvToolsetPath } from \"builder-util\"\n\nconst fpmChecksums = {\n \"fpm-1.17.0-ruby-3.4.3-darwin-arm64.7z\": \"6cc6d4785875bc7d79bdf52ca146080a4c300e1d663376ae79615fb548030ede\",\n \"fpm-1.17.0-ruby-3.4.3-darwin-x86_64.7z\": \"f7cb468c5e64177124c9d3a5f400ac20ffcb411aa5aa0ea224a808ff5a2d3bbf\",\n \"fpm-1.17.0-ruby-3.4.3-linux-amd64.7z\": \"44b0ec6025c14ec137f56180e62675c0eae36233cdce53d0953d9c73ced8989f\",\n \"fpm-1.17.0-ruby-3.4.3-linux-arm64v8.7z\": \"338b50cfa7f12d745a997d1a3d000bcd0410008050fa7d8c4476a78a61c0564e\",\n \"fpm-1.17.0-ruby-3.4.3-linux-i386.7z\": \"181124e2e9856855c21229ea9096bb7006a9e3e712d133ce332597ba878cd7b6\",\n} as const\n\nexport const appimageChecksums = {\n \"0.0.0\": {\n // legacy\n },\n \"1.0.2\": {\n \"appimage-tools-runtime-20251108.tar.gz\": \"a784a8c26331ec2e945c23d6bdb14af5c9df27f5939825d84b8709c61dc81eb0\",\n },\n \"1.0.3\": {\n \"appimage-tools-runtime-20251108.tar.gz\": \"84021a78ee214ae6fd33a2d62a92ba25542dd10bc86bf117a9b2d0bba44e7665\",\n },\n} as const\n\n// no legacy toolset as macos arm64 BSD gtar/ar/lzip are not compatible with linux targets, so we always use newer toolset on macos for linux archives\nconst linuxToolsMacChecksums = {\n \"linux-tools-mac-darwin-arm64.tar.gz\": \"204e76f08364352edb28a6a4be87e8f9bd9340213865d9a0d1c664aa46fcf053\",\n \"linux-tools-mac-darwin-x86_64.tar.gz\": \"7ee26dfbd0d2a4c2c83b55a9416a30cc84876eef01c6497ca49bb016a190c726\",\n} as const\n\nexport async function getLinuxToolsPath(): Promise<string> {\n const envPath = await resolveEnvToolsetPath(\"LINUX_TOOLS_MAC_PATH\")\n if (envPath != null) {\n return envPath\n }\n const arch = process.arch === \"arm64\" ? \"arm64\" : \"x86_64\"\n const toolsetVersion = \"1.0.0\"\n const filename: keyof typeof linuxToolsMacChecksums = `linux-tools-mac-darwin-${arch}.tar.gz`\n return await downloadBuilderToolset({\n releaseName: `linux-tools-mac@${toolsetVersion}`,\n filenameWithExt: filename,\n checksums: {\n [filename]: linuxToolsMacChecksums[filename],\n },\n githubOrgRepo: \"electron-userland/electron-builder-binaries\",\n })\n}\n\nexport async function getLinuxToolsMacToolset() {\n const linuxToolsPath = await getLinuxToolsPath()\n const bin = (pkg: string) => path.join(linuxToolsPath, \"bin\", pkg)\n return {\n ar: bin(\"ar\"),\n lzip: bin(\"lzip\"),\n gtar: bin(\"gtar\"),\n }\n}\n\nexport async function getFpmPath() {\n const customFpmPath = await resolveEnvToolsetPath(\"CUSTOM_FPM_PATH\")\n if (customFpmPath != null) {\n return customFpmPath\n }\n const exec = \"fpm\"\n if (process.platform === \"win32\" || process.env.USE_SYSTEM_FPM === \"true\") {\n return exec\n }\n const getKey = () => {\n if (process.platform === \"linux\") {\n if (process.arch == \"x64\") {\n return \"fpm-1.17.0-ruby-3.4.3-linux-amd64.7z\"\n } else if (process.arch === \"arm64\") {\n return \"fpm-1.17.0-ruby-3.4.3-linux-arm64v8.7z\"\n }\n return \"fpm-1.17.0-ruby-3.4.3-linux-i386.7z\"\n }\n // darwin arm64\n if (process.arch === \"arm64\") {\n return \"fpm-1.17.0-ruby-3.4.3-darwin-arm64.7z\"\n }\n return \"fpm-1.17.0-ruby-3.4.3-darwin-x86_64.7z\"\n }\n\n const filename = getKey()\n const fpmPath = await getBinFromUrl(\"fpm@2.1.4\", filename, fpmChecksums[filename])\n return path.join(fpmPath, exec)\n}\n\nexport async function getAppImageTools(appimageToolVersion: ToolsetConfig[\"appimage\"], targetArch: Arch) {\n // nullish and 0.0.0 are both considered legacy, but utilize an upstream dependency to download runtimes, so thus, we ignore logic here\n if (appimageToolVersion == null || appimageToolVersion === \"0.0.0\") {\n throw new Error(\n \"Legacy AppImage toolset was selected, but electron-builder is attempting to download newer runtime. Please file a GH issue if you see this error. Exiting early\"\n )\n }\n\n const runtimeArch = targetArch === Arch.armv7l ? \"arm32\" : targetArch === Arch.arm64 ? \"arm64\" : targetArch === Arch.ia32 ? \"ia32\" : \"x64\"\n\n const getPaths = (artifactPath: string) => ({\n mksquashfs: path.resolve(artifactPath, \"mksquashfs\"),\n desktopFileValidate: path.resolve(artifactPath, \"desktop-file-validate\"),\n runtime: path.resolve(artifactPath, \"runtimes\", `runtime-${runtimeArch}`),\n runtimeLibraries: path.resolve(artifactPath, \"lib\", runtimeArch),\n })\n\n const filenameWithExt = \"appimage-tools-runtime-20251108.tar.gz\"\n const envPath = await resolveEnvToolsetPath(\"APPIMAGE_TOOLS_PATH\")\n if (envPath != null) {\n return getPaths(envPath)\n }\n const artifact = await downloadBuilderToolset({\n releaseName: `appimage@${appimageToolVersion}`,\n filenameWithExt,\n checksums: {\n [filenameWithExt]: appimageChecksums[appimageToolVersion][filenameWithExt],\n },\n githubOrgRepo: \"electron-userland/electron-builder-binaries\",\n })\n\n return getPaths(artifact)\n}\n"]}
@@ -39,4 +39,23 @@ export declare function getRceditBundle(winCodeSign: ToolsetConfig["winCodeSign"
39
39
  x86: string;
40
40
  x64: string;
41
41
  }>;
42
+ export declare const nsisChecksums: {
43
+ readonly "0.0.0": {};
44
+ readonly "1.2.1": {
45
+ readonly "nsis-bundle-3.12.tar.gz": "56997fdefe25e7928a1a68b4583d08b240b66cf660234053b20131a74cc082f4";
46
+ };
47
+ };
48
+ type CustomNsisBinaryConfig = {
49
+ url: string | null;
50
+ checksum?: string | null;
51
+ version?: string | null;
52
+ };
53
+ export declare function getMakeNsisPath(nsis: ToolsetConfig["nsis"] | Nullish, customBinary?: CustomNsisBinaryConfig | null): Promise<ToolInfo>;
54
+ type CustomNsisResourcesConfig = {
55
+ url: string;
56
+ checksum: string;
57
+ version: string;
58
+ };
59
+ export declare function getNsisPluginsPath(nsis: ToolsetConfig["nsis"] | Nullish, customNsisResources?: CustomNsisResourcesConfig | null): Promise<string>;
60
+ export declare function getNsisElevatePath(nsis: ToolsetConfig["nsis"] | Nullish, customBinary?: CustomNsisBinaryConfig | null): Promise<string>;
42
61
  export {};
@@ -1,11 +1,15 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.wincodesignChecksums = void 0;
3
+ exports.nsisChecksums = exports.wincodesignChecksums = void 0;
4
4
  exports.getSignToolPath = getSignToolPath;
5
5
  exports.getWindowsKitsBundle = getWindowsKitsBundle;
6
6
  exports.isOldWin6 = isOldWin6;
7
7
  exports.getRceditBundle = getRceditBundle;
8
+ exports.getMakeNsisPath = getMakeNsisPath;
9
+ exports.getNsisPluginsPath = getNsisPluginsPath;
10
+ exports.getNsisElevatePath = getNsisElevatePath;
8
11
  const builder_util_1 = require("builder-util");
12
+ const fs_extra_1 = require("fs-extra");
9
13
  const os = require("os");
10
14
  const path = require("path");
11
15
  const binDownload_1 = require("../binDownload");
@@ -48,13 +52,12 @@ function _getWindowsToolsBin(winCodeSign, file) {
48
52
  return (0, binDownload_1.getBinFromUrl)(`win-codesign@${winCodeSign}`, file, exports.wincodesignChecksums[winCodeSign][file]);
49
53
  }
50
54
  async function getSignToolPath(winCodeSign, isWin) {
51
- var _a;
52
55
  if ((0, flags_1.isUseSystemSigncode)()) {
53
56
  return { path: "osslsigncode" };
54
57
  }
55
- const result = (_a = process.env.SIGNTOOL_PATH) === null || _a === void 0 ? void 0 : _a.trim();
56
- if (result) {
57
- return { path: path.resolve(result) };
58
+ const signToolPath = await (0, builder_util_1.resolveEnvToolsetPath)("SIGNTOOL_PATH");
59
+ if (signToolPath != null) {
60
+ return { path: signToolPath };
58
61
  }
59
62
  if (isWin) {
60
63
  // windows kits are always the target arch; signtool can be used by either arch.
@@ -67,9 +70,9 @@ async function getSignToolPath(winCodeSign, isWin) {
67
70
  }
68
71
  }
69
72
  async function getWindowsKitsBundle({ winCodeSign, arch }) {
70
- const overridePath = process.env.ELECTRON_BUILDER_WINDOWS_KITS_PATH;
71
- if (!(0, builder_util_1.isEmptyOrSpaces)(overridePath)) {
72
- return { kit: overridePath, appxAssets: overridePath };
73
+ const kitPath = await (0, builder_util_1.resolveEnvToolsetPath)("ELECTRON_BUILDER_WINDOWS_KITS_PATH");
74
+ if (kitPath != null) {
75
+ return { kit: kitPath, appxAssets: kitPath };
73
76
  }
74
77
  const useLegacy = winCodeSign == null || winCodeSign === "0.0.0";
75
78
  if (useLegacy) {
@@ -99,9 +102,9 @@ async function getWindowsSignToolExe({ winCodeSign, arch }) {
99
102
  return path.resolve(vendorPath.kit, "signtool.exe");
100
103
  }
101
104
  async function getOsslSigncodeBundle(winCodeSign) {
102
- const overridePath = process.env.ELECTRON_BUILDER_OSSL_SIGNCODE_PATH;
103
- if (!(0, builder_util_1.isEmptyOrSpaces)(overridePath)) {
104
- return { path: overridePath };
105
+ const osslSigncodePath = await (0, builder_util_1.resolveEnvToolsetPath)("ELECTRON_BUILDER_OSSL_SIGNCODE_PATH");
106
+ if (osslSigncodePath != null) {
107
+ return { path: osslSigncodePath };
105
108
  }
106
109
  if (process.platform === "win32" || process.env.USE_SYSTEM_OSSLSIGNCODE === "true") {
107
110
  return { path: "osslsigncode" };
@@ -131,21 +134,136 @@ async function getOsslSigncodeBundle(winCodeSign) {
131
134
  return { path: path.resolve(vendorPath, "osslsigncode") };
132
135
  }
133
136
  async function getRceditBundle(winCodeSign) {
134
- var _a;
135
137
  const ia32 = "rcedit-ia32.exe";
136
138
  const x86 = "rcedit-x86.exe";
137
139
  const x64 = "rcedit-x64.exe";
138
- const overridePath = (_a = process.env.ELECTRON_BUILDER_RCEDIT_PATH) === null || _a === void 0 ? void 0 : _a.trim();
139
- if (!(0, builder_util_1.isEmptyOrSpaces)(overridePath)) {
140
- builder_util_1.log.debug({ searchFiles: [x86, x64], overridePath }, `Using RCEdit from ELECTRON_BUILDER_RCEDIT_PATH`);
141
- return { x86: path.join(overridePath, x86), x64: path.join(overridePath, x64) };
140
+ const rcedit = await (0, builder_util_1.resolveEnvToolsetPath)("ELECTRON_BUILDER_RCEDIT_PATH");
141
+ if (rcedit != null) {
142
+ const overridePath = rcedit;
143
+ return { x86: path.resolve(overridePath, x86), x64: path.resolve(overridePath, x64) };
142
144
  }
143
145
  if (winCodeSign === "0.0.0" || winCodeSign == null) {
144
146
  const vendorPath = await getLegacyWinCodeSignBin();
145
- return { x86: path.join(vendorPath, ia32), x64: path.join(vendorPath, x64) };
147
+ return { x86: path.resolve(vendorPath, ia32), x64: path.resolve(vendorPath, x64) };
146
148
  }
147
149
  const file = "rcedit-windows-2_0_0.zip";
148
150
  const vendorPath = await _getWindowsToolsBin(winCodeSign, file);
149
- return { x86: path.join(vendorPath, x86), x64: path.join(vendorPath, x64) };
151
+ return { x86: path.resolve(vendorPath, x86), x64: path.resolve(vendorPath, x64) };
152
+ }
153
+ // ─── NSIS toolset ────────────────────────────────────────────────────────────
154
+ function getLegacyNsisBin() {
155
+ // Warning: Don't use v3.0.4.2 - https://github.com/electron-userland/electron-builder/issues/6334
156
+ return (0, binDownload_1.getBinFromUrl)("nsis-3.0.4.1", "nsis-3.0.4.1.7z", "9877df902530f96357d13a7a31ae2b9df67f48b11ffc9a1700a7c961574ec5fa");
157
+ }
158
+ function getLegacyNsisResourcesBin() {
159
+ return (0, binDownload_1.getBinFromUrl)("nsis-resources-3.4.1", "nsis-resources-3.4.1.7z", "593a9a92ef958321293ac6a2ee61e64bf1bd543142a5bd6b3d310709cc924103");
160
+ }
161
+ exports.nsisChecksums = {
162
+ "0.0.0": {
163
+ // legacy — uses getLegacyNsisBin() / getLegacyNsisResourcesBin()
164
+ },
165
+ "1.2.1": {
166
+ // unified bundle
167
+ "nsis-bundle-3.12.tar.gz": "56997fdefe25e7928a1a68b4583d08b240b66cf660234053b20131a74cc082f4",
168
+ },
169
+ };
170
+ async function getNsisBundlePath(nsis, customBinary) {
171
+ var _a;
172
+ if ((customBinary === null || customBinary === void 0 ? void 0 : customBinary.url) && (customBinary === null || customBinary === void 0 ? void 0 : customBinary.checksum)) {
173
+ const binaryVersion = (_a = customBinary.version) !== null && _a !== void 0 ? _a : customBinary.checksum.substring(0, 8);
174
+ return (0, binDownload_1.getBinFromCustomLoc)("nsis", binaryVersion, customBinary.url, customBinary.checksum);
175
+ }
176
+ if (nsis === "0.0.0" || nsis == null) {
177
+ return getLegacyNsisBin();
178
+ }
179
+ const file = `nsis-bundle-3.12.tar.gz`;
180
+ return (0, electronGet_1.downloadBuilderToolset)({
181
+ releaseName: `nsis@${nsis}`,
182
+ filenameWithExt: file,
183
+ checksums: { [file]: exports.nsisChecksums[nsis][file] },
184
+ });
185
+ }
186
+ async function getNsisDirOverride() {
187
+ const overridePath = await (0, builder_util_1.resolveEnvToolsetPath)("ELECTRON_BUILDER_NSIS_DIR");
188
+ if (overridePath == null) {
189
+ return null;
190
+ }
191
+ if (!(await (0, fs_extra_1.stat)(overridePath)).isDirectory()) {
192
+ throw new Error(`ELECTRON_BUILDER_NSIS_DIR must be a directory, got a file: ${overridePath}`);
193
+ }
194
+ return overridePath;
195
+ }
196
+ async function getMakeNsisPath(nsis, customBinary) {
197
+ const legacyBundle = (bundlePath) => {
198
+ // legacy bundle: platform-specific subdirectories, NSISDIR must be set explicitly
199
+ const env = { NSISDIR: bundlePath };
200
+ if (process.platform === "darwin") {
201
+ return { path: path.resolve(bundlePath, "mac", "makensis"), env };
202
+ }
203
+ else if (process.platform === "win32") {
204
+ return { path: path.resolve(bundlePath, "Bin", "makensis.exe"), env };
205
+ }
206
+ return { path: path.resolve(bundlePath, "linux", "makensis"), env };
207
+ };
208
+ const entrypointBundle = (bundlePath) => {
209
+ // the entrypoint script auto-sets NSISDIR
210
+ return { path: path.resolve(bundlePath, process.platform === "win32" ? "makensis.cmd" : "makensis") };
211
+ };
212
+ const overridePath = await getNsisDirOverride();
213
+ if (overridePath != null) {
214
+ // we have to search both to maintain backward compatibility
215
+ let potentialBundle = legacyBundle(overridePath);
216
+ if (await (0, builder_util_1.exists)(potentialBundle.path)) {
217
+ return potentialBundle;
218
+ }
219
+ potentialBundle = entrypointBundle(overridePath);
220
+ if (await (0, builder_util_1.exists)(potentialBundle.path)) {
221
+ return potentialBundle;
222
+ }
223
+ throw new Error(`${path.basename(potentialBundle.path)} executable not found in ELECTRON_BUILDER_NSIS_DIR: ${overridePath}`);
224
+ }
225
+ const bundlePath = await getNsisBundlePath(nsis, customBinary);
226
+ if (nsis === "0.0.0" || nsis == null) {
227
+ return legacyBundle(bundlePath);
228
+ }
229
+ return entrypointBundle(bundlePath);
230
+ }
231
+ async function getNsisPluginsPath(nsis, customNsisResources) {
232
+ const resolveCustomBundle = async (bundlePath, type) => {
233
+ // we have to search both to maintain backward compatibility
234
+ const potentialPaths = [path.resolve(bundlePath, "plugins"), path.resolve(bundlePath, "windows", "Plugins")];
235
+ for (const p of potentialPaths) {
236
+ if ((await (0, builder_util_1.exists)(p)) && (await (0, fs_extra_1.stat)(p)).isDirectory()) {
237
+ return p;
238
+ }
239
+ }
240
+ throw new Error(`Plugins directory not found in ${type}: ${bundlePath}. Expected to find in one of: ${potentialPaths.join(", ")}`);
241
+ };
242
+ const overridePath = await (0, builder_util_1.resolveEnvToolsetPath)("ELECTRON_BUILDER_NSIS_RESOURCES_DIR");
243
+ if (overridePath != null) {
244
+ return resolveCustomBundle(overridePath, "ELECTRON_BUILDER_NSIS_RESOURCES_DIR");
245
+ }
246
+ if (customNsisResources) {
247
+ const bundle = await (0, binDownload_1.getBinFromCustomLoc)("nsis-resources", customNsisResources.version, customNsisResources.url, customNsisResources.checksum);
248
+ return resolveCustomBundle(bundle, "CUSTOM_NSIS_RESOURCES");
249
+ }
250
+ if (nsis === "0.0.0" || nsis == null) {
251
+ return path.resolve(await getLegacyNsisResourcesBin(), "plugins");
252
+ }
253
+ return path.resolve(await getNsisBundlePath(nsis), "windows", "Plugins");
254
+ }
255
+ async function getNsisElevatePath(nsis, customBinary) {
256
+ const resolveElevate = async (dir, label) => {
257
+ const p = path.resolve(dir, "elevate.exe");
258
+ if ((await (0, builder_util_1.exists)(p)) && (await (0, fs_extra_1.stat)(p)).isFile()) {
259
+ return p;
260
+ }
261
+ throw new Error(`elevate.exe not found in ${label} directory: ${dir}. Expected path: ${p}`);
262
+ };
263
+ const overridePath = await getNsisDirOverride();
264
+ if (overridePath != null) {
265
+ return resolveElevate(overridePath, "ELECTRON_BUILDER_NSIS_DIR");
266
+ }
267
+ return resolveElevate(await getNsisBundlePath(nsis, customBinary), "NSIS bundle");
150
268
  }
151
269
  //# sourceMappingURL=windows.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"windows.js","sourceRoot":"","sources":["../../src/toolsets/windows.ts"],"names":[],"mappings":"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","sourcesContent":["import { Arch, isEmptyOrSpaces, log } from \"builder-util\"\nimport { Nullish } from \"builder-util-runtime\"\nimport * as os from \"os\"\nimport * as path from \"path\"\nimport { getBinFromUrl } from \"../binDownload\"\nimport { ToolsetConfig } from \"../configuration\"\nimport { ToolInfo, computeToolEnv } from \"../util/bundledTool\"\nimport { downloadBuilderToolset } from \"../util/electronGet\"\nimport { isUseSystemSigncode } from \"../util/flags\"\n\nfunction getLegacyWinCodeSignBin(): Promise<string> {\n return downloadBuilderToolset({\n releaseName: \"winCodeSign-2.6.0\",\n filenameWithExt: \"winCodeSign-2.6.0.7z\",\n checksums: { [\"winCodeSign-2.6.0.7z\"]: \"cdaec7154dda7cc31f88d886e2489379a0625a737d610b5ae7f62a12f16743a4\" },\n })\n}\n\nexport const wincodesignChecksums = {\n \"0.0.0\": {\n // legacy — downloads winCodeSign-2.6.0 via getLegacyWinCodeSignBin()\n },\n \"1.0.0\": {\n \"rcedit-windows-2_0_0.zip\": \"589709935902545a8335190b08644cf61b46a9042e34c0c3ef0660a5aeddeaae\",\n \"win-codesign-darwin-arm64.zip\": \"7eb41c3e6e48a75ced6b3384de22185da4bb458960fa410970eedd4e838c5c14\",\n \"win-codesign-darwin-x86_64.zip\": \"3986c97429f002df63490193d7f787281836f055934e3cdd9e69c70a8acb695e\",\n \"win-codesign-linux-amd64.zip\": \"d362a1a981053841554867e3e9dff51fe420fd577b44653df89bd7d3c916b156\",\n \"win-codesign-linux-arm64.zip\": \"fb848d498281f081c937be48dd6ddaf49b0201f32210dfc816ad061c47ecd37b\",\n \"win-codesign-linux-i386.zip\": \"11f8d9ffbf5b01e3bf6321c6d93b9b5e43d0c2d2a9fde1bca07698f2eb967cdf\",\n \"win-codesign-windows-x64.zip\": \"1bd27f9fa553cb14bec8df530cb3caffcfb095f9dd187dab6eaf5e9b7d6e7bff\",\n \"windows-kits-bundle-10_0_26100_0.zip\": \"1a12c81024c3499c212fdc5fac34a918e6d199271a39dfc524f6d8da484329bd\",\n },\n \"1.1.0\": {\n \"rcedit-windows-2_0_0.zip\": \"c66591ebe0919c60231f0bf79ff223e6504bfa69bc13edc1fa8bfc6177b73402\",\n \"win-codesign-darwin-arm64.zip\": \"3f263b0e53cdc5410f6165471b2e808aee3148dc792efa23a7c303e7a01e67b7\",\n \"win-codesign-darwin-x86_64.zip\": \"143fbdfcbc53bc273fa181356be8416829778452621484d39eadbe1ce49979ba\",\n \"win-codesign-linux-amd64.zip\": \"65477fe8e40709b0f998928afb8336f82413b123310bf5adaa8efb7ed6ed0eeb\",\n \"win-codesign-linux-arm64.zip\": \"575b01a966f2b775bbea119de263957378e2bd28cbd064d35f9e981827e37b59\",\n \"win-codesign-linux-i386.zip\": \"aa3ce90e9aaa3449a228a3fa30633cdeb6b2791913786677a85c59db1d985598\",\n \"win-codesign-windows-x64.zip\": \"6e5dcc5d7af7c00a7387e2101d1ad986aef80e963a3526da07bd0e65de484c30\",\n \"windows-kits-bundle-10_0_26100_0.zip\": \"284f18a2fde66e6ecfbefc3065926c9bfdf641761a9e6cd2bd26e18d1e328bf7\",\n },\n} as const\n\ntype CodeSignVersionKey = keyof typeof wincodesignChecksums\n\nfunction _getWindowsToolsBin<V extends CodeSignVersionKey>(winCodeSign: V, file: keyof (typeof wincodesignChecksums)[V]): Promise<string> {\n return getBinFromUrl(`win-codesign@${winCodeSign}`, file as string, wincodesignChecksums[winCodeSign][file] as string)\n}\n\nexport async function getSignToolPath(winCodeSign: ToolsetConfig[\"winCodeSign\"] | Nullish, isWin: boolean): Promise<ToolInfo> {\n if (isUseSystemSigncode()) {\n return { path: \"osslsigncode\" }\n }\n\n const result = process.env.SIGNTOOL_PATH?.trim()\n if (result) {\n return { path: path.resolve(result) }\n }\n\n if (isWin) {\n // windows kits are always the target arch; signtool can be used by either arch.\n const signtoolArch: Arch = process.arch === \"x64\" ? Arch.x64 : process.arch === \"arm64\" ? Arch.arm64 : Arch.ia32\n return { path: await getWindowsSignToolExe({ winCodeSign, arch: signtoolArch }) }\n } else {\n const vendor = await getOsslSigncodeBundle(winCodeSign)\n return { path: vendor.path, env: vendor.env }\n }\n}\n\nexport async function getWindowsKitsBundle({ winCodeSign, arch }: { winCodeSign: CodeSignVersionKey | Nullish; arch: Arch }) {\n const overridePath = process.env.ELECTRON_BUILDER_WINDOWS_KITS_PATH\n if (!isEmptyOrSpaces(overridePath)) {\n return { kit: overridePath, appxAssets: overridePath }\n }\n\n const useLegacy = winCodeSign == null || winCodeSign === \"0.0.0\"\n if (useLegacy) {\n const vendorPath = await getLegacyWinCodeSignBin()\n return { kit: path.resolve(vendorPath, \"windows-10\", arch === Arch.arm64 ? \"x64\" : Arch[arch]), appxAssets: vendorPath }\n }\n const file = \"windows-kits-bundle-10_0_26100_0.zip\"\n const vendorPath = await _getWindowsToolsBin(winCodeSign, file)\n return { kit: path.resolve(vendorPath, arch === Arch.ia32 ? \"x86\" : Arch[arch]), appxAssets: vendorPath }\n}\n\nexport function isOldWin6() {\n const winVersion = os.release()\n return winVersion.startsWith(\"6.\") && !winVersion.startsWith(\"6.3\")\n}\n\nasync function getWindowsSignToolExe({ winCodeSign, arch }: { winCodeSign: CodeSignVersionKey | Nullish; arch: Arch }) {\n if (winCodeSign === \"0.0.0\" || winCodeSign == null) {\n // use modern signtool on Windows Server 2012 R2 to be able to sign AppX\n const vendorPath = await getLegacyWinCodeSignBin()\n if (isOldWin6()) {\n return path.resolve(vendorPath, \"windows-6\", \"signtool.exe\")\n } else {\n return path.resolve(vendorPath, \"windows-10\", process.arch === \"ia32\" ? \"ia32\" : \"x64\", \"signtool.exe\")\n }\n }\n const vendorPath = await getWindowsKitsBundle({ winCodeSign, arch })\n return path.resolve(vendorPath.kit, \"signtool.exe\")\n}\n\nasync function getOsslSigncodeBundle(winCodeSign: ToolsetConfig[\"winCodeSign\"] | Nullish) {\n const overridePath = process.env.ELECTRON_BUILDER_OSSL_SIGNCODE_PATH\n if (!isEmptyOrSpaces(overridePath)) {\n return { path: overridePath }\n }\n if (process.platform === \"win32\" || process.env.USE_SYSTEM_OSSLSIGNCODE === \"true\") {\n return { path: \"osslsigncode\" }\n }\n\n if (winCodeSign === \"0.0.0\" || winCodeSign == null) {\n const vendorBase = path.resolve(await getLegacyWinCodeSignBin(), process.platform)\n const vendorPath = process.platform === \"darwin\" ? path.resolve(vendorBase, \"10.12\") : vendorBase\n return { path: path.resolve(vendorPath, \"osslsigncode\"), env: process.platform === \"darwin\" ? computeToolEnv([path.resolve(vendorPath, \"lib\")]) : undefined }\n }\n\n const file = (() => {\n if (process.platform === \"linux\") {\n if (process.arch == \"x64\") {\n return \"win-codesign-linux-amd64.zip\"\n } else if (process.arch === \"arm64\") {\n return \"win-codesign-linux-arm64.zip\"\n }\n return \"win-codesign-linux-i386.zip\"\n }\n // darwin arm64\n if (process.arch === \"arm64\") {\n return \"win-codesign-darwin-arm64.zip\"\n }\n return \"win-codesign-darwin-x86_64.zip\"\n })()\n const vendorPath = await _getWindowsToolsBin(winCodeSign, file)\n return { path: path.resolve(vendorPath, \"osslsigncode\") }\n}\n\nexport async function getRceditBundle(winCodeSign: ToolsetConfig[\"winCodeSign\"] | Nullish) {\n const ia32 = \"rcedit-ia32.exe\"\n const x86 = \"rcedit-x86.exe\"\n const x64 = \"rcedit-x64.exe\"\n const overridePath = process.env.ELECTRON_BUILDER_RCEDIT_PATH?.trim()\n if (!isEmptyOrSpaces(overridePath)) {\n log.debug({ searchFiles: [x86, x64], overridePath }, `Using RCEdit from ELECTRON_BUILDER_RCEDIT_PATH`)\n return { x86: path.join(overridePath, x86), x64: path.join(overridePath, x64) }\n }\n if (winCodeSign === \"0.0.0\" || winCodeSign == null) {\n const vendorPath = await getLegacyWinCodeSignBin()\n return { x86: path.join(vendorPath, ia32), x64: path.join(vendorPath, x64) }\n }\n const file = \"rcedit-windows-2_0_0.zip\"\n const vendorPath = await _getWindowsToolsBin(winCodeSign, file)\n return { x86: path.join(vendorPath, x86), x64: path.join(vendorPath, x64) }\n}\n"]}
1
+ {"version":3,"file":"windows.js","sourceRoot":"","sources":["../../src/toolsets/windows.ts"],"names":[],"mappings":";;;AAmDA,0CAkBC;AAED,oDAcC;AAED,8BAGC;AAkDD,0CAgBC;AAoDD,0CAmCC;AAID,gDAuBC;AAED,gDAaC;AA7RD,+CAAkE;AAElE,uCAA+B;AAC/B,yBAAwB;AACxB,6BAA4B;AAC5B,gDAAmE;AAEnE,qDAA8D;AAC9D,qDAA4D;AAC5D,yCAAmD;AAEnD,SAAS,uBAAuB;IAC9B,OAAO,IAAA,oCAAsB,EAAC;QAC5B,WAAW,EAAE,mBAAmB;QAChC,eAAe,EAAE,sBAAsB;QACvC,SAAS,EAAE,EAAE,CAAC,sBAAsB,CAAC,EAAE,kEAAkE,EAAE;KAC5G,CAAC,CAAA;AACJ,CAAC;AAEY,QAAA,oBAAoB,GAAG;IAClC,OAAO,EAAE;IACP,qEAAqE;KACtE;IACD,OAAO,EAAE;QACP,0BAA0B,EAAE,kEAAkE;QAC9F,+BAA+B,EAAE,kEAAkE;QACnG,gCAAgC,EAAE,kEAAkE;QACpG,8BAA8B,EAAE,kEAAkE;QAClG,8BAA8B,EAAE,kEAAkE;QAClG,6BAA6B,EAAE,kEAAkE;QACjG,8BAA8B,EAAE,kEAAkE;QAClG,sCAAsC,EAAE,kEAAkE;KAC3G;IACD,OAAO,EAAE;QACP,0BAA0B,EAAE,kEAAkE;QAC9F,+BAA+B,EAAE,kEAAkE;QACnG,gCAAgC,EAAE,kEAAkE;QACpG,8BAA8B,EAAE,kEAAkE;QAClG,8BAA8B,EAAE,kEAAkE;QAClG,6BAA6B,EAAE,kEAAkE;QACjG,8BAA8B,EAAE,kEAAkE;QAClG,sCAAsC,EAAE,kEAAkE;KAC3G;CACO,CAAA;AAIV,SAAS,mBAAmB,CAA+B,WAAc,EAAE,IAA4C;IACrH,OAAO,IAAA,2BAAa,EAAC,gBAAgB,WAAW,EAAE,EAAE,IAAc,EAAE,4BAAoB,CAAC,WAAW,CAAC,CAAC,IAAI,CAAW,CAAC,CAAA;AACxH,CAAC;AAEM,KAAK,UAAU,eAAe,CAAC,WAAmD,EAAE,KAAc;IACvG,IAAI,IAAA,2BAAmB,GAAE,EAAE,CAAC;QAC1B,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,CAAA;IACjC,CAAC;IAED,MAAM,YAAY,GAAG,MAAM,IAAA,oCAAqB,EAAC,eAAe,CAAC,CAAA;IACjE,IAAI,YAAY,IAAI,IAAI,EAAE,CAAC;QACzB,OAAO,EAAE,IAAI,EAAE,YAAY,EAAE,CAAA;IAC/B,CAAC;IAED,IAAI,KAAK,EAAE,CAAC;QACV,gFAAgF;QAChF,MAAM,YAAY,GAAS,OAAO,CAAC,IAAI,KAAK,KAAK,CAAC,CAAC,CAAC,mBAAI,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,KAAK,OAAO,CAAC,CAAC,CAAC,mBAAI,CAAC,KAAK,CAAC,CAAC,CAAC,mBAAI,CAAC,IAAI,CAAA;QAChH,OAAO,EAAE,IAAI,EAAE,MAAM,qBAAqB,CAAC,EAAE,WAAW,EAAE,IAAI,EAAE,YAAY,EAAE,CAAC,EAAE,CAAA;IACnF,CAAC;SAAM,CAAC;QACN,MAAM,MAAM,GAAG,MAAM,qBAAqB,CAAC,WAAW,CAAC,CAAA;QACvD,OAAO,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,GAAG,EAAE,MAAM,CAAC,GAAG,EAAE,CAAA;IAC/C,CAAC;AACH,CAAC;AAEM,KAAK,UAAU,oBAAoB,CAAC,EAAE,WAAW,EAAE,IAAI,EAA6D;IACzH,MAAM,OAAO,GAAG,MAAM,IAAA,oCAAqB,EAAC,oCAAoC,CAAC,CAAA;IACjF,IAAI,OAAO,IAAI,IAAI,EAAE,CAAC;QACpB,OAAO,EAAE,GAAG,EAAE,OAAO,EAAE,UAAU,EAAE,OAAO,EAAE,CAAA;IAC9C,CAAC;IAED,MAAM,SAAS,GAAG,WAAW,IAAI,IAAI,IAAI,WAAW,KAAK,OAAO,CAAA;IAChE,IAAI,SAAS,EAAE,CAAC;QACd,MAAM,UAAU,GAAG,MAAM,uBAAuB,EAAE,CAAA;QAClD,OAAO,EAAE,GAAG,EAAE,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE,YAAY,EAAE,IAAI,KAAK,mBAAI,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,mBAAI,CAAC,IAAI,CAAC,CAAC,EAAE,UAAU,EAAE,UAAU,EAAE,CAAA;IAC1H,CAAC;IACD,MAAM,IAAI,GAAG,sCAAsC,CAAA;IACnD,MAAM,UAAU,GAAG,MAAM,mBAAmB,CAAC,WAAW,EAAE,IAAI,CAAC,CAAA;IAC/D,OAAO,EAAE,GAAG,EAAE,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE,IAAI,KAAK,mBAAI,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,mBAAI,CAAC,IAAI,CAAC,CAAC,EAAE,UAAU,EAAE,UAAU,EAAE,CAAA;AAC3G,CAAC;AAED,SAAgB,SAAS;IACvB,MAAM,UAAU,GAAG,EAAE,CAAC,OAAO,EAAE,CAAA;IAC/B,OAAO,UAAU,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,KAAK,CAAC,CAAA;AACrE,CAAC;AAED,KAAK,UAAU,qBAAqB,CAAC,EAAE,WAAW,EAAE,IAAI,EAA6D;IACnH,IAAI,WAAW,KAAK,OAAO,IAAI,WAAW,IAAI,IAAI,EAAE,CAAC;QACnD,wEAAwE;QACxE,MAAM,UAAU,GAAG,MAAM,uBAAuB,EAAE,CAAA;QAClD,IAAI,SAAS,EAAE,EAAE,CAAC;YAChB,OAAO,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE,WAAW,EAAE,cAAc,CAAC,CAAA;QAC9D,CAAC;aAAM,CAAC;YACN,OAAO,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE,YAAY,EAAE,OAAO,CAAC,IAAI,KAAK,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,EAAE,cAAc,CAAC,CAAA;QACzG,CAAC;IACH,CAAC;IACD,MAAM,UAAU,GAAG,MAAM,oBAAoB,CAAC,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC,CAAA;IACpE,OAAO,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,GAAG,EAAE,cAAc,CAAC,CAAA;AACrD,CAAC;AAED,KAAK,UAAU,qBAAqB,CAAC,WAAmD;IACtF,MAAM,gBAAgB,GAAG,MAAM,IAAA,oCAAqB,EAAC,qCAAqC,CAAC,CAAA;IAC3F,IAAI,gBAAgB,IAAI,IAAI,EAAE,CAAC;QAC7B,OAAO,EAAE,IAAI,EAAE,gBAAgB,EAAE,CAAA;IACnC,CAAC;IACD,IAAI,OAAO,CAAC,QAAQ,KAAK,OAAO,IAAI,OAAO,CAAC,GAAG,CAAC,uBAAuB,KAAK,MAAM,EAAE,CAAC;QACnF,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,CAAA;IACjC,CAAC;IAED,IAAI,WAAW,KAAK,OAAO,IAAI,WAAW,IAAI,IAAI,EAAE,CAAC;QACnD,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,uBAAuB,EAAE,EAAE,OAAO,CAAC,QAAQ,CAAC,CAAA;QAClF,MAAM,UAAU,GAAG,OAAO,CAAC,QAAQ,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,UAAU,CAAA;QACjG,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE,cAAc,CAAC,EAAE,GAAG,EAAE,OAAO,CAAC,QAAQ,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAA,4BAAc,EAAC,CAAC,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,EAAE,CAAA;IAC/J,CAAC;IAED,MAAM,IAAI,GAAG,CAAC,GAAG,EAAE;QACjB,IAAI,OAAO,CAAC,QAAQ,KAAK,OAAO,EAAE,CAAC;YACjC,IAAI,OAAO,CAAC,IAAI,IAAI,KAAK,EAAE,CAAC;gBAC1B,OAAO,8BAA8B,CAAA;YACvC,CAAC;iBAAM,IAAI,OAAO,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC;gBACpC,OAAO,8BAA8B,CAAA;YACvC,CAAC;YACD,OAAO,6BAA6B,CAAA;QACtC,CAAC;QACD,eAAe;QACf,IAAI,OAAO,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC;YAC7B,OAAO,+BAA+B,CAAA;QACxC,CAAC;QACD,OAAO,gCAAgC,CAAA;IACzC,CAAC,CAAC,EAAE,CAAA;IACJ,MAAM,UAAU,GAAG,MAAM,mBAAmB,CAAC,WAAW,EAAE,IAAI,CAAC,CAAA;IAC/D,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE,cAAc,CAAC,EAAE,CAAA;AAC3D,CAAC;AAEM,KAAK,UAAU,eAAe,CAAC,WAAmD;IACvF,MAAM,IAAI,GAAG,iBAAiB,CAAA;IAC9B,MAAM,GAAG,GAAG,gBAAgB,CAAA;IAC5B,MAAM,GAAG,GAAG,gBAAgB,CAAA;IAC5B,MAAM,MAAM,GAAG,MAAM,IAAA,oCAAqB,EAAC,8BAA8B,CAAC,CAAA;IAC1E,IAAI,MAAM,IAAI,IAAI,EAAE,CAAC;QACnB,MAAM,YAAY,GAAG,MAAM,CAAA;QAC3B,OAAO,EAAE,GAAG,EAAE,IAAI,CAAC,OAAO,CAAC,YAAY,EAAE,GAAG,CAAC,EAAE,GAAG,EAAE,IAAI,CAAC,OAAO,CAAC,YAAY,EAAE,GAAG,CAAC,EAAE,CAAA;IACvF,CAAC;IACD,IAAI,WAAW,KAAK,OAAO,IAAI,WAAW,IAAI,IAAI,EAAE,CAAC;QACnD,MAAM,UAAU,GAAG,MAAM,uBAAuB,EAAE,CAAA;QAClD,OAAO,EAAE,GAAG,EAAE,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE,IAAI,CAAC,EAAE,GAAG,EAAE,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE,GAAG,CAAC,EAAE,CAAA;IACpF,CAAC;IACD,MAAM,IAAI,GAAG,0BAA0B,CAAA;IACvC,MAAM,UAAU,GAAG,MAAM,mBAAmB,CAAC,WAAW,EAAE,IAAI,CAAC,CAAA;IAC/D,OAAO,EAAE,GAAG,EAAE,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE,GAAG,CAAC,EAAE,GAAG,EAAE,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE,GAAG,CAAC,EAAE,CAAA;AACnF,CAAC;AAED,gFAAgF;AAEhF,SAAS,gBAAgB;IACvB,kGAAkG;IAClG,OAAO,IAAA,2BAAa,EAAC,cAAc,EAAE,iBAAiB,EAAE,kEAAkE,CAAC,CAAA;AAC7H,CAAC;AAED,SAAS,yBAAyB;IAChC,OAAO,IAAA,2BAAa,EAAC,sBAAsB,EAAE,yBAAyB,EAAE,kEAAkE,CAAC,CAAA;AAC7I,CAAC;AAEY,QAAA,aAAa,GAAG;IAC3B,OAAO,EAAE;IACP,iEAAiE;KAClE;IACD,OAAO,EAAE;QACP,iBAAiB;QACjB,yBAAyB,EAAE,kEAAkE;KAC9F;CACO,CAAA;AAIV,KAAK,UAAU,iBAAiB,CAAC,IAA2B,EAAE,YAA4C;;IACxG,IAAI,CAAA,YAAY,aAAZ,YAAY,uBAAZ,YAAY,CAAE,GAAG,MAAI,YAAY,aAAZ,YAAY,uBAAZ,YAAY,CAAE,QAAQ,CAAA,EAAE,CAAC;QAChD,MAAM,aAAa,GAAG,MAAA,YAAY,CAAC,OAAO,mCAAI,YAAY,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA;QACnF,OAAO,IAAA,iCAAmB,EAAC,MAAM,EAAE,aAAa,EAAE,YAAY,CAAC,GAAG,EAAE,YAAY,CAAC,QAAQ,CAAC,CAAA;IAC5F,CAAC;IACD,IAAI,IAAI,KAAK,OAAO,IAAI,IAAI,IAAI,IAAI,EAAE,CAAC;QACrC,OAAO,gBAAgB,EAAE,CAAA;IAC3B,CAAC;IACD,MAAM,IAAI,GAAG,yBAAyB,CAAA;IACtC,OAAO,IAAA,oCAAsB,EAAC;QAC5B,WAAW,EAAE,QAAQ,IAAI,EAAE;QAC3B,eAAe,EAAE,IAAI;QACrB,SAAS,EAAE,EAAE,CAAC,IAAI,CAAC,EAAE,qBAAa,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,EAAE;KACjD,CAAC,CAAA;AACJ,CAAC;AAED,KAAK,UAAU,kBAAkB;IAC/B,MAAM,YAAY,GAAG,MAAM,IAAA,oCAAqB,EAAC,2BAA2B,CAAC,CAAA;IAC7E,IAAI,YAAY,IAAI,IAAI,EAAE,CAAC;QACzB,OAAO,IAAI,CAAA;IACb,CAAC;IACD,IAAI,CAAC,CAAC,MAAM,IAAA,eAAI,EAAC,YAAY,CAAC,CAAC,CAAC,WAAW,EAAE,EAAE,CAAC;QAC9C,MAAM,IAAI,KAAK,CAAC,8DAA8D,YAAY,EAAE,CAAC,CAAA;IAC/F,CAAC;IACD,OAAO,YAAY,CAAA;AACrB,CAAC;AAEM,KAAK,UAAU,eAAe,CAAC,IAAqC,EAAE,YAA4C;IACvH,MAAM,YAAY,GAAG,CAAC,UAAkB,EAAE,EAAE;QAC1C,kFAAkF;QAClF,MAAM,GAAG,GAAG,EAAE,OAAO,EAAE,UAAU,EAAE,CAAA;QACnC,IAAI,OAAO,CAAC,QAAQ,KAAK,QAAQ,EAAE,CAAC;YAClC,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE,KAAK,EAAE,UAAU,CAAC,EAAE,GAAG,EAAE,CAAA;QACnE,CAAC;aAAM,IAAI,OAAO,CAAC,QAAQ,KAAK,OAAO,EAAE,CAAC;YACxC,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE,KAAK,EAAE,cAAc,CAAC,EAAE,GAAG,EAAE,CAAA;QACvE,CAAC;QACD,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE,OAAO,EAAE,UAAU,CAAC,EAAE,GAAG,EAAE,CAAA;IACrE,CAAC,CAAA;IACD,MAAM,gBAAgB,GAAG,CAAC,UAAkB,EAAE,EAAE;QAC9C,0CAA0C;QAC1C,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE,OAAO,CAAC,QAAQ,KAAK,OAAO,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,UAAU,CAAC,EAAE,CAAA;IACvG,CAAC,CAAA;IAED,MAAM,YAAY,GAAG,MAAM,kBAAkB,EAAE,CAAA;IAC/C,IAAI,YAAY,IAAI,IAAI,EAAE,CAAC;QACzB,4DAA4D;QAC5D,IAAI,eAAe,GAAa,YAAY,CAAC,YAAY,CAAC,CAAA;QAC1D,IAAI,MAAM,IAAA,qBAAM,EAAC,eAAe,CAAC,IAAI,CAAC,EAAE,CAAC;YACvC,OAAO,eAAe,CAAA;QACxB,CAAC;QACD,eAAe,GAAG,gBAAgB,CAAC,YAAY,CAAC,CAAA;QAChD,IAAI,MAAM,IAAA,qBAAM,EAAC,eAAe,CAAC,IAAI,CAAC,EAAE,CAAC;YACvC,OAAO,eAAe,CAAA;QACxB,CAAC;QACD,MAAM,IAAI,KAAK,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,eAAe,CAAC,IAAI,CAAC,uDAAuD,YAAY,EAAE,CAAC,CAAA;IAC9H,CAAC;IAED,MAAM,UAAU,GAAG,MAAM,iBAAiB,CAAC,IAAI,EAAE,YAAY,CAAC,CAAA;IAC9D,IAAI,IAAI,KAAK,OAAO,IAAI,IAAI,IAAI,IAAI,EAAE,CAAC;QACrC,OAAO,YAAY,CAAC,UAAU,CAAC,CAAA;IACjC,CAAC;IACD,OAAO,gBAAgB,CAAC,UAAU,CAAC,CAAA;AACrC,CAAC;AAIM,KAAK,UAAU,kBAAkB,CAAC,IAAqC,EAAE,mBAAsD;IACpI,MAAM,mBAAmB,GAAG,KAAK,EAAE,UAAkB,EAAE,IAAqE,EAAE,EAAE;QAC9H,4DAA4D;QAC5D,MAAM,cAAc,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE,SAAS,CAAC,EAAE,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE,SAAS,EAAE,SAAS,CAAC,CAAC,CAAA;QAC5G,KAAK,MAAM,CAAC,IAAI,cAAc,EAAE,CAAC;YAC/B,IAAI,CAAC,MAAM,IAAA,qBAAM,EAAC,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,IAAA,eAAI,EAAC,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,EAAE,CAAC;gBACvD,OAAO,CAAC,CAAA;YACV,CAAC;QACH,CAAC;QACD,MAAM,IAAI,KAAK,CAAC,kCAAkC,IAAI,KAAK,UAAU,iCAAiC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;IACpI,CAAC,CAAA;IACD,MAAM,YAAY,GAAG,MAAM,IAAA,oCAAqB,EAAC,qCAAqC,CAAC,CAAA;IACvF,IAAI,YAAY,IAAI,IAAI,EAAE,CAAC;QACzB,OAAO,mBAAmB,CAAC,YAAY,EAAE,qCAAqC,CAAC,CAAA;IACjF,CAAC;IACD,IAAI,mBAAmB,EAAE,CAAC;QACxB,MAAM,MAAM,GAAG,MAAM,IAAA,iCAAmB,EAAC,gBAAgB,EAAE,mBAAmB,CAAC,OAAO,EAAE,mBAAmB,CAAC,GAAG,EAAE,mBAAmB,CAAC,QAAQ,CAAC,CAAA;QAC9I,OAAO,mBAAmB,CAAC,MAAM,EAAE,uBAAuB,CAAC,CAAA;IAC7D,CAAC;IACD,IAAI,IAAI,KAAK,OAAO,IAAI,IAAI,IAAI,IAAI,EAAE,CAAC;QACrC,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,yBAAyB,EAAE,EAAE,SAAS,CAAC,CAAA;IACnE,CAAC;IACD,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,iBAAiB,CAAC,IAAI,CAAC,EAAE,SAAS,EAAE,SAAS,CAAC,CAAA;AAC1E,CAAC;AAEM,KAAK,UAAU,kBAAkB,CAAC,IAAqC,EAAE,YAA4C;IAC1H,MAAM,cAAc,GAAG,KAAK,EAAE,GAAW,EAAE,KAAa,EAAE,EAAE;QAC1D,MAAM,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,aAAa,CAAC,CAAA;QAC1C,IAAI,CAAC,MAAM,IAAA,qBAAM,EAAC,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,IAAA,eAAI,EAAC,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC;YAClD,OAAO,CAAC,CAAA;QACV,CAAC;QACD,MAAM,IAAI,KAAK,CAAC,4BAA4B,KAAK,eAAe,GAAG,oBAAoB,CAAC,EAAE,CAAC,CAAA;IAC7F,CAAC,CAAA;IACD,MAAM,YAAY,GAAG,MAAM,kBAAkB,EAAE,CAAA;IAC/C,IAAI,YAAY,IAAI,IAAI,EAAE,CAAC;QACzB,OAAO,cAAc,CAAC,YAAY,EAAE,2BAA2B,CAAC,CAAA;IAClE,CAAC;IACD,OAAO,cAAc,CAAC,MAAM,iBAAiB,CAAC,IAAI,EAAE,YAAY,CAAC,EAAE,aAAa,CAAC,CAAA;AACnF,CAAC","sourcesContent":["import { Arch, exists, resolveEnvToolsetPath } from \"builder-util\"\nimport { Nullish } from \"builder-util-runtime\"\nimport { stat } from \"fs-extra\"\nimport * as os from \"os\"\nimport * as path from \"path\"\nimport { getBinFromCustomLoc, getBinFromUrl } from \"../binDownload\"\nimport { ToolsetConfig } from \"../configuration\"\nimport { ToolInfo, computeToolEnv } from \"../util/bundledTool\"\nimport { downloadBuilderToolset } from \"../util/electronGet\"\nimport { isUseSystemSigncode } from \"../util/flags\"\n\nfunction getLegacyWinCodeSignBin(): Promise<string> {\n return downloadBuilderToolset({\n releaseName: \"winCodeSign-2.6.0\",\n filenameWithExt: \"winCodeSign-2.6.0.7z\",\n checksums: { [\"winCodeSign-2.6.0.7z\"]: \"cdaec7154dda7cc31f88d886e2489379a0625a737d610b5ae7f62a12f16743a4\" },\n })\n}\n\nexport const wincodesignChecksums = {\n \"0.0.0\": {\n // legacy — downloads winCodeSign-2.6.0 via getLegacyWinCodeSignBin()\n },\n \"1.0.0\": {\n \"rcedit-windows-2_0_0.zip\": \"589709935902545a8335190b08644cf61b46a9042e34c0c3ef0660a5aeddeaae\",\n \"win-codesign-darwin-arm64.zip\": \"7eb41c3e6e48a75ced6b3384de22185da4bb458960fa410970eedd4e838c5c14\",\n \"win-codesign-darwin-x86_64.zip\": \"3986c97429f002df63490193d7f787281836f055934e3cdd9e69c70a8acb695e\",\n \"win-codesign-linux-amd64.zip\": \"d362a1a981053841554867e3e9dff51fe420fd577b44653df89bd7d3c916b156\",\n \"win-codesign-linux-arm64.zip\": \"fb848d498281f081c937be48dd6ddaf49b0201f32210dfc816ad061c47ecd37b\",\n \"win-codesign-linux-i386.zip\": \"11f8d9ffbf5b01e3bf6321c6d93b9b5e43d0c2d2a9fde1bca07698f2eb967cdf\",\n \"win-codesign-windows-x64.zip\": \"1bd27f9fa553cb14bec8df530cb3caffcfb095f9dd187dab6eaf5e9b7d6e7bff\",\n \"windows-kits-bundle-10_0_26100_0.zip\": \"1a12c81024c3499c212fdc5fac34a918e6d199271a39dfc524f6d8da484329bd\",\n },\n \"1.1.0\": {\n \"rcedit-windows-2_0_0.zip\": \"c66591ebe0919c60231f0bf79ff223e6504bfa69bc13edc1fa8bfc6177b73402\",\n \"win-codesign-darwin-arm64.zip\": \"3f263b0e53cdc5410f6165471b2e808aee3148dc792efa23a7c303e7a01e67b7\",\n \"win-codesign-darwin-x86_64.zip\": \"143fbdfcbc53bc273fa181356be8416829778452621484d39eadbe1ce49979ba\",\n \"win-codesign-linux-amd64.zip\": \"65477fe8e40709b0f998928afb8336f82413b123310bf5adaa8efb7ed6ed0eeb\",\n \"win-codesign-linux-arm64.zip\": \"575b01a966f2b775bbea119de263957378e2bd28cbd064d35f9e981827e37b59\",\n \"win-codesign-linux-i386.zip\": \"aa3ce90e9aaa3449a228a3fa30633cdeb6b2791913786677a85c59db1d985598\",\n \"win-codesign-windows-x64.zip\": \"6e5dcc5d7af7c00a7387e2101d1ad986aef80e963a3526da07bd0e65de484c30\",\n \"windows-kits-bundle-10_0_26100_0.zip\": \"284f18a2fde66e6ecfbefc3065926c9bfdf641761a9e6cd2bd26e18d1e328bf7\",\n },\n} as const\n\ntype CodeSignVersionKey = keyof typeof wincodesignChecksums\n\nfunction _getWindowsToolsBin<V extends CodeSignVersionKey>(winCodeSign: V, file: keyof (typeof wincodesignChecksums)[V]): Promise<string> {\n return getBinFromUrl(`win-codesign@${winCodeSign}`, file as string, wincodesignChecksums[winCodeSign][file] as string)\n}\n\nexport async function getSignToolPath(winCodeSign: ToolsetConfig[\"winCodeSign\"] | Nullish, isWin: boolean): Promise<ToolInfo> {\n if (isUseSystemSigncode()) {\n return { path: \"osslsigncode\" }\n }\n\n const signToolPath = await resolveEnvToolsetPath(\"SIGNTOOL_PATH\")\n if (signToolPath != null) {\n return { path: signToolPath }\n }\n\n if (isWin) {\n // windows kits are always the target arch; signtool can be used by either arch.\n const signtoolArch: Arch = process.arch === \"x64\" ? Arch.x64 : process.arch === \"arm64\" ? Arch.arm64 : Arch.ia32\n return { path: await getWindowsSignToolExe({ winCodeSign, arch: signtoolArch }) }\n } else {\n const vendor = await getOsslSigncodeBundle(winCodeSign)\n return { path: vendor.path, env: vendor.env }\n }\n}\n\nexport async function getWindowsKitsBundle({ winCodeSign, arch }: { winCodeSign: CodeSignVersionKey | Nullish; arch: Arch }) {\n const kitPath = await resolveEnvToolsetPath(\"ELECTRON_BUILDER_WINDOWS_KITS_PATH\")\n if (kitPath != null) {\n return { kit: kitPath, appxAssets: kitPath }\n }\n\n const useLegacy = winCodeSign == null || winCodeSign === \"0.0.0\"\n if (useLegacy) {\n const vendorPath = await getLegacyWinCodeSignBin()\n return { kit: path.resolve(vendorPath, \"windows-10\", arch === Arch.arm64 ? \"x64\" : Arch[arch]), appxAssets: vendorPath }\n }\n const file = \"windows-kits-bundle-10_0_26100_0.zip\"\n const vendorPath = await _getWindowsToolsBin(winCodeSign, file)\n return { kit: path.resolve(vendorPath, arch === Arch.ia32 ? \"x86\" : Arch[arch]), appxAssets: vendorPath }\n}\n\nexport function isOldWin6() {\n const winVersion = os.release()\n return winVersion.startsWith(\"6.\") && !winVersion.startsWith(\"6.3\")\n}\n\nasync function getWindowsSignToolExe({ winCodeSign, arch }: { winCodeSign: CodeSignVersionKey | Nullish; arch: Arch }) {\n if (winCodeSign === \"0.0.0\" || winCodeSign == null) {\n // use modern signtool on Windows Server 2012 R2 to be able to sign AppX\n const vendorPath = await getLegacyWinCodeSignBin()\n if (isOldWin6()) {\n return path.resolve(vendorPath, \"windows-6\", \"signtool.exe\")\n } else {\n return path.resolve(vendorPath, \"windows-10\", process.arch === \"ia32\" ? \"ia32\" : \"x64\", \"signtool.exe\")\n }\n }\n const vendorPath = await getWindowsKitsBundle({ winCodeSign, arch })\n return path.resolve(vendorPath.kit, \"signtool.exe\")\n}\n\nasync function getOsslSigncodeBundle(winCodeSign: ToolsetConfig[\"winCodeSign\"] | Nullish) {\n const osslSigncodePath = await resolveEnvToolsetPath(\"ELECTRON_BUILDER_OSSL_SIGNCODE_PATH\")\n if (osslSigncodePath != null) {\n return { path: osslSigncodePath }\n }\n if (process.platform === \"win32\" || process.env.USE_SYSTEM_OSSLSIGNCODE === \"true\") {\n return { path: \"osslsigncode\" }\n }\n\n if (winCodeSign === \"0.0.0\" || winCodeSign == null) {\n const vendorBase = path.resolve(await getLegacyWinCodeSignBin(), process.platform)\n const vendorPath = process.platform === \"darwin\" ? path.resolve(vendorBase, \"10.12\") : vendorBase\n return { path: path.resolve(vendorPath, \"osslsigncode\"), env: process.platform === \"darwin\" ? computeToolEnv([path.resolve(vendorPath, \"lib\")]) : undefined }\n }\n\n const file = (() => {\n if (process.platform === \"linux\") {\n if (process.arch == \"x64\") {\n return \"win-codesign-linux-amd64.zip\"\n } else if (process.arch === \"arm64\") {\n return \"win-codesign-linux-arm64.zip\"\n }\n return \"win-codesign-linux-i386.zip\"\n }\n // darwin arm64\n if (process.arch === \"arm64\") {\n return \"win-codesign-darwin-arm64.zip\"\n }\n return \"win-codesign-darwin-x86_64.zip\"\n })()\n const vendorPath = await _getWindowsToolsBin(winCodeSign, file)\n return { path: path.resolve(vendorPath, \"osslsigncode\") }\n}\n\nexport async function getRceditBundle(winCodeSign: ToolsetConfig[\"winCodeSign\"] | Nullish) {\n const ia32 = \"rcedit-ia32.exe\"\n const x86 = \"rcedit-x86.exe\"\n const x64 = \"rcedit-x64.exe\"\n const rcedit = await resolveEnvToolsetPath(\"ELECTRON_BUILDER_RCEDIT_PATH\")\n if (rcedit != null) {\n const overridePath = rcedit\n return { x86: path.resolve(overridePath, x86), x64: path.resolve(overridePath, x64) }\n }\n if (winCodeSign === \"0.0.0\" || winCodeSign == null) {\n const vendorPath = await getLegacyWinCodeSignBin()\n return { x86: path.resolve(vendorPath, ia32), x64: path.resolve(vendorPath, x64) }\n }\n const file = \"rcedit-windows-2_0_0.zip\"\n const vendorPath = await _getWindowsToolsBin(winCodeSign, file)\n return { x86: path.resolve(vendorPath, x86), x64: path.resolve(vendorPath, x64) }\n}\n\n// ─── NSIS toolset ────────────────────────────────────────────────────────────\n\nfunction getLegacyNsisBin(): Promise<string> {\n // Warning: Don't use v3.0.4.2 - https://github.com/electron-userland/electron-builder/issues/6334\n return getBinFromUrl(\"nsis-3.0.4.1\", \"nsis-3.0.4.1.7z\", \"9877df902530f96357d13a7a31ae2b9df67f48b11ffc9a1700a7c961574ec5fa\")\n}\n\nfunction getLegacyNsisResourcesBin(): Promise<string> {\n return getBinFromUrl(\"nsis-resources-3.4.1\", \"nsis-resources-3.4.1.7z\", \"593a9a92ef958321293ac6a2ee61e64bf1bd543142a5bd6b3d310709cc924103\")\n}\n\nexport const nsisChecksums = {\n \"0.0.0\": {\n // legacy — uses getLegacyNsisBin() / getLegacyNsisResourcesBin()\n },\n \"1.2.1\": {\n // unified bundle\n \"nsis-bundle-3.12.tar.gz\": \"56997fdefe25e7928a1a68b4583d08b240b66cf660234053b20131a74cc082f4\",\n },\n} as const\n\ntype CustomNsisBinaryConfig = { url: string | null; checksum?: string | null; version?: string | null }\n\nasync function getNsisBundlePath(nsis: ToolsetConfig[\"nsis\"], customBinary?: CustomNsisBinaryConfig | null): Promise<string> {\n if (customBinary?.url && customBinary?.checksum) {\n const binaryVersion = customBinary.version ?? customBinary.checksum.substring(0, 8)\n return getBinFromCustomLoc(\"nsis\", binaryVersion, customBinary.url, customBinary.checksum)\n }\n if (nsis === \"0.0.0\" || nsis == null) {\n return getLegacyNsisBin()\n }\n const file = `nsis-bundle-3.12.tar.gz`\n return downloadBuilderToolset({\n releaseName: `nsis@${nsis}`,\n filenameWithExt: file,\n checksums: { [file]: nsisChecksums[nsis][file] },\n })\n}\n\nasync function getNsisDirOverride(): Promise<string | null> {\n const overridePath = await resolveEnvToolsetPath(\"ELECTRON_BUILDER_NSIS_DIR\")\n if (overridePath == null) {\n return null\n }\n if (!(await stat(overridePath)).isDirectory()) {\n throw new Error(`ELECTRON_BUILDER_NSIS_DIR must be a directory, got a file: ${overridePath}`)\n }\n return overridePath\n}\n\nexport async function getMakeNsisPath(nsis: ToolsetConfig[\"nsis\"] | Nullish, customBinary?: CustomNsisBinaryConfig | null): Promise<ToolInfo> {\n const legacyBundle = (bundlePath: string) => {\n // legacy bundle: platform-specific subdirectories, NSISDIR must be set explicitly\n const env = { NSISDIR: bundlePath }\n if (process.platform === \"darwin\") {\n return { path: path.resolve(bundlePath, \"mac\", \"makensis\"), env }\n } else if (process.platform === \"win32\") {\n return { path: path.resolve(bundlePath, \"Bin\", \"makensis.exe\"), env }\n }\n return { path: path.resolve(bundlePath, \"linux\", \"makensis\"), env }\n }\n const entrypointBundle = (bundlePath: string) => {\n // the entrypoint script auto-sets NSISDIR\n return { path: path.resolve(bundlePath, process.platform === \"win32\" ? \"makensis.cmd\" : \"makensis\") }\n }\n\n const overridePath = await getNsisDirOverride()\n if (overridePath != null) {\n // we have to search both to maintain backward compatibility\n let potentialBundle: ToolInfo = legacyBundle(overridePath)\n if (await exists(potentialBundle.path)) {\n return potentialBundle\n }\n potentialBundle = entrypointBundle(overridePath)\n if (await exists(potentialBundle.path)) {\n return potentialBundle\n }\n throw new Error(`${path.basename(potentialBundle.path)} executable not found in ELECTRON_BUILDER_NSIS_DIR: ${overridePath}`)\n }\n\n const bundlePath = await getNsisBundlePath(nsis, customBinary)\n if (nsis === \"0.0.0\" || nsis == null) {\n return legacyBundle(bundlePath)\n }\n return entrypointBundle(bundlePath)\n}\n\ntype CustomNsisResourcesConfig = { url: string; checksum: string; version: string }\n\nexport async function getNsisPluginsPath(nsis: ToolsetConfig[\"nsis\"] | Nullish, customNsisResources?: CustomNsisResourcesConfig | null): Promise<string> {\n const resolveCustomBundle = async (bundlePath: string, type: \"ELECTRON_BUILDER_NSIS_RESOURCES_DIR\" | \"CUSTOM_NSIS_RESOURCES\") => {\n // we have to search both to maintain backward compatibility\n const potentialPaths = [path.resolve(bundlePath, \"plugins\"), path.resolve(bundlePath, \"windows\", \"Plugins\")]\n for (const p of potentialPaths) {\n if ((await exists(p)) && (await stat(p)).isDirectory()) {\n return p\n }\n }\n throw new Error(`Plugins directory not found in ${type}: ${bundlePath}. Expected to find in one of: ${potentialPaths.join(\", \")}`)\n }\n const overridePath = await resolveEnvToolsetPath(\"ELECTRON_BUILDER_NSIS_RESOURCES_DIR\")\n if (overridePath != null) {\n return resolveCustomBundle(overridePath, \"ELECTRON_BUILDER_NSIS_RESOURCES_DIR\")\n }\n if (customNsisResources) {\n const bundle = await getBinFromCustomLoc(\"nsis-resources\", customNsisResources.version, customNsisResources.url, customNsisResources.checksum)\n return resolveCustomBundle(bundle, \"CUSTOM_NSIS_RESOURCES\")\n }\n if (nsis === \"0.0.0\" || nsis == null) {\n return path.resolve(await getLegacyNsisResourcesBin(), \"plugins\")\n }\n return path.resolve(await getNsisBundlePath(nsis), \"windows\", \"Plugins\")\n}\n\nexport async function getNsisElevatePath(nsis: ToolsetConfig[\"nsis\"] | Nullish, customBinary?: CustomNsisBinaryConfig | null): Promise<string> {\n const resolveElevate = async (dir: string, label: string) => {\n const p = path.resolve(dir, \"elevate.exe\")\n if ((await exists(p)) && (await stat(p)).isFile()) {\n return p\n }\n throw new Error(`elevate.exe not found in ${label} directory: ${dir}. Expected path: ${p}`)\n }\n const overridePath = await getNsisDirOverride()\n if (overridePath != null) {\n return resolveElevate(overridePath, \"ELECTRON_BUILDER_NSIS_DIR\")\n }\n return resolveElevate(await getNsisBundlePath(nsis, customBinary), \"NSIS bundle\")\n}\n"]}
@@ -30,7 +30,10 @@ export interface ElectronDownloadOptions {
30
30
  platform?: ElectronPlatformName;
31
31
  arch?: string;
32
32
  }
33
- export declare function getCacheDirectory(isAvoidSystemOnWindows?: boolean, allowEnvVarOverride?: boolean): string;
33
+ export declare function getCacheDirectory(options: {
34
+ isAvoidSystemOnWindows?: boolean;
35
+ allowEnvVarOverride: boolean;
36
+ }): string;
34
37
  export declare function extractArchive(file: string, dir: string): Promise<void>;
35
38
  /**
36
39
  * Downloads a generic artifact (.tar.gz or .zip) from a GitHub release.
@@ -28,8 +28,9 @@ function hashUrlSafe(input, length = 6) {
28
28
  const out = hash.toString(36);
29
29
  return out.length >= length ? out.slice(0, length) : out.padStart(length, "0");
30
30
  }
31
- function getCacheDirectory(isAvoidSystemOnWindows = false, allowEnvVarOverride = true) {
31
+ function getCacheDirectory(options) {
32
32
  var _a, _b, _c, _d, _e;
33
+ const { isAvoidSystemOnWindows = true, allowEnvVarOverride } = options;
33
34
  const env = (_a = process.env.ELECTRON_BUILDER_CACHE) === null || _a === void 0 ? void 0 : _a.trim();
34
35
  if (allowEnvVarOverride && env && path.parse(env).root) {
35
36
  return env;
@@ -43,6 +44,7 @@ function getCacheDirectory(isAvoidSystemOnWindows = false, allowEnvVarOverride =
43
44
  if (platform === "win32") {
44
45
  const localAppData = (_b = process.env.LOCALAPPDATA) === null || _b === void 0 ? void 0 : _b.trim();
45
46
  const username = (_d = (_c = process.env.USERNAME) === null || _c === void 0 ? void 0 : _c.trim()) === null || _d === void 0 ? void 0 : _d.toLowerCase();
47
+ // https://github.com/electron-userland/electron-builder/issues/1164
46
48
  const isSystemUser = isAvoidSystemOnWindows && (((_e = localAppData === null || localAppData === void 0 ? void 0 : localAppData.toLowerCase()) === null || _e === void 0 ? void 0 : _e.includes("\\windows\\system32\\")) || username === "system");
47
49
  if (!localAppData || isSystemUser) {
48
50
  return path.join(os.tmpdir(), `${appName}-cache`);
@@ -112,7 +114,7 @@ async function extractArchive(file, dir) {
112
114
  const tmpDir = `${dir}.tmp`;
113
115
  await fs.mkdir(tmpDir, { recursive: true });
114
116
  const release = await lockfile.lock(tmpDir, {
115
- retries: { retries: 5, minTimeout: 1000, maxTimeout: 5000 },
117
+ retries: { retries: 15, minTimeout: 1000, maxTimeout: 5000 },
116
118
  stale: 120000, // Increased from 60s to allow long-running extractions
117
119
  });
118
120
  try {
@@ -157,12 +159,13 @@ async function extractArchive(file, dir) {
157
159
  }
158
160
  }
159
161
  async function downloadArtifactToFile(config, label) {
160
- var _a, _b;
162
+ var _a, _b, _c, _d;
161
163
  let lastLoggedMilestone = -1;
162
164
  const state = { bar: undefined };
163
165
  const downloadOptions = {
164
166
  timeout: { request: 10 * 60 * 1000 }, // prevent indefinite hang on stalled connections
165
167
  ...config.downloadOptions,
168
+ agent: (_b = (_a = config.downloadOptions) === null || _a === void 0 ? void 0 : _a.agent) !== null && _b !== void 0 ? _b : (0, builder_util_1.buildGotProxyAgent)(),
166
169
  getProgressCallback: info => {
167
170
  // @electron/get passes downloadOptions (including this callback) to its internal
168
171
  // SHASUMS256.txt validation download. That file is tiny (<1 MB) and fires at 100%
@@ -214,8 +217,8 @@ async function downloadArtifactToFile(config, label) {
214
217
  return filePath;
215
218
  }
216
219
  finally {
217
- (_a = state.bar) === null || _a === void 0 ? void 0 : _a.update(100);
218
- (_b = state.bar) === null || _b === void 0 ? void 0 : _b.terminate();
220
+ (_c = state.bar) === null || _c === void 0 ? void 0 : _c.update(100);
221
+ (_d = state.bar) === null || _d === void 0 ? void 0 : _d.terminate();
219
222
  }
220
223
  }
221
224
  /**
@@ -236,7 +239,7 @@ async function downloadAndExtract(config, extractDir, label) {
236
239
  }
237
240
  }
238
241
  const release = await lockfile.lock(extractDir, {
239
- retries: { retries: 5, minTimeout: 1000, maxTimeout: 5000 },
242
+ retries: { retries: 15, minTimeout: 1000, maxTimeout: 5000 },
240
243
  stale: 120000,
241
244
  });
242
245
  let downloadedFile = null;
@@ -286,22 +289,19 @@ async function downloadAndExtract(config, extractDir, label) {
286
289
  async function downloadBuilderToolset(options) {
287
290
  const { releaseName, filenameWithExt, checksums, githubOrgRepo = "electron-userland/electron-builder-binaries", overrideUrl } = options;
288
291
  const baseUrl = getBinariesMirrorUrl(githubOrgRepo);
289
- const hashInput = overrideUrl ? `${overrideUrl}/${filenameWithExt}` : `${baseUrl}${releaseName}/${filenameWithExt}`;
290
- const suffix = hashUrlSafe(hashInput, 5);
292
+ const fullUrl = overrideUrl ? `${overrideUrl}/${filenameWithExt}` : `${baseUrl}${releaseName}/${filenameWithExt}`;
293
+ const suffix = hashUrlSafe(fullUrl, 5);
291
294
  const folderName = `${filenameWithExt.replace(/\.(tar\.gz|tgz|zip|7z)$/, "")}-${suffix}`;
292
- const extractDir = path.join(getCacheDirectory(), releaseName, folderName);
293
- const mirrorOptions = overrideUrl
294
- ? { resolveAssetURL: async () => Promise.resolve(`${overrideUrl}/${filenameWithExt}`) }
295
- : {
296
- // `${mirror}${customDir}/${customFilename}`
297
- mirror: baseUrl,
298
- customDir: releaseName,
299
- customFilename: filenameWithExt,
300
- };
295
+ const extractDir = path.join(getCacheDirectory({ allowEnvVarOverride: true }), releaseName, folderName);
296
+ // Use resolveAssetURL so @electron/get's ELECTRON_MIRROR env var check cannot override
297
+ // the builder-binaries URL we've already resolved (see getArtifactRemoteURL in @electron/get).
298
+ const mirrorOptions = {
299
+ resolveAssetURL: async () => Promise.resolve(fullUrl),
300
+ };
301
301
  const config = {
302
302
  version: "9.9.9", // must be >1.3.2 to bypass @electron/get validation shortcut
303
303
  artifactName: filenameWithExt,
304
- cacheRoot: path.resolve(getCacheDirectory(), "downloads"),
304
+ cacheRoot: path.resolve(getCacheDirectory({ allowEnvVarOverride: true }), "downloads"),
305
305
  cacheMode: resolveCacheMode(),
306
306
  ...(checksums != null ? { checksums } : { unsafelyDisableChecksums: true }),
307
307
  mirrorOptions,
@@ -364,7 +364,7 @@ async function downloadElectronArtifact(options) {
364
364
  const artifactConfig = buildElectronArtifactConfig(options);
365
365
  const suffix = hashUrlSafe(JSON.stringify(artifactConfig), 5);
366
366
  const folderName = `${artifactName}-v${version}-${platform}-${arch}-${suffix}`;
367
- const extractDir = path.join(getCacheDirectory(), `${artifactName}-v${version}`, folderName);
367
+ const extractDir = path.join(getCacheDirectory({ allowEnvVarOverride: true }), `${artifactName}-v${version}`, folderName);
368
368
  return downloadAndExtract(artifactConfig, extractDir, artifactName);
369
369
  }
370
370
  /**