app-builder-lib 27.0.0-alpha.8 → 27.0.0-alpha.9

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 (157) hide show
  1. package/dist/asar/asarUtil.js +21 -11
  2. package/dist/asar/asarUtil.js.map +1 -1
  3. package/dist/configuration.d.ts +31 -1
  4. package/dist/configuration.d.ts.map +1 -1
  5. package/dist/configuration.js.map +1 -1
  6. package/dist/electron/ElectronFramework.d.ts +2 -1
  7. package/dist/electron/ElectronFramework.d.ts.map +1 -1
  8. package/dist/electron/ElectronFramework.js +14 -7
  9. package/dist/electron/ElectronFramework.js.map +1 -1
  10. package/dist/electron/mac/electronMac.js +2 -6
  11. package/dist/electron/mac/electronMac.js.map +1 -1
  12. package/dist/index.d.ts.map +1 -1
  13. package/dist/index.js +13 -1
  14. package/dist/index.js.map +1 -1
  15. package/dist/indexInternal.d.ts +9 -2
  16. package/dist/indexInternal.d.ts.map +1 -1
  17. package/dist/indexInternal.js +8 -2
  18. package/dist/indexInternal.js.map +1 -1
  19. package/dist/linuxPackager.d.ts.map +1 -1
  20. package/dist/linuxPackager.js +19 -1
  21. package/dist/linuxPackager.js.map +1 -1
  22. package/dist/macPackager.d.ts.map +1 -1
  23. package/dist/macPackager.js +20 -0
  24. package/dist/macPackager.js.map +1 -1
  25. package/dist/node-module-collector/index.d.ts.map +1 -1
  26. package/dist/node-module-collector/index.js +47 -16
  27. package/dist/node-module-collector/index.js.map +1 -1
  28. package/dist/node-module-collector/moduleManager.d.ts.map +1 -1
  29. package/dist/node-module-collector/moduleManager.js +16 -8
  30. package/dist/node-module-collector/moduleManager.js.map +1 -1
  31. package/dist/node-module-collector/nodeModulesCollector.d.ts +7 -2
  32. package/dist/node-module-collector/nodeModulesCollector.d.ts.map +1 -1
  33. package/dist/node-module-collector/nodeModulesCollector.js +13 -17
  34. package/dist/node-module-collector/nodeModulesCollector.js.map +1 -1
  35. package/dist/node-module-collector/pnpmNodeModulesCollector.d.ts +44 -4
  36. package/dist/node-module-collector/pnpmNodeModulesCollector.d.ts.map +1 -1
  37. package/dist/node-module-collector/pnpmNodeModulesCollector.js +130 -34
  38. package/dist/node-module-collector/pnpmNodeModulesCollector.js.map +1 -1
  39. package/dist/options/PlatformSpecificBuildOptions.d.ts +29 -0
  40. package/dist/options/PlatformSpecificBuildOptions.d.ts.map +1 -1
  41. package/dist/options/PlatformSpecificBuildOptions.js.map +1 -1
  42. package/dist/options/SquirrelWindowsOptions.d.ts +0 -5
  43. package/dist/options/SquirrelWindowsOptions.d.ts.map +1 -1
  44. package/dist/options/SquirrelWindowsOptions.js.map +1 -1
  45. package/dist/options/macOptions.d.ts +11 -6
  46. package/dist/options/macOptions.d.ts.map +1 -1
  47. package/dist/options/macOptions.js.map +1 -1
  48. package/dist/packager.d.ts +2 -0
  49. package/dist/packager.d.ts.map +1 -1
  50. package/dist/packager.js +47 -0
  51. package/dist/packager.js.map +1 -1
  52. package/dist/packagerApi.d.ts +1 -1
  53. package/dist/packagerApi.d.ts.map +1 -1
  54. package/dist/packagerApi.js.map +1 -1
  55. package/dist/platformPackager.d.ts +13 -1
  56. package/dist/platformPackager.d.ts.map +1 -1
  57. package/dist/platformPackager.js +26 -2
  58. package/dist/platformPackager.js.map +1 -1
  59. package/dist/publish/PublishManager.d.ts.map +1 -1
  60. package/dist/publish/PublishManager.js +89 -7
  61. package/dist/publish/PublishManager.js.map +1 -1
  62. package/dist/publish/updateInfoBuilder.d.ts.map +1 -1
  63. package/dist/publish/updateInfoBuilder.js +57 -4
  64. package/dist/publish/updateInfoBuilder.js.map +1 -1
  65. package/dist/targets/ArchiveTarget.js +1 -1
  66. package/dist/targets/ArchiveTarget.js.map +1 -1
  67. package/dist/targets/archive.d.ts +12 -0
  68. package/dist/targets/archive.d.ts.map +1 -1
  69. package/dist/targets/archive.js +44 -1
  70. package/dist/targets/archive.js.map +1 -1
  71. package/dist/targets/differentialUpdateInfoBuilder.d.ts +2 -1
  72. package/dist/targets/differentialUpdateInfoBuilder.d.ts.map +1 -1
  73. package/dist/targets/differentialUpdateInfoBuilder.js +2 -2
  74. package/dist/targets/differentialUpdateInfoBuilder.js.map +1 -1
  75. package/dist/targets/linux/FlatpakTarget.d.ts.map +1 -1
  76. package/dist/targets/linux/FlatpakTarget.js +5 -1
  77. package/dist/targets/linux/FlatpakTarget.js.map +1 -1
  78. package/dist/targets/linux/FpmTarget.d.ts.map +1 -1
  79. package/dist/targets/linux/FpmTarget.js +25 -2
  80. package/dist/targets/linux/FpmTarget.js.map +1 -1
  81. package/dist/targets/linux/LinuxTargetHelper.d.ts +1 -0
  82. package/dist/targets/linux/LinuxTargetHelper.d.ts.map +1 -1
  83. package/dist/targets/linux/LinuxTargetHelper.js +17 -1
  84. package/dist/targets/linux/LinuxTargetHelper.js.map +1 -1
  85. package/dist/targets/linux/snap/core24.js +3 -3
  86. package/dist/targets/linux/snap/core24.js.map +1 -1
  87. package/dist/targets/linux/snap/coreLegacy.js +1 -1
  88. package/dist/targets/linux/snap/coreLegacy.js.map +1 -1
  89. package/dist/targets/mac/MacTargetHelper.d.ts +70 -4
  90. package/dist/targets/mac/MacTargetHelper.d.ts.map +1 -1
  91. package/dist/targets/mac/MacTargetHelper.js +294 -36
  92. package/dist/targets/mac/MacTargetHelper.js.map +1 -1
  93. package/dist/targets/mac/pkg.d.ts +16 -0
  94. package/dist/targets/mac/pkg.d.ts.map +1 -1
  95. package/dist/targets/mac/pkg.js +26 -0
  96. package/dist/targets/mac/pkg.js.map +1 -1
  97. package/dist/targets/win/MsiTarget.d.ts.map +1 -1
  98. package/dist/targets/win/MsiTarget.js +6 -3
  99. package/dist/targets/win/MsiTarget.js.map +1 -1
  100. package/dist/targets/win/nsis/Defines.d.ts +2 -0
  101. package/dist/targets/win/nsis/Defines.d.ts.map +1 -1
  102. package/dist/targets/win/nsis/Defines.js.map +1 -1
  103. package/dist/targets/win/nsis/NsisTarget.d.ts +18 -0
  104. package/dist/targets/win/nsis/NsisTarget.d.ts.map +1 -1
  105. package/dist/targets/win/nsis/NsisTarget.js +79 -19
  106. package/dist/targets/win/nsis/NsisTarget.js.map +1 -1
  107. package/dist/targets/win/nsis/WebInstallerTarget.d.ts.map +1 -1
  108. package/dist/targets/win/nsis/WebInstallerTarget.js +19 -12
  109. package/dist/targets/win/nsis/WebInstallerTarget.js.map +1 -1
  110. package/dist/targets/win/nsis/nsisOptions.d.ts +29 -4
  111. package/dist/targets/win/nsis/nsisOptions.d.ts.map +1 -1
  112. package/dist/targets/win/nsis/nsisOptions.js.map +1 -1
  113. package/dist/toolsets/wine.d.ts.map +1 -1
  114. package/dist/toolsets/wine.js +17 -12
  115. package/dist/toolsets/wine.js.map +1 -1
  116. package/dist/util/NodeModuleCopyHelper.js +12 -4
  117. package/dist/util/NodeModuleCopyHelper.js.map +1 -1
  118. package/dist/util/appFileCopier.d.ts +5 -0
  119. package/dist/util/appFileCopier.d.ts.map +1 -1
  120. package/dist/util/appFileCopier.js +39 -1
  121. package/dist/util/appFileCopier.js.map +1 -1
  122. package/dist/util/config/config.d.ts.map +1 -1
  123. package/dist/util/config/config.js +4 -0
  124. package/dist/util/config/config.js.map +1 -1
  125. package/dist/util/config/legacyConfigGuard.d.ts +7 -0
  126. package/dist/util/config/legacyConfigGuard.d.ts.map +1 -0
  127. package/dist/util/config/legacyConfigGuard.js +187 -0
  128. package/dist/util/config/legacyConfigGuard.js.map +1 -0
  129. package/dist/util/config/legacyOptions.d.ts +73 -0
  130. package/dist/util/config/legacyOptions.d.ts.map +1 -0
  131. package/dist/util/config/legacyOptions.js +369 -0
  132. package/dist/util/config/legacyOptions.js.map +1 -0
  133. package/dist/util/config/schemaValidator.d.ts.map +1 -1
  134. package/dist/util/config/schemaValidator.js +16 -0
  135. package/dist/util/config/schemaValidator.js.map +1 -1
  136. package/dist/util/electronGet.d.ts +0 -4
  137. package/dist/util/electronGet.d.ts.map +1 -1
  138. package/dist/util/electronGet.js +17 -0
  139. package/dist/util/electronGet.js.map +1 -1
  140. package/dist/util/flags.d.ts +5 -0
  141. package/dist/util/flags.d.ts.map +1 -1
  142. package/dist/util/flags.js +124 -1
  143. package/dist/util/flags.js.map +1 -1
  144. package/dist/util/packageMetadata.js +11 -0
  145. package/dist/util/packageMetadata.js.map +1 -1
  146. package/dist/util/resolve.js +1 -1
  147. package/dist/util/resolve.js.map +1 -1
  148. package/dist/version.d.ts +1 -1
  149. package/dist/version.js +1 -1
  150. package/dist/version.js.map +1 -1
  151. package/package.json +10 -10
  152. package/scheme.json +368 -23
  153. package/templates/entitlements.mac.adhoc.plist +15 -0
  154. package/templates/entitlements.mac.plist +9 -6
  155. package/templates/nsis/include/installer.nsh +1 -30
  156. package/templates/nsis/include/webPackage.nsh +33 -23
  157. package/templates/nsis/multiUserUi.nsh +1 -1
