app-builder-lib 27.0.0-alpha.3 → 27.0.0-alpha.5

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 (238) hide show
  1. package/dist/codeSign/mac/macCodeSign.d.ts.map +1 -1
  2. package/dist/codeSign/mac/macCodeSign.js +3 -6
  3. package/dist/codeSign/mac/macCodeSign.js.map +1 -1
  4. package/dist/codeSign/win/signtoolBaseSignManager.d.ts.map +1 -1
  5. package/dist/codeSign/win/signtoolBaseSignManager.js +11 -3
  6. package/dist/codeSign/win/signtoolBaseSignManager.js.map +1 -1
  7. package/dist/codeSign/win/windowsSignAzureManager.d.ts.map +1 -1
  8. package/dist/codeSign/win/windowsSignAzureManager.js +31 -21
  9. package/dist/codeSign/win/windowsSignAzureManager.js.map +1 -1
  10. package/dist/configuration.d.ts +37 -44
  11. package/dist/configuration.d.ts.map +1 -1
  12. package/dist/configuration.js.map +1 -1
  13. package/dist/electron/ElectronFramework.js +2 -2
  14. package/dist/electron/ElectronFramework.js.map +1 -1
  15. package/dist/electron/electronVersion.d.ts.map +1 -1
  16. package/dist/electron/electronVersion.js +1 -11
  17. package/dist/electron/electronVersion.js.map +1 -1
  18. package/dist/fileMatcher.d.ts +27 -2
  19. package/dist/fileMatcher.d.ts.map +1 -1
  20. package/dist/fileMatcher.js +204 -16
  21. package/dist/fileMatcher.js.map +1 -1
  22. package/dist/indexInternal.d.ts +6 -5
  23. package/dist/indexInternal.d.ts.map +1 -1
  24. package/dist/indexInternal.js +6 -5
  25. package/dist/indexInternal.js.map +1 -1
  26. package/dist/macPackager.d.ts +5 -0
  27. package/dist/macPackager.d.ts.map +1 -1
  28. package/dist/macPackager.js +35 -0
  29. package/dist/macPackager.js.map +1 -1
  30. package/dist/node-module-collector/moduleManager.d.ts +3 -1
  31. package/dist/node-module-collector/moduleManager.d.ts.map +1 -1
  32. package/dist/node-module-collector/moduleManager.js +9 -1
  33. package/dist/node-module-collector/moduleManager.js.map +1 -1
  34. package/dist/node-module-collector/nodeModulesCollector.d.ts +13 -23
  35. package/dist/node-module-collector/nodeModulesCollector.d.ts.map +1 -1
  36. package/dist/node-module-collector/nodeModulesCollector.js +52 -122
  37. package/dist/node-module-collector/nodeModulesCollector.js.map +1 -1
  38. package/dist/node-module-collector/pnpmNodeModulesCollector.js +5 -5
  39. package/dist/node-module-collector/pnpmNodeModulesCollector.js.map +1 -1
  40. package/dist/node-module-collector/types.d.ts +2 -0
  41. package/dist/node-module-collector/types.d.ts.map +1 -1
  42. package/dist/node-module-collector/types.js.map +1 -1
  43. package/dist/options/PlatformSpecificBuildOptions.d.ts +0 -6
  44. package/dist/options/PlatformSpecificBuildOptions.d.ts.map +1 -1
  45. package/dist/options/PlatformSpecificBuildOptions.js.map +1 -1
  46. package/dist/options/SnapOptions.d.ts +15 -13
  47. package/dist/options/SnapOptions.d.ts.map +1 -1
  48. package/dist/options/SnapOptions.js.map +1 -1
  49. package/dist/options/linuxOptions.d.ts +0 -10
  50. package/dist/options/linuxOptions.d.ts.map +1 -1
  51. package/dist/options/linuxOptions.js.map +1 -1
  52. package/dist/options/winOptions.d.ts +164 -34
  53. package/dist/options/winOptions.d.ts.map +1 -1
  54. package/dist/options/winOptions.js.map +1 -1
  55. package/dist/packager.d.ts +2 -0
  56. package/dist/packager.d.ts.map +1 -1
  57. package/dist/packager.js +20 -22
  58. package/dist/packager.js.map +1 -1
  59. package/dist/platformPackager.d.ts +3 -0
  60. package/dist/platformPackager.d.ts.map +1 -1
  61. package/dist/platformPackager.js +11 -6
  62. package/dist/platformPackager.js.map +1 -1
  63. package/dist/publish/PublishManager.d.ts +1 -0
  64. package/dist/publish/PublishManager.d.ts.map +1 -1
  65. package/dist/publish/PublishManager.js +7 -2
  66. package/dist/publish/PublishManager.js.map +1 -1
  67. package/dist/targets/linux/FlatpakTarget.d.ts.map +1 -1
  68. package/dist/targets/linux/FlatpakTarget.js +4 -1
  69. package/dist/targets/linux/FlatpakTarget.js.map +1 -1
  70. package/dist/targets/linux/FpmTarget.d.ts +6 -0
  71. package/dist/targets/linux/FpmTarget.d.ts.map +1 -1
  72. package/dist/targets/linux/FpmTarget.js +28 -6
  73. package/dist/targets/linux/FpmTarget.js.map +1 -1
  74. package/dist/targets/linux/LinuxTargetHelper.d.ts +14 -0
  75. package/dist/targets/linux/LinuxTargetHelper.d.ts.map +1 -1
  76. package/dist/targets/linux/LinuxTargetHelper.js +38 -59
  77. package/dist/targets/linux/LinuxTargetHelper.js.map +1 -1
  78. package/dist/targets/linux/appimage/AppImageTarget.d.ts +1 -0
  79. package/dist/targets/linux/appimage/AppImageTarget.d.ts.map +1 -1
  80. package/dist/targets/linux/appimage/AppImageTarget.js +12 -14
  81. package/dist/targets/linux/appimage/AppImageTarget.js.map +1 -1
  82. package/dist/targets/linux/appimage/appImageUtil.d.ts +4 -0
  83. package/dist/targets/linux/appimage/appImageUtil.d.ts.map +1 -1
  84. package/dist/targets/linux/appimage/appImageUtil.js +11 -4
  85. package/dist/targets/linux/appimage/appImageUtil.js.map +1 -1
  86. package/dist/targets/linux/appimage/appLauncher.d.ts.map +1 -1
  87. package/dist/targets/linux/appimage/appLauncher.js +5 -11
  88. package/dist/targets/linux/appimage/appLauncher.js.map +1 -1
  89. package/dist/targets/linux/launcherScript.d.ts +32 -0
  90. package/dist/targets/linux/launcherScript.d.ts.map +1 -0
  91. package/dist/targets/linux/launcherScript.js +24 -0
  92. package/dist/targets/linux/launcherScript.js.map +1 -0
  93. package/dist/targets/linux/snap/SnapTarget.d.ts +1 -1
  94. package/dist/targets/linux/snap/SnapTarget.d.ts.map +1 -1
  95. package/dist/targets/linux/snap/SnapTarget.js +23 -1
  96. package/dist/targets/linux/snap/SnapTarget.js.map +1 -1
  97. package/dist/targets/linux/snap/core24.d.ts +1 -1
  98. package/dist/targets/linux/snap/core24.d.ts.map +1 -1
  99. package/dist/targets/linux/snap/core24.js +3 -2
  100. package/dist/targets/linux/snap/core24.js.map +1 -1
  101. package/dist/targets/linux/snap/coreCustom.d.ts +1 -1
  102. package/dist/targets/linux/snap/coreCustom.d.ts.map +1 -1
  103. package/dist/targets/linux/snap/coreCustom.js +2 -2
  104. package/dist/targets/linux/snap/coreCustom.js.map +1 -1
  105. package/dist/targets/linux/snap/coreLegacy.d.ts +1 -1
  106. package/dist/targets/linux/snap/coreLegacy.d.ts.map +1 -1
  107. package/dist/targets/linux/snap/coreLegacy.js +8 -7
  108. package/dist/targets/linux/snap/coreLegacy.js.map +1 -1
  109. package/dist/targets/linux/snap/snapCommand.d.ts +2 -2
  110. package/dist/targets/linux/snap/snapCommand.d.ts.map +1 -1
  111. package/dist/targets/linux/snap/snapCommand.js +4 -10
  112. package/dist/targets/linux/snap/snapCommand.js.map +1 -1
  113. package/dist/targets/linux/snap/snapcraftBuilder.d.ts +7 -1
  114. package/dist/targets/linux/snap/snapcraftBuilder.d.ts.map +1 -1
  115. package/dist/targets/linux/snap/snapcraftBuilder.js +57 -20
  116. package/dist/targets/linux/snap/snapcraftBuilder.js.map +1 -1
  117. package/dist/targets/targetFactory.d.ts +7 -0
  118. package/dist/targets/targetFactory.d.ts.map +1 -1
  119. package/dist/targets/targetFactory.js +28 -0
  120. package/dist/targets/targetFactory.js.map +1 -1
  121. package/dist/targets/win/AppxTarget.d.ts.map +1 -1
  122. package/dist/targets/win/AppxTarget.js +17 -9
  123. package/dist/targets/win/AppxTarget.js.map +1 -1
  124. package/dist/targets/win/MsiTarget.d.ts.map +1 -1
  125. package/dist/targets/win/MsiTarget.js +8 -11
  126. package/dist/targets/win/MsiTarget.js.map +1 -1
  127. package/dist/targets/win/nsis/NsisTarget.d.ts +3 -2
  128. package/dist/targets/win/nsis/NsisTarget.d.ts.map +1 -1
  129. package/dist/targets/win/nsis/NsisTarget.js +26 -49
  130. package/dist/targets/win/nsis/NsisTarget.js.map +1 -1
  131. package/dist/targets/win/nsis/nsisScriptGenerator.d.ts.map +1 -1
  132. package/dist/targets/win/nsis/nsisScriptGenerator.js +3 -2
  133. package/dist/targets/win/nsis/nsisScriptGenerator.js.map +1 -1
  134. package/dist/targets/win/nsis/nsisUtil.d.ts +5 -2
  135. package/dist/targets/win/nsis/nsisUtil.d.ts.map +1 -1
  136. package/dist/targets/win/nsis/nsisUtil.js +46 -22
  137. package/dist/targets/win/nsis/nsisUtil.js.map +1 -1
  138. package/dist/targets/win/nsis/progId.d.ts +21 -0
  139. package/dist/targets/win/nsis/progId.d.ts.map +1 -0
  140. package/dist/targets/win/nsis/progId.js +60 -0
  141. package/dist/targets/win/nsis/progId.js.map +1 -0
  142. package/dist/toolsets/7zip.d.ts.map +1 -1
  143. package/dist/toolsets/7zip.js +3 -1
  144. package/dist/toolsets/7zip.js.map +1 -1
  145. package/dist/toolsets/appimage.d.ts +3 -3
  146. package/dist/toolsets/appimage.d.ts.map +1 -1
  147. package/dist/toolsets/appimage.js +9 -6
  148. package/dist/toolsets/appimage.js.map +1 -1
  149. package/dist/toolsets/custom.d.ts +1 -3
  150. package/dist/toolsets/custom.d.ts.map +1 -1
  151. package/dist/toolsets/custom.js +4 -133
  152. package/dist/toolsets/custom.js.map +1 -1
  153. package/dist/toolsets/fpm.d.ts.map +1 -1
  154. package/dist/toolsets/fpm.js +11 -5
  155. package/dist/toolsets/fpm.js.map +1 -1
  156. package/dist/toolsets/icons.d.ts.map +1 -1
  157. package/dist/toolsets/icons.js +13 -2
  158. package/dist/toolsets/icons.js.map +1 -1
  159. package/dist/toolsets/linuxToolsMac.d.ts.map +1 -1
  160. package/dist/toolsets/linuxToolsMac.js +4 -1
  161. package/dist/toolsets/linuxToolsMac.js.map +1 -1
  162. package/dist/toolsets/nsis.d.ts.map +1 -1
  163. package/dist/toolsets/nsis.js +6 -3
  164. package/dist/toolsets/nsis.js.map +1 -1
  165. package/dist/toolsets/version.d.ts +12 -0
  166. package/dist/toolsets/version.d.ts.map +1 -0
  167. package/dist/toolsets/version.js +13 -0
  168. package/dist/toolsets/version.js.map +1 -0
  169. package/dist/toolsets/winCodeSign.d.ts +11 -3
  170. package/dist/toolsets/winCodeSign.d.ts.map +1 -1
  171. package/dist/toolsets/winCodeSign.js +45 -27
  172. package/dist/toolsets/winCodeSign.js.map +1 -1
  173. package/dist/toolsets/wine.d.ts +2 -1
  174. package/dist/toolsets/wine.d.ts.map +1 -1
  175. package/dist/toolsets/wine.js +15 -13
  176. package/dist/toolsets/wine.js.map +1 -1
  177. package/dist/util/NodeModuleCopyHelper.js +3 -3
  178. package/dist/util/NodeModuleCopyHelper.js.map +1 -1
  179. package/dist/util/appFileCopier.d.ts +39 -0
  180. package/dist/util/appFileCopier.d.ts.map +1 -1
  181. package/dist/util/appFileCopier.js +71 -20
  182. package/dist/util/appFileCopier.js.map +1 -1
  183. package/dist/util/archCompatibility.d.ts +42 -0
  184. package/dist/util/archCompatibility.d.ts.map +1 -0
  185. package/dist/util/archCompatibility.js +202 -0
  186. package/dist/util/archCompatibility.js.map +1 -0
  187. package/dist/util/config/config.d.ts +1 -0
  188. package/dist/util/config/config.d.ts.map +1 -1
  189. package/dist/util/config/config.js +4 -1
  190. package/dist/util/config/config.js.map +1 -1
  191. package/dist/util/config/load.d.ts +2 -2
  192. package/dist/util/config/load.d.ts.map +1 -1
  193. package/dist/util/config/load.js +3 -12
  194. package/dist/util/config/load.js.map +1 -1
  195. package/dist/util/config/schemaValidator.js +1 -1
  196. package/dist/util/config/schemaValidator.js.map +1 -1
  197. package/dist/util/electronGet.d.ts +6 -3
  198. package/dist/util/electronGet.d.ts.map +1 -1
  199. package/dist/util/electronGet.js +23 -9
  200. package/dist/util/electronGet.js.map +1 -1
  201. package/dist/util/flags.d.ts +0 -1
  202. package/dist/util/flags.d.ts.map +1 -1
  203. package/dist/util/flags.js +0 -3
  204. package/dist/util/flags.js.map +1 -1
  205. package/dist/util/hash.d.ts +1 -1
  206. package/dist/util/hash.d.ts.map +1 -1
  207. package/dist/util/hash.js +1 -15
  208. package/dist/util/hash.js.map +1 -1
  209. package/dist/util/installOrRebuild.d.ts +38 -0
  210. package/dist/util/installOrRebuild.d.ts.map +1 -0
  211. package/dist/util/{yarn.js → installOrRebuild.js} +65 -14
  212. package/dist/util/installOrRebuild.js.map +1 -0
  213. package/dist/util/langs.d.ts.map +1 -1
  214. package/dist/util/langs.js +1 -0
  215. package/dist/util/langs.js.map +1 -1
  216. package/dist/util/mac/macosIconComposer.d.ts +2 -1
  217. package/dist/util/mac/macosIconComposer.d.ts.map +1 -1
  218. package/dist/util/mac/macosIconComposer.js +40 -58
  219. package/dist/util/mac/macosIconComposer.js.map +1 -1
  220. package/dist/util/streamSpawnToFile.d.ts +47 -0
  221. package/dist/util/streamSpawnToFile.d.ts.map +1 -0
  222. package/dist/util/streamSpawnToFile.js +110 -0
  223. package/dist/util/streamSpawnToFile.js.map +1 -0
  224. package/dist/util/toolsetLock.d.ts +2 -0
  225. package/dist/util/toolsetLock.d.ts.map +1 -1
  226. package/dist/util/toolsetLock.js +31 -5
  227. package/dist/util/toolsetLock.js.map +1 -1
  228. package/dist/version.d.ts +1 -1
  229. package/dist/version.js +1 -1
  230. package/dist/version.js.map +1 -1
  231. package/package.json +8 -8
  232. package/scheme.json +94 -130
  233. package/templates/appx/appxmanifest.xml +1 -2
  234. package/templates/nsis/assistedMessages.yml +17 -0
  235. package/templates/nsis/messages.yml +5 -0
  236. package/dist/util/yarn.d.ts +0 -23
  237. package/dist/util/yarn.d.ts.map +0 -1
  238. package/dist/util/yarn.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"SnapOptions.js","sourceRoot":"","sources":["../../src/options/SnapOptions.ts"],"names":[],"mappings":"","sourcesContent":["import { TargetSpecificOptions } from \"../core.js\"\nimport { SnapcraftYAML } from \"../targets/linux/snap/snapcraft.js\"\nimport { CommonLinuxOptions } from \"./linuxOptions.js\"\n\n/**\n * New-style snap configuration. Use this via the `snapcraft` key in your build config.\n * Selects the snapcraft core version and its per-core options.\n */\nexport interface SnapcraftOptions extends TargetSpecificOptions {\n /**\n * The snap base to use as the execution environment. Determines which set of per-core options\n * (`core18`, `core20`, `core22`, `core24`, `custom`) is active.\n *\n * Only one core may be selected per build target.\n */\n readonly base: \"core18\" | \"core20\" | \"core22\" | \"core24\" | \"custom\"\n\n /**\n * Snapcraft Store credentials — base64-encoded credentials string or file path.\n * Accepts the same formats as `WIN_CSC_LINK` / `CSC_LINK`: base64 data,\n * absolute/relative/`~/` file paths, and `file://` URIs.\n * Relative paths are resolved against the build resources directory.\n *\n * Injected as `SNAPCRAFT_STORE_CREDENTIALS` into every snapcraft subprocess\n * (core18/core20/core22/core24 builds and `snapcraft upload`).\n * Not applied for `base: \"custom\"` — inject credentials manually via environment variables.\n *\n * The `SNAP_CSC_LINK` environment variable is the CI-friendly alternative.\n * Generate with: `snapcraft export-login - | base64 -w0`\n */\n readonly cscLink?: string\n\n /**\n * Configuration for a core18 build. Only active when `base` is `\"core18\"`.\n */\n readonly core18?: SnapOptionsLegacy | null\n /**\n * Configuration for a core20 build. Only active when `base` is `\"core20\"`.\n */\n readonly core20?: SnapOptionsLegacy | null\n /**\n * Configuration for a core22 build. Only active when `base` is `\"core22\"`.\n */\n readonly core22?: SnapOptionsLegacy | null\n\n /**\n * **[Beta]** Options for building a core24 snap. Uses the snapcraft CLI directly.\n * Inherits desktop-entry fields from `CommonLinuxOptions` and publish config from `TargetSpecificOptions`.\n * @beta\n */\n readonly core24?: SnapOptions24 | null\n /**\n * **[Beta]** Pass-through custom snap configuration. electron-builder will read the\n * snapcraft.yaml at `yamlPath` and use it verbatim — no plugs, extensions,\n * organize mappings, or desktop files are injected.\n * @beta\n */\n readonly custom?: SnapOptionsCustom | null\n}\n\nexport interface SnapOptionsCustom {\n /**\n * Supports 2 routes:\n * - Path to an existing `snapcraft.yaml` file, relative to `buildResourcesDir`. electron-builder reads the file and passes it through without modification.\n * - A `SnapcraftYAML` object directly in the configuration. electron-builder uses the object to generate a `snapcraft.yaml` file, which is then passed through without modification.\n */\n readonly yaml?: string | SnapcraftYAML | null\n}\n\nexport interface SnapOptionsLegacy extends CommonLinuxOptions, TargetSpecificOptions {\n /**\n * Whether to use the pre-built Electron snap template for faster builds.\n * When `true`, electron-builder delegates snap assembly to the upstream Electron snap\n * template rather than running a full snapcraft build, significantly reducing build time.\n * Defaults to `true` when `stagePackages` is not customised.\n * Only applicable to x64 and armv7l builds.\n */\n readonly useTemplateApp?: boolean\n\n /**\n * The type of [snap confinement](https://snapcraft.io/docs/reference/confinement).\n * - `strict` — recommended; the snap runs in a fully isolated sandbox.\n * - `devmode` — sandbox violations are logged but not enforced; for development only.\n * - `classic` — no confinement; equivalent to a traditionally packaged application.\n * Requires Snap Store approval before publishing.\n * @default strict\n */\n readonly confinement?: \"devmode\" | \"strict\" | \"classic\" | null\n\n /**\n * Environment variables injected into the snap's runtime environment.\n * Merged with the electron-builder default `{ TMPDIR: \"$XDG_RUNTIME_DIR\" }`.\n * User-supplied values take precedence.\n */\n readonly environment?: { [key: string]: string } | null\n\n /**\n * A short summary of the snap (max 78 characters).\n * Defaults to [productName](./configuration.md#productName).\n */\n readonly summary?: string | null\n\n /**\n * The quality grade of the snap.\n * - `stable` — suitable for all channels, including `stable` and `candidate`.\n * - `devel` — development snapshot; cannot be promoted to `stable` or `candidate`.\n * @default stable\n */\n readonly grade?: \"devel\" | \"stable\" | null\n\n /**\n * [Snapd features](https://snapcraft.io/docs/snapcraft-yaml-reference#assumes) that must\n * be present on the host before the snap can be installed.\n */\n readonly assumes?: Array<string> | string | null\n\n /**\n * Debian packages required at **build** time (installed inside the build environment).\n */\n readonly buildPackages?: Array<string> | null\n\n /**\n * Ubuntu packages to **stage** alongside the app (equivalent to `depends` for deb).\n * Defaults to `[\"libnspr4\", \"libnss3\", \"libxss1\", \"libappindicator3-1\", \"libsecret-1-0\"]`.\n *\n * Use the `\"default\"` keyword to extend the default list:\n * `[\"default\", \"my-extra-lib\"]` appends `my-extra-lib` to the defaults.\n */\n readonly stagePackages?: Array<string> | null\n\n /**\n * Directory containing [snap hooks](https://snapcraft.io/docs/snap-hooks), relative to\n * the build resources directory (`build/`).\n * @default build/snap-hooks\n */\n readonly hooks?: string | null\n\n /**\n * [Plugs](https://snapcraft.io/docs/reference/interfaces) (consumed interfaces) to declare\n * for the app entry point.\n * Defaults to `[\"desktop\", \"desktop-legacy\", \"home\", \"x11\", \"wayland\", \"unity7\",\n * \"browser-support\", \"network\", \"gsettings\", \"audio-playback\", \"pulseaudio\", \"opengl\"]`.\n *\n * Use `\"default\"` in the list to keep the defaults and append extras:\n * `[\"default\", \"camera\"]` adds `camera` to the standard set.\n *\n * To configure plug attributes (e.g. `allow-sandbox` for Chromium's internal sandbox),\n * use a descriptor object:\n * ```json\n * [\n * { \"browser-sandbox\": { \"interface\": \"browser-support\", \"allow-sandbox\": true } },\n * \"another-simple-plug-name\"\n * ]\n * ```\n */\n readonly plugs?: Array<string | PlugDescriptor> | PlugDescriptor | null\n\n /**\n * [Slots](https://snapcraft.io/docs/reference/interfaces) (provided interfaces) to declare\n * for the app.\n *\n * To expose an MPRIS player under the Chromium bus name (required for strict confinement):\n * ```json\n * [{ \"mpris\": { \"name\": \"chromium\" } }]\n * ```\n * Chromium [hard-codes](https://source.chromium.org/chromium/chromium/src/+/master:components/system_media_controls/linux/system_media_controls_linux.cc;l=51;bpv=0;bpt=1)\n * the bus name `chromium`, so the slot name must match for snapd to\n * [allow it](https://forum.snapcraft.io/t/unable-to-use-mpris-interface/15360/7).\n */\n readonly slots?: Array<string | SlotDescriptor> | SlotDescriptor | null\n\n /**\n * Names of snapcraft parts that must be built before the app part.\n * Defaults to `[\"desktop-gtk2\"]`.\n *\n * Use `\"default\"` to keep the default and add extras:\n * `[\"default\", \"my-helper-part\"]`.\n */\n readonly after?: Array<string> | null\n\n /**\n * Whether the snap should automatically start on login.\n * @default false\n */\n readonly autoStart?: boolean\n\n /**\n * [Snap layouts](https://snapcraft.io/docs/snap-layouts) — bind-mount or symlink host paths\n * into the snap's namespace, making libraries or config at `/usr`, `/var`, `/etc`, etc.\n * accessible inside the confined environment.\n */\n readonly layout?: { [key: string]: { [key: string]: string } } | null\n\n /**\n * Filesets controlling which files from the app part are staged into the snap.\n * Supports individual files, directories, globs, globstars, and exclusions (prefix `!`).\n * See [Snapcraft filesets](https://snapcraft.io/docs/snapcraft-filesets).\n * When not set, the snap template's default stage list is used for legacy bases (core18/core20/core22).\n */\n readonly appPartStage?: Array<string> | null\n\n /**\n * Display title for the snap (may contain uppercase letters and spaces).\n * Defaults to `productName`.\n * See [snap format](https://snapcraft.io/docs/snap-format).\n */\n readonly title?: string | null\n\n /**\n * Compression algorithm for the snap SquashFS image.\n * - `xz` — smaller file, slower decompression (good for distribution).\n * - `lzo` — larger file, faster decompression (good for development iteration).\n * Omit to use snapcraft's default (`xz`).\n *\n * When not set, `linux.compression` is mapped automatically:\n * `\"store\"` → `\"lzo\"`, `\"maximum\"` → `\"xz\"`, `\"normal\"` → snapcraft default.\n * Explicitly setting this field always overrides the mapped value.\n */\n readonly compression?: \"xz\" | \"lzo\" | null\n\n /**\n * Allow the snap to run with native Wayland support (`--ozone-platform=wayland`).\n * Defaults to `false` for Electron < 38 (legacy behaviour); `true` for Electron ≥ 38.\n * Set explicitly to override the version-based default.\n */\n readonly allowNativeWayland?: boolean | null\n}\n\n/**\n * Configuration for a remote snap build on [Launchpad](https://launchpad.net/).\n * Remote builds run on Canonical's infrastructure without requiring native hardware or nested virtualisation.\n *\n * Each electron-builder build invocation targets exactly one architecture — to build for multiple\n * architectures, configure the top-level `arch` option (e.g. `arch: [\"x64\", \"arm64\"]`); each arch\n * spawns a separate `snapcraft remote-build` job on Launchpad.\n *\n * Authentication is resolved in this order:\n * 1. `cscLink` config field — base64-encoded credentials or a file path\n * 2. `SNAP_CSC_LINK` environment variable — same format as `cscLink`\n * (CI-recommended; follows the same pattern as `WIN_CSC_LINK` for Windows code signing)\n * 3. `SNAPCRAFT_STORE_CREDENTIALS` environment variable (read directly by snapcraft)\n * 4. An active interactive `snapcraft login` session\n *\n * **CI setup** (set once as a CI secret):\n * ```sh\n * export SNAP_CSC_LINK=$(snapcraft export-login - | base64 -w0)\n * ```\n * The resolved credentials are injected only into the spawned `snapcraft` subprocess\n * environment and never exposed through `process.env`.\n */\nexport interface RemoteBuildOptions {\n /**\n * Whether to enable remote build on Launchpad. Must be set explicitly to `true` to opt in.\n */\n enabled: boolean\n\n /**\n * Your Launchpad username. Used to select the correct Launchpad account when more than\n * one set of credentials is available.\n */\n launchpadUsername?: string\n\n /**\n * Target architecture for the remote build. Accepts a single snapcraft arch string\n * (e.g. `\"amd64\"`, `\"arm64\"`, `\"armhf\"`).\n *\n * To build for multiple architectures, configure electron-builder's top-level `arch` option\n * (e.g. `arch: [\"x64\", \"arm64\"]`) — each arch spawns a separate remote-build job on Launchpad,\n * keeping the one-build-per-artifact contract intact.\n * @example \"amd64\"\n */\n buildFor?: string\n\n /**\n * Suppress the Launchpad public-upload consent prompt by automatically accepting it.\n * Your source code will be uploaded to a **public** Launchpad repository.\n * Set to `true` in CI once you understand the implications.\n */\n acceptPublicUpload?: boolean\n\n /**\n * Launchpad project name to use for a **private** source upload.\n * The project must already exist and you must have write access.\n */\n privateProject?: string\n\n /**\n * Resume a previously interrupted remote build rather than starting a new one.\n */\n recover?: boolean\n\n /**\n * Maximum time in seconds to wait for the remote build to complete before aborting.\n * Passed to `snapcraft remote-build` as `--timeout <seconds>`.\n *\n * @example 1800 // 30 minutes\n */\n timeout?: number\n\n /**\n * Controls whether snapcraft may fall back to a different remote build strategy.\n * - `\"disable-fallback\"` — always use the primary strategy, fail if unavailable.\n * - `\"force-fallback\"` — always use the fallback strategy.\n */\n strategy?: \"disable-fallback\" | \"force-fallback\"\n}\n\n/**\n * **[Beta]** Options for building a core24 snap. This interface does not extend the legacy\n * `SnapBaseOptions` — it uses the snapcraft CLI directly.\n *\n * Fields inherited from {@link CommonLinuxOptions} (`description`, `category`, `mimeTypes`,\n * `executableArgs`, `desktop`, `synopsis`) are automatically populated from the root `linux.*`\n * configuration. You do not need to duplicate them here; values set directly on this interface\n * take precedence over the cascaded `linux.*` values.\n *\n * @beta\n */\nexport interface SnapOptions24 extends CommonLinuxOptions, TargetSpecificOptions {\n // ─── Build environment (mutually exclusive) ─────────────────────────────────\n\n /**\n * Use [LXD](https://canonical.com/lxd) as the isolated build environment.\n * Preferred over Multipass on most Linux CI systems where nested virtualisation is unavailable.\n * Mutually exclusive with `useMultipass` and `useDestructiveMode`.\n */\n readonly useLXD?: boolean | null\n\n /**\n * Use [Multipass](https://multipass.run/) as the isolated build environment.\n * Mutually exclusive with `useLXD` and `useDestructiveMode`.\n */\n readonly useMultipass?: boolean | null\n\n /**\n * Build directly on the host without an isolated VM or container (snapcraft `--destructive-mode`).\n * Equivalent to setting `SNAPCRAFT_BUILD_ENVIRONMENT=host`.\n *\n * **Not recommended for most use cases.** Destructive mode pollutes the host environment\n * and produces builds that are difficult to reproduce — any library or tool present on the\n * host at build time can silently end up in the snap. Prefer `useLXD` or `useMultipass`\n * for clean, reproducible builds; use `remoteBuild` for multi-architecture CI.\n *\n * Valid reasons to enable this option:\n * - Building inside a Docker container where nested virtualisation (LXD / Multipass) is\n * unavailable and a remote Launchpad build is not acceptable.\n * - Running test suites in CI where the environment is already fully controlled.\n *\n * The `gnome` extension is incompatible with this mode enabled — do not include it in `extensions`.\n * @see https://snapcraft.io/docs/build-options\n */\n readonly useDestructiveMode?: boolean | null\n\n /**\n * Configuration for a remote build on [Launchpad](https://launchpad.net/).\n * Enables cross-architecture builds in CI without native hardware or nested virtualisation.\n * Each build invocation targets one arch; use `arch: [\"x64\", \"arm64\"]` to build for multiple.\n */\n readonly remoteBuild?: RemoteBuildOptions | null\n\n // ─── Snapcraft extensions ────────────────────────────────────────────────────\n\n /**\n * [Snapcraft extensions](https://snapcraft.io/docs/snapcraft-extensions) to apply to the app.\n * Defaults to `[\"gnome\"]` in normal builds (recommended for Electron apps on Ubuntu 24.04+).\n * Automatically set to `[]` in `useDestructiveMode` builds, where the gnome extension is\n * incompatible. Explicitly including `\"gnome\"` while `useDestructiveMode` is set will throw.\n * See: https://snapcraft.io/docs/gnome-extension\n */\n readonly extensions?: Array<string> | null\n\n // ─── Snap metadata ───────────────────────────────────────────────────────────\n\n /**\n * The type of [confinement](https://snapcraft.io/docs/reference/confinement) supported by the snap.\n * @default strict\n */\n readonly confinement?: \"devmode\" | \"strict\" | \"classic\" | null\n\n /**\n * The quality grade of the snap.\n * `devel` — not publishable to stable/candidate channels.\n * `stable` — suitable for all channels.\n * @default stable\n */\n readonly grade?: \"devel\" | \"stable\" | null\n\n /**\n * A short summary of the snap (max 78 characters). Defaults to `productName`.\n */\n readonly summary?: string | null\n\n /**\n * An optional display title (may contain uppercase letters and spaces). Defaults to `productName`.\n * See [snap format](https://snapcraft.io/docs/snap-format).\n */\n readonly title?: string | null\n\n /**\n * Compression algorithm for the snap SquashFS image.\n * - `xz` — smaller file, slower decompression (recommended for distribution).\n * - `lzo` — larger file, faster decompression (useful for development iteration).\n * Omit to use snapcraft's default (`xz`).\n *\n * When not set, `linux.compression` is mapped automatically:\n * `\"store\"` → `\"lzo\"`, `\"maximum\"` → `\"xz\"`, `\"normal\"` → snapcraft default.\n * Explicitly setting this field always overrides the mapped value.\n */\n readonly compression?: \"xz\" | \"lzo\" | null\n\n /**\n * Features that must be supported by the host snapd before the snap can be installed.\n * See [assumes](https://snapcraft.io/docs/snapcraft-yaml-reference#assumes).\n */\n readonly assumes?: Array<string> | string | null\n\n // ─── Build packages / stage packages ────────────────────────────────────────\n\n /**\n * Debian packages required at **build** time (installed inside the build environment).\n */\n readonly buildPackages?: Array<string> | null\n\n /**\n * Ubuntu packages to **stage** alongside the app (equivalent to `depends` for deb).\n * Defaults to `[\"libnspr4\", \"libnss3\", \"libxss1\", \"libappindicator3-1\", \"libsecret-1-0\"]`.\n * Supports the `\"default\"` keyword to reference the default list:\n * `[\"default\", \"my-extra-lib\"]` appends `my-extra-lib` to the defaults.\n */\n readonly stagePackages?: Array<string> | null\n\n /**\n * Filesets controlling which files from the app part are staged into the snap.\n * Supports glob patterns and exclusions. See [filesets](https://snapcraft.io/docs/snapcraft-filesets).\n */\n readonly appPartStage?: Array<string> | null\n\n /**\n * Names of other snapcraft parts that must be built before the app part.\n */\n readonly after?: Array<string> | null\n\n // ─── Snap interfaces ─────────────────────────────────────────────────────────\n\n /**\n * [Plugs](https://snapcraft.io/docs/reference/interfaces) (consumed interfaces) for the app.\n * When the `gnome` extension is active, content-snap plugs (themes, GNOME platform, GPU)\n * are added automatically — only list custom plugs here.\n * Without any extension, defaults to the standard Electron plug set.\n *\n * Supports descriptor objects for plugs with attributes:\n * ```json\n * [{ \"browser-sandbox\": { \"interface\": \"browser-support\", \"allow-sandbox\": true } }]\n * ```\n */\n readonly plugs?: Array<string | PlugDescriptor> | PlugDescriptor | null\n\n /**\n * [Slots](https://snapcraft.io/docs/reference/interfaces) (provided interfaces) for the app.\n * Use for MPRIS, D-Bus services, etc.\n *\n * Example — expose MPRIS under the Chromium bus name:\n * ```json\n * [{ \"mpris\": { \"name\": \"chromium\" } }]\n * ```\n */\n readonly slots?: Array<string | SlotDescriptor> | SlotDescriptor | null\n\n /**\n * [Snap layouts](https://snapcraft.io/docs/snap-layouts) — bind-mount or symlink host paths\n * into the snap's namespace. User-provided layouts always override the extension defaults.\n */\n readonly layout?: { [key: string]: { [key: string]: string } } | null\n\n // ─── Runtime environment ─────────────────────────────────────────────────────\n\n /**\n * Additional environment variables injected into the snap's runtime environment.\n * Merged with the electron-builder defaults (`TMPDIR=$XDG_RUNTIME_DIR`).\n * User-supplied values take precedence.\n */\n readonly environment?: { [key: string]: string } | null\n\n /**\n * Whether the app should auto-start on login (creates an autostart desktop entry).\n * @default false\n */\n readonly autoStart?: boolean\n\n /**\n * Set to `true` to force X11 by injecting `--ozone-platform=x11` into the snap command line.\n * When unset or `false`, no flag is injected and native Wayland is allowed.\n * Unlike the legacy `snap.allowNativeWayland`, there is no electron-version-based default here —\n * core24 always allows Wayland unless this is explicitly `true`.\n */\n readonly forceX11?: boolean | null\n\n // ─── Hooks ───────────────────────────────────────────────────────────────────\n\n /**\n * Directory containing [snap hooks](https://snapcraft.io/docs/snap-hooks), relative to\n * the build resources directory.\n * @default build/snap-hooks\n */\n readonly hooks?: string | null\n}\n\n/**\n * Maps a named plug to its attribute object.\n * `null` uses snapd defaults for that interface.\n *\n * @example\n * ```json\n * { \"browser-sandbox\": { \"interface\": \"browser-support\", \"allow-sandbox\": true } }\n * ```\n */\nexport interface PlugDescriptor {\n [key: string]: { [key: string]: any } | null\n}\n\n/**\n * Maps a named slot to its attribute object.\n * `null` uses snapd defaults for that interface.\n *\n * @example\n * ```json\n * { \"mpris\": { \"name\": \"chromium\" } }\n * ```\n */\nexport interface SlotDescriptor {\n [key: string]: { [key: string]: any } | null\n}\n"]}
