Skip to main content

Interface: ToolsetConfig

Version pins and custom bundle overrides for the binary toolsets that electron-builder downloads and caches locally.

Each toolset is a versioned archive hosted at electron-userland/electron-builder-binaries. Omitting a property (or setting it to latest) selects the modern default for that toolset.

To supply your own bundle, set the property to a ToolsetCustom object with a url (https:// or file://) and a checksum for verification. The bundle must mirror the expected directory layout of the corresponding built-in bundle; see the build scripts at https://github.com/electron-userland/electron-builder-binaries/tree/master/packages.

Properties​

appimage?​

readonly optional appimage?: "latest" | ToolsetCustom | "0.0.0" | "1.1.0" | "1.2.0" | "1.0.3"

Version of the AppImage toolset bundle used for building .AppImage files.

The bundle ships:

  • mksquashfs — creates the SquashFS filesystem embedded in the AppImage. It also packs legacy-base (core18/core20/core22) snaps built from the snap template app.
  • desktop-file-validate — validates the generated .desktop entry.
  • AppImage runtime — the self-executing stub that mounts the SquashFS at launch.

Available versions:

VersionRuntime dateNotes
"0.0.0"LegacyFUSE2-based AppImage runtime (pre-v27)
"1.0.3"20251108Introduces static AppImage runtime
"1.1.0"20251108Adds unsquashfs support
"1.2.0"20251108squashfs-tools 4.7.5 with a statically linked zstd 1.5.7, so Linux and macOS hosts produce identical images

An explicit version pin always selects exactly that release.

Releases: https://github.com/electron-userland/electron-builder-binaries/blob/master/packages/appimage/CHANGELOG.md

Default​

"latest"

executables?​

readonly optional executables?: ExecutablesConfig | null

Where the host programs that electron-builder starts are installed on the build machine, by program name.

electron-builder starts these programs only from an absolute path, never by looking up a name on PATH. For each one it uses the first location that is an executable file: from this entry when it is set, otherwise from a built-in list of default install locations for the host operating system (see https://www.electron.build/docs/toolsets#executables). An entry replaces the default list for that program; it is not merged with it.

Example​

{
"toolsets": {
"executables": {
"mono": "file:///opt/homebrew/bin/mono",
"pwsh": ["file:///usr/local/microsoft/powershell/7/pwsh", "file:///opt/microsoft/powershell/7/pwsh"],
"powershell": "file:///C:/Windows/System32/WindowsPowerShell/v1.0/powershell.exe"
}
}
}

fpm?​

readonly optional fpm?: "latest" | ToolsetCustom | "2.2.1"

Version of the FPM bundle used to build Linux packages (.deb, .rpm, .pacman, etc.) on macOS and Linux hosts.

Available versions:

VersionFPM versionNotes
"2.2.1"1.17.0 (Ruby 3.4.3)Current default

Releases: https://github.com/electron-userland/electron-builder-binaries/blob/master/packages/fpm/CHANGELOG.md

Default​

"latest"

icons?​

readonly optional icons?: "latest" | ToolsetCustom | "1.2.3"

Version of the icons-conversion bundle used to convert source images to .icns, .ico, and PNG icon sets.

Set to a ToolsetCustom object to supply your own icons bundle directory.

Available versions:

VersionNotes
"1.2.3"Writes 16px/32px ICNS entries as ic04/ic05 ARGB (fixes corrupt small icons in Finder)

Releases: https://github.com/electron-userland/electron-builder-binaries/blob/master/packages/icons/CHANGELOG.md

Default​

"latest"

linuxToolsMac?​

readonly optional linuxToolsMac?: "latest" | "1.0.1" | "1.0.0" | ToolsetCustom

Version of the Linux-tools-mac bundle used to produce .tar.lz archives and build Linux targets on macOS hosts.

The bundle ships macOS-native builds of ar, lzip, and gtar (GNU tar).

Available versions:

VersionNotes
"1.0.0"gnu-tar, lzip, makedepend, glib, libgsf, libtool, pcre, gettext, binutils
"1.0.1"Same tools rebuilt on macOS 15 runners — binaries run on macOS 15+ (1.0.0 required macOS 26)

Releases: https://github.com/electron-userland/electron-builder-binaries/blob/master/packages/linux-tools-mac/CHANGELOG.md

Default​

"latest"

nsis?​

readonly optional nsis?: "latest" | ToolsetCustom | "0.0.0" | "1.2.1"

Version of the NSIS toolset bundle used to compile Windows installers.

The bundle ships:

  • makensis — the NSIS compiler invoked to build .nsi scripts into .exe installers.
  • NSIS plugins — the plugin DLLs (NsisMultiUser, UAC, StdUtils, etc.) referenced by electron-builder's default installer scripts.
  • elevate.exe — UAC elevation helper included in NSIS installers.

Available versions:

Versionmakensis versionNotes
"0.0.0"3.0.4.1Legacy split bundle — nsis + nsis-resources archives (pre-v27)
"1.2.1"3.12Unified bundle — single archive, entrypoint scripts auto-set NSISDIR

Releases: https://github.com/electron-userland/electron-builder-binaries/blob/master/packages/nsis/CHANGELOG.md

A custom bundle (a ToolsetCustom object) must follow the layout at https://www.electron.build/docs/toolsets#custom-nsis-bundle-layout

Default​

"latest"

sevenZip?​

readonly optional sevenZip?: "latest" | "1.0.1" | "1.0.0" | ToolsetCustom

Version of the 7-Zip binary bundle used internally to extract .7z and .tar.xz archives.

Set to a ToolsetCustom object to supply your own 7za binary. The url must point to a directory (or a .tar.gz/.zip archive of one) that contains bin/7za (macOS/Linux) or bin/7za.exe (Windows).

Bootstrap constraint: the custom bundle itself must be a .tar.gz or .zip archive (or a bare file:// directory). .7z and .tar.xz archives cannot be used here because extracting them requires 7za — a circular dependency.

Available versions:

VersionNotes
"1.0.0"Shipped the 32-bit 7za.exe for every Windows arch (1.75 GiB memory cap, no LZMA2 multithreading on x64/arm64)
"1.0.1"Correct per-arch Windows binaries (x64, ia32, arm64)

Releases: https://github.com/electron-userland/electron-builder-binaries/blob/master/packages/7zip/CHANGELOG.md

Default​

"latest"

squirrel?​

readonly optional squirrel?: "latest" | ToolsetCustom | "1.1.1"

Version of the squirrel.windows bundle used to build Squirrel.Windows installers.

The bundle ships the Squirrel vendor toolset under electron-winstaller/vendor/:

  • Squirrel.exe / Squirrel-Mono.exe — releasify the app into Setup.exe (and an optional MSI).
  • SyncReleases.exe — downloads prior releases to produce delta packages.
  • nuget.exe, 7z — pack the app into a .nupkg and compress release assets.

rcedit.exe is provisioned from the winCodeSign toolset at runtime (on every platform; under Wine on non-Windows hosts). Building an MSI additionally uses the shared WiX toolset.

Available versions:

VersionNotes
"1.1.1"Squirrel.Windows 2.0.1 (patched) with a standalone, checksum-verified nuget.exe 6.14.0

Set to a ToolsetCustom object to supply your own bundle — it must contain the electron-winstaller/vendor/ subtree. Only used when building the squirrelWindows target.

Releases: https://github.com/electron-userland/electron-builder-binaries/blob/master/packages/squirrel.windows/CHANGELOG.md

Default​

"latest"

winCodeSign?​

readonly optional winCodeSign?: "latest" | "1.0.0" | ToolsetCustom | "1.3.1" | "0.0.0" | "1.1.0" | "1.1.1" | "1.2.1" | "1.3.0"

Version of the win-codesign bundle used for Windows code signing and resource editing.

The bundle ships:

  • signtool.exe (Windows) / osslsigncode (macOS & Linux) — used to sign .exe, .dll, and .msix artifacts.
  • rcedit — embeds version metadata and icons into .exe files (legacy usage, migrated to npm resedit package).
  • Windows Kits — used by AppX/MSIX packaging (makeappx, signtool).

Available versions:

VersionNotes
"0.0.0"Legacy bundle — winCodeSign-2.6.0 (pre-v27)
"1.0.0"Windows Kits 10.0.26100.0, osslsigncode v2.9
"1.1.1"Updates osslsigncode to v2.11
"1.2.1"Adds native osslsigncode arm64
"1.3.0"Includes support for Azure Trusted Signing signtool via dlib and .NET 8 runtime
"1.3.1"macOS osslsigncode bundles its own OpenSSL (no Homebrew openssl@3 needed) and libp11's PKCS#11 provider

Releases: https://github.com/electron-userland/electron-builder-binaries/blob/master/packages/win-codesign/CHANGELOG.md

Default​

"latest"

wine?​

readonly optional wine?: "latest" | "1.0.1" | "system" | ToolsetCustom | "0.0.0"

Version of the Wine bundle used to run Windows tools (NSIS, rcedit, signtool) on non-Windows hosts (macOS and Linux).

Wine is only required when building Windows targets on a non-Windows machine. On Windows, this setting has no effect.

Available versions:

VersionWine versionPlatform supportNotes
"0.0.0"4.0.1macOSLegacy portable bundle (pre-v27)
"1.0.1"11.0macOSSupports arm64 macOS via Rosetta
"system"host installmacOS, LinuxUses the host Wine at a fixed install location instead of a bundle

"system" is the replacement for the USE_SYSTEM_WINE environment variable removed in v27, and is what "latest" (the default) currently resolves to on every platform: the published "1.0.1" bundles ship no PE builtins, so a host Wine installation is required to build Windows targets on macOS or Linux.

The host Wine ("system") is started by absolute path, never looked up on PATH: it is the wine entry of executables, which lists its default install locations and is where a Wine installed elsewhere is set. Setting both a bundle that would be used (a ToolsetCustom object, or a version on macOS; on Linux a version selects no bundle) and executables.wine is a configuration error.

To use a custom Wine bundle, use a ToolsetCustom object.

Releases: https://github.com/electron-userland/electron-builder-binaries/blob/master/packages/wine/CHANGELOG.md

Default​

"latest"

wix?​

readonly optional wix?: "latest" | "2.0.0" | ToolsetCustom | "0.0.0"

Version of the WiX Toolset bundle used to build msi and msiWrapped installers.

The bundle ships candle.exe and light.exe (compile and link the generated .wxs project) and the WiX extensions (WixUIExtension for assisted installers). On macOS and Linux they run under Wine with wine-mono.

Available versions:

VersionWiX versionNotes
"0.0.0"4.0.0.5512 (preview)Legacy bundle (pre-v27). An arm64 app is packaged in an x64 MSI, because this toolset has no arm64
"2.0.0"3.14.1Builds a native arm64 MSI for arm64

The .wxs project uses the WiX 3 schema with "2.0.0": an msiProjectCreated hook that inserts elements of a WiX 4 extension namespace must use the WiX 3 one (for example http://schemas.microsoft.com/wix/UtilExtension), or pin "0.0.0".

A custom bundle (a ToolsetCustom object) must have the WiX v3 layout: candle.exe, light.exe and the extensions at its root.

Releases: https://github.com/electron-userland/electron-builder-binaries/blob/master/packages/wix/CHANGELOG.md

Default​

"latest"