package/scheme.json CHANGED
@@ -520,6 +520,23 @@
520
520
  "string"
521
521
  ]
522
522
  },
523
+ "updateManifestPublicKey": {
524
+ "anyOf": [
525
+ {
526
+ "items": {
527
+ "type": "string"
528
+ },
529
+ "type": "array"
530
+ },
531
+ {
532
+ "type": [
533
+ "null",
534
+ "string"
535
+ ]
536
+ }
537
+ ],
538
+ "description": "Ed25519 public key(s) (PEM or base64 SPKI) used by electron-updater to verify the signed update\nmanifest before downloading — the install's trust list. A manifest is accepted when any listed key\nvalidates one of its signatures. Embedded into `app-update.yml` at build time when update manifest\nsigning is enabled: a single string for one key, an array for several. Managed by electron-builder —\npopulated from `updateManifest.publicKey` or derived from the configured signing key(s); setting it\nmanually in the `publish` configuration is rejected as a configuration error."
539
+ },
523
540
  "updaterCacheDirName": {
524
541
  "type": [
525
542
  "null",
@@ -654,6 +671,23 @@
654
671
  "number"
655
672
  ]
656
673
  },
674
+ "updateManifestPublicKey": {
675
+ "anyOf": [
676
+ {
677
+ "items": {
678
+ "type": "string"
679
+ },
680
+ "type": "array"
681
+ },
682
+ {
683
+ "type": [
684
+ "null",
685
+ "string"
686
+ ]
687
+ }
688
+ ],
689
+ "description": "Ed25519 public key(s) (PEM or base64 SPKI) used by electron-updater to verify the signed update\nmanifest before downloading — the install's trust list. A manifest is accepted when any listed key\nvalidates one of its signatures. Embedded into `app-update.yml` at build time when update manifest\nsigning is enabled: a single string for one key, an array for several. Managed by electron-builder —\npopulated from `updateManifest.publicKey` or derived from the configured signing key(s); setting it\nmanually in the `publish` configuration is rejected as a configuration error."
690
+ },
657
691
  "updateProvider": {
658
692
  "description": "The Provider to provide UpdateInfo regarding available updates. Required\nto use custom providers with electron-updater.",
659
693
  "typeof": "function"
@@ -935,7 +969,8 @@
935
969
  "enum": [
936
970
  "dir",
937
971
  "file",
938
- "link"
972
+ "link",
973
+ "position"
939
974
  ],
940
975
  "type": "string"
941
976
  },