1
+ {"version":3,"file":"SnapOptions.js","sourceRoot":"","sources":["../../src/options/SnapOptions.ts"],"names":[],"mappings":"","sourcesContent":["import { TargetSpecificOptions } from \"../core.js\"\nimport { SnapcraftYAML } from \"../targets/linux/snap/snapcraft.js\"\nimport { CommonLinuxOptions } from \"./linuxOptions.js\"\n\n/**\n * New-style snap configuration. Use this via the `snapcraft` key in your build config.\n * Selects the snapcraft core version and its per-core options.\n */\nexport interface SnapcraftOptions extends TargetSpecificOptions {\n /**\n * The snap base to use as the execution environment. Determines which set of per-core options\n * (`core18`, `core20`, `core22`, `core24`, `custom`) is active.\n *\n * Only one core may be selected per build target.\n */\n readonly base: \"core18\" | \"core20\" | \"core22\" | \"core24\" | \"custom\"\n\n /**\n * Snapcraft Store credentials — base64-encoded credentials string or file path.\n * Accepts the same formats as `WIN_CSC_LINK` / `CSC_LINK`: base64 data,\n * absolute/relative/`~/` file paths, and `file://` URIs.\n * Relative paths are resolved against the build resources directory.\n *\n * Injected as `SNAPCRAFT_STORE_CREDENTIALS` into every snapcraft subprocess\n * (core18/core20/core22/core24 builds and `snapcraft upload`).\n * Not applied for `base: \"custom\"` — inject credentials manually via environment variables.\n *\n * The `SNAP_CSC_LINK` environment variable is the CI-friendly alternative.\n * Generate with: `snapcraft export-login - | base64 -w0`\n */\n readonly cscLink?: string\n\n /**\n * Configuration for a core18 build. Only active when `base` is `\"core18\"`.\n */\n readonly core18?: SnapOptionsLegacy | null\n /**\n * Configuration for a core20 build. Only active when `base` is `\"core20\"`.\n */\n readonly core20?: SnapOptionsLegacy | null\n /**\n * Configuration for a core22 build. Only active when `base` is `\"core22\"`.\n */\n readonly core22?: SnapOptionsLegacy | null\n\n /**\n * Options for building a core24 snap. Uses the snapcraft CLI directly.\n * Inherits desktop-entry fields from `CommonLinuxOptions` and publish config from `TargetSpecificOptions`.\n */\n readonly core24?: SnapOptions24 | null\n /**\n * Pass-through custom snap configuration. electron-builder will read the\n * snapcraft.yaml at `yamlPath` and use it verbatim — no plugs, extensions,\n * organize mappings, or desktop files are injected.\n */\n readonly custom?: SnapOptionsCustom | null\n}\n\nexport interface SnapOptionsCustom {\n /**\n * Supports 2 routes:\n * - Path to an existing `snapcraft.yaml` file, relative to `buildResourcesDir`. electron-builder reads the file and passes it through without modification.\n * - A `SnapcraftYAML` object directly in the configuration. electron-builder uses the object to generate a `snapcraft.yaml` file, which is then passed through without modification.\n */\n readonly yaml?: string | SnapcraftYAML | null\n}\n\nexport interface SnapOptionsLegacy extends CommonLinuxOptions, TargetSpecificOptions {\n /**\n * Whether to use the pre-built Electron snap template for faster builds.\n * When `true`, electron-builder delegates snap assembly to the upstream Electron snap\n * template rather than running a full snapcraft build, significantly reducing build time.\n * Defaults to `true` when `stagePackages` is not customised.\n * Only applicable to x64 and armv7l builds.\n */\n readonly useTemplateApp?: boolean\n\n /**\n * The type of [snap confinement](https://snapcraft.io/docs/reference/confinement).\n * - `strict` — recommended; the snap runs in a fully isolated sandbox.\n * - `devmode` — sandbox violations are logged but not enforced; for development only.\n * - `classic` — no confinement; equivalent to a traditionally packaged application.\n * Requires Snap Store approval before publishing.\n * @default strict\n */\n readonly confinement?: \"devmode\" | \"strict\" | \"classic\" | null\n\n /**\n * Environment variables injected into the snap's runtime environment.\n * Merged with the electron-builder default `{ TMPDIR: \"$XDG_RUNTIME_DIR\" }`.\n * User-supplied values take precedence.\n */\n readonly environment?: { [key: string]: string } | null\n\n /**\n * A short summary of the snap (max 78 characters).\n * Defaults to [productName](./configuration.md#productName).\n */\n readonly summary?: string | null\n\n /**\n * The quality grade of the snap.\n * - `stable` — suitable for all channels, including `stable` and `candidate`.\n * - `devel` — development snapshot; cannot be promoted to `stable` or `candidate`.\n * @default stable\n */\n readonly grade?: \"devel\" | \"stable\" | null\n\n /**\n * [Snapd features](https://snapcraft.io/docs/snapcraft-yaml-reference#assumes) that must\n * be present on the host before the snap can be installed.\n */\n readonly assumes?: Array<string> | string | null\n\n /**\n * Debian packages required at **build** time (installed inside the build environment).\n */\n readonly buildPackages?: Array<string> | null\n\n /**\n * Ubuntu packages to **stage** alongside the app (equivalent to `depends` for deb).\n * Defaults to `[\"libnspr4\", \"libnss3\", \"libxss1\", \"libappindicator3-1\", \"libsecret-1-0\"]`.\n *\n * Use the `\"default\"` keyword to extend the default list:\n * `[\"default\", \"my-extra-lib\"]` appends `my-extra-lib` to the defaults.\n */\n readonly stagePackages?: Array<string> | null\n\n /**\n * Directory containing [snap hooks](https://snapcraft.io/docs/snap-hooks), relative to\n * the build resources directory (`build/`).\n * @default build/snap-hooks\n */\n readonly hooks?: string | null\n\n /**\n * [Plugs](https://snapcraft.io/docs/reference/interfaces) (consumed interfaces) to declare\n * for the app entry point.\n * Defaults to `[\"desktop\", \"desktop-legacy\", \"home\", \"x11\", \"wayland\", \"unity7\",\n * \"browser-support\", \"network\", \"gsettings\", \"audio-playback\", \"pulseaudio\", \"opengl\"]`.\n *\n * Use `\"default\"` in the list to keep the defaults and append extras:\n * `[\"default\", \"camera\"]` adds `camera` to the standard set.\n *\n * To configure plug attributes (e.g. `allow-sandbox` for Chromium's internal sandbox),\n * use a descriptor object:\n * ```json\n * [\n * { \"browser-sandbox\": { \"interface\": \"browser-support\", \"allow-sandbox\": true } },\n * \"another-simple-plug-name\"\n * ]\n * ```\n */\n readonly plugs?: Array<string | PlugDescriptor> | PlugDescriptor | null\n\n /**\n * [Slots](https://snapcraft.io/docs/reference/interfaces) (provided interfaces) to declare\n * for the app.\n *\n * To expose an MPRIS player under the Chromium bus name (required for strict confinement):\n * ```json\n * [{ \"mpris\": { \"name\": \"chromium\" } }]\n * ```\n * Chromium [hard-codes](https://source.chromium.org/chromium/chromium/src/+/master:components/system_media_controls/linux/system_media_controls_linux.cc;l=51;bpv=0;bpt=1)\n * the bus name `chromium`, so the slot name must match for snapd to\n * [allow it](https://forum.snapcraft.io/t/unable-to-use-mpris-interface/15360/7).\n */\n readonly slots?: Array<string | SlotDescriptor> | SlotDescriptor | null\n\n /**\n * Names of snapcraft parts that must be built before the app part.\n * Defaults to `[\"desktop-gtk2\"]`.\n *\n * Use `\"default\"` to keep the default and add extras:\n * `[\"default\", \"my-helper-part\"]`.\n */\n readonly after?: Array<string> | null\n\n /**\n * Whether the snap should automatically start on login.\n * @default false\n */\n readonly autoStart?: boolean\n\n /**\n * [Snap layouts](https://snapcraft.io/docs/snap-layouts) — bind-mount or symlink host paths\n * into the snap's namespace, making libraries or config at `/usr`, `/var`, `/etc`, etc.\n * accessible inside the confined environment.\n */\n readonly layout?: { [key: string]: { [key: string]: string } } | null\n\n /**\n * Filesets controlling which files from the app part are staged into the snap.\n * Supports individual files, directories, globs, globstars, and exclusions (prefix `!`).\n * See [Snapcraft filesets](https://snapcraft.io/docs/snapcraft-filesets).\n * When not set, the snap template's default stage list is used for legacy bases (core18/core20/core22).\n */\n readonly appPartStage?: Array<string> | null\n\n /**\n * Display title for the snap (may contain uppercase letters and spaces).\n * Defaults to `productName`.\n * See [snap format](https://snapcraft.io/docs/snap-format).\n */\n readonly title?: string | null\n\n /**\n * Compression algorithm for the snap SquashFS image.\n * - `xz` — smaller file, slower decompression (good for distribution).\n * - `lzo` — larger file, faster decompression (good for development iteration).\n * Omit to use snapcraft's default (`xz`).\n *\n * When not set, `linux.compression` is mapped automatically:\n * `\"store\"` → `\"lzo\"`, `\"maximum\"` → `\"xz\"`, `\"normal\"` → snapcraft default.\n * Explicitly setting this field always overrides the mapped value.\n */\n readonly compression?: \"xz\" | \"lzo\" | null\n\n /**\n * Allow the snap to run with native Wayland support (`--ozone-platform=wayland`).\n * Defaults to `false` for Electron < 38 (legacy behaviour); `true` for Electron ≥ 38.\n * Set explicitly to override the version-based default.\n */\n readonly allowNativeWayland?: boolean | null\n}\n\n/**\n * Configuration for a remote snap build on [Launchpad](https://launchpad.net/).\n * Remote builds run on Canonical's infrastructure without requiring native hardware or nested virtualisation.\n *\n * Each electron-builder build invocation targets exactly one architecture — to build for multiple\n * architectures, configure the top-level `arch` option (e.g. `arch: [\"x64\", \"arm64\"]`); each arch\n * spawns a separate `snapcraft remote-build` job on Launchpad.\n *\n * Authentication is resolved in this order:\n * 1. `cscLink` config field — base64-encoded credentials or a file path\n * 2. `SNAP_CSC_LINK` environment variable — same format as `cscLink`\n * (CI-recommended; follows the same pattern as `WIN_CSC_LINK` for Windows code signing)\n * 3. `SNAPCRAFT_STORE_CREDENTIALS` environment variable (read directly by snapcraft)\n * 4. An active interactive `snapcraft login` session\n *\n * **CI setup** (set once as a CI secret):\n * ```sh\n * export SNAP_CSC_LINK=$(snapcraft export-login - | base64 -w0)\n * ```\n * The resolved credentials are injected only into the spawned `snapcraft` subprocess\n * environment and never exposed through `process.env`.\n */\nexport interface RemoteBuildOptions {\n /**\n * Whether to enable remote build on Launchpad. Must be set explicitly to `true` to opt in.\n */\n enabled: boolean\n\n /**\n * Your Launchpad username. Used to select the correct Launchpad account when more than\n * one set of credentials is available.\n */\n launchpadUsername?: string\n\n /**\n * Target architecture (or architectures) for the remote build.\n *\n * - **Single string** (e.g. `\"amd64\"`): one Launchpad job, one output snap.\n * - **Array** (e.g. `[\"amd64\", \"arm64\"]`): one Launchpad job that builds all listed\n * architectures and downloads each resulting snap. All produced snaps are emitted as\n * separate build artifacts.\n *\n * Using an array here is mutually exclusive with setting `arch: [\"x64\", \"arm64\"]` at the\n * electron-builder top level — the top-level `arch` option spawns a separate remote-build\n * job per architecture, which would duplicate work.\n *\n * @example \"amd64\"\n * @example [\"amd64\", \"arm64\"]\n */\n buildFor?: string | string[]\n\n /**\n * Suppress the Launchpad public-upload consent prompt by automatically accepting it.\n * Your source code will be uploaded to a **public** Launchpad repository.\n * Set to `true` in CI once you understand the implications.\n */\n acceptPublicUpload?: boolean\n\n /**\n * Launchpad project name to use for a **private** source upload.\n * The project must already exist and you must have write access.\n */\n privateProject?: string\n\n /**\n * Resume a previously interrupted remote build rather than starting a new one.\n */\n recover?: boolean\n\n /**\n * Maximum time in seconds to wait for the remote build to complete before aborting.\n * Passed to `snapcraft remote-build` as `--timeout <seconds>`.\n *\n * @example 1800 // 30 minutes\n */\n timeout?: number\n\n /**\n * Controls whether snapcraft may fall back to a different remote build strategy.\n * - `\"disable-fallback\"` — always use the primary strategy, fail if unavailable.\n * - `\"force-fallback\"` — always use the fallback strategy.\n */\n strategy?: \"disable-fallback\" | \"force-fallback\"\n}\n\n/**\n * Options for building a core24 snap. This interface does not extend the legacy\n * `SnapBaseOptions` — it uses the snapcraft CLI directly.\n *\n * Fields inherited from {@link CommonLinuxOptions} (`description`, `category`, `mimeTypes`,\n * `executableArgs`, `desktop`, `synopsis`) are automatically populated from the root `linux.*`\n * configuration. You do not need to duplicate them here; values set directly on this interface\n * take precedence over the cascaded `linux.*` values.\n */\nexport interface SnapOptions24 extends CommonLinuxOptions, TargetSpecificOptions {\n // ─── Build environment (mutually exclusive) ─────────────────────────────────\n\n /**\n * Use [LXD](https://canonical.com/lxd) as the isolated build environment.\n * Preferred over Multipass on most Linux CI systems where nested virtualisation is unavailable.\n * Mutually exclusive with `useMultipass` and `useDestructiveMode`.\n */\n readonly useLXD?: boolean | null\n\n /**\n * Use [Multipass](https://multipass.run/) as the isolated build environment.\n * Mutually exclusive with `useLXD` and `useDestructiveMode`.\n */\n readonly useMultipass?: boolean | null\n\n /**\n * Build directly on the host without an isolated VM or container (snapcraft `--destructive-mode`).\n * Equivalent to setting `SNAPCRAFT_BUILD_ENVIRONMENT=host`.\n *\n * **Not recommended for most use cases.** Destructive mode pollutes the host environment\n * and produces builds that are difficult to reproduce — any library or tool present on the\n * host at build time can silently end up in the snap. Prefer `useLXD` or `useMultipass`\n * for clean, reproducible builds; use `remoteBuild` for multi-architecture CI.\n *\n * Valid reasons to enable this option:\n * - Building inside a Docker container where nested virtualisation (LXD / Multipass) is\n * unavailable and a remote Launchpad build is not acceptable.\n * - Running test suites in CI where the environment is already fully controlled.\n *\n * The `gnome` extension is incompatible with this mode enabled — do not include it in `extensions`.\n * @see https://snapcraft.io/docs/build-options\n */\n readonly useDestructiveMode?: boolean | null\n\n /**\n * Configuration for a remote build on [Launchpad](https://launchpad.net/).\n * Enables cross-architecture builds in CI without native hardware or nested virtualisation.\n * Each build invocation targets one arch; use `arch: [\"x64\", \"arm64\"]` to build for multiple.\n */\n readonly remoteBuild?: RemoteBuildOptions | null\n\n // ─── Snapcraft extensions ────────────────────────────────────────────────────\n\n /**\n * [Snapcraft extensions](https://snapcraft.io/docs/snapcraft-extensions) to apply to the app.\n * Defaults to `[\"gnome\"]` in normal builds (recommended for Electron apps on Ubuntu 24.04+).\n * Automatically set to `[]` in `useDestructiveMode` builds, where the gnome extension is\n * incompatible. Explicitly including `\"gnome\"` while `useDestructiveMode` is set will throw.\n * See: https://snapcraft.io/docs/gnome-extension\n */\n readonly extensions?: Array<string> | null\n\n // ─── Snap metadata ───────────────────────────────────────────────────────────\n\n /**\n * The type of [confinement](https://snapcraft.io/docs/reference/confinement) supported by the snap.\n * @default strict\n */\n readonly confinement?: \"devmode\" | \"strict\" | \"classic\" | null\n\n /**\n * The quality grade of the snap.\n * `devel` — not publishable to stable/candidate channels.\n * `stable` — suitable for all channels.\n * @default stable\n */\n readonly grade?: \"devel\" | \"stable\" | null\n\n /**\n * A short summary of the snap (max 78 characters). Defaults to `productName`.\n */\n readonly summary?: string | null\n\n /**\n * An optional display title (may contain uppercase letters and spaces). Defaults to `productName`.\n * See [snap format](https://snapcraft.io/docs/snap-format).\n */\n readonly title?: string | null\n\n /**\n * Compression algorithm for the snap SquashFS image.\n * - `xz` — smaller file, slower decompression (recommended for distribution).\n * - `lzo` — larger file, faster decompression (useful for development iteration).\n * Omit to use snapcraft's default (`xz`).\n *\n * When not set, `linux.compression` is mapped automatically:\n * `\"store\"` → `\"lzo\"`, `\"maximum\"` → `\"xz\"`, `\"normal\"` → snapcraft default.\n * Explicitly setting this field always overrides the mapped value.\n */\n readonly compression?: \"xz\" | \"lzo\" | null\n\n /**\n * Features that must be supported by the host snapd before the snap can be installed.\n * See [assumes](https://snapcraft.io/docs/snapcraft-yaml-reference#assumes).\n */\n readonly assumes?: Array<string> | string | null\n\n // ─── Build packages / stage packages ────────────────────────────────────────\n\n /**\n * Debian packages required at **build** time (installed inside the build environment).\n */\n readonly buildPackages?: Array<string> | null\n\n /**\n * Ubuntu packages to **stage** alongside the app (equivalent to `depends` for deb).\n * Defaults to `[\"libnspr4\", \"libnss3\", \"libxss1\", \"libappindicator3-1\", \"libsecret-1-0\"]`.\n * Supports the `\"default\"` keyword to reference the default list:\n * `[\"default\", \"my-extra-lib\"]` appends `my-extra-lib` to the defaults.\n */\n readonly stagePackages?: Array<string> | null\n\n /**\n * Filesets controlling which files from the app part are staged into the snap.\n * Supports glob patterns and exclusions. See [filesets](https://snapcraft.io/docs/snapcraft-filesets).\n */\n readonly appPartStage?: Array<string> | null\n\n /**\n * Names of other snapcraft parts that must be built before the app part.\n */\n readonly after?: Array<string> | null\n\n // ─── Snap interfaces ─────────────────────────────────────────────────────────\n\n /**\n * [Plugs](https://snapcraft.io/docs/reference/interfaces) (consumed interfaces) for the app.\n * When the `gnome` extension is active, content-snap plugs (themes, GNOME platform, GPU)\n * are added automatically — only list custom plugs here.\n * Without any extension, defaults to the standard Electron plug set.\n *\n * Supports descriptor objects for plugs with attributes:\n * ```json\n * [{ \"browser-sandbox\": { \"interface\": \"browser-support\", \"allow-sandbox\": true } }]\n * ```\n */\n readonly plugs?: Array<string | PlugDescriptor> | PlugDescriptor | null\n\n /**\n * [Slots](https://snapcraft.io/docs/reference/interfaces) (provided interfaces) for the app.\n * Use for MPRIS, D-Bus services, etc.\n *\n * Example — expose MPRIS under the Chromium bus name:\n * ```json\n * [{ \"mpris\": { \"name\": \"chromium\" } }]\n * ```\n */\n readonly slots?: Array<string | SlotDescriptor> | SlotDescriptor | null\n\n /**\n * [Snap layouts](https://snapcraft.io/docs/snap-layouts) — bind-mount or symlink host paths\n * into the snap's namespace. User-provided layouts always override the extension defaults.\n */\n readonly layout?: { [key: string]: { [key: string]: string } } | null\n\n // ─── Runtime environment ─────────────────────────────────────────────────────\n\n /**\n * Additional environment variables injected into the snap's runtime environment.\n * Merged with the electron-builder defaults (`TMPDIR=$XDG_RUNTIME_DIR`).\n * User-supplied values take precedence.\n */\n readonly environment?: { [key: string]: string } | null\n\n /**\n * Whether the app should auto-start on login (creates an autostart desktop entry).\n * @default false\n */\n readonly autoStart?: boolean\n\n /**\n * Set to `true` to force X11 by injecting `--ozone-platform=x11` into the snap command line.\n * When unset or `false`, no flag is injected and native Wayland is allowed.\n * Unlike the legacy `snap.allowNativeWayland`, there is no electron-version-based default here —\n * core24 always allows Wayland unless this is explicitly `true`.\n */\n readonly forceX11?: boolean | null\n\n // ─── Hooks ───────────────────────────────────────────────────────────────────\n\n /**\n * Directory containing [snap hooks](https://snapcraft.io/docs/snap-hooks), relative to\n * the build resources directory.\n * @default build/snap-hooks\n */\n readonly hooks?: string | null\n}\n\n/**\n * Maps a named plug to its attribute object.\n * `null` uses snapd defaults for that interface.\n *\n * @example\n * ```json\n * { \"browser-sandbox\": { \"interface\": \"browser-support\", \"allow-sandbox\": true } }\n * ```\n */\nexport interface PlugDescriptor {\n [key: string]: { [key: string]: any } | null\n}\n\n/**\n * Maps a named slot to its attribute object.\n * `null` uses snapd defaults for that interface.\n *\n * @example\n * ```json\n * { \"mpris\": { \"name\": \"chromium\" } }\n * ```\n */\nexport interface SlotDescriptor {\n [key: string]: { [key: string]: any } | null\n}\n"]}
@@ -50,16 +50,6 @@ export interface LinuxConfiguration extends CommonLinuxOptions, PlatformSpecific
50
50
  * By default will be generated automatically based on the macOS icns file.