@@ -1247,14 +1282,14 @@
1247
1282
  "type": "array"
1248
1283
  },
1249
1284
  "entitlements": {
1250
- "description": "Path to the main app entitlements file.\nFalls back to `build/entitlements.mac.plist` if it exists, then to `@electron/osx-sign`'s\nbuilt-in defaults.",
1285
+ "description": "Path to the main app entitlements file. Resolved relative to the build resources directory, then the project directory.\nFalls back to `build/entitlements.mac.plist` (or `build/entitlements.mas.plist` for MAS targets) if it exists.\nOtherwise `mac` builds use the bundled default, which grants only `com.apple.security.cs.allow-jit`\n(ad-hoc builds use a bundled ad-hoc template that also disables library validation), and MAS builds use\n`@electron/osx-sign`'s built-in sandboxed `default.mas.plist`.",
1251
1286
  "type": [
1252
1287
  "null",
1253
1288
  "string"
1254
1289
  ]
1255
1290
  },
1256
1291
  "entitlementsInherit": {
1257
- "description": "Path to child entitlements inherited by embedded frameworks and bundles.\nFalls back to `build/entitlements.mac.inherit.plist` if it exists.",
1292
+ "description": "Path to child entitlements inherited by embedded frameworks and bundles. Resolved relative to the build resources directory, then the project directory.\nFalls back to `build/entitlements.mac.inherit.plist` (or `build/entitlements.mas.inherit.plist` for MAS targets) if it exists.\nOtherwise nested binaries receive `@electron/osx-sign`'s per-file defaults (renderer/GPU helpers: `allow-jit`;\nplugin helper: Chromium's looser set; everything else: `default.darwin.plist`); ad-hoc `mac` builds use the\nbundled ad-hoc template instead.",
1258
1293
  "type": [
1259
1294
  "null",
1260
1295
  "string"
@@ -1755,6 +1790,23 @@
1755
1790
  "number"
1756
1791
  ]
1757
1792
  },
1793
+ "updateManifestPublicKey": {
1794
+ "anyOf": [
1795
+ {
1796
+ "items": {
1797
+ "type": "string"
1798
+ },
1799
+ "type": "array"
1800
+ },
1801
+ {
1802
+ "type": [
1803
+ "null",
1804
+ "string"
1805
+ ]
1806
+ }
1807
+ ],
1808
+ "description": "Ed25519 public key(s) (PEM or base64 SPKI) used by electron-updater to verify the signed update\nmanifest before downloading — the install's trust list. A manifest is accepted when any listed key\nvalidates one of its signatures. Embedded into `app-update.yml` at build time when update manifest\nsigning is enabled: a single string for one key, an array for several. Managed by electron-builder —\npopulated from `updateManifest.publicKey` or derived from the configured signing key(s); setting it\nmanually in the `publish` configuration is rejected as a configuration error."
1809
+ },
1758
1810
  "updaterCacheDirName": {
1759
1811
  "type": [
1760
1812
  "null",
@@ -1897,6 +1949,23 @@
1897
1949
  "string"
1898
1950
  ]
1899
1951
  },
1952
+ "updateManifestPublicKey": {
1953
+ "anyOf": [
1954
+ {
1955
+ "items": {
1956
+ "type": "string"
1957
+ },
1958
+ "type": "array"
1959
+ },
1960
+ {
1961
+ "type": [
1962
+ "null",
1963
+ "string"
1964
+ ]
1965
+ }
1966
+ ],
1967
+ "description": "Ed25519 public key(s) (PEM or base64 SPKI) used by electron-updater to verify the signed update\nmanifest before downloading — the install's trust list. A manifest is accepted when any listed key\nvalidates one of its signatures. Embedded into `app-update.yml` at build time when update manifest\nsigning is enabled: a single string for one key, an array for several. Managed by electron-builder —\npopulated from `updateManifest.publicKey` or derived from the configured signing key(s); setting it\nmanually in the `publish` configuration is rejected as a configuration error."
1968
+ },
1900
1969
  "updaterCacheDirName": {
1901
1970
  "type": [
1902
1971
  "null",
@@ -1979,6 +2048,23 @@
1979
2048
  "string"
1980
2049
  ]
1981
2050
  },
2051
+ "updateManifestPublicKey": {
2052
+ "anyOf": [
2053
+ {
2054
+ "items": {
2055
+ "type": "string"
2056
+ },
2057
+ "type": "array"
2058
+ },
2059
+ {
2060
+ "type": [
2061
+ "null",
2062
+ "string"
2063
+ ]
2064
+ }
2065
+ ],
2066
+ "description": "Ed25519 public key(s) (PEM or base64 SPKI) used by electron-updater to verify the signed update\nmanifest before downloading — the install's trust list. A manifest is accepted when any listed key\nvalidates one of its signatures. Embedded into `app-update.yml` at build time when update manifest\nsigning is enabled: a single string for one key, an array for several. Managed by electron-builder —\npopulated from `updateManifest.publicKey` or derived from the configured signing key(s); setting it\nmanually in the `publish` configuration is rejected as a configuration error."
2067
+ },
1982
2068
  "updaterCacheDirName": {
1983
2069
  "type": [
1984
2070
  "null",
@@ -2090,6 +2176,23 @@
2090
2176
  "number"
2091
2177
  ]
2092
2178
  },
2179
+ "updateManifestPublicKey": {
2180
+ "anyOf": [
2181
+ {
2182
+ "items": {
2183
+ "type": "string"
2184
+ },
2185
+ "type": "array"
2186
+ },
2187
+ {
2188
+ "type": [
2189
+ "null",
2190
+ "string"
2191
+ ]
2192
+ }
2193
+ ],
2194
+ "description": "Ed25519 public key(s) (PEM or base64 SPKI) used by electron-updater to verify the signed update\nmanifest before downloading — the install's trust list. A manifest is accepted when any listed key\nvalidates one of its signatures. Embedded into `app-update.yml` at build time when update manifest\nsigning is enabled: a single string for one key, an array for several. Managed by electron-builder —\npopulated from `updateManifest.publicKey` or derived from the configured signing key(s); setting it\nmanually in the `publish` configuration is rejected as a configuration error."
2195
+ },
2093
2196
  "updaterCacheDirName": {
2094
2197
  "type": [
2095
2198
  "null",
@@ -2478,6 +2581,17 @@
2478
2581
  "default": "AppImage",
2479
2582
  "description": "Target package type: list of `AppImage`, `flatpak`, `snap`, `deb`, `rpm`, `freebsd`, `pacman`, `p5p`, `apk`, `7z`, `zip`, `tar.xz`, `tar.lz`, `tar.gz`, `tar.bz2`, `dir`.\n\nelectron-builder [docker image](https://www.electron.build/docs/features/multi-platform-build#docker) can be used to build Linux targets on any platform.\n\nPlease [do not put an AppImage into another archive](https://github.com/probonopd/AppImageKit/wiki/Creating-AppImages#common-mistake) like a .zip or .tar.gz."
2480
2583
  },
2584
+ "updateManifest": {
2585
+ "anyOf": [
2586
+ {
2587
+ "$ref": "#/definitions/UpdateManifestSigningOptions"
2588
+ },
2589
+ {
2590
+ "type": "null"
2591
+ }
2592
+ ],
2593
+ "description": "Ed25519 signing of the auto-update manifest (`latest*.yml`). When configured, each manifest is signed\nand electron-updater verifies the signature (against the embedded public key) before downloading an update.\nPrefer supplying the key via the `ELECTRON_BUILDER_UPDATE_SIGN_KEY` / `ELECTRON_BUILDER_UPDATE_SIGN_KEY_FILE` environment variables in CI."
2594
+ },
2481
2595
  "vendor": {
2482
2596
  "description": "The vendor. Defaults to [author](https://www.electron.build/configuration#author).",
2483
2597
  "type": [
@@ -3212,6 +3326,17 @@
3212
3326
  }
3213
3327
  ],
3214
3328
  "description": "Options forwarded to `@electron/universal` when building a universal (multi-arch) app.\nHas no effect unless the target arch is `universal`."
3329
+ },
3330
+ "updateManifest": {
3331
+ "anyOf": [
3332
+ {
3333
+ "$ref": "#/definitions/UpdateManifestSigningOptions"
3334
+ },
3335
+ {
3336
+ "type": "null"
3337
+ }
3338
+ ],
3339
+ "description": "Ed25519 signing of the auto-update manifest (`latest*.yml`). When configured, each manifest is signed\nand electron-updater verifies the signature (against the embedded public key) before downloading an update.\nPrefer supplying the key via the `ELECTRON_BUILDER_UPDATE_SIGN_KEY` / `ELECTRON_BUILDER_UPDATE_SIGN_KEY_FILE` environment variables in CI."
3215
3340
  }
3216
3341
  },
3217
3342
  "type": "object"
@@ -3693,6 +3818,17 @@
3693
3818
  }
3694
3819
  ],
3695
3820
  "description": "Options forwarded to `@electron/universal` when building a universal (multi-arch) app.\nHas no effect unless the target arch is `universal`."
3821
+ },
3822
+ "updateManifest": {
3823
+ "anyOf": [
3824
+ {
3825
+ "$ref": "#/definitions/UpdateManifestSigningOptions"
3826
+ },
3827
+ {
3828
+ "type": "null"
3829
+ }
3830
+ ],
3831
+ "description": "Ed25519 signing of the auto-update manifest (`latest*.yml`). When configured, each manifest is signed\nand electron-updater verifies the signature (against the embedded public key) before downloading an update.\nPrefer supplying the key via the `ELECTRON_BUILDER_UPDATE_SIGN_KEY` / `ELECTRON_BUILDER_UPDATE_SIGN_KEY_FILE` environment variables in CI."
3696
3832
  }
3697
3833
  },
3698
3834
  "type": "object"
@@ -4367,8 +4503,14 @@
4367
4503
  "type": "boolean"
4368
4504
  },
4369
4505
  "differentialPackage": {
4370
- "description": "Marks the package as built with differential download support for the update server.",
4371
- "type": "boolean"
4506
+ "default": true,
4507
+ "description": "Marks the package as built with differential download support for the update server, and selects how the\napp package is compressed:\n\n- `false` — no differential download support.\n- `\"store-asar\"` — differential-aware, with the app's `resources/app.asar` stored uncompressed (7-Zip\n `Copy`) inside the package. The differential updater diffs the *compressed* package with a\n content-defined blockmap, and the asar is a single compressed member — so any change to app code\n re-downloads the entire compressed asar (~100% of the member; its header rewrite alone diverges every\n block). Storing it keeps unchanged regions byte-identical between releases, making the delta\n proportional to what actually changed (measured on a ~32 MB asar: a one-line source change cost 0.2%\n instead of 100%). Trade-off: the installer and full package grow by roughly what compressing the asar\n saved.\n- anything else (`true`, `\"compressed\"`, unset) — differential-aware, whole package compressed.",
4508
+ "enum": [
4509
+ "compressed",
4510
+ false,
4511
+ "store-asar",
4512
+ true
4513
+ ]
4372
4514
  },