51
51
  */
52
52
  readonly icon?: string;
53
- /**
54
- * When `true`, the installed `.desktop` filename is derived from `desktopName` in `package.json`
55
- * (minus the `.desktop` suffix) so that it matches `StartupWMClass` and Electron's `app_id`.
56
- * Falls back to `executableName` when `desktopName` is absent.
57
- *
58
- * @default false
59
- * @see https://github.com/electron-userland/electron-builder/issues/9103
60
- * @remarks In v27 the default will change to `true`.
61
- */
62
- readonly syncDesktopName?: boolean;
63
53
  }
64
54
  /**
65
55
  * Desktop-entry and runtime fields shared by all Linux targets and all snap core strategies.
@@ -1 +1 @@
1
- {"version":3,"file":"linuxOptions.d.ts","sourceRoot":"","sources":["../../src/options/linuxOptions.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,qBAAqB,EAAE,MAAM,YAAY,CAAA;AACpE,OAAO,EAAE,4BAA4B,EAAE,MAAM,mCAAmC,CAAA;AAEhF;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B;;OAEG;IACH,KAAK,CAAC,EAAE;QACN,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,CAAA;KACpB,GAAG,IAAI,CAAA;IACR;;;;;;;;;;;;OAYG;IACH,cAAc,CAAC,EAAE;QACf,CAAC,UAAU,EAAE,MAAM,GAAG,GAAG,CAAA;KAC1B,GAAG,IAAI,CAAA;CACT;AAED,MAAM,WAAW,kBAAmB,SAAQ,kBAAkB,EAAE,4BAA4B;IAC1F;;;;;;;OAOG;IACH,QAAQ,CAAC,MAAM,CAAC,EAAE,gBAAgB,CAAA;IAElC;;OAEG;IACH,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IAEnC;;OAEG;IACH,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IAE/B;;;OAGG;IACH,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAA;IAStB;;;;;;;;OAQG;IACH,QAAQ,CAAC,eAAe,CAAC,EAAE,OAAO,CAAA;CACnC;AAED;;;;;;;GAOG;AACH,MAAM,WAAW,kBAAkB;IACjC;;OAEG;IACH,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IAEjC;;OAEG;IACH,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IAEpC;;OAEG;IACH,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IAEjC;;OAEG;IACH,QAAQ,CAAC,SAAS,CAAC,EAAE,KAAK,CAAC,MAAM,CAAC,GAAG,IAAI,CAAA;IAEzC;;OAEG;IACH,QAAQ,CAAC,OAAO,CAAC,EAAE,gBAAgB,GAAG,IAAI,CAAA;IAE1C;;OAEG;IACH,QAAQ,CAAC,cAAc,CAAC,EAAE,KAAK,CAAC,MAAM,CAAC,GAAG,IAAI,CAAA;CAC/C;AAGD,MAAM,WAAW,0BAA2B,SAAQ,kBAAkB,EAAE,qBAAqB;IAC3F;;;;OAIG;IACH,QAAQ,CAAC,OAAO,CAAC,EAAE,KAAK,CAAC,MAAM,CAAC,GAAG,IAAI,CAAA;IAEvC;;;;;OAKG;IACH,QAAQ,CAAC,WAAW,CAAC,EAAE,IAAI,GAAG,OAAO,GAAG,IAAI,GAAG,MAAM,GAAG,MAAM,GAAG,KAAK,GAAG,MAAM,GAAG,IAAI,CAAA;IAEtF,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAA;IAEtB;;OAEG;IACH,QAAQ,CAAC,eAAe,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IAExC;;OAEG;IACH,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IAEpC,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IAC/B,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IAEnC;;OAEG;IACH,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IACrC;;OAEG;IACH,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IACpC;;OAEG;IACH,QAAQ,CAAC,eAAe,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IAExC;;;;OAIG;IACH,QAAQ,CAAC,GAAG,CAAC,EAAE,KAAK,CAAC,MAAM,CAAC,GAAG,IAAI,CAAA;CACpC;AACD,MAAM,WAAW,UAAW,SAAQ,0BAA0B;IAC5D;;;;;OAKG;IACH,QAAQ,CAAC,OAAO,CAAC,EAAE,KAAK,CAAC,MAAM,CAAC,GAAG,IAAI,CAAA;IAEvC;;;OAGG;IACH,QAAQ,CAAC,UAAU,CAAC,EAAE,KAAK,CAAC,MAAM,CAAC,GAAG,IAAI,CAAA;IAE1C;;OAEG;IACH,QAAQ,CAAC,eAAe,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IAExC;;OAEG;IACH,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IAEjC,kBAAkB;IAClB,QAAQ,CAAC,WAAW,CAAC,EAAE,IAAI,GAAG,OAAO,GAAG,IAAI,GAAG,KAAK,GAAG,IAAI,CAAA;CAC5D;AAED,MAAM,WAAW,UAAW,SAAQ,0BAA0B;IAC5D;;;;OAIG;IACH,QAAQ,CAAC,WAAW,CAAC,EAAE,IAAI,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,IAAI,CAAA;CAC/D;AAED,MAAM,WAAW,aAAc,SAAQ,0BAA0B;IAC/D,kBAAkB;IAClB,QAAQ,CAAC,WAAW,CAAC,EAAE,IAAI,GAAG,OAAO,GAAG,IAAI,GAAG,MAAM,GAAG,IAAI,CAAA;CAC7D;AAED,MAAM,WAAW,eAAgB,SAAQ,kBAAkB,EAAE,qBAAqB;IAChF;;OAEG;IACH,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IAChC;;;;;;;;;;;;;;OAcG;IACH,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,GAAG,MAAM,GAAG,IAAI,CAAA;CACrD;AAED,MAAM,WAAW,cAAe,SAAQ,kBAAkB,EAAE,qBAAqB;IAC/E;;OAEG;IACH,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IAEhC;;;;OAIG;IACH,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAA;IAEzB;;;;OAIG;IACH,QAAQ,CAAC,cAAc,CAAC,EAAE,MAAM,CAAA;IAEhC;;;;OAIG;IACH,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,CAAA;IAErB;;;;;OAKG;IACH,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAA;IAEtB;;;;OAIG;IACH,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAA;IAE7B;;;;OAIG;IACH,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAA;IAExB;;;;;;;;;;;;;;;;;;;;;;OAsBG;IACH,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,EAAE,CAAA;IAE9B;;;;OAIG;IACH,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC,MAAM,GAAG,GAAG,CAAC,EAAE,CAAA;IAEnC;;;;OAIG;IACH,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,CAAA;IAEnC;;;;OAIG;IACH,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,CAAA;IAEtC;;OAEG;IACH,QAAQ,CAAC,eAAe,CAAC,EAAE,OAAO,CAAA;CACnC"}
1
+ {"version":3,"file":"linuxOptions.d.ts","sourceRoot":"","sources":["../../src/options/linuxOptions.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"linuxOptions.js","sourceRoot":"","sources":["../../src/options/linuxOptions.ts"],"names":[],"mappings":"","sourcesContent":["import { TargetConfigType, TargetSpecificOptions } from \"../core.js\"\nimport { PlatformSpecificBuildOptions } from \"./PlatformSpecificBuildOptions.js\"\n\n/**\n * Example Spec: https://specifications.freedesktop.org/desktop-entry-spec/latest/example.html\n */\nexport interface LinuxDesktopFile {\n /**\n * `[Desktop Entry]` metadata entries (name to value). Overwrites default values calculated by electron-builder\n */\n entry?: {\n [k: string]: string\n } | null\n /**\n * `[Desktop Actions <ActionName>]` metadata entries (name to value).\n *\n * Config Example:\n * ```js\n * desktopActions: {\n * NewWindow: {\n * Name: 'New Window',\n * Exec: 'app --new-window',\n * }\n * }\n * ```\n */\n desktopActions?: {\n [ActionName: string]: any\n } | null\n}\n\nexport interface LinuxConfiguration extends CommonLinuxOptions, PlatformSpecificBuildOptions {\n /**\n * 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 *\n * electron-builder [docker image](https://www.electron.build/multi-platform-build#docker) can be used to build Linux targets on any platform.\n *\n * Please [do not put an AppImage into another archive](https://github.com/probonopd/AppImageKit/wiki/Creating-AppImages#common-mistake) like a .zip or .tar.gz.\n * @default AppImage\n */\n readonly target?: TargetConfigType\n\n /**\n * The maintainer. Defaults to [author](https://www.electron.build/configuration#author).\n */\n readonly maintainer?: string | null\n\n /**\n * The vendor. Defaults to [author](https://www.electron.build/configuration#author).\n */\n readonly vendor?: string | null\n\n /**\n * The path to icon set directory or one png file, relative to the [build resources](https://www.electron.build/contents#extraresources) or to the project directory. The icon filename must contain the size (e.g. 32x32.png) of the icon.\n * By default will be generated automatically based on the macOS icns file.\n */\n readonly icon?: string\n\n /**\n * @private\n * @internal Allows specifying an FPM-only package category for all FPM targets in one place.\n * For user-facing category configuration use the target-specific options (e.g. {@link DebOptions}).\n */\n readonly packageCategory?: string | null\n\n /**\n * When `true`, the installed `.desktop` filename is derived from `desktopName` in `package.json`\n * (minus the `.desktop` suffix) so that it matches `StartupWMClass` and Electron's `app_id`.\n * Falls back to `executableName` when `desktopName` is absent.\n *\n * @default false\n * @see https://github.com/electron-userland/electron-builder/issues/9103\n * @remarks In v27 the default will change to `true`.\n */\n readonly syncDesktopName?: boolean\n}\n\n/**\n * Desktop-entry and runtime fields shared by all Linux targets and all snap core strategies.\n *\n * Fields set under `linux.*` in your build config (i.e. on {@link LinuxConfiguration}) are\n * automatically cascaded into each snap core's options by `LinuxTargetHelper.getSnapCore()`.\n * You do not need to duplicate them under `snapcraft.core24.*`, `snapcraft.core22.*`, etc.\n * Per-core values always take precedence when both are set.\n */\nexport interface CommonLinuxOptions {\n /**\n * The [short description](https://www.debian.org/doc/debian-policy/ch-controlfields.html#s-f-Description).\n */\n readonly synopsis?: string | null\n\n /**\n * As [description](https://www.electron.build/configuration#description) from application package.json, but allows you to specify different for Linux.\n */\n readonly description?: string | null\n\n /**\n * The [application category](https://specifications.freedesktop.org/menu-spec/latest/apa.html#main-category-registry).\n */\n readonly category?: string | null\n\n /**\n * The mime types in addition to specified in the file associations. Use it if you don't want to register a new mime type, but reuse existing.\n */\n readonly mimeTypes?: Array<string> | null\n\n /**\n * The [Desktop file](https://developer.gnome.org/documentation/guidelines/maintainer/integrating.html#desktop-files)\n */\n readonly desktop?: LinuxDesktopFile | null\n\n /**\n * The executable parameters. Pass to executableName\n */\n readonly executableArgs?: Array<string> | null\n}\n\n// fpm-only specific options\nexport interface LinuxTargetSpecificOptions extends CommonLinuxOptions, TargetSpecificOptions {\n /**\n * Package dependencies.\n * `rpm` defaults to `[\"gtk3\", \"libnotify\", \"nss\", \"libXScrnSaver\", \"(libXtst or libXtst6)\", \"xdg-utils\", \"at-spi2-core\", \"(libuuid or libuuid1)\"]`\n * `pacman` defaults to `[\"c-ares\", \"ffmpeg\", \"gtk3\", \"http-parser\", \"libevent\", \"libvpx\", \"libxslt\", \"libxss\", \"minizip\", \"nss\", \"re2\", \"snappy\", \"libnotify\", \"libappindicator-gtk3\"]`\n */\n readonly depends?: Array<string> | null\n\n /**\n * The compression type passed to fpm. For `deb`, `rpm`, and `pacman` targets prefer the\n * typed per-format interfaces (`DebOptions`, `RpmOptions`, `PacmanOptions`) which narrow\n * this to only the values that fpm actually accepts for that format.\n * @default xz\n */\n readonly compression?: \"gz\" | \"bzip2\" | \"xz\" | \"xzmt\" | \"gzip\" | \"zst\" | \"zstd\" | null\n\n readonly icon?: string\n\n /**\n * The package category.\n */\n readonly packageCategory?: string | null\n\n /**\n * The name of the package.\n */\n readonly packageName?: string | null\n\n readonly vendor?: string | null\n readonly maintainer?: string | null\n\n /**\n * File path to script to be passed to FPM for `--after-install` arg.\n */\n readonly afterInstall?: string | null\n /**\n * File path to script to be passed to FPM for `--after-remove` arg.\n */\n readonly afterRemove?: string | null\n /**\n * File path to custom AppArmor profile (Ubuntu 24+)\n */\n readonly appArmorProfile?: string | null\n\n /**\n * *Advanced only* The [fpm](https://fpm.readthedocs.io/en/latest/cli-reference.html) options.\n *\n * Example: `[\"--before-install=build/deb-preinstall.sh\", \"--after-upgrade=build/deb-postinstall.sh\"]`\n */\n readonly fpm?: Array<string> | null\n}\nexport interface DebOptions extends LinuxTargetSpecificOptions {\n /**\n * Package dependencies.\n * If need to support Debian, `libappindicator1` should be removed, it is [deprecated in Debian](https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=895037).\n * If need to support KDE, `gconf2` and `gconf-service` should be removed as it's no longer used [by GNOME](https://packages.debian.org/bullseye/gconf2).\n * @default [\"libgtk-3-0\", \"libnotify4\", \"libnss3\", \"libxss1\", \"libxtst6\", \"xdg-utils\", \"libatspi2.0-0\", \"libuuid1\", \"libsecret-1-0\"]\n */\n readonly depends?: Array<string> | null\n\n /**\n * The [recommended package dependencies](https://www.debian.org/doc/debian-policy/ch-relationships.html#s-binarydeps).\n * @default [\"libappindicator3-1\"]\n */\n readonly recommends?: Array<string> | null\n\n /**\n * The [package category](https://www.debian.org/doc/debian-policy/ch-controlfields.html#s-f-Section).\n */\n readonly packageCategory?: string | null\n\n /**\n * The [Priority](https://www.debian.org/doc/debian-policy/ch-controlfields.html#s-f-Priority) attribute.\n */\n readonly priority?: string | null\n\n /** @default xz */\n readonly compression?: \"gz\" | \"bzip2\" | \"xz\" | \"zst\" | null\n}\n\nexport interface RpmOptions extends LinuxTargetSpecificOptions {\n /**\n * Passed to fpm via `--rpm-compression`. `\"xzmt\"` uses multi-threaded xz (fpm's RPM default).\n * `\"xz\"` is automatically promoted to `\"xzmt\"`. `\"gzip\"` and `\"bzip2\"` pass through as-is.\n * @default xzmt\n */\n readonly compression?: \"xz\" | \"xzmt\" | \"gzip\" | \"bzip2\" | null\n}\n\nexport interface PacmanOptions extends LinuxTargetSpecificOptions {\n /** @default xz */\n readonly compression?: \"gz\" | \"bzip2\" | \"xz\" | \"zstd\" | null\n}\n\nexport interface AppImageOptions extends CommonLinuxOptions, TargetSpecificOptions {\n /**\n * The path to EULA license file. Defaults to `license.txt` or `eula.txt` (or uppercase variants). Only plain text is supported.\n */\n readonly license?: string | null\n /**\n * The compression algorithm passed to the AppImage build tool.\n *\n * **FUSE2 toolset (`\"0.0.0\"` or unset):** only `\"xz\"` and `\"gzip\"` are forwarded\n * to mksquashfs (`-comp <value>`); `\"xz\"` additionally passes `-Xdict-size 100% -b 1048576`.\n * `\"zstd\"`, `null`, and unset fall through to the root-level `compression` option:\n * - `\"maximum\"` → `\"xz\"`\n * - anything else → flag omitted (mksquashfs defaults to gzip)\n *\n * **Static-runtime toolsets (`>= 1.0.0`):** `\"gzip\"` and `\"zstd\"` are forwarded\n * directly. `\"xz\"` is mapped to `\"zstd\"` (nearest supported equivalent). `null`\n * or unset falls through to the root-level `compression` option:\n * - `\"store\"` → `\"gzip\"`\n * - `\"normal\"` / `\"maximum\"` / unset → `\"zstd\"`\n */\n readonly compression?: \"gzip\" | \"xz\" | \"zstd\" | null\n}\n\nexport interface FlatpakOptions extends CommonLinuxOptions, TargetSpecificOptions {\n /**\n * The path to EULA license file. Defaults to `license.txt` or `eula.txt` (or uppercase variants). Only plain text is supported.\n */\n readonly license?: string | null\n\n /**\n * The name of the runtime that the application uses. Defaults to `org.freedesktop.Platform`.\n *\n * See [flatpak manifest documentation](https://docs.flatpak.org/en/latest/flatpak-builder-command-reference.html#flatpak-manifest).\n */\n readonly runtime?: string\n\n /**\n * The version of the runtime that the application uses. Defaults to `20.08`.\n *\n * See [flatpak manifest documentation](https://docs.flatpak.org/en/latest/flatpak-builder-command-reference.html#flatpak-manifest).\n */\n readonly runtimeVersion?: string\n\n /**\n * The name of the development runtime that the application builds with. Defaults to `org.freedesktop.Sdk`.\n *\n * See [flatpak manifest documentation](https://docs.flatpak.org/en/latest/flatpak-builder-command-reference.html#flatpak-manifest).\n */\n readonly sdk?: string\n\n /**\n * Start with the files from the specified application. This can be used to create applications that extend another application.\n * Defaults to [org.electronjs.Electron2.BaseApp](https://github.com/flathub/org.electronjs.Electron2.BaseApp).\n *\n * See [flatpak manifest documentation](https://docs.flatpak.org/en/latest/flatpak-builder-command-reference.html#flatpak-manifest).\n */\n readonly base?: string\n\n /**\n * Use this specific version of the application specified in base. Defaults to `20.08`.\n *\n * See [flatpak manifest documentation](https://docs.flatpak.org/en/latest/flatpak-builder-command-reference.html#flatpak-manifest).\n */\n readonly baseVersion?: string\n\n /**\n * The branch to use when exporting the application. Defaults to `master`.\n *\n * See [flatpak manifest documentation](https://docs.flatpak.org/en/latest/flatpak-builder-command-reference.html#flatpak-manifest).\n */\n readonly branch?: string\n\n /**\n * An array of arguments passed to the flatpak build-finish command. Defaults to:\n * ```json\n * [\n * // Wayland/X11 Rendering\n * \"--socket=wayland\",\n * \"--socket=x11\",\n * \"--share=ipc\",\n * // Open GL\n * \"--device=dri\",\n * // Audio output\n * \"--socket=pulseaudio\",\n * // Read/write home directory access\n * \"--filesystem=home\",\n * // Allow communication with network\n * \"--share=network\",\n * // System notifications with libnotify\n * \"--talk-name=org.freedesktop.Notifications\",\n * ]\n * ```\n *\n * See [flatpak manifest documentation](https://docs.flatpak.org/en/latest/flatpak-builder-command-reference.html#flatpak-manifest).\n */\n readonly finishArgs?: string[]\n\n /**\n * An array of objects specifying the modules to be built in order.\n *\n * See [flatpak manifest documentation](https://docs.flatpak.org/en/latest/flatpak-builder-command-reference.html#flatpak-manifest).\n */\n readonly modules?: (string | any)[]\n\n /**\n * Files to copy directly into the app. Should be a list of [source, dest] tuples. Source should be a relative/absolute path to a file/directory to copy into the flatpak, and dest should be the path inside the app install prefix (e.g. /share/applications/).\n *\n * See [@malept/flatpak-bundler documentation](https://github.com/malept/flatpak-bundler#build-options).\n */\n readonly files?: [string, string][]\n\n /**\n * Symlinks to create in the app files. Should be a list of [target, location] symlink tuples. Target can be either a relative or absolute path inside the app install prefix, and location should be a absolute path inside the prefix to create the symlink at.\n *\n * See [@malept/flatpak-bundler documentation](https://github.com/malept/flatpak-bundler#build-options).\n */\n readonly symlinks?: [string, string][]\n\n /**\n * Whether to enable the Wayland specific flags (`--enable-features=UseOzonePlatform --ozone-platform=wayland`) in the wrapper script. These flags are only available starting with Electron version 12. Defaults to `false`.\n */\n readonly useWaylandFlags?: boolean\n}\n"]}
1
+ {"version":3,"file":"linuxOptions.js","sourceRoot":"","sources":["../../src/options/linuxOptions.ts"],"names":[],"mappings":"","sourcesContent":["import { TargetConfigType, TargetSpecificOptions } from \"../core.js\"\nimport { PlatformSpecificBuildOptions } from \"./PlatformSpecificBuildOptions.js\"\n\n/**\n * Example Spec: https://specifications.freedesktop.org/desktop-entry-spec/latest/example.html\n */\nexport interface LinuxDesktopFile {\n /**\n * `[Desktop Entry]` metadata entries (name to value). Overwrites default values calculated by electron-builder\n */\n entry?: {\n [k: string]: string\n } | null\n /**\n * `[Desktop Actions <ActionName>]` metadata entries (name to value).\n *\n * Config Example:\n * ```js\n * desktopActions: {\n * NewWindow: {\n * Name: 'New Window',\n * Exec: 'app --new-window',\n * }\n * }\n * ```\n */\n desktopActions?: {\n [ActionName: string]: any\n } | null\n}\n\nexport interface LinuxConfiguration extends CommonLinuxOptions, PlatformSpecificBuildOptions {\n /**\n * 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 *\n * electron-builder [docker image](https://www.electron.build/multi-platform-build#docker) can be used to build Linux targets on any platform.\n *\n * Please [do not put an AppImage into another archive](https://github.com/probonopd/AppImageKit/wiki/Creating-AppImages#common-mistake) like a .zip or .tar.gz.\n * @default AppImage\n */\n readonly target?: TargetConfigType\n\n /**\n * The maintainer. Defaults to [author](https://www.electron.build/configuration#author).\n */\n readonly maintainer?: string | null\n\n /**\n * The vendor. Defaults to [author](https://www.electron.build/configuration#author).\n */\n readonly vendor?: string | null\n\n /**\n * The path to icon set directory or one png file, relative to the [build resources](https://www.electron.build/contents#extraresources) or to the project directory. The icon filename must contain the size (e.g. 32x32.png) of the icon.\n * By default will be generated automatically based on the macOS icns file.\n */\n readonly icon?: string\n\n /**\n * @private\n * @internal Allows specifying an FPM-only package category for all FPM targets in one place.\n * For user-facing category configuration use the target-specific options (e.g. {@link DebOptions}).\n */\n readonly packageCategory?: string | null\n}\n\n/**\n * Desktop-entry and runtime fields shared by all Linux targets and all snap core strategies.\n *\n * Fields set under `linux.*` in your build config (i.e. on {@link LinuxConfiguration}) are\n * automatically cascaded into each snap core's options by `LinuxTargetHelper.getSnapCore()`.\n * You do not need to duplicate them under `snapcraft.core24.*`, `snapcraft.core22.*`, etc.\n * Per-core values always take precedence when both are set.\n */\nexport interface CommonLinuxOptions {\n /**\n * The [short description](https://www.debian.org/doc/debian-policy/ch-controlfields.html#s-f-Description).\n */\n readonly synopsis?: string | null\n\n /**\n * As [description](https://www.electron.build/configuration#description) from application package.json, but allows you to specify different for Linux.\n */\n readonly description?: string | null\n\n /**\n * The [application category](https://specifications.freedesktop.org/menu-spec/latest/apa.html#main-category-registry).\n */\n readonly category?: string | null\n\n /**\n * The mime types in addition to specified in the file associations. Use it if you don't want to register a new mime type, but reuse existing.\n */\n readonly mimeTypes?: Array<string> | null\n\n /**\n * The [Desktop file](https://developer.gnome.org/documentation/guidelines/maintainer/integrating.html#desktop-files)\n */\n readonly desktop?: LinuxDesktopFile | null\n\n /**\n * The executable parameters. Pass to executableName\n */\n readonly executableArgs?: Array<string> | null\n}\n\n// fpm-only specific options\nexport interface LinuxTargetSpecificOptions extends CommonLinuxOptions, TargetSpecificOptions {\n /**\n * Package dependencies.\n * `rpm` defaults to `[\"gtk3\", \"libnotify\", \"nss\", \"libXScrnSaver\", \"(libXtst or libXtst6)\", \"xdg-utils\", \"at-spi2-core\", \"(libuuid or libuuid1)\"]`\n * `pacman` defaults to `[\"c-ares\", \"ffmpeg\", \"gtk3\", \"http-parser\", \"libevent\", \"libvpx\", \"libxslt\", \"libxss\", \"minizip\", \"nss\", \"re2\", \"snappy\", \"libnotify\", \"libappindicator-gtk3\"]`\n */\n readonly depends?: Array<string> | null\n\n /**\n * The compression type passed to fpm. For `deb`, `rpm`, and `pacman` targets prefer the\n * typed per-format interfaces (`DebOptions`, `RpmOptions`, `PacmanOptions`) which narrow\n * this to only the values that fpm actually accepts for that format.\n * @default xz\n */\n readonly compression?: \"gz\" | \"bzip2\" | \"xz\" | \"xzmt\" | \"gzip\" | \"zst\" | \"zstd\" | null\n\n readonly icon?: string\n\n /**\n * The package category.\n */\n readonly packageCategory?: string | null\n\n /**\n * The name of the package.\n */\n readonly packageName?: string | null\n\n readonly vendor?: string | null\n readonly maintainer?: string | null\n\n /**\n * File path to script to be passed to FPM for `--after-install` arg.\n */\n readonly afterInstall?: string | null\n /**\n * File path to script to be passed to FPM for `--after-remove` arg.\n */\n readonly afterRemove?: string | null\n /**\n * File path to custom AppArmor profile (Ubuntu 24+)\n */\n readonly appArmorProfile?: string | null\n\n /**\n * *Advanced only* The [fpm](https://fpm.readthedocs.io/en/latest/cli-reference.html) options.\n *\n * Example: `[\"--before-install=build/deb-preinstall.sh\", \"--after-upgrade=build/deb-postinstall.sh\"]`\n */\n readonly fpm?: Array<string> | null\n}\nexport interface DebOptions extends LinuxTargetSpecificOptions {\n /**\n * Package dependencies.\n * If need to support Debian, `libappindicator1` should be removed, it is [deprecated in Debian](https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=895037).\n * If need to support KDE, `gconf2` and `gconf-service` should be removed as it's no longer used [by GNOME](https://packages.debian.org/bullseye/gconf2).\n * @default [\"libgtk-3-0\", \"libnotify4\", \"libnss3\", \"libxss1\", \"libxtst6\", \"xdg-utils\", \"libatspi2.0-0\", \"libuuid1\", \"libsecret-1-0\"]\n */\n readonly depends?: Array<string> | null\n\n /**\n * The [recommended package dependencies](https://www.debian.org/doc/debian-policy/ch-relationships.html#s-binarydeps).\n * @default [\"libappindicator3-1\"]\n */\n readonly recommends?: Array<string> | null\n\n /**\n * The [package category](https://www.debian.org/doc/debian-policy/ch-controlfields.html#s-f-Section).\n */\n readonly packageCategory?: string | null\n\n /**\n * The [Priority](https://www.debian.org/doc/debian-policy/ch-controlfields.html#s-f-Priority) attribute.\n */\n readonly priority?: string | null\n\n /** @default xz */\n readonly compression?: \"gz\" | \"bzip2\" | \"xz\" | \"zst\" | null\n}\n\nexport interface RpmOptions extends LinuxTargetSpecificOptions {\n /**\n * Passed to fpm via `--rpm-compression`. `\"xzmt\"` uses multi-threaded xz (fpm's RPM default).\n * `\"xz\"` is automatically promoted to `\"xzmt\"`. `\"gzip\"` and `\"bzip2\"` pass through as-is.\n * @default xzmt\n */\n readonly compression?: \"xz\" | \"xzmt\" | \"gzip\" | \"bzip2\" | null\n}\n\nexport interface PacmanOptions extends LinuxTargetSpecificOptions {\n /** @default xz */\n readonly compression?: \"gz\" | \"bzip2\" | \"xz\" | \"zstd\" | null\n}\n\nexport interface AppImageOptions extends CommonLinuxOptions, TargetSpecificOptions {\n /**\n * The path to EULA license file. Defaults to `license.txt` or `eula.txt` (or uppercase variants). Only plain text is supported.\n */\n readonly license?: string | null\n /**\n * The compression algorithm passed to the AppImage build tool.\n *\n * **FUSE2 toolset (`\"0.0.0\"` or unset):** only `\"xz\"` and `\"gzip\"` are forwarded\n * to mksquashfs (`-comp <value>`); `\"xz\"` additionally passes `-Xdict-size 100% -b 1048576`.\n * `\"zstd\"`, `null`, and unset fall through to the root-level `compression` option:\n * - `\"maximum\"` → `\"xz\"`\n * - anything else → flag omitted (mksquashfs defaults to gzip)\n *\n * **Static-runtime toolsets (`>= 1.0.0`):** `\"gzip\"` and `\"zstd\"` are forwarded\n * directly. `\"xz\"` is mapped to `\"zstd\"` (nearest supported equivalent). `null`\n * or unset falls through to the root-level `compression` option:\n * - `\"store\"` → `\"gzip\"`\n * - `\"normal\"` / `\"maximum\"` / unset → `\"zstd\"`\n */\n readonly compression?: \"gzip\" | \"xz\" | \"zstd\" | null\n}\n\nexport interface FlatpakOptions extends CommonLinuxOptions, TargetSpecificOptions {\n /**\n * The path to EULA license file. Defaults to `license.txt` or `eula.txt` (or uppercase variants). Only plain text is supported.\n */\n readonly license?: string | null\n\n /**\n * The name of the runtime that the application uses. Defaults to `org.freedesktop.Platform`.\n *\n * See [flatpak manifest documentation](https://docs.flatpak.org/en/latest/flatpak-builder-command-reference.html#flatpak-manifest).\n */\n readonly runtime?: string\n\n /**\n * The version of the runtime that the application uses. Defaults to `20.08`.\n *\n * See [flatpak manifest documentation](https://docs.flatpak.org/en/latest/flatpak-builder-command-reference.html#flatpak-manifest).\n */\n readonly runtimeVersion?: string\n\n /**\n * The name of the development runtime that the application builds with. Defaults to `org.freedesktop.Sdk`.\n *\n * See [flatpak manifest documentation](https://docs.flatpak.org/en/latest/flatpak-builder-command-reference.html#flatpak-manifest).\n */\n readonly sdk?: string\n\n /**\n * Start with the files from the specified application. This can be used to create applications that extend another application.\n * Defaults to [org.electronjs.Electron2.BaseApp](https://github.com/flathub/org.electronjs.Electron2.BaseApp).\n *\n * See [flatpak manifest documentation](https://docs.flatpak.org/en/latest/flatpak-builder-command-reference.html#flatpak-manifest).\n */\n readonly base?: string\n\n /**\n * Use this specific version of the application specified in base. Defaults to `20.08`.\n *\n * See [flatpak manifest documentation](https://docs.flatpak.org/en/latest/flatpak-builder-command-reference.html#flatpak-manifest).\n */\n readonly baseVersion?: string\n\n /**\n * The branch to use when exporting the application. Defaults to `master`.\n *\n * See [flatpak manifest documentation](https://docs.flatpak.org/en/latest/flatpak-builder-command-reference.html#flatpak-manifest).\n */\n readonly branch?: string\n\n /**\n * An array of arguments passed to the flatpak build-finish command. Defaults to:\n * ```json\n * [\n * // Wayland/X11 Rendering\n * \"--socket=wayland\",\n * \"--socket=x11\",\n * \"--share=ipc\",\n * // Open GL\n * \"--device=dri\",\n * // Audio output\n * \"--socket=pulseaudio\",\n * // Read/write home directory access\n * \"--filesystem=home\",\n * // Allow communication with network\n * \"--share=network\",\n * // System notifications with libnotify\n * \"--talk-name=org.freedesktop.Notifications\",\n * ]\n * ```\n *\n * See [flatpak manifest documentation](https://docs.flatpak.org/en/latest/flatpak-builder-command-reference.html#flatpak-manifest).\n */\n readonly finishArgs?: string[]\n\n /**\n * An array of objects specifying the modules to be built in order.\n *\n * See [flatpak manifest documentation](https://docs.flatpak.org/en/latest/flatpak-builder-command-reference.html#flatpak-manifest).\n */\n readonly modules?: (string | any)[]\n\n /**\n * Files to copy directly into the app. Should be a list of [source, dest] tuples. Source should be a relative/absolute path to a file/directory to copy into the flatpak, and dest should be the path inside the app install prefix (e.g. /share/applications/).\n *\n * See [@malept/flatpak-bundler documentation](https://github.com/malept/flatpak-bundler#build-options).\n */\n readonly files?: [string, string][]\n\n /**\n * Symlinks to create in the app files. Should be a list of [target, location] symlink tuples. Target can be either a relative or absolute path inside the app install prefix, and location should be a absolute path inside the prefix to create the symlink at.\n *\n * See [@malept/flatpak-bundler documentation](https://github.com/malept/flatpak-bundler#build-options).\n */\n readonly symlinks?: [string, string][]\n\n /**\n * Whether to enable the Wayland specific flags (`--enable-features=UseOzonePlatform --ozone-platform=wayland`) in the wrapper script. These flags are only available starting with Electron version 12. Defaults to `false`.\n */\n readonly useWaylandFlags?: boolean\n}\n"]}
@@ -21,25 +21,50 @@ export interface WindowsConfiguration extends PlatformSpecificBuildOptions {
21
21
  */
22
22
  readonly legalTrademarks?: string | null;
23
23
  /**
24
- * Code signing configuration. Set to `false` or `null` to disable Windows code signing
25
- * (executable resources such as the icon and metadata are still edited). Leave unset to
26
- * sign using credentials discovered from the environment (e.g. `WIN_CSC_LINK`). Otherwise
27
- * provide exactly one of the following signing modes:
24
+ * Code signing configuration. Code signing stamps every installer and executable
25
+ * electron-builder produces with an Authenticode signature, so that Windows (SmartScreen / UAC)
26
+ * and your auto-updater can verify the publisher and that the files were not tampered with.
27
+ *
28
+ * How this option behaves:
29
+ * - Leave **unset** to sign using credentials discovered from the environment — primarily a
30
+ * certificate supplied via `WIN_CSC_LINK` (or `CSC_LINK`) with its password in
31
+ * `WIN_CSC_KEY_PASSWORD` (or `CSC_KEY_PASSWORD`). `WIN_CSC_LINK` accepts a file path, an
32
+ * `https://` URL, or a base64-encoded certificate. This is the recommended setup for CI.
33
+ * - Set to `false` or `null` to **disable** code signing entirely (executable resources such as
34
+ * the icon and metadata are still edited).
35
+ * - Set to an **object** to configure signing explicitly. The `type` field selects the signing
36
+ * backend (`signtool` is the implicit default) and dispatches to a dedicated sign manager;
37
+ * provide exactly one of the modes below. Each output artifact is signed individually, and by
38
+ * default executables are dual-signed (see `signingHashAlgorithms`).
28
39
  *
29
40
  * - `{ type: "signtool", ... }` — Sign with a local certificate file (.pfx/.p12) or a
30
- * certificate from the Windows certificate store.
41
+ * certificate from the Windows certificate store. Uses Microsoft `signtool.exe` on Windows and
42
+ * `osslsigncode` on macOS/Linux.
31
43
  * - `{ type: "hsm", ... }` — Sign using a Hardware Security Module (HSM) or FIPS-compliant
32
44
  * hardware token via signtool's `/csp` (cryptographic service provider) and `/kc` (key
33
- * container) flags. Requires `toolsets.winCodeSign: "1.x"`. Windows-only.
45
+ * container) flags. Requires a modern `winCodeSign` toolset (the default — only the legacy
46
+ * `"0.0.0"` pin is unsupported). Windows-only.
34
47
  * - `{ type: "pkcs11", ... }` — Sign using a PKCS#11 hardware token via osslsigncode.
35
48
  * Available on macOS and Linux CI without a Windows VM.
36
49
  * - `{ type: "azure", ... }` — Sign via Azure Trusted Signing (cloud service). Requires
37
50
  * Azure Entra ID environment variables for authentication.
51
+ *
52
+ * See [Code Signing](https://www.electron.build/code-signing).
38
53
  */
39
54
  readonly sign?: WindowsSigningConfiguration | false | null;
40
55
  /**
41
- * Whether to verify the signature of an available update before installation.
42
- * The [publisher name](#publisherName) will be used for the signature verification.
56
+ * Whether the NSIS auto-updater should verify the Authenticode signature of a downloaded update
57
+ * before installing it. This is a **runtime** check performed by your app via electron-updater,
58
+ * not a build-time check.
59
+ *
60
+ * When enabled (the default), the resolved [publisher name](#publisherName) is embedded into
61
+ * `app-update.yml` at build time. At update time electron-updater inspects the certificate that
62
+ * signed the downloaded installer and compares its subject (Distinguished Name / Common Name)
63
+ * against that publisher name, refusing to install on a mismatch. This prevents a tampered or
64
+ * maliciously substituted update from being installed.
65
+ *
66
+ * Set to `false` to skip verification — in which case the publisher name is **not** embedded.
67
+ * Disable this only if your updates are not Authenticode-signed.
43
68
  *
44
69
  * @default true
45
70
  */
@@ -51,63 +76,146 @@ export interface WindowsConfiguration extends PlatformSpecificBuildOptions {
51
76
  */
52
77
  readonly requestedExecutionLevel?: RequestedExecutionLevel | null;
53
78
  /**
54
- * Explicit file name/extensions (`str.endsWith`) to also sign. Advanced option.
55
- * Supports negative patterns, e.g. example that excludes `.appx` files: `["somefilename", ".dll", "!.appx"]`.
79
+ * Additional file name suffixes to code sign, beyond the default. By default electron-builder
80
+ * only signs `.exe` files; list extra suffixes here to also sign e.g. `.dll`, `.node`, or
81
+ * specific file names. Advanced option — most apps do not need it.
82
+ *
83
+ * Each entry is matched with `String.endsWith`, so both bare extensions (`".dll"`) and full file
84
+ * names (`"mybinary.dll"`) work. Prefix a pattern with `!` to *exclude* a suffix that would
85
+ * otherwise be signed. Positive patterns are evaluated first, then negative ones. For example,
86
+ * `["somefilename", ".dll", "!.appx"]` signs `.dll` files (and anything ending in `somefilename`)
87
+ * but never signs `.appx` files.
88
+ *
56
89
  * @see https://github.com/electron-userland/electron-builder/issues/7329
57
90
  * @default null
58
91
  */
59
92
  readonly signExts?: string[] | null;
60
93
  }
61
94
  export type RequestedExecutionLevel = "asInvoker" | "highestAvailable" | "requireAdministrator";
95
+ /**
96
+ * Options shared by every certificate-based signing mode (`signtool`, `hsm`, `pkcs11`). These
97
+ * control the signature itself — publisher identity, digest algorithms, timestamping, and the
98
+ * extra certificates added to the signature block — independently of where the private key lives.
99
+ */
62
100
  interface WindowsSigningSharedOptions {
63
101
  /**
64
- * [The publisher name](https://github.com/electron-userland/electron-builder/issues/1187#issuecomment-278972073), exactly as in your code signed certificate. Several names can be provided.
65
- * Defaults to common name from your code signing certificate.
102
+ * The publisher name(s) to associate with the signature, written exactly as the subject appears
103
+ * in your code signing certificate. May be a single string or an array — an array is useful when
104
+ * rotating certificates, so updates signed by either the old or the new certificate still verify.
105
+ *
106
+ * This value is not a `signtool` argument; it is consumed in two places:
107
+ * - **Update verification** — when [verifyUpdateCodeSignature](#verifyUpdateCodeSignature) is
108
+ * enabled, it is written into `app-update.yml` and electron-updater checks it against the
109
+ * certificate that signed each downloaded update.
110
+ * - **AppX / MSIX identity** — the package `Publisher` attribute must equal the certificate
111
+ * subject, so electron-builder derives it from this value (or the certificate) to keep them
112
+ * in sync; a mismatch makes packaging fail with `ERROR_BAD_FORMAT`.
113
+ *
114
+ * Defaults to the Common Name (CN) extracted from your code signing certificate. Set to `null`
115
+ * to opt out.
116
+ *
117
+ * @see https://github.com/electron-userland/electron-builder/issues/1187#issuecomment-278972073
66
118
  */
67
119
  readonly publisherName?: string | Array<string> | null;
68
120
  /**
69
- * Array of signing algorithms used. For AppX `sha256` is always used.
121
+ * The digest (hash) algorithms to sign with, applied via signtool's `/fd` flag (or
122
+ * osslsigncode's `-h`). One signing pass runs per entry, in order; listing more than one
123
+ * **dual-signs** the file, with each additional signature appended as a nested signature
124
+ * (signtool `/as`). Signing with both `sha1` and `sha256` lets a single binary validate on
125
+ * legacy (pre-SHA-2) Windows as well as modern Windows.
126
+ *
127
+ * Some targets override this: `.msi` cannot be dual-signed (a single hash is used) and AppX/MSIX
128
+ * is always `sha256` only.
129
+ *
70
130
  * @default ['sha1', 'sha256']
71
131
  */
72
132
  readonly signingHashAlgorithms?: Array<"sha1" | "sha256"> | null;
73
133
  /**
74
- * The URL of the RFC 3161 time stamp server.
134
+ * The URL of the [RFC 3161](https://www.ietf.org/rfc/rfc3161.txt) timestamp server, used for
135
+ * SHA-256 and nested/appended signatures (signtool's `/tr` flag). Timestamping records *when*
136
+ * the file was signed so the signature stays valid after the signing certificate expires.
137
+ * Ignored when the build runs with `ELECTRON_BUILDER_OFFLINE=true`.
138
+ *
75
139
  * @default http://timestamp.digicert.com
76
140
  */
77
141
  readonly rfc3161TimeStampServer?: string | null;
78
142
  /**
79
- * The URL of the time stamp server.
143
+ * The URL of the legacy Authenticode timestamp server, used for SHA-1 signatures (signtool's
144
+ * `/t` flag). This is also the timestamp server used by `osslsigncode` (`-t`) when signing on
145
+ * macOS/Linux. See [rfc3161TimeStampServer](#rfc3161TimeStampServer) for SHA-256 / nested
146
+ * signatures. Ignored when the build runs with `ELECTRON_BUILDER_OFFLINE=true`.
147
+ *
80
148
  * @default http://timestamp.digicert.com
81
149
  */
82
150
  readonly timeStampServer?: string | null;
83
151
  /**
84
- * The path to an additional certificate file you want to add to the signature block.
152
+ * Path to an additional certificate file (typically an intermediate / cross-signing CA
153
+ * certificate) whose contents are added to the signature block via signtool's `/ac` flag. Use
154
+ * this when the signing certificate's full chain is not already present on target machines and
155
+ * you want it embedded in the signature so the chain can be validated.
85
156
  */
86
157
  readonly additionalCertificateFile?: string | null;
87
158
  /**
88
- * The custom function (or path to file or module id) to sign Windows executables.
159
+ * A custom signing hook that **replaces** electron-builder's built-in `signtool` /
160
+ * `osslsigncode` invocation. Provide a function, or the path / module id of a file that exports
161
+ * a `sign` function (resolved relative to the project, then as a module).
162
+ *
163
+ * The hook is invoked once per signing pass (i.e. once per entry in
164
+ * [signingHashAlgorithms](#signingHashAlgorithms)) and receives a configuration object describing
165
+ * the file to sign (`path`), the resolved certificate info (`cscInfo`), the current `hash`, and
166
+ * whether this pass is a nested signature (`isNest`), plus a `computeSignToolArgs(isWin)` helper
167
+ * that returns the default arguments electron-builder would otherwise have used. Use this to
168
+ * integrate an external or cloud signing service. See
169
+ * [Code Signing](https://www.electron.build/code-signing).
89
170
  */
90
171
  readonly sign?: CustomWindowsSign | string | null;
91
172
  }
173
+ /**
174
+ * Sign with a certificate file (`.pfx` / `.p12`) or with a certificate from the Windows
175
+ * certificate store, using Microsoft `signtool.exe` on Windows and `osslsigncode` on macOS/Linux.
176
+ * This is the default mode when `win.sign` is unset. Supply the certificate one of four ways:
177
+ * a file via `certificateFile` (or the `WIN_CSC_LINK` env var), or a store lookup via
178
+ * `certificateSubjectName` or `certificateSha1`.
179
+ */
92
180
  export interface WindowsSigntoolSigningConfig extends WindowsSigningSharedOptions {
181
+ /** Discriminator selecting the default file/store signing mode. */
93
182
  readonly type: "signtool";
94
183
  /**
95
- * The path to the *.pfx or *.p12 certificate file. Prefer the `WIN_CSC_LINK` environment
96
- * variable when possible. See [Code Signing](https://www.electron.build/code-signing).
184
+ * Path to the PKCS#12 certificate file (`.pfx` or `.p12`) holding both the signing certificate
185
+ * and its private key. Passed to signtool via `/f` (or osslsigncode via `-pkcs12`).
186
+ *
187
+ * Prefer supplying this out-of-band via the `WIN_CSC_LINK` (or `CSC_LINK`) environment variable
188
+ * instead of hardcoding a path — that variable also accepts an `https://` URL or a base64-encoded
189
+ * certificate, which is safer and more convenient on CI. See
190
+ * [Code Signing](https://www.electron.build/code-signing).
97
191
  */
98
192
  readonly certificateFile?: string | null;
99
193
  /**
100
- * The password to the certificate provided in `certificateFile`. Prefer the
101
- * `WIN_CSC_KEY_PASSWORD` environment variable when possible.
194
+ * The password protecting the private key in `certificateFile`. Passed to signtool via `/p`
195
+ * (or osslsigncode via `-pass`).
196
+ *
197
+ * Prefer the `WIN_CSC_KEY_PASSWORD` (or `CSC_KEY_PASSWORD`) environment variable so the secret
198
+ * never lands in your build configuration.
102
199
  */
103
200
  readonly certificatePassword?: string | null;
104
201
  /**
105
- * The name of the subject of the signing certificate. Required for EV Code Signing.
106
- * Works only on Windows (or macOS with Parallels Desktop).
202
+ * Select the signing certificate from the Windows certificate store by (a substring of) its
203
+ * subject name, instead of pointing at a `.pfx` file. electron-builder enumerates the installed
204
+ * code-signing certificates, picks the match, and signs by its thumbprint
205
+ * (`/sha1 <thumbprint> /s <store>`). **Required for EV (Extended Validation) certificates**,
206
+ * whose private keys live on a hardware token and cannot be exported to a file.
207
+ *
208
+ * Works only on Windows (or macOS with Parallels Desktop, via the bundled Windows VM).
107
209
  */
108
210
  readonly certificateSubjectName?: string | null;
109
211
  /**
110
- * The SHA1 hash of the signing certificate. Works only on Windows (or macOS with Parallels Desktop).
212
+ * Select the signing certificate from the Windows certificate store by its SHA-1 thumbprint,
213
+ * instead of pointing at a `.pfx` file. electron-builder looks the certificate up in the store
214
+ * and signs with `/sha1 <thumbprint> /s <store>`. Like
215
+ * [certificateSubjectName](#certificateSubjectName), this suits EV certificates backed by a
216
+ * hardware token; if both are set, both must resolve to the same certificate.
217
+ *
218
+ * Works only on Windows (or macOS with Parallels Desktop, via the bundled Windows VM).
111
219
  */
112
220
  readonly certificateSha1?: string | null;
113
221
  }
@@ -116,6 +224,7 @@ export interface WindowsSigntoolSigningConfig extends WindowsSigningSharedOption
116
224
  * real-hardware test coverage is limited.
117
225
  */
118
226
  export interface WindowsHsmSigningConfig extends WindowsSigningSharedOptions {
227
+ /** Discriminator selecting HSM / hardware-token signing via signtool's `/csp` and `/kc` flags. */
119
228
  readonly type: "hsm";
120
229
  /**
121
230
  * The name of the cryptographic service provider (CSP) that holds the private key.
@@ -123,7 +232,8 @@ export interface WindowsHsmSigningConfig extends WindowsSigningSharedOptions {
123
232
  * - Google Cloud KMS: `"Google Cloud KMS Provider"`
124
233
  * - Smart card / FIPS token: `"Microsoft Base Smart Card Crypto Provider"`
125
234
  *
126
- * Requires `toolsets.winCodeSign: "1.x"`. Windows-only — use `type: "pkcs11"` on macOS/Linux.
235
+ * Requires a modern `winCodeSign` toolset (the default; only the legacy `"0.0.0"` pin is
236
+ * unsupported). Windows-only — use `type: "pkcs11"` on macOS/Linux.
127
237
  */
128
238
  readonly cryptoServiceProvider: string;
129
239
  /**
@@ -139,19 +249,31 @@ export interface WindowsHsmSigningConfig extends WindowsSigningSharedOptions {
139
249
  */
140
250
  readonly certificateFile?: string | null;
141
251
  /**
142
- * The SHA1 thumbprint of the certificate in the Windows certificate store.
252
+ * Alternative to `certificateFile`: locate the public certificate in the Windows certificate
253
+ * store by its SHA-1 thumbprint. The private key still comes from the HSM via
254
+ * `cryptoServiceProvider` / `keyContainer`; this only identifies which public certificate to sign
255
+ * with.
143
256
  */
144
257
  readonly certificateSha1?: string | null;
145
258
  /**
146
- * The subject name of the certificate in the Windows certificate store.
259
+ * Alternative to `certificateFile`: locate the public certificate in the Windows certificate
260
+ * store by (a substring of) its subject name. The private key still comes from the HSM via
261
+ * `cryptoServiceProvider` / `keyContainer`; this only identifies which public certificate to sign
262
+ * with.
147
263
  */
148
264
  readonly certificateSubjectName?: string | null;
149
265
  }
150
266
  /**
267
+ * Sign with a PKCS#11 hardware token (smart card, USB HSM, cloud KMS exposed via a PKCS#11
268
+ * provider) using `osslsigncode`. Unlike `hsm`, this mode does **not** require Windows or a
269
+ * Windows VM, so it can sign Windows binaries directly from macOS/Linux CI. The token PIN is read
270
+ * from the `WIN_CSC_KEY_PASSWORD` (or `CSC_KEY_PASSWORD`) environment variable.
271
+ *
151
272
  * @beta PKCS#11 signing is available in v27 as a beta feature. The interface is stable but
152
273
  * real-hardware test coverage is limited.
153
274
  */
154
275
  export interface WindowsPkcs11SigningConfig extends WindowsSigningSharedOptions {
276
+ /** Discriminator selecting cross-platform PKCS#11 token signing via `osslsigncode`. */
155
277
  readonly type: "pkcs11";
156
278
  /**
157
279
  * Path to the PKCS#11 shared library (`.so` on Linux, `.dylib` on macOS).
@@ -178,14 +300,19 @@ export interface WindowsPkcs11SigningConfig extends WindowsSigningSharedOptions
178
300
  readonly certificateFile?: string | null;
179
301
  }
180
302
  /**
181
- * @beta The `signtool /dlib` Azure Trusted Signing integration introduced in v27 is a beta
182
- * feature. The legacy PowerShell fallback (triggered when `toolsets.winCodeSign` is unset or
183
- * `"0.0.0"`) remains supported for migration.
303
+ * The `signtool /dlib` Azure Trusted Signing integration was introduced in `toolsets.winCodeSign: 1.3.0`.
304
+ * The legacy PowerShell integration is deprecated, but leverages the same underlying Azure APIs, so both interfaces share the same config shape.
184
305
  */
185
306
  export interface WindowsAzureSigningConfig {
307
+ /** Discriminator selecting Azure Trusted Signing (cloud signing — no local certificate). */
186
308
  readonly type: "azure";
187
309
  /**
188
- * [The publisher name](https://github.com/electron-userland/electron-builder/issues/1187#issuecomment-278972073), exactly as in your code signed certificate. Several names can be provided.
310
+ * The publisher name to associate with the signature, exactly as it appears in the certificate
311
+ * issued by your Trusted Signing certificate profile. Required. Used for
312
+ * [update verification](#verifyUpdateCodeSignature) (embedded in `app-update.yml` and checked by
313
+ * electron-updater) and must match the certificate subject.
314
+ *
315
+ * @see https://github.com/electron-userland/electron-builder/issues/1187#issuecomment-278972073
189
316
  */
190
317
  readonly publisherName: string;
191
318
  /**
@@ -197,15 +324,18 @@ export interface WindowsAzureSigningConfig {
197
324
  */
198
325
  readonly endpoint: string;
199
326
  /**
200
- * The Certificate Profile name. Translates to field: CertificateProfileName.
327
+ * The name of the Trusted Signing Certificate Profile to sign with, as created in your Azure
328
+ * Code Signing Account. Maps to the DLib metadata field `CertificateProfileName`.
201
329
  */
202
330
  readonly certificateProfileName: string;
203
331
  /**
204
- * The Code Signing Account name. Translates to field: CodeSigningAccountName.
332
+ * The name of the Azure Trusted Signing (Code Signing) Account that owns the certificate profile.
333
+ * Maps to the DLib metadata field `CodeSigningAccountName`.
205
334
  */
206
335
  readonly codeSigningAccountName: string;
207
336
  /**
208
- * The file digest algorithm. Translates to field: FileDigest.
337
+ * The digest algorithm used to hash the files being signed. Maps to the DLib metadata field
338
+ * `FileDigest`.
209
339
  * @default SHA256
210
340
  */
211
341
  readonly fileDigest?: string;
@@ -1 +1 @@
1
- {"version":3,"file":"winOptions.d.ts","sourceRoot":"","sources":["../../src/options/winOptions.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"winOptions.d.ts","sourceRoot":"","sources":["../../src/options/winOptions.ts"],"names":[],"mappings":"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"}