4373
4515
  "displayLanguageSelector": {
4374
4516
  "default": false,
@@ -4383,11 +4525,21 @@
4383
4525
  ]
4384
4526
  },
4385
4527
  "include": {
4386
- "description": "The path to NSIS include script to customize installer. Defaults to `build/installer.nsh`. See [Custom NSIS script](#custom-nsis-script).",
4387
- "type": [
4388
- "null",
4389
- "string"
4390
- ]
4528
+ "anyOf": [
4529
+ {
4530
+ "items": {
4531
+ "type": "string"
4532
+ },
4533
+ "type": "array"
4534
+ },
4535
+ {
4536
+ "type": [
4537
+ "null",
4538
+ "string"
4539
+ ]
4540
+ }
4541
+ ],
4542
+ "description": "The path to NSIS include script to customize installer, or an array of such paths to include multiple scripts. Defaults to `build/installer.nsh`. See [Custom NSIS script](#custom-nsis-script).\n\nEach path is resolved relative to the [build resources directory](https://www.electron.build/docs/configuration#buildresources) first and then relative to the project directory.\nWhen an array is provided, all scripts are included in the specified order."
4391
4543
  },
4392
4544
  "installerHeader": {
4393
4545
  "default": "build/installerHeader.bmp",
@@ -4723,8 +4875,14 @@
4723
4875
  "type": "boolean"
4724
4876
  },
4725
4877
  "differentialPackage": {
4726
- "description": "Marks the package as built with differential download support for the update server.",
4727
- "type": "boolean"
4878
+ "default": true,
4879
+ "description": "Marks the package as built with differential download support for the update server, and selects how the\napp package is compressed:\n\n- `false` — no differential download support.\n- `\"store-asar\"` — differential-aware, with the app's `resources/app.asar` stored uncompressed (7-Zip\n `Copy`) inside the package. The differential updater diffs the *compressed* package with a\n content-defined blockmap, and the asar is a single compressed member — so any change to app code\n re-downloads the entire compressed asar (~100% of the member; its header rewrite alone diverges every\n block). Storing it keeps unchanged regions byte-identical between releases, making the delta\n proportional to what actually changed (measured on a ~32 MB asar: a one-line source change cost 0.2%\n instead of 100%). Trade-off: the installer and full package grow by roughly what compressing the asar\n saved.\n- anything else (`true`, `\"compressed\"`, unset) — differential-aware, whole package compressed.",
4880
+ "enum": [
4881
+ "compressed",
4882
+ false,
4883
+ "store-asar",
4884
+ true
4885
+ ]
4728
4886
  },
4729
4887
  "displayLanguageSelector": {
4730
4888
  "default": false,
@@ -4739,11 +4897,21 @@
4739
4897
  ]
4740
4898
  },
4741
4899
  "include": {
4742
- "description": "The path to NSIS include script to customize installer. Defaults to `build/installer.nsh`. See [Custom NSIS script](#custom-nsis-script).",
4743
- "type": [
4744
- "null",
4745
- "string"
4746
- ]
4900
+ "anyOf": [
4901
+ {
4902
+ "items": {
4903
+ "type": "string"
4904
+ },
4905
+ "type": "array"
4906
+ },
4907
+ {
4908
+ "type": [
4909
+ "null",
4910
+ "string"
4911
+ ]
4912
+ }
4913
+ ],
4914
+ "description": "The path to NSIS include script to customize installer, or an array of such paths to include multiple scripts. Defaults to `build/installer.nsh`. See [Custom NSIS script](#custom-nsis-script).\n\nEach path is resolved relative to the [build resources directory](https://www.electron.build/docs/configuration#buildresources) first and then relative to the project directory.\nWhen an array is provided, all scripts are included in the specified order."
4747
4915
  },
4748
4916
  "installerHeader": {
4749
4917
  "default": "build/installerHeader.bmp",
@@ -5974,6 +6142,23 @@
5974
6142
  "string"
5975
6143
  ]
5976
6144
  },
6145
+ "include": {
6146
+ "anyOf": [
6147
+ {
6148
+ "items": {
6149
+ "type": "string"
6150
+ },
6151
+ "type": "array"
6152
+ },
6153
+ {
6154
+ "type": [
6155
+ "null",
6156
+ "string"
6157
+ ]
6158
+ }
6159
+ ],
6160
+ "description": "The path to NSIS include script to customize the portable launcher, or an array of such paths to include multiple scripts. See [Custom NSIS script](#custom-nsis-script).\n\nEach path is resolved relative to the [build resources directory](https://www.electron.build/docs/configuration#buildresources) first and then relative to the project directory.\nWhen an array is provided, all scripts are included in the specified order.\n\nUnlike the installer targets, the portable target does **not** fall back to `build/installer.nsh` — a custom script is only included when this option is explicitly set."
6161
+ },
5977
6162
  "publish": {
5978
6163
  "anyOf": [
5979
6164
  {
@@ -6180,6 +6365,23 @@
6180
6365
  "number"
6181
6366
  ]
6182
6367
  },
6368
+ "updateManifestPublicKey": {
6369
+ "anyOf": [
6370
+ {
6371
+ "items": {
6372
+ "type": "string"
6373
+ },
6374
+ "type": "array"
6375
+ },
6376
+ {
6377
+ "type": [
6378
+ "null",
6379
+ "string"
6380
+ ]
6381
+ }
6382
+ ],
6383
+ "description": "Ed25519 public key(s) (PEM or base64 SPKI) used by electron-updater to verify the signed update\nmanifest before downloading — the install's trust list. A manifest is accepted when any listed key\nvalidates one of its signatures. Embedded into `app-update.yml` at build time when update manifest\nsigning is enabled: a single string for one key, an array for several. Managed by electron-builder —\npopulated from `updateManifest.publicKey` or derived from the configured signing key(s); setting it\nmanually in the `publish` configuration is rejected as a configuration error."
6384
+ },
6183
6385
  "updaterCacheDirName": {
6184
6386
  "type": [
6185
6387
  "null",
@@ -6684,6 +6886,23 @@
6684
6886
  "number"
6685
6887
  ]
6686
6888
  },
6889
+ "updateManifestPublicKey": {
6890
+ "anyOf": [
6891
+ {
6892
+ "items": {
6893
+ "type": "string"
6894
+ },
6895
+ "type": "array"
6896
+ },
6897
+ {
6898
+ "type": [
6899
+ "null",
6900
+ "string"
6901
+ ]
6902
+ }
6903
+ ],
6904
+ "description": "Ed25519 public key(s) (PEM or base64 SPKI) used by electron-updater to verify the signed update\nmanifest before downloading — the install's trust list. A manifest is accepted when any listed key\nvalidates one of its signatures. Embedded into `app-update.yml` at build time when update manifest\nsigning is enabled: a single string for one key, an array for several. Managed by electron-builder —\npopulated from `updateManifest.publicKey` or derived from the configured signing key(s); setting it\nmanually in the `publish` configuration is rejected as a configuration error."
6905
+ },
6687
6906
  "updaterCacheDirName": {
6688
6907
  "type": [
6689
6908
  "null",
@@ -7539,6 +7758,23 @@
7539
7758
  "number"
7540
7759
  ]
7541
7760
  },
7761
+ "updateManifestPublicKey": {
7762
+ "anyOf": [
7763
+ {
7764
+ "items": {
7765
+ "type": "string"
7766
+ },
7767
+ "type": "array"
7768
+ },
7769
+ {
7770
+ "type": [
7771
+ "null",
7772
+ "string"
7773
+ ]
7774
+ }
7775
+ ],
7776
+ "description": "Ed25519 public key(s) (PEM or base64 SPKI) used by electron-updater to verify the signed update\nmanifest before downloading — the install's trust list. A manifest is accepted when any listed key\nvalidates one of its signatures. Embedded into `app-update.yml` at build time when update manifest\nsigning is enabled: a single string for one key, an array for several. Managed by electron-builder —\npopulated from `updateManifest.publicKey` or derived from the configured signing key(s); setting it\nmanually in the `publish` configuration is rejected as a configuration error."
7777
+ },
7542
7778
  "updaterCacheDirName": {
7543
7779
  "type": [
7544
7780
  "null",
@@ -8016,6 +8252,23 @@
8016
8252
  "number"
8017
8253
  ]
8018
8254
  },
8255
+ "updateManifestPublicKey": {
8256
+ "anyOf": [
8257
+ {
8258
+ "items": {
8259
+ "type": "string"
8260
+ },
8261
+ "type": "array"
8262
+ },
8263
+ {
8264
+ "type": [
8265
+ "null",
8266
+ "string"
8267
+ ]
8268
+ }
8269
+ ],
8270
+ "description": "Ed25519 public key(s) (PEM or base64 SPKI) used by electron-updater to verify the signed update\nmanifest before downloading — the install's trust list. A manifest is accepted when any listed key\nvalidates one of its signatures. Embedded into `app-update.yml` at build time when update manifest\nsigning is enabled: a single string for one key, an array for several. Managed by electron-builder —\npopulated from `updateManifest.publicKey` or derived from the configured signing key(s); setting it\nmanually in the `publish` configuration is rejected as a configuration error."
8271
+ },
8019
8272
  "updaterCacheDirName": {
8020
8273
  "type": [
8021
8274
  "null",
@@ -8040,10 +8293,6 @@
8040
8293
  "string"
8041
8294
  ]
8042
8295
  },
8043
- "customSquirrelVendorDir": {
8044
- "description": "The custom squirrel vendor dir. If not specified will use the Squirrel.Windows that is shipped with electron-installer(https://github.com/electron/windows-installer/tree/main/vendor).\nAfter https://github.com/electron-userland/electron-builder-binaries/pull/56 merged, will add `electron-builder-binaries` to get the latest version of squirrel.",
8045
- "type": "string"
8046
- },
8047
8296
  "iconUrl": {
8048
8297
  "description": "A URL to an ICO file to use as the application icon (displayed in Control Panel > Programs and Features). Defaults to the Electron icon.\n\nPlease note — [local icon file url is not accepted](https://github.com/atom/grunt-electron-installer/issues/73), must be https/http.\n\nIf you don't plan to build windows installer, you can omit it.\nIf your project repository is public on GitHub, it will be `https://github.com/${u}/${p}/blob/master/build/icon.ico?raw=true` by default.",
8049
8298
  "type": [
@@ -8273,6 +8522,22 @@
8273
8522
  "default": "latest",
8274
8523
  "description": "Version of the 7-Zip binary bundle used internally to extract `.7z` and `.tar.xz` archives.\n\nSet to a {@link ToolsetCustom} object to supply your own 7za binary.\nThe `url` must point to a directory (or a `.tar.gz`/`.zip` archive of one) that contains\n`bin/7za` (macOS/Linux) or `bin/7za.exe` (Windows).\n\n**Bootstrap constraint:** the custom bundle itself must be a `.tar.gz` or `.zip` archive\n(or a bare `file://` directory). `.7z` and `.tar.xz` archives cannot be used here because\nextracting them requires 7za — a circular dependency.\n\nAvailable versions:\n| Version | Notes |\n|---------|-------|\n| `\"1.0.0\"` | Shipped the 32-bit `7za.exe` for every Windows arch (1.75 GiB memory cap, no LZMA2 multithreading on x64/arm64) |\n| `\"1.0.1\"` | Correct per-arch Windows binaries (x64, ia32, arm64) |\n\nReleases: https://github.com/electron-userland/electron-builder-binaries/blob/master/packages/7zip/CHANGELOG.md"
8275
8524
  },
8525
+ "squirrel": {
8526
+ "anyOf": [
8527
+ {
8528
+ "$ref": "#/definitions/ToolsetCustom"
8529
+ },
8530
+ {
8531
+ "enum": [
8532
+ "1.1.1",
8533
+ "latest"
8534
+ ],
8535
+ "type": "string"
8536
+ }
8537
+ ],
8538
+ "default": "latest",
8539
+ "description": "Version of the `squirrel.windows` bundle used to build Squirrel.Windows installers.\n\nThe bundle ships the Squirrel vendor toolset under `electron-winstaller/vendor/`:\n- **`Squirrel.exe`** / **`Squirrel-Mono.exe`** — releasify the app into `Setup.exe` (and an optional MSI).\n- **`SyncReleases.exe`** — downloads prior releases to produce delta packages.\n- **`nuget.exe`**, **`7z`** — pack the app into a `.nupkg` and compress release assets.\n\n`rcedit.exe` is provisioned from the {@link winCodeSign} toolset at runtime (on every platform;\nunder Wine on non-Windows hosts). Building an MSI additionally uses the shared WiX toolset.\n\nAvailable versions:\n| Version | Notes |\n|---------|-------|\n| `\"1.1.1\"` | Squirrel.Windows 2.0.1 (patched) with a standalone, checksum-verified `nuget.exe` 6.14.0 |\n\nSet to a {@link ToolsetCustom} object to supply your own bundle — it must contain the\n`electron-winstaller/vendor/` subtree. Only used when building the `squirrelWindows` target.\n\nReleases: https://github.com/electron-userland/electron-builder-binaries/blob/master/packages/squirrel.windows/CHANGELOG.md"
8540
+ },
8276
8541
  "winCodeSign": {
8277
8542
  "anyOf": [
8278
8543
  {
@@ -8303,13 +8568,14 @@
8303
8568
  "enum": [
8304
8569
  "0.0.0",
8305
8570
  "1.0.1",
8306
- "latest"
8571
+ "latest",
8572
+ "system"
8307
8573
  ],
8308
8574
  "type": "string"
8309
8575
  }
8310
8576
  ],
8311
8577
  "default": "latest",
8312
- "description": "Version of the Wine bundle used to run Windows tools (NSIS, rcedit, signtool) on\nnon-Windows hosts (macOS and Linux).\n\nWine is only required when building Windows targets on a non-Windows machine. On Windows,\nthis setting has no effect.\n\nAvailable versions:\n| Version | Wine version | Platform support | Notes |\n|---------|-------------|-----------------|-------|\n| `\"0.0.0\"` | 4.0.1 | macOS | Legacy portable bundle (pre-v27) |\n| `\"1.0.1\"` | 11.0 | macOS | Supports arm64 macOS via Rosetta |\n\nTo use a custom Wine binary, use a `ToolsetCustom` object.\n\nReleases: https://github.com/electron-userland/electron-builder-binaries/blob/master/packages/wine/CHANGELOG.md"
8578
+ "description": "Version of the Wine bundle used to run Windows tools (NSIS, rcedit, signtool) on\nnon-Windows hosts (macOS and Linux).\n\nWine is only required when building Windows targets on a non-Windows machine. On Windows,\nthis setting has no effect.\n\nAvailable versions:\n| Version | Wine version | Platform support | Notes |\n|---------|-------------|-----------------|-------|\n| `\"0.0.0\"` | 4.0.1 | macOS | Legacy portable bundle (pre-v27) |\n| `\"1.0.1\"` | 11.0 | macOS | Supports arm64 macOS via Rosetta |\n| `\"system\"` | host install | macOS, Linux | Uses the `wine` binary on `PATH` instead of a bundle |\n\n`\"system\"` is the replacement for the `USE_SYSTEM_WINE` environment variable removed in v27, and\nis what `\"latest\"` (the default) currently resolves to on every platform: the published `\"1.0.1\"`\nbundles ship no PE builtins, so a host Wine installation is required to build Windows targets on\nmacOS or Linux.\n\nTo use a custom Wine binary, use a `ToolsetCustom` object.\n\nReleases: https://github.com/electron-userland/electron-builder-binaries/blob/master/packages/wine/CHANGELOG.md"
8313
8579
  }
8314
8580
  },
8315
8581
  "type": "object"
@@ -8336,6 +8602,63 @@
8336
8602
  ],
8337
8603
  "type": "object"
8338
8604
  },
8605
+ "UpdateManifestSigningOptions": {
8606
+ "additionalProperties": false,
8607
+ "properties": {
8608
+ "publicKey": {
8609
+ "anyOf": [
8610
+ {
8611
+ "items": {
8612
+ "type": "string"
8613
+ },
8614
+ "type": "array"
8615
+ },
8616
+ {
8617
+ "type": [
8618
+ "null",
8619
+ "string"
8620
+ ]
8621
+ }
8622
+ ],
8623
+ "description": "The Ed25519 public key(s) (PEM or base64 SPKI) embedded into `app-update.yml` as the updater's trust list.\nThe updater accepts a manifest when any listed key validates one of its signatures. Optional — when\nomitted the public key of every configured signing key is derived and embedded. Set it explicitly to trust\nadditional keys ahead of a rotation (for example `[current, next]`) or when the private key is held by an\nexternal signer."
8624
+ },
8625
+ "signingKey": {
8626
+ "anyOf": [
8627
+ {
8628
+ "items": {
8629
+ "type": "string"
8630
+ },
8631
+ "type": "array"
8632
+ },
8633
+ {
8634
+ "type": [
8635
+ "null",
8636
+ "string"
8637
+ ]
8638
+ }
8639
+ ],
8640
+ "description": "Ed25519 private key(s) in PEM (PKCS#8) format used to sign the update manifest. A single PEM string may\ncontain several concatenated keys, or pass an array with one key each; the manifest is signed by every key\n(dual-signing for [key rotation](https://www.electron.build/features/key-rotation)) and the first key also\nfills the legacy single `signature` field.\nSecret — prefer the `ELECTRON_BUILDER_UPDATE_SIGN_KEY` environment variable in CI over committing this to config."
8641
+ },
8642
+ "signingKeyFile": {
8643
+ "anyOf": [
8644
+ {
8645
+ "items": {
8646
+ "type": "string"
8647
+ },
8648
+ "type": "array"
8649
+ },
8650
+ {
8651
+ "type": [
8652
+ "null",
8653
+ "string"
8654
+ ]
8655
+ }
8656
+ ],
8657
+ "description": "Path(s) to file(s) containing the Ed25519 private key (PEM, PKCS#8). Alternative to `signingKey`.\nAn array signs with every listed key, in order. Relative paths are resolved against the project directory."
8658
+ }
8659
+ },
8660
+ "type": "object"
8661
+ },
8339
8662
  "WindowsAzureSigningConfig": {
8340
8663
  "additionalProperties": false,
8341
8664
  "description": "The `signtool /dlib` Azure Trusted Signing integration was introduced in `toolsets.winCodeSign: 1.3.0`.\nThe legacy PowerShell integration is deprecated, but leverages the same underlying Azure APIs, so both interfaces share the same config shape.",
@@ -8758,6 +9081,17 @@
8758
9081
  "default": "nsis",
8759
9082
  "description": "The target package type: list of `nsis`, `nsis-web` (Web installer), `portable` ([portable app](https://www.electron.build/nsis#portable) without installation), `appx`, `msix`, `msi`, `msi-wrapped`, `squirrel`, `7z`, `zip`, `tar.xz`, `tar.lz`, `tar.gz`, `tar.bz2`, `dir`.\nAppX and MSIX packages can be built on Windows 10 or Windows Server 2012 R2 (version 6.3+) or later, and on macOS via Parallels Desktop.\n\nTo use Squirrel.Windows please install `electron-builder-squirrel-windows` dependency."
8760
9083
  },
9084
+ "updateManifest": {
9085
+ "anyOf": [
9086
+ {
9087
+ "$ref": "#/definitions/UpdateManifestSigningOptions"
9088
+ },
9089
+ {
9090
+ "type": "null"
9091
+ }
9092
+ ],
9093
+ "description": "Ed25519 signing of the auto-update manifest (`latest*.yml`). When configured, each manifest is signed\nand electron-updater verifies the signature (against the embedded public key) before downloading an update.\nPrefer supplying the key via the `ELECTRON_BUILDER_UPDATE_SIGN_KEY` / `ELECTRON_BUILDER_UPDATE_SIGN_KEY_FILE` environment variables in CI."
9094
+ },
8761
9095
  "verifyUpdateCodeSignature": {
8762
9096
  "default": true,
8763
9097
  "description": "Whether the NSIS auto-updater should verify the Authenticode signature of a downloaded update\nbefore installing it. This is a **runtime** check performed by your app via electron-updater,\nnot a build-time check.\n\nWhen enabled (the default), the resolved [publisher name](#publisherName) is embedded into\n`app-update.yml` at build time. At update time electron-updater inspects the certificate that\nsigned the downloaded installer and compares its subject (Distinguished Name / Common Name)\nagainst that publisher name, refusing to install on a mismatch. This prevents a tampered or\nmaliciously substituted update from being installed.\n\nSet to `false` to skip verification — in which case the publisher name is **not** embedded.\nDisable this only if your updates are not Authenticode-signed.",
@@ -10026,6 +10360,17 @@
10026
10360
  ],
10027
10361
  "description": "Pinned versions of the binary toolsets electron-builder downloads and uses internally.\n\nEach property selects a specific release of the corresponding tool bundle. Set a property to\n`\"0.0.0\"` to force the legacy bundle (pre-v27 behaviour). Leave a property unset (or set it to\n`\"latest\"`) to use the modern default (newest bundle) for that toolset.\n\nNote: Toolset versioning can drop intermediate releases (such as if a problem is discovered in a bundle). If you need to pin to a specific release, check the release notes for the toolset to ensure the version you specify is valid."
10028
10362
  },
10363
+ "updateManifest": {
10364
+ "anyOf": [
10365
+ {
10366
+ "$ref": "#/definitions/UpdateManifestSigningOptions"
10367
+ },
10368
+ {
10369
+ "type": "null"
10370
+ }
10371
+ ],
10372
+ "description": "Ed25519 signing of the auto-update manifest (`latest*.yml`). When configured, each manifest is signed\nand electron-updater verifies the signature (against the embedded public key) before downloading an update.\nPrefer supplying the key via the `ELECTRON_BUILDER_UPDATE_SIGN_KEY` / `ELECTRON_BUILDER_UPDATE_SIGN_KEY_FILE` environment variables in CI."
10373
+ },
10029
10374
  "win": {
10030
10375
  "anyOf": [
10031
10376
  {
@@ -0,0 +1,15 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
3
+ <plist version="1.0">
4
+ <dict>
5
+ <!-- Default entitlements for ad-hoc (`identity: "-"`) signing with the hardened runtime enabled.
6
+ Ad-hoc signatures carry no Team ID, so library validation rejects every framework and native module in
7
+ the bundle and the app fails to launch. Disabling it is required for such builds to run at all — which
8
+ is why this template exists separately from `entitlements.mac.plist` and is never used for builds
9
+ signed with a real identity. -->
10
+ <key>com.apple.security.cs.allow-jit</key>
11
+ <true/>
12
+ <key>com.apple.security.cs.disable-library-validation</key>
13
+ <true/>
14
+ </dict>
15
+ </plist>
@@ -2,13 +2,16 @@
2
2
  <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
3
3
  <plist version="1.0">
4
4
  <dict>
5
- <!-- https://github.com/electron/electron-notarize#prerequisites -->
5
+ <!-- V8 compiles JavaScript at runtime, so the main app needs the JIT exception under the hardened runtime.
6
+ Chromium grants nothing else to the browser process:
7
+ https://source.chromium.org/chromium/chromium/src/+/main:chrome/app/app-entitlements.plist
8
+
9
+ `com.apple.security.cs.allow-unsigned-executable-memory` and
10
+ `com.apple.security.cs.disable-library-validation` are deliberately NOT granted here — modern Electron
11
+ does not need them in the main process, and both materially weaken the hardened runtime. Add them to
12
+ your own `build/entitlements.mac.plist` only if you actually need them (for example, loading a
13
+ framework or native module signed by another team). -->
6
14
  <key>com.apple.security.cs.allow-jit</key>
7
15
  <true/>
8
- <key>com.apple.security.cs.allow-unsigned-executable-memory</key>
9
- <true/>
10
- <!-- https://github.com/electron-userland/electron-builder/issues/3940 -->
11
- <key>com.apple.security.cs.disable-library-validation</key>
12
- <true/>
13
16
  </dict>
14
17
  </plist>