diff --git a/.gitignore b/.gitignore index d0ba655483f..ef1427246ea 100644 --- a/.gitignore +++ b/.gitignore @@ -16,7 +16,6 @@ out/ /packages/dmg-builder/vendor/ /packages/electron-builder/README.md -#/packages/app-builder-lib/scheme.json /scripts/jsdoc/out/ /scripts/renderer/out/ diff --git a/package.json b/package.json index e9e6b2c818b..d11fced4519 100644 --- a/package.json +++ b/package.json @@ -25,7 +25,7 @@ "generate-changeset": "pnpm changeset", "ci:version": "pnpm changelog && changeset version && node scripts/update-package-version-export.js && git add .", "ci:publish": "pnpm compile && pnpm publish -r", - "schema": "typescript-json-schema packages/app-builder-lib/tsconfig.json Configuration --out packages/app-builder-lib/scheme.json --noExtraProps --useTypeOfKeyword --strictNullChecks --required && node ./scripts/fix-schema.js", + "schema": "ts-generate-schema packages/app-builder-lib/src/configuration.ts", "jsdoc": "ts2jsdoc packages/builder-util-runtime packages/builder-util packages/app-builder-lib packages/electron-builder packages/electron-publish", "jsdoc2md": "node scripts/jsdoc2md.js", "/////": "git clone --single-branch -b docs git@github.com:electron-userland/electron-builder.git docs", @@ -43,6 +43,7 @@ "dmg-license": "1.0.9" }, "devDependencies": { + "@babel/core": "^7", "@babel/plugin-transform-modules-commonjs": "7.14.5", "@changesets/changelog-git": "0.1.7", "@changesets/cli": "2.16.0", @@ -61,9 +62,9 @@ "path-sort": "0.1.0", "prettier": "2.3.2", "source-map-support": "0.5.19", + "ts-generate-schema": "^2.0.0", "ts-jsdoc": "3.2.2", "typescript": "4.3.5", - "typescript-json-schema": "0.50.1", "v8-compile-cache": "2.3.0" }, "engines": { diff --git a/packages/app-builder-lib/package.json b/packages/app-builder-lib/package.json index c68655a5020..ebb29a496fd 100644 --- a/packages/app-builder-lib/package.json +++ b/packages/app-builder-lib/package.json @@ -6,7 +6,6 @@ "files": [ "out", "templates", - "scheme.json", "electron-osx-sign", "certs/root_certs.keychain" ], diff --git a/packages/app-builder-lib/src/publish/KeygenPublisher.ts b/packages/app-builder-lib/src/publish/KeygenPublisher.ts new file mode 100644 index 00000000000..34809059470 --- /dev/null +++ b/packages/app-builder-lib/src/publish/KeygenPublisher.ts @@ -0,0 +1,119 @@ +import { Arch, InvalidConfigurationError, log, isEmptyOrSpaces } from "builder-util" +import { httpExecutor } from "builder-util/out/nodeHttpExecutor" +import { ClientRequest, RequestOptions } from "http" +import { HttpPublisher, PublishContext } from "electron-publish" +import { KeygenOptions } from "builder-util-runtime/out/publishOptions" +import { configureRequestOptions, HttpError, parseJson } from "builder-util-runtime" +import * as path from "path" +export class KeygenPublisher extends HttpPublisher { + readonly providerName = "keygen" + readonly hostname = "api.keygen.sh" + + private readonly info: KeygenOptions + private readonly auth: string + private readonly version: string + private readonly basePath: string + + constructor(context: PublishContext, info: KeygenOptions, version: string) { + super(context) + + const token = process.env.KEYGEN_TOKEN + if (isEmptyOrSpaces(token)) { + throw new InvalidConfigurationError(`Keygen token is not set using env "KEYGEN_TOKEN" (see https://www.electron.build/configuration/publish#KeygenOptions)`) + } + + this.info = info + this.auth = `Bearer ${token.trim()}` + this.version = version + this.basePath = `/v1/accounts/${this.info.account}/releases` + } + + protected async doUpload( + fileName: string, + arch: Arch, + dataLength: number, + requestProcessor: (request: ClientRequest, reject: (error: Error) => void) => void, + file?: string + ): Promise { + for (let attemptNumber = 0; ; attemptNumber++) { + try { + const { data, errors } = await this.upsertVersion(fileName, dataLength) + const releaseId = data.id + if (releaseId == null) { + log.warn({ file: fileName, reason: "UUID doesn't exist and was not created" }, "upserting release failed") + return + } + if (errors) { + log.error({ ...errors }, "upserting release returned errors. Continuing to attempt upload since UUID is present") + } + const upload: RequestOptions = { + hostname: this.hostname, + path: `${this.basePath}/${releaseId}/artifact`, + headers: { + Accept: "application/vnd.api+json", + "Content-Length": dataLength, + }, + } + await httpExecutor.doApiRequest(configureRequestOptions(upload, this.auth, "PUT"), this.context.cancellationToken, requestProcessor) + return releaseId + } catch (e) { + if (attemptNumber < 3 && ((e instanceof HttpError && e.statusCode === 502) || e.code === "EPIPE")) { + continue + } + + throw e + } + } + } + + private async upsertVersion(fileName: string, dataLength: number): Promise<{ data: any; errors: any }> { + const req: RequestOptions = { + hostname: this.hostname, + method: "PUT", + path: this.basePath, + headers: { + "Content-Type": "application/vnd.api+json", + Accept: "application/vnd.api+json", + }, + } + const data = { + data: { + type: "release", + attributes: { + filename: fileName, + filetype: path.extname(fileName), + filesize: dataLength, + version: this.version, + platform: this.info.platform, + channel: this.info.channel || "stable", + }, + relationships: { + product: { + data: { + type: "product", + id: this.info.product, + }, + }, + }, + }, + } + log.debug({ data: JSON.stringify(data) }, "Keygen upsert release") + return parseJson(httpExecutor.request(configureRequestOptions(req, this.auth, "PUT"), this.context.cancellationToken, data)) + } + + async deleteRelease(releaseId: string): Promise { + const req: RequestOptions = { + hostname: this.hostname, + path: `${this.basePath}/${releaseId}`, + headers: { + Accept: "application/vnd.api+json", + }, + } + await httpExecutor.request(configureRequestOptions(req, this.auth, "DELETE"), this.context.cancellationToken) + } + + toString() { + const { account, product, platform } = this.info + return `Keygen (account: ${account}, product: ${product}, platform: ${platform}, version: ${this.version})` + } +} diff --git a/packages/app-builder-lib/src/publish/PublishManager.ts b/packages/app-builder-lib/src/publish/PublishManager.ts index fac9df43cc0..fb421341b6a 100644 --- a/packages/app-builder-lib/src/publish/PublishManager.ts +++ b/packages/app-builder-lib/src/publish/PublishManager.ts @@ -7,6 +7,7 @@ import { getS3LikeProviderBaseUrl, GithubOptions, githubUrl, + KeygenOptions, PublishConfiguration, PublishProvider, } from "builder-util-runtime" @@ -29,6 +30,7 @@ import { expandMacro } from "../util/macroExpander" import { WinPackager } from "../winPackager" import { SnapStoreOptions, SnapStorePublisher } from "./SnapStorePublisher" import { createUpdateInfoTasks, UpdateInfoFileTask, writeUpdateInfoFiles } from "./updateInfoBuilder" +import { KeygenPublisher } from "./KeygenPublisher" const publishForPrWarning = "There are serious security concerns with PUBLISH_FOR_PULL_REQUEST=true (see the CircleCI documentation (https://circleci.com/docs/1.0/fork-pr-builds/) for details)" + @@ -297,6 +299,9 @@ export function createPublisher(context: PublishContext, version: string, publis case "bintray": return new BintrayPublisher(context, publishConfig as BintrayOptions, version, options) + case "keygen": + return new KeygenPublisher(context, publishConfig as KeygenOptions, version) + case "generic": return null @@ -321,6 +326,9 @@ function requireProviderClass(provider: string, packager: Packager): any | null case "generic": return null + case "keygen": + return KeygenPublisher + case "s3": return S3Publisher @@ -419,6 +427,8 @@ async function resolvePublishConfigurations( serviceName = "github" } else if (!isEmptyOrSpaces(process.env.BT_TOKEN)) { serviceName = "bintray" + } else if (!isEmptyOrSpaces(process.env.KEYGEN_TOKEN)) { + serviceName = "keygen" } if (serviceName != null) { @@ -499,6 +509,13 @@ async function getResolvedPublishConfig( return options } + if (provider === "keygen") { + return { + ...options, + platform: platformPackager?.platform.name, + } as KeygenOptions + } + const isGithub = provider === "github" if (!isGithub && provider !== "bintray") { return options diff --git a/packages/app-builder-lib/src/schema/after-pack-context.jsc.ts b/packages/app-builder-lib/src/schema/after-pack-context.jsc.ts new file mode 100644 index 00000000000..5c1141bc4e3 --- /dev/null +++ b/packages/app-builder-lib/src/schema/after-pack-context.jsc.ts @@ -0,0 +1,9086 @@ +export default { + "type": "object", + "properties": { + "outDir": { + "type": "string" + }, + "appOutDir": { + "type": "string" + }, + "packager": { + "$ref": "#/definitions/PlatformPackager" + }, + "electronPlatformName": { + "type": "string" + }, + "arch": { + "$ref": "#/definitions/Arch" + }, + "targets": { + "type": "array", + "items": { + "$ref": "#/definitions/Target" + } + } + }, + "required": [ + "appOutDir", + "arch", + "electronPlatformName", + "outDir", + "packager", + "targets" + ], + "definitions": { + "MetadataDirectories": { + "type": "object", + "properties": { + "buildResources": { + "description": "The path to build resources.\n\nPlease note — build resources are not packed into the app. If you need to use some files, e.g. as tray icon, please include required files explicitly: `\"files\": [\"**\\/*\", \"build/icon.*\"]`", + "default": "build", + "type": [ + "null", + "string" + ] + }, + "output": { + "description": "The output directory. [File macros](/file-patterns#file-macros) are supported.", + "default": "dist", + "type": [ + "null", + "string" + ] + }, + "app": { + "description": "The application directory (containing the application package.json), defaults to `app`, `www` or working directory.", + "type": [ + "null", + "string" + ] + } + } + }, + "MacConfiguration": { + "type": "object", + "properties": { + "category": { + "description": "The application category type, as shown in the Finder via *View -> Arrange by Application Category* when viewing the Applications directory.\n\nFor example, `\"category\": \"public.app-category.developer-tools\"` will set the application category to *Developer Tools*.\n\nValid values are listed in [Apple's documentation](https://developer.apple.com/library/ios/documentation/General/Reference/InfoPlistKeyReference/Articles/LaunchServicesKeys.html#//apple_ref/doc/uid/TP40009250-SW8).", + "type": [ + "null", + "string" + ] + }, + "target": { + "description": "The target package type: list of `default`, `dmg`, `mas`, `mas-dev`, `pkg`, `7z`, `zip`, `tar.xz`, `tar.lz`, `tar.gz`, `tar.bz2`, `dir`. Defaults to `default` (dmg and zip for Squirrel.Mac).", + "anyOf": [ + { + "$ref": "#/definitions/TargetConfiguration" + }, + { + "type": "array", + "items": { + "anyOf": [ + { + "$ref": "#/definitions/TargetConfiguration" + }, + { + "enum": [ + "7z", + "default", + "dir", + "dmg", + "mas", + "mas-dev", + "pkg", + "tar.bz2", + "tar.gz", + "tar.lz", + "tar.xz", + "zip" + ], + "type": "string" + } + ] + } + }, + { + "enum": [ + "7z", + "default", + "dir", + "dmg", + "mas", + "mas-dev", + "pkg", + "tar.bz2", + "tar.gz", + "tar.lz", + "tar.xz", + "zip" + ], + "type": "string" + }, + { + "type": "null" + } + ] + }, + "identity": { + "description": "The name of certificate to use when signing. Consider using environment variables [CSC_LINK or CSC_NAME](/code-signing) instead of specifying this option.\nMAS installer identity is specified in the [mas](/configuration/mas).", + "type": [ + "null", + "string" + ] + }, + "icon": { + "description": "The path to application icon.", + "default": "build/icon.icns", + "type": [ + "null", + "string" + ] + }, + "entitlements": { + "description": "The path to entitlements file for signing the app. `build/entitlements.mac.plist` will be used if exists (it is a recommended way to set).\nMAS entitlements is specified in the [mas](/configuration/mas).", + "type": [ + "null", + "string" + ] + }, + "entitlementsInherit": { + "description": "The path to child entitlements which inherit the security settings for signing frameworks and bundles of a distribution. `build/entitlements.mac.inherit.plist` will be used if exists (it is a recommended way to set).\nOtherwise [default](https://github.com/electron-userland/electron-osx-sign/blob/master/default.entitlements.darwin.inherit.plist).\n\nThis option only applies when signing with `entitlements` provided.", + "type": [ + "null", + "string" + ] + }, + "entitlementsLoginHelper": { + "description": "Path to login helper entitlement file.\nWhen using App Sandbox, the the `com.apple.security.inherit` key that is normally in the inherited entitlements cannot be inherited since the login helper is a standalone executable.\nDefaults to the value provided for `entitlements`. This option only applies when signing with `entitlements` provided.", + "type": [ + "null", + "string" + ] + }, + "provisioningProfile": { + "description": "The path to the provisioning profile to use when signing, absolute or relative to the app root.", + "type": [ + "null", + "string" + ] + }, + "bundleVersion": { + "description": "The `CFBundleVersion`. Do not use it unless [you need to](https://github.com/electron-userland/electron-builder/issues/565#issuecomment-230678643).", + "type": [ + "null", + "string" + ] + }, + "bundleShortVersion": { + "description": "The `CFBundleShortVersionString`. Do not use it unless you need to.", + "type": [ + "null", + "string" + ] + }, + "darkModeSupport": { + "description": "Whether a dark mode is supported. If your app does have a dark mode, you can make your app follow the system-wide dark mode setting.", + "default": false, + "type": "boolean" + }, + "helperBundleId": { + "description": "The bundle identifier to use in the application helper's plist.", + "default": "${appBundleIdentifier}.helper", + "type": [ + "null", + "string" + ] + }, + "helperRendererBundleId": { + "description": "The bundle identifier to use in the Renderer helper's plist.", + "default": "${appBundleIdentifier}.helper.Renderer", + "type": [ + "null", + "string" + ] + }, + "helperPluginBundleId": { + "description": "The bundle identifier to use in the Plugin helper's plist.", + "default": "${appBundleIdentifier}.helper.Plugin", + "type": [ + "null", + "string" + ] + }, + "helperGPUBundleId": { + "description": "The bundle identifier to use in the GPU helper's plist.", + "default": "${appBundleIdentifier}.helper.GPU", + "type": [ + "null", + "string" + ] + }, + "helperEHBundleId": { + "description": "The bundle identifier to use in the EH helper's plist.", + "default": "${appBundleIdentifier}.helper.EH", + "type": [ + "null", + "string" + ] + }, + "helperNPBundleId": { + "description": "The bundle identifier to use in the NP helper's plist.", + "default": "${appBundleIdentifier}.helper.NP", + "type": [ + "null", + "string" + ] + }, + "type": { + "description": "Whether to sign app for development or for distribution.", + "default": "distribution", + "anyOf": [ + { + "enum": [ + "development", + "distribution" + ], + "type": "string" + }, + { + "type": "null" + } + ] + }, + "extendInfo": { + "description": "The extra entries for `Info.plist`." + }, + "binaries": { + "description": "Paths of any extra binaries that need to be signed.", + "anyOf": [ + { + "type": "array", + "items": { + "type": "string" + } + }, + { + "type": "null" + } + ] + }, + "minimumSystemVersion": { + "description": "The minimum version of macOS required for the app to run. Corresponds to `LSMinimumSystemVersion`.", + "type": [ + "null", + "string" + ] + }, + "requirements": { + "description": "Path of [requirements file](https://developer.apple.com/library/mac/documentation/Security/Conceptual/CodeSigningGuide/RequirementLang/RequirementLang.html) used in signing. Not applicable for MAS.", + "type": [ + "null", + "string" + ] + }, + "electronLanguages": { + "description": "The electron locales. By default Electron locales used as is.", + "anyOf": [ + { + "type": "array", + "items": { + "type": "string" + } + }, + { + "type": "string" + } + ] + }, + "cscInstallerLink": { + "type": [ + "null", + "string" + ] + }, + "cscInstallerKeyPassword": { + "type": [ + "null", + "string" + ] + }, + "extraDistFiles": { + "description": "Extra files to put in archive. Not applicable for `tar.*`.", + "anyOf": [ + { + "type": "array", + "items": { + "type": "string" + } + }, + { + "type": [ + "null", + "string" + ] + } + ] + }, + "hardenedRuntime": { + "description": "Whether your app has to be signed with hardened runtime.", + "default": true, + "type": "boolean" + }, + "gatekeeperAssess": { + "description": "Whether to let electron-osx-sign validate the signing or not.", + "default": false, + "type": "boolean" + }, + "strictVerify": { + "description": "Whether to let electron-osx-sign verify the contents or not.", + "default": true, + "anyOf": [ + { + "type": "array", + "items": { + "type": "string" + } + }, + { + "type": [ + "string", + "boolean" + ] + } + ] + }, + "signIgnore": { + "description": "Regex or an array of regex's that signal skipping signing a file.", + "anyOf": [ + { + "type": "array", + "items": { + "type": "string" + } + }, + { + "type": [ + "null", + "string" + ] + } + ] + }, + "timestamp": { + "description": "Specify the URL of the timestamp authority server", + "type": [ + "null", + "string" + ] + }, + "appId": { + "description": "The application id. Used as [CFBundleIdentifier](https://developer.apple.com/library/ios/documentation/General/Reference/InfoPlistKeyReference/Articles/CoreFoundationKeys.html#//apple_ref/doc/uid/20001431-102070) for MacOS and as\n[Application User Model ID](https://msdn.microsoft.com/en-us/library/windows/desktop/dd378459(v=vs.85).aspx) for Windows (NSIS target only, Squirrel.Windows not supported). It is strongly recommended that an explicit ID is set.", + "default": "com.electron.${name}", + "type": [ + "null", + "string" + ] + }, + "artifactName": { + "description": "The [artifact file name template](/configuration/configuration#artifact-file-name-template). Defaults to `${productName}-${version}.${ext}` (some target can have other defaults, see corresponding options).", + "type": [ + "null", + "string" + ] + }, + "executableName": { + "description": "The executable name. Defaults to `productName`.", + "type": [ + "null", + "string" + ] + }, + "compression": { + "description": "The compression level. If you want to rapidly test build, `store` can reduce build time significantly. `maximum` doesn't lead to noticeable size difference, but increase build time.", + "default": "normal", + "anyOf": [ + { + "enum": [ + "maximum", + "normal", + "store" + ], + "type": "string" + }, + { + "type": "null" + } + ] + }, + "files": { + "anyOf": [ + { + "$ref": "#/definitions/FileSet" + }, + { + "type": "array", + "items": { + "anyOf": [ + { + "$ref": "#/definitions/FileSet" + }, + { + "type": "string" + } + ] + } + }, + { + "type": [ + "null", + "string" + ] + } + ] + }, + "extraResources": { + "anyOf": [ + { + "$ref": "#/definitions/FileSet" + }, + { + "type": "array", + "items": { + "anyOf": [ + { + "$ref": "#/definitions/FileSet" + }, + { + "type": "string" + } + ] + } + }, + { + "type": [ + "null", + "string" + ] + } + ] + }, + "extraFiles": { + "anyOf": [ + { + "$ref": "#/definitions/FileSet" + }, + { + "type": "array", + "items": { + "anyOf": [ + { + "$ref": "#/definitions/FileSet" + }, + { + "type": "string" + } + ] + } + }, + { + "type": [ + "null", + "string" + ] + } + ] + }, + "asar": { + "description": "Whether to package the application's source code into an archive, using [Electron's archive format](http://electron.atom.io/docs/tutorial/application-packaging/).\n\nNode modules, that must be unpacked, will be detected automatically, you don't need to explicitly set [asarUnpack](#configuration-asarUnpack) - please file an issue if this doesn't work.", + "default": true, + "anyOf": [ + { + "$ref": "#/definitions/AsarOptions" + }, + { + "type": [ + "null", + "boolean" + ] + } + ] + }, + "asarUnpack": { + "description": "A [glob patterns](/file-patterns) relative to the [app directory](#MetadataDirectories-app), which specifies which files to unpack when creating the [asar](http://electron.atom.io/docs/tutorial/application-packaging/) archive.", + "anyOf": [ + { + "type": "array", + "items": { + "type": "string" + } + }, + { + "type": [ + "null", + "string" + ] + } + ] + }, + "fileAssociations": { + "description": "The file associations.", + "anyOf": [ + { + "$ref": "#/definitions/FileAssociation" + }, + { + "type": "array", + "items": { + "$ref": "#/definitions/FileAssociation" + } + } + ] + }, + "protocols": { + "description": "The URL protocol schemes.", + "anyOf": [ + { + "$ref": "#/definitions/Protocol" + }, + { + "type": "array", + "items": { + "$ref": "#/definitions/Protocol" + } + } + ] + }, + "forceCodeSigning": { + "description": "Whether to fail if app will be not code signed.", + "type": "boolean" + }, + "electronUpdaterCompatibility": { + "description": "The [electron-updater compatibility](/auto-update#compatibility) semver range.", + "type": [ + "null", + "string" + ] + }, + "publish": { + "anyOf": [ + { + "$ref": "#/definitions/GithubOptions" + }, + { + "$ref": "#/definitions/S3Options" + }, + { + "$ref": "#/definitions/SpacesOptions" + }, + { + "$ref": "#/definitions/GenericServerOptions" + }, + { + "$ref": "#/definitions/BintrayOptions" + }, + { + "$ref": "#/definitions/CustomPublishOptions" + }, + { + "$ref": "#/definitions/KeygenOptions" + }, + { + "$ref": "#/definitions/SnapStoreOptions" + }, + { + "type": "array", + "items": { + "anyOf": [ + { + "$ref": "#/definitions/GithubOptions" + }, + { + "$ref": "#/definitions/S3Options" + }, + { + "$ref": "#/definitions/SpacesOptions" + }, + { + "$ref": "#/definitions/GenericServerOptions" + }, + { + "$ref": "#/definitions/BintrayOptions" + }, + { + "$ref": "#/definitions/CustomPublishOptions" + }, + { + "$ref": "#/definitions/KeygenOptions" + }, + { + "$ref": "#/definitions/SnapStoreOptions" + }, + { + "type": "string" + } + ] + } + }, + { + "type": [ + "null", + "string" + ] + } + ] + }, + "detectUpdateChannel": { + "description": "Whether to infer update channel from application version pre-release components. e.g. if version `0.12.1-alpha.1`, channel will be set to `alpha`. Otherwise to `latest`.", + "default": true, + "type": "boolean" + }, + "generateUpdatesFilesForAllChannels": { + "description": "Please see [Building and Releasing using Channels](https://github.com/electron-userland/electron-builder/issues/1182#issuecomment-324947139).", + "default": false, + "type": "boolean" + }, + "releaseInfo": { + "description": "The release info. Intended for command line usage:\n\n```\n-c.releaseInfo.releaseNotes=\"new features\"\n```", + "$ref": "#/definitions/ReleaseInfo" + }, + "cscLink": { + "type": [ + "null", + "string" + ] + }, + "cscKeyPassword": { + "type": [ + "null", + "string" + ] + }, + "defaultArch": { + "type": "string" + } + } + }, + "TargetConfiguration": { + "type": "object", + "properties": { + "target": { + "description": "The target name. e.g. `snap`.", + "type": "string" + }, + "arch": { + "description": "The arch or list of archs.", + "anyOf": [ + { + "type": "array", + "items": { + "enum": [ + "arm64", + "armv7l", + "ia32", + "universal", + "x64" + ], + "type": "string" + } + }, + { + "enum": [ + "arm64", + "armv7l", + "ia32", + "universal", + "x64" + ], + "type": "string" + } + ] + } + }, + "required": [ + "target" + ] + }, + "FileSet": { + "type": "object", + "properties": { + "from": { + "description": "The source path relative to the project directory.", + "type": "string" + }, + "to": { + "description": "The destination path relative to the app's content directory for `extraFiles` and the app's resource directory for `extraResources`.", + "type": "string" + }, + "filter": { + "description": "The [glob patterns](/file-patterns).", + "anyOf": [ + { + "type": "array", + "items": { + "type": "string" + } + }, + { + "type": "string" + } + ] + } + } + }, + "AsarOptions": { + "type": "object", + "properties": { + "smartUnpack": { + "description": "Whether to automatically unpack executables files.", + "default": true, + "type": "boolean" + }, + "ordering": { + "type": [ + "null", + "string" + ] + }, + "externalAllowed": { + "description": "Allows external asar files.", + "default": false, + "type": "boolean" + } + } + }, + "FileAssociation": { + "description": "File associations.\n\nmacOS (corresponds to [CFBundleDocumentTypes](https://developer.apple.com/library/content/documentation/General/Reference/InfoPlistKeyReference/Articles/CoreFoundationKeys.html#//apple_ref/doc/uid/20001431-101685)) and NSIS only.\n\nOn Windows works only if [nsis.perMachine](https://electron.build/configuration/configuration#NsisOptions-perMachine) is set to `true`.", + "type": "object", + "properties": { + "ext": { + "description": "The extension (minus the leading period). e.g. `png`.", + "anyOf": [ + { + "type": "array", + "items": { + "type": "string" + } + }, + { + "type": "string" + } + ] + }, + "name": { + "description": "The name. e.g. `PNG`. Defaults to `ext`.", + "type": [ + "null", + "string" + ] + }, + "description": { + "description": "*windows-only.* The description.", + "type": [ + "null", + "string" + ] + }, + "mimeType": { + "description": "*linux-only.* The mime-type.", + "type": [ + "null", + "string" + ] + }, + "icon": { + "description": "The path to icon (`.icns` for MacOS and `.ico` for Windows), relative to `build` (build resources directory). Defaults to `${firstExt}.icns`/`${firstExt}.ico` (if several extensions specified, first is used) or to application icon.\n\nNot supported on Linux, file issue if need (default icon will be `x-office-document`).", + "type": [ + "null", + "string" + ] + }, + "role": { + "description": "*macOS-only* The app’s role with respect to the type. The value can be `Editor`, `Viewer`, `Shell`, or `None`. Corresponds to `CFBundleTypeRole`.", + "default": "Editor", + "type": "string" + }, + "isPackage": { + "description": "*macOS-only* Whether the document is distributed as a bundle. If set to true, the bundle directory is treated as a file. Corresponds to `LSTypeIsPackage`.", + "type": "boolean" + }, + "rank": { + "description": "*macOS-only* The app’s rank with respect to the type. The value can be `Owner`, `Default`, `Alternate`, or `None`. Corresponds to `LSHandlerRank`.", + "default": "Default", + "type": "string" + } + }, + "required": [ + "ext" + ] + }, + "Protocol": { + "description": "URL Protocol Schemes. Protocols to associate the app with. macOS only.\n\nPlease note — on macOS [you need to register an `open-url` event handler](http://electron.atom.io/docs/api/app/#event-open-url-macos).", + "type": "object", + "properties": { + "name": { + "description": "The name. e.g. `IRC server URL`.", + "type": "string" + }, + "schemes": { + "description": "The schemes. e.g. `[\"irc\", \"ircs\"]`.", + "type": "array", + "items": { + "type": "string" + } + }, + "role": { + "description": "*macOS-only* The app’s role with respect to the type.", + "default": "Editor", + "enum": [ + "Editor", + "None", + "Shell", + "Viewer" + ], + "type": "string" + } + }, + "required": [ + "name", + "schemes" + ] + }, + "GithubOptions": { + "description": "[GitHub](https://help.github.com/articles/about-releases/) options.\n\nGitHub [personal access token](https://help.github.com/articles/creating-an-access-token-for-command-line-use/) is required. You can generate by going to [https://github.com/settings/tokens/new](https://github.com/settings/tokens/new). The access token should have the repo scope/permission.\nDefine `GH_TOKEN` environment variable.", + "type": "object", + "properties": { + "provider": { + "description": "The provider. Must be `github`.", + "type": "string", + "enum": [ + "github" + ] + }, + "repo": { + "description": "The repository name. [Detected automatically](#github-repository-and-bintray-package).", + "type": [ + "null", + "string" + ] + }, + "owner": { + "description": "The owner.", + "type": [ + "null", + "string" + ] + }, + "vPrefixedTagName": { + "description": "Whether to use `v`-prefixed tag name.", + "default": true, + "type": "boolean" + }, + "host": { + "description": "The host (including the port if need).", + "default": "github.com", + "type": [ + "null", + "string" + ] + }, + "protocol": { + "description": "The protocol. GitHub Publisher supports only `https`.", + "default": "https", + "anyOf": [ + { + "enum": [ + "http", + "https" + ], + "type": "string" + }, + { + "type": "null" + } + ] + }, + "token": { + "description": "The access token to support auto-update from private github repositories. Never specify it in the configuration files. Only for [setFeedURL](/auto-update#appupdatersetfeedurloptions).", + "type": [ + "null", + "string" + ] + }, + "private": { + "description": "Whether to use private github auto-update provider if `GH_TOKEN` environment variable is defined. See [Private GitHub Update Repo](/auto-update#private-github-update-repo).", + "type": [ + "null", + "boolean" + ] + }, + "releaseType": { + "description": "The type of release. By default `draft` release will be created.\n\nAlso you can set release type using environment variable. If `EP_DRAFT`is set to `true` — `draft`, if `EP_PRE_RELEASE`is set to `true` — `prerelease`.", + "default": "draft", + "anyOf": [ + { + "enum": [ + "draft", + "prerelease", + "release" + ], + "type": "string" + }, + { + "type": "null" + } + ] + }, + "publisherName": { + "anyOf": [ + { + "type": "array", + "items": { + "type": "string" + } + }, + { + "type": "null" + } + ] + }, + "updaterCacheDirName": { + "type": [ + "null", + "string" + ] + }, + "publishAutoUpdate": { + "description": "Whether to publish auto update info files.\n\nAuto update relies only on the first provider in the list (you can specify several publishers).\nThus, probably, there`s no need to upload the metadata files for the other configured providers. But by default will be uploaded.", + "default": true, + "type": "boolean" + }, + "requestHeaders": { + "description": "Any custom request headers", + "$ref": "#/definitions/OutgoingHttpHeaders" + } + }, + "required": [ + "provider" + ] + }, + "OutgoingHttpHeaders": { + "type": "object" + }, + "S3Options": { + "type": "object", + "properties": { + "provider": { + "description": "The provider. Must be `s3`.", + "type": "string", + "enum": [ + "s3" + ] + }, + "bucket": { + "description": "The bucket name.", + "type": "string" + }, + "region": { + "description": "The region. Is determined and set automatically when publishing.", + "type": [ + "null", + "string" + ] + }, + "acl": { + "description": "The ACL. Set to `null` to not [add](https://github.com/electron-userland/electron-builder/issues/1822).\n\nPlease see [required permissions for the S3 provider](https://github.com/electron-userland/electron-builder/issues/1618#issuecomment-314679128).", + "default": "public-read", + "anyOf": [ + { + "enum": [ + "private", + "public-read" + ], + "type": "string" + }, + { + "type": "null" + } + ] + }, + "storageClass": { + "description": "The type of storage to use for the object.", + "default": "STANDARD", + "anyOf": [ + { + "enum": [ + "REDUCED_REDUNDANCY", + "STANDARD", + "STANDARD_IA" + ], + "type": "string" + }, + { + "type": "null" + } + ] + }, + "encryption": { + "description": "Server-side encryption algorithm to use for the object.", + "anyOf": [ + { + "enum": [ + "AES256", + "aws:kms" + ], + "type": "string" + }, + { + "type": "null" + } + ] + }, + "endpoint": { + "description": "The endpoint URI to send requests to. The default endpoint is built from the configured region.\nThe endpoint should be a string like `https://{service}.{region}.amazonaws.com`.", + "type": [ + "null", + "string" + ] + }, + "channel": { + "description": "The update channel.", + "default": "latest", + "type": [ + "null", + "string" + ] + }, + "path": { + "description": "The directory path.", + "default": "/", + "type": [ + "null", + "string" + ] + }, + "publisherName": { + "anyOf": [ + { + "type": "array", + "items": { + "type": "string" + } + }, + { + "type": "null" + } + ] + }, + "updaterCacheDirName": { + "type": [ + "null", + "string" + ] + }, + "publishAutoUpdate": { + "description": "Whether to publish auto update info files.\n\nAuto update relies only on the first provider in the list (you can specify several publishers).\nThus, probably, there`s no need to upload the metadata files for the other configured providers. But by default will be uploaded.", + "default": true, + "type": "boolean" + }, + "requestHeaders": { + "description": "Any custom request headers", + "$ref": "#/definitions/OutgoingHttpHeaders" + } + }, + "required": [ + "bucket", + "provider" + ] + }, + "SpacesOptions": { + "description": "[DigitalOcean Spaces](https://www.digitalocean.com/community/tutorials/an-introduction-to-digitalocean-spaces) options.\nAccess key is required, define `DO_KEY_ID` and `DO_SECRET_KEY` environment variables.", + "type": "object", + "properties": { + "provider": { + "description": "The provider. Must be `spaces`.", + "type": "string", + "enum": [ + "spaces" + ] + }, + "name": { + "description": "The space name.", + "type": "string" + }, + "region": { + "description": "The region (e.g. `nyc3`).", + "type": "string" + }, + "channel": { + "description": "The update channel.", + "default": "latest", + "type": [ + "null", + "string" + ] + }, + "path": { + "description": "The directory path.", + "default": "/", + "type": [ + "null", + "string" + ] + }, + "acl": { + "description": "The ACL. Set to `null` to not [add](https://github.com/electron-userland/electron-builder/issues/1822).", + "default": "public-read", + "anyOf": [ + { + "enum": [ + "private", + "public-read" + ], + "type": "string" + }, + { + "type": "null" + } + ] + }, + "publisherName": { + "anyOf": [ + { + "type": "array", + "items": { + "type": "string" + } + }, + { + "type": "null" + } + ] + }, + "updaterCacheDirName": { + "type": [ + "null", + "string" + ] + }, + "publishAutoUpdate": { + "description": "Whether to publish auto update info files.\n\nAuto update relies only on the first provider in the list (you can specify several publishers).\nThus, probably, there`s no need to upload the metadata files for the other configured providers. But by default will be uploaded.", + "default": true, + "type": "boolean" + }, + "requestHeaders": { + "description": "Any custom request headers", + "$ref": "#/definitions/OutgoingHttpHeaders" + } + }, + "required": [ + "name", + "provider", + "region" + ] + }, + "GenericServerOptions": { + "description": "Generic (any HTTP(S) server) options.\nIn all publish options [File Macros](/file-patterns#file-macros) are supported.", + "type": "object", + "properties": { + "provider": { + "description": "The provider. Must be `generic`.", + "type": "string", + "enum": [ + "generic" + ] + }, + "url": { + "description": "The base url. e.g. `https://bucket_name.s3.amazonaws.com`.", + "type": "string" + }, + "channel": { + "description": "The channel.", + "default": "latest", + "type": [ + "null", + "string" + ] + }, + "useMultipleRangeRequest": { + "description": "Whether to use multiple range requests for differential update. Defaults to `true` if `url` doesn't contain `s3.amazonaws.com`.", + "type": "boolean" + }, + "publisherName": { + "anyOf": [ + { + "type": "array", + "items": { + "type": "string" + } + }, + { + "type": "null" + } + ] + }, + "updaterCacheDirName": { + "type": [ + "null", + "string" + ] + }, + "publishAutoUpdate": { + "description": "Whether to publish auto update info files.\n\nAuto update relies only on the first provider in the list (you can specify several publishers).\nThus, probably, there`s no need to upload the metadata files for the other configured providers. But by default will be uploaded.", + "default": true, + "type": "boolean" + }, + "requestHeaders": { + "description": "Any custom request headers", + "$ref": "#/definitions/OutgoingHttpHeaders" + } + }, + "required": [ + "provider", + "url" + ] + }, + "BintrayOptions": { + "description": "[Bintray](https://bintray.com/) options. Requires an API key. An API key can be obtained from the user [profile](https://bintray.com/profile/edit) page (\"Edit Your Profile\" -> API Key).\nDefine `BT_TOKEN` environment variable.", + "type": "object", + "properties": { + "provider": { + "description": "The provider. Must be `bintray`.", + "type": "string", + "enum": [ + "bintray" + ] + }, + "package": { + "description": "The Bintray package name.", + "type": [ + "null", + "string" + ] + }, + "repo": { + "description": "The Bintray repository name.", + "default": "generic", + "type": [ + "null", + "string" + ] + }, + "owner": { + "description": "The owner.", + "type": [ + "null", + "string" + ] + }, + "component": { + "description": "The Bintray component (Debian only).", + "type": [ + "null", + "string" + ] + }, + "distribution": { + "description": "The Bintray distribution (Debian only).", + "default": "stable", + "type": [ + "null", + "string" + ] + }, + "user": { + "description": "The Bintray user account. Used in cases where the owner is an organization.", + "type": [ + "null", + "string" + ] + }, + "token": { + "type": [ + "null", + "string" + ] + }, + "publisherName": { + "anyOf": [ + { + "type": "array", + "items": { + "type": "string" + } + }, + { + "type": "null" + } + ] + }, + "updaterCacheDirName": { + "type": [ + "null", + "string" + ] + }, + "publishAutoUpdate": { + "description": "Whether to publish auto update info files.\n\nAuto update relies only on the first provider in the list (you can specify several publishers).\nThus, probably, there`s no need to upload the metadata files for the other configured providers. But by default will be uploaded.", + "default": true, + "type": "boolean" + }, + "requestHeaders": { + "description": "Any custom request headers", + "$ref": "#/definitions/OutgoingHttpHeaders" + } + }, + "required": [ + "provider" + ] + }, + "CustomPublishOptions": { + "type": "object", + "additionalProperties": {}, + "properties": { + "provider": { + "description": "The provider. Must be `custom`.", + "type": "string", + "enum": [ + "custom" + ] + }, + "updateProvider": { + "description": "The Provider to provide UpdateInfo regarding available updates. Required\nto use custom providers with electron-updater.", + "type": "object" + }, + "publisherName": { + "anyOf": [ + { + "type": "array", + "items": { + "type": "string" + } + }, + { + "type": "null" + } + ] + }, + "updaterCacheDirName": { + "type": [ + "null", + "string" + ] + }, + "publishAutoUpdate": { + "description": "Whether to publish auto update info files.\n\nAuto update relies only on the first provider in the list (you can specify several publishers).\nThus, probably, there`s no need to upload the metadata files for the other configured providers. But by default will be uploaded.", + "default": true, + "type": "boolean" + }, + "requestHeaders": { + "description": "Any custom request headers", + "$ref": "#/definitions/OutgoingHttpHeaders" + } + }, + "required": [ + "provider" + ] + }, + "KeygenOptions": { + "description": "Keygen options.\nhttps://keygen.sh/\nDefine `KEYGEN_TOKEN` environment variable.", + "type": "object", + "properties": { + "provider": { + "description": "The provider. Must be `keygen`.", + "type": "string", + "enum": [ + "keygen" + ] + }, + "account": { + "description": "Keygen account's UUID", + "type": "string" + }, + "product": { + "description": "Keygen product's UUID", + "type": "string" + }, + "channel": { + "description": "The channel.", + "default": "stable", + "type": [ + "null", + "string" + ] + }, + "platform": { + "description": "The target Platform. Is set programmatically explicitly for publishing.", + "type": "string" + }, + "publisherName": { + "anyOf": [ + { + "type": "array", + "items": { + "type": "string" + } + }, + { + "type": "null" + } + ] + }, + "updaterCacheDirName": { + "type": [ + "null", + "string" + ] + }, + "publishAutoUpdate": { + "description": "Whether to publish auto update info files.\n\nAuto update relies only on the first provider in the list (you can specify several publishers).\nThus, probably, there`s no need to upload the metadata files for the other configured providers. But by default will be uploaded.", + "default": true, + "type": "boolean" + }, + "requestHeaders": { + "description": "Any custom request headers", + "$ref": "#/definitions/OutgoingHttpHeaders" + } + }, + "required": [ + "account", + "product", + "provider" + ] + }, + "SnapStoreOptions": { + "description": "[Snap Store](https://snapcraft.io/) options.", + "type": "object", + "properties": { + "channels": { + "description": "The list of channels the snap would be released.", + "default": [ + "edge" + ], + "anyOf": [ + { + "type": "array", + "items": { + "type": "string" + } + }, + { + "type": [ + "null", + "string" + ] + } + ] + }, + "provider": { + "$ref": "#/definitions/PublishProvider", + "description": "The provider." + }, + "publisherName": { + "anyOf": [ + { + "type": "array", + "items": { + "type": "string" + } + }, + { + "type": "null" + } + ] + }, + "updaterCacheDirName": { + "type": [ + "null", + "string" + ] + }, + "publishAutoUpdate": { + "description": "Whether to publish auto update info files.\n\nAuto update relies only on the first provider in the list (you can specify several publishers).\nThus, probably, there`s no need to upload the metadata files for the other configured providers. But by default will be uploaded.", + "default": true, + "type": "boolean" + }, + "requestHeaders": { + "description": "Any custom request headers", + "$ref": "#/definitions/OutgoingHttpHeaders" + } + }, + "required": [ + "provider" + ] + }, + "PublishProvider": { + "enum": [ + "bintray", + "custom", + "generic", + "github", + "keygen", + "s3", + "snapStore", + "spaces" + ], + "type": "string" + }, + "ReleaseInfo": { + "type": "object", + "properties": { + "releaseName": { + "description": "The release name.", + "type": [ + "null", + "string" + ] + }, + "releaseNotes": { + "description": "The release notes.", + "type": [ + "null", + "string" + ] + }, + "releaseNotesFile": { + "description": "The path to release notes file. Defaults to `release-notes-${platform}.md` (where `platform` it is current platform — `mac`, `linux` or `windows`) or `release-notes.md` in the [build resources](#MetadataDirectories-buildResources).", + "type": [ + "null", + "string" + ] + }, + "releaseDate": { + "description": "The release date.", + "type": "string" + } + } + }, + "MasConfiguration": { + "type": "object", + "properties": { + "entitlements": { + "description": "The path to entitlements file for signing the app. `build/entitlements.mas.plist` will be used if exists (it is a recommended way to set).\nOtherwise [default](https://github.com/electron-userland/electron-osx-sign/blob/master/default.entitlements.mas.plist).", + "type": [ + "null", + "string" + ] + }, + "entitlementsInherit": { + "description": "The path to child entitlements which inherit the security settings for signing frameworks and bundles of a distribution. `build/entitlements.mas.inherit.plist` will be used if exists (it is a recommended way to set).\nOtherwise [default](https://github.com/electron-userland/electron-osx-sign/blob/master/default.entitlements.mas.inherit.plist).", + "type": [ + "null", + "string" + ] + }, + "binaries": { + "description": "Paths of any extra binaries that need to be signed.", + "anyOf": [ + { + "type": "array", + "items": { + "type": "string" + } + }, + { + "type": "null" + } + ] + }, + "category": { + "description": "The application category type, as shown in the Finder via *View -> Arrange by Application Category* when viewing the Applications directory.\n\nFor example, `\"category\": \"public.app-category.developer-tools\"` will set the application category to *Developer Tools*.\n\nValid values are listed in [Apple's documentation](https://developer.apple.com/library/ios/documentation/General/Reference/InfoPlistKeyReference/Articles/LaunchServicesKeys.html#//apple_ref/doc/uid/TP40009250-SW8).", + "type": [ + "null", + "string" + ] + }, + "target": { + "description": "The target package type: list of `default`, `dmg`, `mas`, `mas-dev`, `pkg`, `7z`, `zip`, `tar.xz`, `tar.lz`, `tar.gz`, `tar.bz2`, `dir`. Defaults to `default` (dmg and zip for Squirrel.Mac).", + "anyOf": [ + { + "$ref": "#/definitions/TargetConfiguration" + }, + { + "type": "array", + "items": { + "anyOf": [ + { + "$ref": "#/definitions/TargetConfiguration" + }, + { + "enum": [ + "7z", + "default", + "dir", + "dmg", + "mas", + "mas-dev", + "pkg", + "tar.bz2", + "tar.gz", + "tar.lz", + "tar.xz", + "zip" + ], + "type": "string" + } + ] + } + }, + { + "enum": [ + "7z", + "default", + "dir", + "dmg", + "mas", + "mas-dev", + "pkg", + "tar.bz2", + "tar.gz", + "tar.lz", + "tar.xz", + "zip" + ], + "type": "string" + }, + { + "type": "null" + } + ] + }, + "identity": { + "description": "The name of certificate to use when signing. Consider using environment variables [CSC_LINK or CSC_NAME](/code-signing) instead of specifying this option.\nMAS installer identity is specified in the [mas](/configuration/mas).", + "type": [ + "null", + "string" + ] + }, + "icon": { + "description": "The path to application icon.", + "default": "build/icon.icns", + "type": [ + "null", + "string" + ] + }, + "entitlementsLoginHelper": { + "description": "Path to login helper entitlement file.\nWhen using App Sandbox, the the `com.apple.security.inherit` key that is normally in the inherited entitlements cannot be inherited since the login helper is a standalone executable.\nDefaults to the value provided for `entitlements`. This option only applies when signing with `entitlements` provided.", + "type": [ + "null", + "string" + ] + }, + "provisioningProfile": { + "description": "The path to the provisioning profile to use when signing, absolute or relative to the app root.", + "type": [ + "null", + "string" + ] + }, + "bundleVersion": { + "description": "The `CFBundleVersion`. Do not use it unless [you need to](https://github.com/electron-userland/electron-builder/issues/565#issuecomment-230678643).", + "type": [ + "null", + "string" + ] + }, + "bundleShortVersion": { + "description": "The `CFBundleShortVersionString`. Do not use it unless you need to.", + "type": [ + "null", + "string" + ] + }, + "darkModeSupport": { + "description": "Whether a dark mode is supported. If your app does have a dark mode, you can make your app follow the system-wide dark mode setting.", + "default": false, + "type": "boolean" + }, + "helperBundleId": { + "description": "The bundle identifier to use in the application helper's plist.", + "default": "${appBundleIdentifier}.helper", + "type": [ + "null", + "string" + ] + }, + "helperRendererBundleId": { + "description": "The bundle identifier to use in the Renderer helper's plist.", + "default": "${appBundleIdentifier}.helper.Renderer", + "type": [ + "null", + "string" + ] + }, + "helperPluginBundleId": { + "description": "The bundle identifier to use in the Plugin helper's plist.", + "default": "${appBundleIdentifier}.helper.Plugin", + "type": [ + "null", + "string" + ] + }, + "helperGPUBundleId": { + "description": "The bundle identifier to use in the GPU helper's plist.", + "default": "${appBundleIdentifier}.helper.GPU", + "type": [ + "null", + "string" + ] + }, + "helperEHBundleId": { + "description": "The bundle identifier to use in the EH helper's plist.", + "default": "${appBundleIdentifier}.helper.EH", + "type": [ + "null", + "string" + ] + }, + "helperNPBundleId": { + "description": "The bundle identifier to use in the NP helper's plist.", + "default": "${appBundleIdentifier}.helper.NP", + "type": [ + "null", + "string" + ] + }, + "type": { + "description": "Whether to sign app for development or for distribution.", + "default": "distribution", + "anyOf": [ + { + "enum": [ + "development", + "distribution" + ], + "type": "string" + }, + { + "type": "null" + } + ] + }, + "extendInfo": { + "description": "The extra entries for `Info.plist`." + }, + "minimumSystemVersion": { + "description": "The minimum version of macOS required for the app to run. Corresponds to `LSMinimumSystemVersion`.", + "type": [ + "null", + "string" + ] + }, + "requirements": { + "description": "Path of [requirements file](https://developer.apple.com/library/mac/documentation/Security/Conceptual/CodeSigningGuide/RequirementLang/RequirementLang.html) used in signing. Not applicable for MAS.", + "type": [ + "null", + "string" + ] + }, + "electronLanguages": { + "description": "The electron locales. By default Electron locales used as is.", + "anyOf": [ + { + "type": "array", + "items": { + "type": "string" + } + }, + { + "type": "string" + } + ] + }, + "cscInstallerLink": { + "type": [ + "null", + "string" + ] + }, + "cscInstallerKeyPassword": { + "type": [ + "null", + "string" + ] + }, + "extraDistFiles": { + "description": "Extra files to put in archive. Not applicable for `tar.*`.", + "anyOf": [ + { + "type": "array", + "items": { + "type": "string" + } + }, + { + "type": [ + "null", + "string" + ] + } + ] + }, + "hardenedRuntime": { + "description": "Whether your app has to be signed with hardened runtime.", + "default": true, + "type": "boolean" + }, + "gatekeeperAssess": { + "description": "Whether to let electron-osx-sign validate the signing or not.", + "default": false, + "type": "boolean" + }, + "strictVerify": { + "description": "Whether to let electron-osx-sign verify the contents or not.", + "default": true, + "anyOf": [ + { + "type": "array", + "items": { + "type": "string" + } + }, + { + "type": [ + "string", + "boolean" + ] + } + ] + }, + "signIgnore": { + "description": "Regex or an array of regex's that signal skipping signing a file.", + "anyOf": [ + { + "type": "array", + "items": { + "type": "string" + } + }, + { + "type": [ + "null", + "string" + ] + } + ] + }, + "timestamp": { + "description": "Specify the URL of the timestamp authority server", + "type": [ + "null", + "string" + ] + }, + "appId": { + "description": "The application id. Used as [CFBundleIdentifier](https://developer.apple.com/library/ios/documentation/General/Reference/InfoPlistKeyReference/Articles/CoreFoundationKeys.html#//apple_ref/doc/uid/20001431-102070) for MacOS and as\n[Application User Model ID](https://msdn.microsoft.com/en-us/library/windows/desktop/dd378459(v=vs.85).aspx) for Windows (NSIS target only, Squirrel.Windows not supported). It is strongly recommended that an explicit ID is set.", + "default": "com.electron.${name}", + "type": [ + "null", + "string" + ] + }, + "artifactName": { + "description": "The [artifact file name template](/configuration/configuration#artifact-file-name-template). Defaults to `${productName}-${version}.${ext}` (some target can have other defaults, see corresponding options).", + "type": [ + "null", + "string" + ] + }, + "executableName": { + "description": "The executable name. Defaults to `productName`.", + "type": [ + "null", + "string" + ] + }, + "compression": { + "description": "The compression level. If you want to rapidly test build, `store` can reduce build time significantly. `maximum` doesn't lead to noticeable size difference, but increase build time.", + "default": "normal", + "anyOf": [ + { + "enum": [ + "maximum", + "normal", + "store" + ], + "type": "string" + }, + { + "type": "null" + } + ] + }, + "files": { + "anyOf": [ + { + "$ref": "#/definitions/FileSet" + }, + { + "type": "array", + "items": { + "anyOf": [ + { + "$ref": "#/definitions/FileSet" + }, + { + "type": "string" + } + ] + } + }, + { + "type": [ + "null", + "string" + ] + } + ] + }, + "extraResources": { + "anyOf": [ + { + "$ref": "#/definitions/FileSet" + }, + { + "type": "array", + "items": { + "anyOf": [ + { + "$ref": "#/definitions/FileSet" + }, + { + "type": "string" + } + ] + } + }, + { + "type": [ + "null", + "string" + ] + } + ] + }, + "extraFiles": { + "anyOf": [ + { + "$ref": "#/definitions/FileSet" + }, + { + "type": "array", + "items": { + "anyOf": [ + { + "$ref": "#/definitions/FileSet" + }, + { + "type": "string" + } + ] + } + }, + { + "type": [ + "null", + "string" + ] + } + ] + }, + "asar": { + "description": "Whether to package the application's source code into an archive, using [Electron's archive format](http://electron.atom.io/docs/tutorial/application-packaging/).\n\nNode modules, that must be unpacked, will be detected automatically, you don't need to explicitly set [asarUnpack](#configuration-asarUnpack) - please file an issue if this doesn't work.", + "default": true, + "anyOf": [ + { + "$ref": "#/definitions/AsarOptions" + }, + { + "type": [ + "null", + "boolean" + ] + } + ] + }, + "asarUnpack": { + "description": "A [glob patterns](/file-patterns) relative to the [app directory](#MetadataDirectories-app), which specifies which files to unpack when creating the [asar](http://electron.atom.io/docs/tutorial/application-packaging/) archive.", + "anyOf": [ + { + "type": "array", + "items": { + "type": "string" + } + }, + { + "type": [ + "null", + "string" + ] + } + ] + }, + "fileAssociations": { + "description": "The file associations.", + "anyOf": [ + { + "$ref": "#/definitions/FileAssociation" + }, + { + "type": "array", + "items": { + "$ref": "#/definitions/FileAssociation" + } + } + ] + }, + "protocols": { + "description": "The URL protocol schemes.", + "anyOf": [ + { + "$ref": "#/definitions/Protocol" + }, + { + "type": "array", + "items": { + "$ref": "#/definitions/Protocol" + } + } + ] + }, + "forceCodeSigning": { + "description": "Whether to fail if app will be not code signed.", + "type": "boolean" + }, + "electronUpdaterCompatibility": { + "description": "The [electron-updater compatibility](/auto-update#compatibility) semver range.", + "type": [ + "null", + "string" + ] + }, + "publish": { + "anyOf": [ + { + "$ref": "#/definitions/GithubOptions" + }, + { + "$ref": "#/definitions/S3Options" + }, + { + "$ref": "#/definitions/SpacesOptions" + }, + { + "$ref": "#/definitions/GenericServerOptions" + }, + { + "$ref": "#/definitions/BintrayOptions" + }, + { + "$ref": "#/definitions/CustomPublishOptions" + }, + { + "$ref": "#/definitions/KeygenOptions" + }, + { + "$ref": "#/definitions/SnapStoreOptions" + }, + { + "type": "array", + "items": { + "anyOf": [ + { + "$ref": "#/definitions/GithubOptions" + }, + { + "$ref": "#/definitions/S3Options" + }, + { + "$ref": "#/definitions/SpacesOptions" + }, + { + "$ref": "#/definitions/GenericServerOptions" + }, + { + "$ref": "#/definitions/BintrayOptions" + }, + { + "$ref": "#/definitions/CustomPublishOptions" + }, + { + "$ref": "#/definitions/KeygenOptions" + }, + { + "$ref": "#/definitions/SnapStoreOptions" + }, + { + "type": "string" + } + ] + } + }, + { + "type": [ + "null", + "string" + ] + } + ] + }, + "detectUpdateChannel": { + "description": "Whether to infer update channel from application version pre-release components. e.g. if version `0.12.1-alpha.1`, channel will be set to `alpha`. Otherwise to `latest`.", + "default": true, + "type": "boolean" + }, + "generateUpdatesFilesForAllChannels": { + "description": "Please see [Building and Releasing using Channels](https://github.com/electron-userland/electron-builder/issues/1182#issuecomment-324947139).", + "default": false, + "type": "boolean" + }, + "releaseInfo": { + "description": "The release info. Intended for command line usage:\n\n```\n-c.releaseInfo.releaseNotes=\"new features\"\n```", + "$ref": "#/definitions/ReleaseInfo" + }, + "cscLink": { + "type": [ + "null", + "string" + ] + }, + "cscKeyPassword": { + "type": [ + "null", + "string" + ] + }, + "defaultArch": { + "type": "string" + } + } + }, + "DmgOptions": { + "type": "object", + "properties": { + "background": { + "description": "The path to background image (default: `build/background.tiff` or `build/background.png` if exists). The resolution of this file determines the resolution of the installer window.\nIf background is not specified, use `window.size`. Default locations expected background size to be 540x380.", + "type": [ + "null", + "string" + ] + }, + "backgroundColor": { + "description": "The background color (accepts css colors). Defaults to `#ffffff` (white) if no background image.", + "type": [ + "null", + "string" + ] + }, + "icon": { + "description": "The path to DMG icon (volume icon), which will be shown when mounted, relative to the [build resources](/configuration/configuration#MetadataDirectories-buildResources) or to the project directory.\nDefaults to the application icon (`build/icon.icns`).", + "type": [ + "null", + "string" + ] + }, + "iconSize": { + "description": "The size of all the icons inside the DMG.", + "default": 80, + "type": [ + "null", + "number" + ] + }, + "iconTextSize": { + "description": "The size of all the icon texts inside the DMG.", + "default": 12, + "type": [ + "null", + "number" + ] + }, + "title": { + "description": "The title of the produced DMG, which will be shown when mounted (volume name).\n\nMacro `${productName}`, `${version}` and `${name}` are supported.", + "default": "${productName} ${version}", + "type": [ + "null", + "string" + ] + }, + "contents": { + "description": "The content — to customize icon locations. The x and y coordinates refer to the position of the **center** of the icon (at 1x scale), and do not take the label into account.", + "type": "array", + "items": { + "$ref": "#/definitions/DmgContent" + } + }, + "format": { + "description": "The disk image format. `ULFO` (lzfse-compressed image (OS X 10.11+ only)).", + "default": "UDZO", + "enum": [ + "UDBZ", + "UDCO", + "UDRO", + "UDRW", + "UDZO", + "ULFO" + ], + "type": "string" + }, + "window": { + "description": "The DMG window position and size. With y co-ordinates running from bottom to top.\n\nThe Finder makes sure that the window will be on the user’s display, so if you want your window at the top left of the display you could use `\"x\": 0, \"y\": 100000` as the x, y co-ordinates.\nIt is not to be possible to position the window relative to the [top left](https://github.com/electron-userland/electron-builder/issues/3990#issuecomment-512960957) or relative to the center of the user’s screen.", + "$ref": "#/definitions/DmgWindow" + }, + "internetEnabled": { + "description": "Whether to create internet-enabled disk image (when it is downloaded using a browser it will automatically decompress the image, put the application on the desktop, unmount and remove the disk image file).", + "default": false, + "type": "boolean" + }, + "sign": { + "description": "Whether to sign the DMG or not. Signing is not required and will lead to unwanted errors in combination with notarization requirements.", + "default": false, + "type": "boolean" + }, + "writeUpdateInfo": { + "default": true, + "type": "boolean" + }, + "artifactName": { + "description": "The [artifact file name template](/configuration/configuration#artifact-file-name-template).", + "type": [ + "null", + "string" + ] + }, + "publish": { + "anyOf": [ + { + "$ref": "#/definitions/GithubOptions" + }, + { + "$ref": "#/definitions/S3Options" + }, + { + "$ref": "#/definitions/SpacesOptions" + }, + { + "$ref": "#/definitions/GenericServerOptions" + }, + { + "$ref": "#/definitions/BintrayOptions" + }, + { + "$ref": "#/definitions/CustomPublishOptions" + }, + { + "$ref": "#/definitions/KeygenOptions" + }, + { + "$ref": "#/definitions/SnapStoreOptions" + }, + { + "type": "array", + "items": { + "anyOf": [ + { + "$ref": "#/definitions/GithubOptions" + }, + { + "$ref": "#/definitions/S3Options" + }, + { + "$ref": "#/definitions/SpacesOptions" + }, + { + "$ref": "#/definitions/GenericServerOptions" + }, + { + "$ref": "#/definitions/BintrayOptions" + }, + { + "$ref": "#/definitions/CustomPublishOptions" + }, + { + "$ref": "#/definitions/KeygenOptions" + }, + { + "$ref": "#/definitions/SnapStoreOptions" + }, + { + "type": "string" + } + ] + } + }, + { + "type": [ + "null", + "string" + ] + } + ] + } + } + }, + "DmgContent": { + "type": "object", + "properties": { + "x": { + "description": "The device-independent pixel offset from the left of the window to the **center** of the icon.", + "type": "number" + }, + "y": { + "description": "The device-independent pixel offset from the top of the window to the **center** of the icon.", + "type": "number" + }, + "type": { + "enum": [ + "dir", + "file", + "link" + ], + "type": "string" + }, + "name": { + "description": "The name of the file within the DMG. Defaults to basename of `path`.", + "type": "string" + }, + "path": { + "description": "The path of the file within the DMG.", + "type": "string" + } + }, + "required": [ + "x", + "y" + ] + }, + "DmgWindow": { + "type": "object", + "properties": { + "x": { + "description": "The X position relative to left of the screen.", + "default": 400, + "type": "number" + }, + "y": { + "description": "The Y position relative to bottom of the screen.", + "default": 100, + "type": "number" + }, + "width": { + "description": "The width. Defaults to background image width or 540.", + "type": "number" + }, + "height": { + "description": "The height. Defaults to background image height or 380.", + "type": "number" + } + } + }, + "PkgOptions": { + "description": "macOS product archive options.", + "type": "object", + "properties": { + "scripts": { + "description": "The scripts directory, relative to `build` (build resources directory).\nThe scripts can be in any language so long as the files are marked executable and have the appropriate shebang indicating the path to the interpreter.\nScripts are required to be executable (`chmod +x file`).", + "default": "build/pkg-scripts", + "type": [ + "null", + "string" + ] + }, + "productbuild": { + "description": "should be not documented, only to experiment", + "anyOf": [ + { + "type": "array", + "items": { + "type": "string" + } + }, + { + "type": "null" + } + ] + }, + "installLocation": { + "description": "The install location. [Do not use it](https://stackoverflow.com/questions/12863944/how-do-you-specify-a-default-install-location-to-home-with-pkgbuild) to create per-user package.\nMostly never you will need to change this option. `/Applications` would install it as expected into `/Applications` if the local system domain is chosen, or into `$HOME/Applications` if the home installation is chosen.", + "default": "/Applications", + "type": [ + "null", + "string" + ] + }, + "allowAnywhere": { + "description": "Whether can be installed at the root of any volume, including non-system volumes. Otherwise, it cannot be installed at the root of a volume.\n\nCorresponds to [enable_anywhere](https://developer.apple.com/library/content/documentation/DeveloperTools/Reference/DistributionDefinitionRef/Chapters/Distribution_XML_Ref.html#//apple_ref/doc/uid/TP40005370-CH100-SW70).", + "default": true, + "type": [ + "null", + "boolean" + ] + }, + "allowCurrentUserHome": { + "description": "Whether can be installed into the current user’s home directory.\nA home directory installation is done as the current user (not as root), and it cannot write outside of the home directory.\nIf the product cannot be installed in the user’s home directory and be not completely functional from user’s home directory.\n\nCorresponds to [enable_currentUserHome](https://developer.apple.com/library/content/documentation/DeveloperTools/Reference/DistributionDefinitionRef/Chapters/Distribution_XML_Ref.html#//apple_ref/doc/uid/TP40005370-CH100-SW70).", + "default": true, + "type": [ + "null", + "boolean" + ] + }, + "allowRootDirectory": { + "description": "Whether can be installed into the root directory. Should usually be `true` unless the product can be installed only to the user’s home directory.\n\nCorresponds to [enable_localSystem](https://developer.apple.com/library/content/documentation/DeveloperTools/Reference/DistributionDefinitionRef/Chapters/Distribution_XML_Ref.html#//apple_ref/doc/uid/TP40005370-CH100-SW70).", + "default": true, + "type": [ + "null", + "boolean" + ] + }, + "identity": { + "description": "The name of certificate to use when signing. Consider using environment variables [CSC_LINK or CSC_NAME](/code-signing) instead of specifying this option.", + "type": [ + "null", + "string" + ] + }, + "license": { + "description": "The path to EULA license file. Defaults to `license.txt` or `eula.txt` (or uppercase variants). In addition to `txt, `rtf` and `html` supported (don't forget to use `target=\"_blank\"` for links).", + "type": [ + "null", + "string" + ] + }, + "background": { + "description": "Options for the background image for the installer.", + "anyOf": [ + { + "$ref": "#/definitions/PkgBackgroundOptions" + }, + { + "type": "null" + } + ] + }, + "welcome": { + "description": "The path to the welcome file. This may be used to customize the text on the Introduction page of the installer.", + "type": [ + "null", + "string" + ] + }, + "mustClose": { + "description": "Identifies applications that must be closed before the package is installed.\\n\\nCorresponds to [must-close](https://developer.apple.com/library/archive/documentation/DeveloperTools/Reference/DistributionDefinitionRef/Chapters/Distribution_XML_Ref.html#//apple_ref/doc/uid/TP40005370-CH100-SW77)", + "anyOf": [ + { + "type": "array", + "items": { + "type": "string" + } + }, + { + "type": "null" + } + ] + }, + "conclusion": { + "description": "The path to the conclusion file. This may be used to customize the text on the final \"Summary\" page of the installer.", + "type": [ + "null", + "string" + ] + }, + "isRelocatable": { + "description": "Install bundle over previous version if moved by user?", + "default": true, + "type": [ + "null", + "boolean" + ] + }, + "isVersionChecked": { + "description": "Don't install bundle if newer version on disk?", + "default": true, + "type": [ + "null", + "boolean" + ] + }, + "hasStrictIdentifier": { + "description": "Require identical bundle identifiers at install path?", + "default": true, + "type": [ + "null", + "boolean" + ] + }, + "overwriteAction": { + "description": "Specifies how an existing version of the bundle on disk should be handled when the version in\nthe package is installed.\n\nIf you specify upgrade, the bundle in the package atomi-cally replaces any version on disk;\nthis has the effect of deleting old paths that no longer exist in the new version of\nthe bundle.\n\nIf you specify update, the bundle in the package overwrites the version on disk, and any files\nnot contained in the package will be left intact; this is appropriate when you are delivering\nan update-only package.\n\nAnother effect of update is that the package bundle will not be installed at all if there is\nnot already a version on disk; this allows a package to deliver an update for an app that\nthe user might have deleted.", + "default": "upgrade", + "anyOf": [ + { + "enum": [ + "update", + "upgrade" + ], + "type": "string" + }, + { + "type": "null" + } + ] + }, + "artifactName": { + "description": "The [artifact file name template](/configuration/configuration#artifact-file-name-template).", + "type": [ + "null", + "string" + ] + }, + "publish": { + "anyOf": [ + { + "$ref": "#/definitions/GithubOptions" + }, + { + "$ref": "#/definitions/S3Options" + }, + { + "$ref": "#/definitions/SpacesOptions" + }, + { + "$ref": "#/definitions/GenericServerOptions" + }, + { + "$ref": "#/definitions/BintrayOptions" + }, + { + "$ref": "#/definitions/CustomPublishOptions" + }, + { + "$ref": "#/definitions/KeygenOptions" + }, + { + "$ref": "#/definitions/SnapStoreOptions" + }, + { + "type": "array", + "items": { + "anyOf": [ + { + "$ref": "#/definitions/GithubOptions" + }, + { + "$ref": "#/definitions/S3Options" + }, + { + "$ref": "#/definitions/SpacesOptions" + }, + { + "$ref": "#/definitions/GenericServerOptions" + }, + { + "$ref": "#/definitions/BintrayOptions" + }, + { + "$ref": "#/definitions/CustomPublishOptions" + }, + { + "$ref": "#/definitions/KeygenOptions" + }, + { + "$ref": "#/definitions/SnapStoreOptions" + }, + { + "type": "string" + } + ] + } + }, + { + "type": [ + "null", + "string" + ] + } + ] + } + } + }, + "PkgBackgroundOptions": { + "description": "Options for the background image in a PKG installer", + "type": "object", + "properties": { + "file": { + "description": "Path to the image to use as an installer background.", + "type": "string" + }, + "alignment": { + "description": "Alignment of the background image.\nOptions are: center, left, right, top, bottom, topleft, topright, bottomleft, bottomright", + "default": "center", + "anyOf": [ + { + "enum": [ + "bottom", + "bottomleft", + "bottomright", + "center", + "left", + "right", + "top", + "topleft", + "topright" + ], + "type": "string" + }, + { + "type": "null" + } + ] + }, + "scaling": { + "description": "Scaling of the background image.\nOptions are: tofit, none, proportional", + "default": "tofit", + "anyOf": [ + { + "enum": [ + "none", + "proportional", + "tofit" + ], + "type": "string" + }, + { + "type": "null" + } + ] + } + } + }, + "WindowsConfiguration": { + "type": "object", + "properties": { + "target": { + "description": "The target package type: list of `nsis`, `nsis-web` (Web installer), `portable` ([portable](/configuration/nsis#portable) app without installation), `appx`, `msi`, `squirrel`, `7z`, `zip`, `tar.xz`, `tar.lz`, `tar.gz`, `tar.bz2`, `dir`.\nAppX package can be built only on Windows 10.\n\nTo use Squirrel.Windows please install `electron-builder-squirrel-windows` dependency.", + "default": "nsis", + "anyOf": [ + { + "$ref": "#/definitions/TargetConfiguration" + }, + { + "type": "array", + "items": { + "anyOf": [ + { + "$ref": "#/definitions/TargetConfiguration" + }, + { + "type": "string" + } + ] + } + }, + { + "type": [ + "null", + "string" + ] + } + ] + }, + "icon": { + "description": "The path to application icon.", + "default": "build/icon.ico", + "type": [ + "null", + "string" + ] + }, + "legalTrademarks": { + "description": "The trademarks and registered trademarks.", + "type": [ + "null", + "string" + ] + }, + "signingHashAlgorithms": { + "description": "Array of signing algorithms used. For AppX `sha256` is always used.", + "default": "['sha1', 'sha256']", + "anyOf": [ + { + "type": "array", + "items": { + "enum": [ + "sha1", + "sha256" + ], + "type": "string" + } + }, + { + "type": "null" + } + ] + }, + "sign": { + "description": "The custom function (or path to file or module id) to sign Windows executable.", + "type": [ + "null", + "string", + "object" + ] + }, + "certificateFile": { + "description": "The path to the *.pfx certificate you want to sign with. Please use it only if you cannot use env variable `CSC_LINK` (`WIN_CSC_LINK`) for some reason.\nPlease see [Code Signing](/code-signing).", + "type": [ + "null", + "string" + ] + }, + "certificatePassword": { + "description": "The password to the certificate provided in `certificateFile`. Please use it only if you cannot use env variable `CSC_KEY_PASSWORD` (`WIN_CSC_KEY_PASSWORD`) for some reason.\nPlease see [Code Signing](/code-signing).", + "type": [ + "null", + "string" + ] + }, + "certificateSubjectName": { + "description": "The name of the subject of the signing certificate. Required only for EV Code Signing and works only on Windows (or on macOS if [Parallels Desktop](https://www.parallels.com/products/desktop/) Windows 10 virtual machines exits).", + "type": [ + "null", + "string" + ] + }, + "certificateSha1": { + "description": "The SHA1 hash of the signing certificate. The SHA1 hash is commonly specified when multiple certificates satisfy the criteria specified by the remaining switches. Works only on Windows (or on macOS if [Parallels Desktop](https://www.parallels.com/products/desktop/) Windows 10 virtual machines exits).", + "type": [ + "null", + "string" + ] + }, + "additionalCertificateFile": { + "description": "The path to an additional certificate file you want to add to the signature block.", + "type": [ + "null", + "string" + ] + }, + "rfc3161TimeStampServer": { + "description": "The URL of the RFC 3161 time stamp server.", + "default": "http://timestamp.digicert.com", + "type": [ + "null", + "string" + ] + }, + "timeStampServer": { + "description": "The URL of the time stamp server.", + "default": "http://timestamp.digicert.com", + "type": [ + "null", + "string" + ] + }, + "publisherName": { + "description": "[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.\nDefaults to common name from your code signing certificate.", + "anyOf": [ + { + "type": "array", + "items": { + "type": "string" + } + }, + { + "type": [ + "null", + "string" + ] + } + ] + }, + "verifyUpdateCodeSignature": { + "description": "Whether to verify the signature of an available update before installation.\nThe [publisher name](#publisherName) will be used for the signature verification.", + "default": true, + "type": "boolean" + }, + "requestedExecutionLevel": { + "description": "The [security level](https://msdn.microsoft.com/en-us/library/6ad1fshk.aspx#Anchor_9) at which the application requests to be executed.\nCannot be specified per target, allowed only in the `win`.", + "default": "asInvoker", + "anyOf": [ + { + "enum": [ + "asInvoker", + "highestAvailable", + "requireAdministrator" + ], + "type": "string" + }, + { + "type": "null" + } + ] + }, + "signAndEditExecutable": { + "description": "Whether to sign and add metadata to executable. Advanced option.", + "default": true, + "type": "boolean" + }, + "signDlls": { + "description": "Whether to sign DLL files. Advanced option.", + "default": false, + "type": "boolean" + }, + "appId": { + "description": "The application id. Used as [CFBundleIdentifier](https://developer.apple.com/library/ios/documentation/General/Reference/InfoPlistKeyReference/Articles/CoreFoundationKeys.html#//apple_ref/doc/uid/20001431-102070) for MacOS and as\n[Application User Model ID](https://msdn.microsoft.com/en-us/library/windows/desktop/dd378459(v=vs.85).aspx) for Windows (NSIS target only, Squirrel.Windows not supported). It is strongly recommended that an explicit ID is set.", + "default": "com.electron.${name}", + "type": [ + "null", + "string" + ] + }, + "artifactName": { + "description": "The [artifact file name template](/configuration/configuration#artifact-file-name-template). Defaults to `${productName}-${version}.${ext}` (some target can have other defaults, see corresponding options).", + "type": [ + "null", + "string" + ] + }, + "executableName": { + "description": "The executable name. Defaults to `productName`.", + "type": [ + "null", + "string" + ] + }, + "compression": { + "description": "The compression level. If you want to rapidly test build, `store` can reduce build time significantly. `maximum` doesn't lead to noticeable size difference, but increase build time.", + "default": "normal", + "anyOf": [ + { + "enum": [ + "maximum", + "normal", + "store" + ], + "type": "string" + }, + { + "type": "null" + } + ] + }, + "files": { + "anyOf": [ + { + "$ref": "#/definitions/FileSet" + }, + { + "type": "array", + "items": { + "anyOf": [ + { + "$ref": "#/definitions/FileSet" + }, + { + "type": "string" + } + ] + } + }, + { + "type": [ + "null", + "string" + ] + } + ] + }, + "extraResources": { + "anyOf": [ + { + "$ref": "#/definitions/FileSet" + }, + { + "type": "array", + "items": { + "anyOf": [ + { + "$ref": "#/definitions/FileSet" + }, + { + "type": "string" + } + ] + } + }, + { + "type": [ + "null", + "string" + ] + } + ] + }, + "extraFiles": { + "anyOf": [ + { + "$ref": "#/definitions/FileSet" + }, + { + "type": "array", + "items": { + "anyOf": [ + { + "$ref": "#/definitions/FileSet" + }, + { + "type": "string" + } + ] + } + }, + { + "type": [ + "null", + "string" + ] + } + ] + }, + "asar": { + "description": "Whether to package the application's source code into an archive, using [Electron's archive format](http://electron.atom.io/docs/tutorial/application-packaging/).\n\nNode modules, that must be unpacked, will be detected automatically, you don't need to explicitly set [asarUnpack](#configuration-asarUnpack) - please file an issue if this doesn't work.", + "default": true, + "anyOf": [ + { + "$ref": "#/definitions/AsarOptions" + }, + { + "type": [ + "null", + "boolean" + ] + } + ] + }, + "asarUnpack": { + "description": "A [glob patterns](/file-patterns) relative to the [app directory](#MetadataDirectories-app), which specifies which files to unpack when creating the [asar](http://electron.atom.io/docs/tutorial/application-packaging/) archive.", + "anyOf": [ + { + "type": "array", + "items": { + "type": "string" + } + }, + { + "type": [ + "null", + "string" + ] + } + ] + }, + "fileAssociations": { + "description": "The file associations.", + "anyOf": [ + { + "$ref": "#/definitions/FileAssociation" + }, + { + "type": "array", + "items": { + "$ref": "#/definitions/FileAssociation" + } + } + ] + }, + "protocols": { + "description": "The URL protocol schemes.", + "anyOf": [ + { + "$ref": "#/definitions/Protocol" + }, + { + "type": "array", + "items": { + "$ref": "#/definitions/Protocol" + } + } + ] + }, + "forceCodeSigning": { + "description": "Whether to fail if app will be not code signed.", + "type": "boolean" + }, + "electronUpdaterCompatibility": { + "description": "The [electron-updater compatibility](/auto-update#compatibility) semver range.", + "type": [ + "null", + "string" + ] + }, + "publish": { + "anyOf": [ + { + "$ref": "#/definitions/GithubOptions" + }, + { + "$ref": "#/definitions/S3Options" + }, + { + "$ref": "#/definitions/SpacesOptions" + }, + { + "$ref": "#/definitions/GenericServerOptions" + }, + { + "$ref": "#/definitions/BintrayOptions" + }, + { + "$ref": "#/definitions/CustomPublishOptions" + }, + { + "$ref": "#/definitions/KeygenOptions" + }, + { + "$ref": "#/definitions/SnapStoreOptions" + }, + { + "type": "array", + "items": { + "anyOf": [ + { + "$ref": "#/definitions/GithubOptions" + }, + { + "$ref": "#/definitions/S3Options" + }, + { + "$ref": "#/definitions/SpacesOptions" + }, + { + "$ref": "#/definitions/GenericServerOptions" + }, + { + "$ref": "#/definitions/BintrayOptions" + }, + { + "$ref": "#/definitions/CustomPublishOptions" + }, + { + "$ref": "#/definitions/KeygenOptions" + }, + { + "$ref": "#/definitions/SnapStoreOptions" + }, + { + "type": "string" + } + ] + } + }, + { + "type": [ + "null", + "string" + ] + } + ] + }, + "detectUpdateChannel": { + "description": "Whether to infer update channel from application version pre-release components. e.g. if version `0.12.1-alpha.1`, channel will be set to `alpha`. Otherwise to `latest`.", + "default": true, + "type": "boolean" + }, + "generateUpdatesFilesForAllChannels": { + "description": "Please see [Building and Releasing using Channels](https://github.com/electron-userland/electron-builder/issues/1182#issuecomment-324947139).", + "default": false, + "type": "boolean" + }, + "releaseInfo": { + "description": "The release info. Intended for command line usage:\n\n```\n-c.releaseInfo.releaseNotes=\"new features\"\n```", + "$ref": "#/definitions/ReleaseInfo" + }, + "cscLink": { + "type": [ + "null", + "string" + ] + }, + "cscKeyPassword": { + "type": [ + "null", + "string" + ] + }, + "defaultArch": { + "type": "string" + } + } + }, + "NsisOptions": { + "type": "object", + "properties": { + "oneClick": { + "description": "Whether to create one-click installer or assisted.", + "default": true, + "type": "boolean" + }, + "perMachine": { + "description": "Whether to show install mode installer page (choice per-machine or per-user) for assisted installer. Or whether installation always per all users (per-machine).\n\nIf `oneClick` is `true` (default): Whether to install per all users (per-machine).\n\nIf `oneClick` is `false` and `perMachine` is `true`: no install mode installer page, always install per-machine.\n\nIf `oneClick` is `false` and `perMachine` is `false` (default): install mode installer page.", + "default": false, + "type": "boolean" + }, + "allowElevation": { + "description": "*assisted installer only.* Allow requesting for elevation. If false, user will have to restart installer with elevated permissions.", + "default": true, + "type": "boolean" + }, + "allowToChangeInstallationDirectory": { + "description": "*assisted installer only.* Whether to allow user to change installation directory.", + "default": false, + "type": "boolean" + }, + "installerIcon": { + "description": "The path to installer icon, relative to the [build resources](/configuration/configuration#MetadataDirectories-buildResources) or to the project directory.\nDefaults to `build/installerIcon.ico` or application icon.", + "type": [ + "null", + "string" + ] + }, + "uninstallerIcon": { + "description": "The path to uninstaller icon, relative to the [build resources](/configuration/configuration#MetadataDirectories-buildResources) or to the project directory.\nDefaults to `build/uninstallerIcon.ico` or application icon.", + "type": [ + "null", + "string" + ] + }, + "installerHeader": { + "description": "*assisted installer only.* `MUI_HEADERIMAGE`, relative to the [build resources](/configuration/configuration#MetadataDirectories-buildResources) or to the project directory.", + "default": "build/installerHeader.bmp", + "type": [ + "null", + "string" + ] + }, + "installerHeaderIcon": { + "description": "*one-click installer only.* The path to header icon (above the progress bar), relative to the [build resources](/configuration/configuration#MetadataDirectories-buildResources) or to the project directory.\nDefaults to `build/installerHeaderIcon.ico` or application icon.", + "type": [ + "null", + "string" + ] + }, + "installerSidebar": { + "description": "*assisted installer only.* `MUI_WELCOMEFINISHPAGE_BITMAP`, relative to the [build resources](/configuration/configuration#MetadataDirectories-buildResources) or to the project directory.\nDefaults to `build/installerSidebar.bmp` or `${NSISDIR}\\\\Contrib\\\\Graphics\\\\Wizard\\\\nsis3-metro.bmp`. Image size 164 × 314 pixels.", + "type": [ + "null", + "string" + ] + }, + "uninstallerSidebar": { + "description": "*assisted installer only.* `MUI_UNWELCOMEFINISHPAGE_BITMAP`, relative to the [build resources](/configuration/configuration#MetadataDirectories-buildResources) or to the project directory.\nDefaults to `installerSidebar` option or `build/uninstallerSidebar.bmp` or `build/installerSidebar.bmp` or `${NSISDIR}\\\\Contrib\\\\Graphics\\\\Wizard\\\\nsis3-metro.bmp`", + "type": [ + "null", + "string" + ] + }, + "uninstallDisplayName": { + "description": "The uninstaller display name in the control panel.", + "default": "${productName} ${version}", + "type": "string" + }, + "include": { + "description": "The path to NSIS include script to customize installer. Defaults to `build/installer.nsh`. See [Custom NSIS script](#custom-nsis-script).", + "type": [ + "null", + "string" + ] + }, + "script": { + "description": "The path to NSIS script to customize installer. Defaults to `build/installer.nsi`. See [Custom NSIS script](#custom-nsis-script).", + "type": [ + "null", + "string" + ] + }, + "license": { + "description": "The path to EULA license file. Defaults to `license.txt` or `eula.txt` (or uppercase variants). In addition to `txt, `rtf` and `html` supported (don't forget to use `target=\"_blank\"` for links).\n\nMultiple license files in different languages are supported — use lang postfix (e.g. `_de`, `_ru`)). For example, create files `license_de.txt` and `license_en.txt` in the build resources.\nIf OS language is german, `license_de.txt` will be displayed. See map of [language code to name](https://github.com/meikidd/iso-639-1/blob/master/src/data.js).\n\nAppropriate license file will be selected by user OS language.", + "type": [ + "null", + "string" + ] + }, + "artifactName": { + "description": "The [artifact file name template](/configuration/configuration#artifact-file-name-template). Defaults to `${productName} Setup ${version}.${ext}`.", + "type": [ + "null", + "string" + ] + }, + "deleteAppDataOnUninstall": { + "description": "*one-click installer only.* Whether to delete app data on uninstall.", + "default": false, + "type": "boolean" + }, + "differentialPackage": { + "type": "boolean" + }, + "displayLanguageSelector": { + "description": "Whether to display a language selection dialog. Not recommended (by default will be detected using OS language).", + "default": false, + "type": "boolean" + }, + "installerLanguages": { + "description": "The installer languages (e.g. `en_US`, `de_DE`). Change only if you understand what do you do and for what.", + "anyOf": [ + { + "type": "array", + "items": { + "type": "string" + } + }, + { + "type": [ + "null", + "string" + ] + } + ] + }, + "language": { + "description": "[LCID Dec](https://msdn.microsoft.com/en-au/goglobal/bb964664.aspx), defaults to `1033`(`English - United States`).", + "type": [ + "null", + "string" + ] + }, + "multiLanguageInstaller": { + "description": "Whether to create multi-language installer. Defaults to `unicode` option value.", + "type": "boolean" + }, + "packElevateHelper": { + "description": "Whether to pack the elevate executable (required for electron-updater if per-machine installer used or can be used in the future). Ignored if `perMachine` is set to `true`.", + "default": true, + "type": "boolean" + }, + "preCompressedFileExtensions": { + "description": "The file extension of files that will be not compressed. Applicable only for `extraResources` and `extraFiles` files.", + "default": [ + ".avi", + ".mov", + ".m4v", + ".mp4", + ".m4p", + ".qt", + ".mkv", + ".webm", + ".vmdk" + ], + "anyOf": [ + { + "type": "array", + "items": { + "type": "string" + } + }, + { + "type": [ + "null", + "string" + ] + } + ] + }, + "unicode": { + "description": "Whether to create [Unicode installer](http://nsis.sourceforge.net/Docs/Chapter1.html#intro-unicode).", + "default": true, + "type": "boolean" + }, + "guid": { + "description": "See [GUID vs Application Name](../configuration/nsis#guid-vs-application-name).", + "type": [ + "null", + "string" + ] + }, + "warningsAsErrors": { + "description": "If `warningsAsErrors` is `true` (default): NSIS will treat warnings as errors. If `warningsAsErrors` is `false`: NSIS will allow warnings.", + "default": true, + "type": "boolean" + }, + "useZip": { + "default": false, + "type": "boolean" + }, + "customNsisBinary": { + "anyOf": [ + { + "$ref": "#/definitions/CustomNsisBinary" + }, + { + "type": "null" + } + ] + }, + "debugLogging": { + "description": "Whether or not to enable NSIS logging for debugging.\nNote: Requires a debug-enabled NSIS build.\nelectron-builder's included `makensis` only supports building debug-enabled NSIS installers on Windows currently\nhttps://github.com/electron-userland/electron-builder/issues/5119#issuecomment-811353612", + "type": [ + "null", + "boolean" + ] + }, + "runAfterFinish": { + "description": "Whether to run the installed application after finish. For assisted installer corresponding checkbox will be removed.", + "default": true, + "type": "boolean" + }, + "createDesktopShortcut": { + "description": "Whether to create desktop shortcut. Set to `always` if to recreate also on reinstall (even if removed by user).", + "default": true, + "enum": [ + "always", + false, + true + ] + }, + "createStartMenuShortcut": { + "description": "Whether to create start menu shortcut.", + "default": true, + "type": "boolean" + }, + "menuCategory": { + "description": "Whether to create submenu for start menu shortcut and program files directory. If `true`, company name will be used. Or string value.", + "default": false, + "type": [ + "string", + "boolean" + ] + }, + "shortcutName": { + "description": "The name that will be used for all shortcuts. Defaults to the application name.", + "type": [ + "null", + "string" + ] + }, + "publish": { + "anyOf": [ + { + "$ref": "#/definitions/GithubOptions" + }, + { + "$ref": "#/definitions/S3Options" + }, + { + "$ref": "#/definitions/SpacesOptions" + }, + { + "$ref": "#/definitions/GenericServerOptions" + }, + { + "$ref": "#/definitions/BintrayOptions" + }, + { + "$ref": "#/definitions/CustomPublishOptions" + }, + { + "$ref": "#/definitions/KeygenOptions" + }, + { + "$ref": "#/definitions/SnapStoreOptions" + }, + { + "type": "array", + "items": { + "anyOf": [ + { + "$ref": "#/definitions/GithubOptions" + }, + { + "$ref": "#/definitions/S3Options" + }, + { + "$ref": "#/definitions/SpacesOptions" + }, + { + "$ref": "#/definitions/GenericServerOptions" + }, + { + "$ref": "#/definitions/BintrayOptions" + }, + { + "$ref": "#/definitions/CustomPublishOptions" + }, + { + "$ref": "#/definitions/KeygenOptions" + }, + { + "$ref": "#/definitions/SnapStoreOptions" + }, + { + "type": "string" + } + ] + } + }, + { + "type": [ + "null", + "string" + ] + } + ] + } + } + }, + "CustomNsisBinary": { + "type": "object", + "properties": { + "url": { + "default": "https://github.com/electron-userland/electron-builder-binaries/releases/download", + "type": [ + "null", + "string" + ] + }, + "checksum": { + "default": "o+YZsXHp8LNihhuk7JsCDhdIgx0MKKK+1b3sGD+4zX5djZULe4/4QMcAsfQ+0r+a8FnwBt7BVBHkIkJHjKQ0sg==", + "type": [ + "null", + "string" + ] + }, + "version": { + "default": "3.0.4.2", + "type": [ + "null", + "string" + ] + } + }, + "required": [ + "url" + ] + }, + "NsisWebOptions": { + "description": "Web Installer options.", + "type": "object", + "properties": { + "appPackageUrl": { + "description": "The application package download URL. Optional — by default computed using publish configuration.\n\nURL like `https://example.com/download/latest` allows web installer to be version independent (installer will download latest application package).\nPlease note — it is [full URL](https://github.com/electron-userland/electron-builder/issues/1810#issuecomment-317650878).\n\nCustom `X-Arch` http header is set to `32` or `64`.", + "type": [ + "null", + "string" + ] + }, + "artifactName": { + "description": "The [artifact file name template](/configuration/configuration#artifact-file-name-template). Defaults to `${productName} Web Setup ${version}.${ext}`.", + "type": [ + "null", + "string" + ] + }, + "oneClick": { + "description": "Whether to create one-click installer or assisted.", + "default": true, + "type": "boolean" + }, + "perMachine": { + "description": "Whether to show install mode installer page (choice per-machine or per-user) for assisted installer. Or whether installation always per all users (per-machine).\n\nIf `oneClick` is `true` (default): Whether to install per all users (per-machine).\n\nIf `oneClick` is `false` and `perMachine` is `true`: no install mode installer page, always install per-machine.\n\nIf `oneClick` is `false` and `perMachine` is `false` (default): install mode installer page.", + "default": false, + "type": "boolean" + }, + "allowElevation": { + "description": "*assisted installer only.* Allow requesting for elevation. If false, user will have to restart installer with elevated permissions.", + "default": true, + "type": "boolean" + }, + "allowToChangeInstallationDirectory": { + "description": "*assisted installer only.* Whether to allow user to change installation directory.", + "default": false, + "type": "boolean" + }, + "installerIcon": { + "description": "The path to installer icon, relative to the [build resources](/configuration/configuration#MetadataDirectories-buildResources) or to the project directory.\nDefaults to `build/installerIcon.ico` or application icon.", + "type": [ + "null", + "string" + ] + }, + "uninstallerIcon": { + "description": "The path to uninstaller icon, relative to the [build resources](/configuration/configuration#MetadataDirectories-buildResources) or to the project directory.\nDefaults to `build/uninstallerIcon.ico` or application icon.", + "type": [ + "null", + "string" + ] + }, + "installerHeader": { + "description": "*assisted installer only.* `MUI_HEADERIMAGE`, relative to the [build resources](/configuration/configuration#MetadataDirectories-buildResources) or to the project directory.", + "default": "build/installerHeader.bmp", + "type": [ + "null", + "string" + ] + }, + "installerHeaderIcon": { + "description": "*one-click installer only.* The path to header icon (above the progress bar), relative to the [build resources](/configuration/configuration#MetadataDirectories-buildResources) or to the project directory.\nDefaults to `build/installerHeaderIcon.ico` or application icon.", + "type": [ + "null", + "string" + ] + }, + "installerSidebar": { + "description": "*assisted installer only.* `MUI_WELCOMEFINISHPAGE_BITMAP`, relative to the [build resources](/configuration/configuration#MetadataDirectories-buildResources) or to the project directory.\nDefaults to `build/installerSidebar.bmp` or `${NSISDIR}\\\\Contrib\\\\Graphics\\\\Wizard\\\\nsis3-metro.bmp`. Image size 164 × 314 pixels.", + "type": [ + "null", + "string" + ] + }, + "uninstallerSidebar": { + "description": "*assisted installer only.* `MUI_UNWELCOMEFINISHPAGE_BITMAP`, relative to the [build resources](/configuration/configuration#MetadataDirectories-buildResources) or to the project directory.\nDefaults to `installerSidebar` option or `build/uninstallerSidebar.bmp` or `build/installerSidebar.bmp` or `${NSISDIR}\\\\Contrib\\\\Graphics\\\\Wizard\\\\nsis3-metro.bmp`", + "type": [ + "null", + "string" + ] + }, + "uninstallDisplayName": { + "description": "The uninstaller display name in the control panel.", + "default": "${productName} ${version}", + "type": "string" + }, + "include": { + "description": "The path to NSIS include script to customize installer. Defaults to `build/installer.nsh`. See [Custom NSIS script](#custom-nsis-script).", + "type": [ + "null", + "string" + ] + }, + "script": { + "description": "The path to NSIS script to customize installer. Defaults to `build/installer.nsi`. See [Custom NSIS script](#custom-nsis-script).", + "type": [ + "null", + "string" + ] + }, + "license": { + "description": "The path to EULA license file. Defaults to `license.txt` or `eula.txt` (or uppercase variants). In addition to `txt, `rtf` and `html` supported (don't forget to use `target=\"_blank\"` for links).\n\nMultiple license files in different languages are supported — use lang postfix (e.g. `_de`, `_ru`)). For example, create files `license_de.txt` and `license_en.txt` in the build resources.\nIf OS language is german, `license_de.txt` will be displayed. See map of [language code to name](https://github.com/meikidd/iso-639-1/blob/master/src/data.js).\n\nAppropriate license file will be selected by user OS language.", + "type": [ + "null", + "string" + ] + }, + "deleteAppDataOnUninstall": { + "description": "*one-click installer only.* Whether to delete app data on uninstall.", + "default": false, + "type": "boolean" + }, + "differentialPackage": { + "type": "boolean" + }, + "displayLanguageSelector": { + "description": "Whether to display a language selection dialog. Not recommended (by default will be detected using OS language).", + "default": false, + "type": "boolean" + }, + "installerLanguages": { + "description": "The installer languages (e.g. `en_US`, `de_DE`). Change only if you understand what do you do and for what.", + "anyOf": [ + { + "type": "array", + "items": { + "type": "string" + } + }, + { + "type": [ + "null", + "string" + ] + } + ] + }, + "language": { + "description": "[LCID Dec](https://msdn.microsoft.com/en-au/goglobal/bb964664.aspx), defaults to `1033`(`English - United States`).", + "type": [ + "null", + "string" + ] + }, + "multiLanguageInstaller": { + "description": "Whether to create multi-language installer. Defaults to `unicode` option value.", + "type": "boolean" + }, + "packElevateHelper": { + "description": "Whether to pack the elevate executable (required for electron-updater if per-machine installer used or can be used in the future). Ignored if `perMachine` is set to `true`.", + "default": true, + "type": "boolean" + }, + "preCompressedFileExtensions": { + "description": "The file extension of files that will be not compressed. Applicable only for `extraResources` and `extraFiles` files.", + "default": [ + ".avi", + ".mov", + ".m4v", + ".mp4", + ".m4p", + ".qt", + ".mkv", + ".webm", + ".vmdk" + ], + "anyOf": [ + { + "type": "array", + "items": { + "type": "string" + } + }, + { + "type": [ + "null", + "string" + ] + } + ] + }, + "unicode": { + "description": "Whether to create [Unicode installer](http://nsis.sourceforge.net/Docs/Chapter1.html#intro-unicode).", + "default": true, + "type": "boolean" + }, + "guid": { + "description": "See [GUID vs Application Name](../configuration/nsis#guid-vs-application-name).", + "type": [ + "null", + "string" + ] + }, + "warningsAsErrors": { + "description": "If `warningsAsErrors` is `true` (default): NSIS will treat warnings as errors. If `warningsAsErrors` is `false`: NSIS will allow warnings.", + "default": true, + "type": "boolean" + }, + "useZip": { + "default": false, + "type": "boolean" + }, + "customNsisBinary": { + "anyOf": [ + { + "$ref": "#/definitions/CustomNsisBinary" + }, + { + "type": "null" + } + ] + }, + "debugLogging": { + "description": "Whether or not to enable NSIS logging for debugging.\nNote: Requires a debug-enabled NSIS build.\nelectron-builder's included `makensis` only supports building debug-enabled NSIS installers on Windows currently\nhttps://github.com/electron-userland/electron-builder/issues/5119#issuecomment-811353612", + "type": [ + "null", + "boolean" + ] + }, + "runAfterFinish": { + "description": "Whether to run the installed application after finish. For assisted installer corresponding checkbox will be removed.", + "default": true, + "type": "boolean" + }, + "createDesktopShortcut": { + "description": "Whether to create desktop shortcut. Set to `always` if to recreate also on reinstall (even if removed by user).", + "default": true, + "enum": [ + "always", + false, + true + ] + }, + "createStartMenuShortcut": { + "description": "Whether to create start menu shortcut.", + "default": true, + "type": "boolean" + }, + "menuCategory": { + "description": "Whether to create submenu for start menu shortcut and program files directory. If `true`, company name will be used. Or string value.", + "default": false, + "type": [ + "string", + "boolean" + ] + }, + "shortcutName": { + "description": "The name that will be used for all shortcuts. Defaults to the application name.", + "type": [ + "null", + "string" + ] + }, + "publish": { + "anyOf": [ + { + "$ref": "#/definitions/GithubOptions" + }, + { + "$ref": "#/definitions/S3Options" + }, + { + "$ref": "#/definitions/SpacesOptions" + }, + { + "$ref": "#/definitions/GenericServerOptions" + }, + { + "$ref": "#/definitions/BintrayOptions" + }, + { + "$ref": "#/definitions/CustomPublishOptions" + }, + { + "$ref": "#/definitions/KeygenOptions" + }, + { + "$ref": "#/definitions/SnapStoreOptions" + }, + { + "type": "array", + "items": { + "anyOf": [ + { + "$ref": "#/definitions/GithubOptions" + }, + { + "$ref": "#/definitions/S3Options" + }, + { + "$ref": "#/definitions/SpacesOptions" + }, + { + "$ref": "#/definitions/GenericServerOptions" + }, + { + "$ref": "#/definitions/BintrayOptions" + }, + { + "$ref": "#/definitions/CustomPublishOptions" + }, + { + "$ref": "#/definitions/KeygenOptions" + }, + { + "$ref": "#/definitions/SnapStoreOptions" + }, + { + "type": "string" + } + ] + } + }, + { + "type": [ + "null", + "string" + ] + } + ] + } + } + }, + "PortableOptions": { + "description": "Portable options.", + "type": "object", + "properties": { + "requestExecutionLevel": { + "description": "The [requested execution level](http://nsis.sourceforge.net/Reference/RequestExecutionLevel) for Windows.", + "default": "user", + "enum": [ + "admin", + "highest", + "user" + ], + "type": "string" + }, + "unpackDirName": { + "description": "The unpack directory for the portable app resources.\n\nIf set to a string, it will be the name in [TEMP](https://www.askvg.com/where-does-windows-store-temporary-files-and-how-to-change-temp-folder-location/) directory\nIf set explicitly to `false`, it will use the Windows temp directory ($PLUGINSDIR) that is unique to each launch of the portable application.\n\nDefaults to [uuid](https://github.com/segmentio/ksuid) of build (changed on each build of portable executable).", + "type": [ + "string", + "boolean" + ] + }, + "splashImage": { + "description": "The image to show while the portable executable is extracting. This image must be a bitmap (`.bmp`) image.", + "type": [ + "null", + "string" + ] + }, + "artifactName": { + "description": "The [artifact file name template](/configuration/configuration#artifact-file-name-template).", + "type": [ + "null", + "string" + ] + }, + "publish": { + "anyOf": [ + { + "$ref": "#/definitions/GithubOptions" + }, + { + "$ref": "#/definitions/S3Options" + }, + { + "$ref": "#/definitions/SpacesOptions" + }, + { + "$ref": "#/definitions/GenericServerOptions" + }, + { + "$ref": "#/definitions/BintrayOptions" + }, + { + "$ref": "#/definitions/CustomPublishOptions" + }, + { + "$ref": "#/definitions/KeygenOptions" + }, + { + "$ref": "#/definitions/SnapStoreOptions" + }, + { + "type": "array", + "items": { + "anyOf": [ + { + "$ref": "#/definitions/GithubOptions" + }, + { + "$ref": "#/definitions/S3Options" + }, + { + "$ref": "#/definitions/SpacesOptions" + }, + { + "$ref": "#/definitions/GenericServerOptions" + }, + { + "$ref": "#/definitions/BintrayOptions" + }, + { + "$ref": "#/definitions/CustomPublishOptions" + }, + { + "$ref": "#/definitions/KeygenOptions" + }, + { + "$ref": "#/definitions/SnapStoreOptions" + }, + { + "type": "string" + } + ] + } + }, + { + "type": [ + "null", + "string" + ] + } + ] + }, + "unicode": { + "description": "Whether to create [Unicode installer](http://nsis.sourceforge.net/Docs/Chapter1.html#intro-unicode).", + "default": true, + "type": "boolean" + }, + "guid": { + "description": "See [GUID vs Application Name](../configuration/nsis#guid-vs-application-name).", + "type": [ + "null", + "string" + ] + }, + "warningsAsErrors": { + "description": "If `warningsAsErrors` is `true` (default): NSIS will treat warnings as errors. If `warningsAsErrors` is `false`: NSIS will allow warnings.", + "default": true, + "type": "boolean" + }, + "useZip": { + "default": false, + "type": "boolean" + }, + "customNsisBinary": { + "anyOf": [ + { + "$ref": "#/definitions/CustomNsisBinary" + }, + { + "type": "null" + } + ] + }, + "debugLogging": { + "description": "Whether or not to enable NSIS logging for debugging.\nNote: Requires a debug-enabled NSIS build.\nelectron-builder's included `makensis` only supports building debug-enabled NSIS installers on Windows currently\nhttps://github.com/electron-userland/electron-builder/issues/5119#issuecomment-811353612", + "type": [ + "null", + "boolean" + ] + } + } + }, + "AppXOptions": { + "type": "object", + "properties": { + "applicationId": { + "description": "The application id. Defaults to `identityName`. Can’t start with numbers.", + "type": "string" + }, + "backgroundColor": { + "description": "The background color of the app tile. See [Visual Elements](https://msdn.microsoft.com/en-us/library/windows/apps/br211471.aspx).", + "default": "#464646", + "type": [ + "null", + "string" + ] + }, + "displayName": { + "description": "A friendly name that can be displayed to users. Corresponds to [Properties.DisplayName](https://msdn.microsoft.com/en-us/library/windows/apps/br211432.aspx).\nDefaults to the application product name.", + "type": [ + "null", + "string" + ] + }, + "identityName": { + "description": "The name. Corresponds to [Identity.Name](https://msdn.microsoft.com/en-us/library/windows/apps/br211441.aspx). Defaults to the [application name](/configuration/configuration#Metadata-name).", + "type": [ + "null", + "string" + ] + }, + "publisher": { + "description": "The Windows Store publisher. Not used if AppX is build for testing. See [AppX Package Code Signing](#appx-package-code-signing) below.", + "type": [ + "null", + "string" + ] + }, + "publisherDisplayName": { + "description": "A friendly name for the publisher that can be displayed to users. Corresponds to [Properties.PublisherDisplayName](https://msdn.microsoft.com/en-us/library/windows/apps/br211460.aspx).\nDefaults to company name from the application metadata.", + "type": [ + "null", + "string" + ] + }, + "languages": { + "description": "The list of [supported languages](https://docs.microsoft.com/en-us/windows/uwp/globalizing/manage-language-and-region#specify-the-supported-languages-in-the-apps-manifest) that will be listed in the Windows Store.\nThe first entry (index 0) will be the default language.\nDefaults to en-US if omitted.", + "anyOf": [ + { + "type": "array", + "items": { + "type": "string" + } + }, + { + "type": [ + "null", + "string" + ] + } + ] + }, + "addAutoLaunchExtension": { + "description": "Whether to add auto launch extension. Defaults to `true` if [electron-winstore-auto-launch](https://github.com/felixrieseberg/electron-winstore-auto-launch) in the dependencies.", + "type": "boolean" + }, + "customExtensionsPath": { + "description": "Relative path to custom extensions xml to be included in an `appmanifest.xml`.", + "type": "string" + }, + "showNameOnTiles": { + "description": "Whether to overlay the app's name on top of tile images on the Start screen. Defaults to `false`. (https://docs.microsoft.com/en-us/uwp/schemas/appxpackage/uapmanifestschema/element-uap-shownameontiles) in the dependencies.", + "default": false, + "type": "boolean" + }, + "electronUpdaterAware": { + "default": false, + "type": "boolean" + }, + "setBuildNumber": { + "description": "Whether to set build number. See https://github.com/electron-userland/electron-builder/issues/3875", + "default": false, + "type": "boolean" + }, + "makeappxArgs": { + "anyOf": [ + { + "type": "array", + "items": { + "type": "string" + } + }, + { + "type": "null" + } + ] + }, + "artifactName": { + "description": "The [artifact file name template](/configuration/configuration#artifact-file-name-template).", + "type": [ + "null", + "string" + ] + }, + "publish": { + "anyOf": [ + { + "$ref": "#/definitions/GithubOptions" + }, + { + "$ref": "#/definitions/S3Options" + }, + { + "$ref": "#/definitions/SpacesOptions" + }, + { + "$ref": "#/definitions/GenericServerOptions" + }, + { + "$ref": "#/definitions/BintrayOptions" + }, + { + "$ref": "#/definitions/CustomPublishOptions" + }, + { + "$ref": "#/definitions/KeygenOptions" + }, + { + "$ref": "#/definitions/SnapStoreOptions" + }, + { + "type": "array", + "items": { + "anyOf": [ + { + "$ref": "#/definitions/GithubOptions" + }, + { + "$ref": "#/definitions/S3Options" + }, + { + "$ref": "#/definitions/SpacesOptions" + }, + { + "$ref": "#/definitions/GenericServerOptions" + }, + { + "$ref": "#/definitions/BintrayOptions" + }, + { + "$ref": "#/definitions/CustomPublishOptions" + }, + { + "$ref": "#/definitions/KeygenOptions" + }, + { + "$ref": "#/definitions/SnapStoreOptions" + }, + { + "type": "string" + } + ] + } + }, + { + "type": [ + "null", + "string" + ] + } + ] + } + } + }, + "MsiOptions": { + "type": "object", + "properties": { + "oneClick": { + "description": "One-click installation.", + "default": true, + "type": "boolean" + }, + "upgradeCode": { + "description": "The [upgrade code](https://msdn.microsoft.com/en-us/library/windows/desktop/aa372375(v=vs.85).aspx). Optional, by default generated using app id.", + "type": [ + "null", + "string" + ] + }, + "warningsAsErrors": { + "description": "If `warningsAsErrors` is `true` (default): treat warnings as errors. If `warningsAsErrors` is `false`: allow warnings.", + "default": true, + "type": "boolean" + }, + "additionalWixArgs": { + "description": "Any additional arguments to be passed to the WiX installer compiler, such as `[\"-ext\", \"WixUtilExtension\"]`", + "anyOf": [ + { + "type": "array", + "items": { + "type": "string" + } + }, + { + "type": "null" + } + ] + }, + "perMachine": { + "description": "Whether to install per all users (per-machine).", + "default": false, + "type": "boolean" + }, + "runAfterFinish": { + "description": "Whether to run the installed application after finish. For assisted installer corresponding checkbox will be removed.", + "default": true, + "type": "boolean" + }, + "createDesktopShortcut": { + "description": "Whether to create desktop shortcut. Set to `always` if to recreate also on reinstall (even if removed by user).", + "default": true, + "enum": [ + "always", + false, + true + ] + }, + "createStartMenuShortcut": { + "description": "Whether to create start menu shortcut.", + "default": true, + "type": "boolean" + }, + "menuCategory": { + "description": "Whether to create submenu for start menu shortcut and program files directory. If `true`, company name will be used. Or string value.", + "default": false, + "type": [ + "string", + "boolean" + ] + }, + "shortcutName": { + "description": "The name that will be used for all shortcuts. Defaults to the application name.", + "type": [ + "null", + "string" + ] + }, + "artifactName": { + "description": "The [artifact file name template](/configuration/configuration#artifact-file-name-template).", + "type": [ + "null", + "string" + ] + }, + "publish": { + "anyOf": [ + { + "$ref": "#/definitions/GithubOptions" + }, + { + "$ref": "#/definitions/S3Options" + }, + { + "$ref": "#/definitions/SpacesOptions" + }, + { + "$ref": "#/definitions/GenericServerOptions" + }, + { + "$ref": "#/definitions/BintrayOptions" + }, + { + "$ref": "#/definitions/CustomPublishOptions" + }, + { + "$ref": "#/definitions/KeygenOptions" + }, + { + "$ref": "#/definitions/SnapStoreOptions" + }, + { + "type": "array", + "items": { + "anyOf": [ + { + "$ref": "#/definitions/GithubOptions" + }, + { + "$ref": "#/definitions/S3Options" + }, + { + "$ref": "#/definitions/SpacesOptions" + }, + { + "$ref": "#/definitions/GenericServerOptions" + }, + { + "$ref": "#/definitions/BintrayOptions" + }, + { + "$ref": "#/definitions/CustomPublishOptions" + }, + { + "$ref": "#/definitions/KeygenOptions" + }, + { + "$ref": "#/definitions/SnapStoreOptions" + }, + { + "type": "string" + } + ] + } + }, + { + "type": [ + "null", + "string" + ] + } + ] + } + } + }, + "SquirrelWindowsOptions": { + "type": "object", + "properties": { + "iconUrl": { + "description": "A URL to an ICO file to use as the application icon (displayed in Control Panel > Programs and Features). Defaults to the Electron icon.\n\nPlease note — [local icon file url is not accepted](https://github.com/atom/grunt-electron-installer/issues/73), must be https/http.\n\nIf you don't plan to build windows installer, you can omit it.\nIf your project repository is public on GitHub, it will be `https://github.com/${u}/${p}/blob/master/build/icon.ico?raw=true` by default.", + "type": [ + "null", + "string" + ] + }, + "loadingGif": { + "description": "The path to a .gif file to display during install. `build/install-spinner.gif` will be used if exists (it is a recommended way to set)\n(otherwise [default](https://github.com/electron/windows-installer/blob/master/resources/install-spinner.gif)).", + "type": [ + "null", + "string" + ] + }, + "msi": { + "description": "Whether to create an MSI installer. Defaults to `false` (MSI is not created).", + "type": "boolean" + }, + "remoteReleases": { + "description": "A URL to your existing updates. Or `true` to automatically set to your GitHub repository. If given, these will be downloaded to create delta updates.", + "type": [ + "null", + "string", + "boolean" + ] + }, + "remoteToken": { + "description": "Authentication token for remote updates", + "type": [ + "null", + "string" + ] + }, + "useAppIdAsId": { + "description": "Use `appId` to identify package instead of `name`.", + "type": "boolean" + }, + "name": { + "description": "https://github.com/electron-userland/electron-builder/issues/1743", + "type": "string" + }, + "artifactName": { + "description": "The [artifact file name template](/configuration/configuration#artifact-file-name-template).", + "type": [ + "null", + "string" + ] + }, + "publish": { + "anyOf": [ + { + "$ref": "#/definitions/GithubOptions" + }, + { + "$ref": "#/definitions/S3Options" + }, + { + "$ref": "#/definitions/SpacesOptions" + }, + { + "$ref": "#/definitions/GenericServerOptions" + }, + { + "$ref": "#/definitions/BintrayOptions" + }, + { + "$ref": "#/definitions/CustomPublishOptions" + }, + { + "$ref": "#/definitions/KeygenOptions" + }, + { + "$ref": "#/definitions/SnapStoreOptions" + }, + { + "type": "array", + "items": { + "anyOf": [ + { + "$ref": "#/definitions/GithubOptions" + }, + { + "$ref": "#/definitions/S3Options" + }, + { + "$ref": "#/definitions/SpacesOptions" + }, + { + "$ref": "#/definitions/GenericServerOptions" + }, + { + "$ref": "#/definitions/BintrayOptions" + }, + { + "$ref": "#/definitions/CustomPublishOptions" + }, + { + "$ref": "#/definitions/KeygenOptions" + }, + { + "$ref": "#/definitions/SnapStoreOptions" + }, + { + "type": "string" + } + ] + } + }, + { + "type": [ + "null", + "string" + ] + } + ] + } + } + }, + "LinuxConfiguration": { + "type": "object", + "properties": { + "target": { + "description": "Target package type: list of `AppImage`, `snap`, `deb`, `rpm`, `freebsd`, `pacman`, `p5p`, `apk`, `7z`, `zip`, `tar.xz`, `tar.lz`, `tar.gz`, `tar.bz2`, `dir`.\n\nelectron-builder [docker image](/multi-platform-build#docker) can be used to build Linux targets on any platform.\n\nPlease [do not put an AppImage into another archive](https://github.com/probonopd/AppImageKit/wiki/Creating-AppImages#common-mistake) like a .zip or .tar.gz.", + "default": "AppImage", + "anyOf": [ + { + "$ref": "#/definitions/TargetConfiguration" + }, + { + "type": "array", + "items": { + "anyOf": [ + { + "$ref": "#/definitions/TargetConfiguration" + }, + { + "type": "string" + } + ] + } + }, + { + "type": [ + "null", + "string" + ] + } + ] + }, + "maintainer": { + "description": "The maintainer. Defaults to [author](/configuration/configuration#Metadata-author).", + "type": [ + "null", + "string" + ] + }, + "vendor": { + "description": "The vendor. Defaults to [author](/configuration/configuration#Metadata-author).", + "type": [ + "null", + "string" + ] + }, + "icon": { + "description": "The path to icon set directory or one png file, relative to the [build resources](/configuration/configuration#MetadataDirectories-buildResources) or to the project directory. The icon filename must contain the size (e.g. 32x32.png) of the icon.\nBy default will be generated automatically based on the macOS icns file.", + "type": "string" + }, + "packageCategory": { + "description": "backward compatibility + to allow specify fpm-only category for all possible fpm targets in one place", + "type": [ + "null", + "string" + ] + }, + "synopsis": { + "description": "The [short description](https://www.debian.org/doc/debian-policy/ch-controlfields.html#s-f-Description).", + "type": [ + "null", + "string" + ] + }, + "description": { + "description": "As [description](/configuration/configuration#Metadata-description) from application package.json, but allows you to specify different for Linux.", + "type": [ + "null", + "string" + ] + }, + "category": { + "description": "The [application category](https://specifications.freedesktop.org/menu-spec/latest/apa.html#main-category-registry).", + "type": [ + "null", + "string" + ] + }, + "mimeTypes": { + "description": "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.", + "anyOf": [ + { + "type": "array", + "items": { + "type": "string" + } + }, + { + "type": "null" + } + ] + }, + "desktop": { + "description": "The [Desktop file](https://developer.gnome.org/integration-guide/stable/desktop-files.html.en) entries (name to value)." + }, + "executableArgs": { + "description": "The executable parameters. Pass to executableName", + "anyOf": [ + { + "type": "array", + "items": { + "type": "string" + } + }, + { + "type": "null" + } + ] + }, + "appId": { + "description": "The application id. Used as [CFBundleIdentifier](https://developer.apple.com/library/ios/documentation/General/Reference/InfoPlistKeyReference/Articles/CoreFoundationKeys.html#//apple_ref/doc/uid/20001431-102070) for MacOS and as\n[Application User Model ID](https://msdn.microsoft.com/en-us/library/windows/desktop/dd378459(v=vs.85).aspx) for Windows (NSIS target only, Squirrel.Windows not supported). It is strongly recommended that an explicit ID is set.", + "default": "com.electron.${name}", + "type": [ + "null", + "string" + ] + }, + "artifactName": { + "description": "The [artifact file name template](/configuration/configuration#artifact-file-name-template). Defaults to `${productName}-${version}.${ext}` (some target can have other defaults, see corresponding options).", + "type": [ + "null", + "string" + ] + }, + "executableName": { + "description": "The executable name. Defaults to `productName`.", + "type": [ + "null", + "string" + ] + }, + "compression": { + "description": "The compression level. If you want to rapidly test build, `store` can reduce build time significantly. `maximum` doesn't lead to noticeable size difference, but increase build time.", + "default": "normal", + "anyOf": [ + { + "enum": [ + "maximum", + "normal", + "store" + ], + "type": "string" + }, + { + "type": "null" + } + ] + }, + "files": { + "anyOf": [ + { + "$ref": "#/definitions/FileSet" + }, + { + "type": "array", + "items": { + "anyOf": [ + { + "$ref": "#/definitions/FileSet" + }, + { + "type": "string" + } + ] + } + }, + { + "type": [ + "null", + "string" + ] + } + ] + }, + "extraResources": { + "anyOf": [ + { + "$ref": "#/definitions/FileSet" + }, + { + "type": "array", + "items": { + "anyOf": [ + { + "$ref": "#/definitions/FileSet" + }, + { + "type": "string" + } + ] + } + }, + { + "type": [ + "null", + "string" + ] + } + ] + }, + "extraFiles": { + "anyOf": [ + { + "$ref": "#/definitions/FileSet" + }, + { + "type": "array", + "items": { + "anyOf": [ + { + "$ref": "#/definitions/FileSet" + }, + { + "type": "string" + } + ] + } + }, + { + "type": [ + "null", + "string" + ] + } + ] + }, + "asar": { + "description": "Whether to package the application's source code into an archive, using [Electron's archive format](http://electron.atom.io/docs/tutorial/application-packaging/).\n\nNode modules, that must be unpacked, will be detected automatically, you don't need to explicitly set [asarUnpack](#configuration-asarUnpack) - please file an issue if this doesn't work.", + "default": true, + "anyOf": [ + { + "$ref": "#/definitions/AsarOptions" + }, + { + "type": [ + "null", + "boolean" + ] + } + ] + }, + "asarUnpack": { + "description": "A [glob patterns](/file-patterns) relative to the [app directory](#MetadataDirectories-app), which specifies which files to unpack when creating the [asar](http://electron.atom.io/docs/tutorial/application-packaging/) archive.", + "anyOf": [ + { + "type": "array", + "items": { + "type": "string" + } + }, + { + "type": [ + "null", + "string" + ] + } + ] + }, + "fileAssociations": { + "description": "The file associations.", + "anyOf": [ + { + "$ref": "#/definitions/FileAssociation" + }, + { + "type": "array", + "items": { + "$ref": "#/definitions/FileAssociation" + } + } + ] + }, + "protocols": { + "description": "The URL protocol schemes.", + "anyOf": [ + { + "$ref": "#/definitions/Protocol" + }, + { + "type": "array", + "items": { + "$ref": "#/definitions/Protocol" + } + } + ] + }, + "forceCodeSigning": { + "description": "Whether to fail if app will be not code signed.", + "type": "boolean" + }, + "electronUpdaterCompatibility": { + "description": "The [electron-updater compatibility](/auto-update#compatibility) semver range.", + "type": [ + "null", + "string" + ] + }, + "publish": { + "anyOf": [ + { + "$ref": "#/definitions/GithubOptions" + }, + { + "$ref": "#/definitions/S3Options" + }, + { + "$ref": "#/definitions/SpacesOptions" + }, + { + "$ref": "#/definitions/GenericServerOptions" + }, + { + "$ref": "#/definitions/BintrayOptions" + }, + { + "$ref": "#/definitions/CustomPublishOptions" + }, + { + "$ref": "#/definitions/KeygenOptions" + }, + { + "$ref": "#/definitions/SnapStoreOptions" + }, + { + "type": "array", + "items": { + "anyOf": [ + { + "$ref": "#/definitions/GithubOptions" + }, + { + "$ref": "#/definitions/S3Options" + }, + { + "$ref": "#/definitions/SpacesOptions" + }, + { + "$ref": "#/definitions/GenericServerOptions" + }, + { + "$ref": "#/definitions/BintrayOptions" + }, + { + "$ref": "#/definitions/CustomPublishOptions" + }, + { + "$ref": "#/definitions/KeygenOptions" + }, + { + "$ref": "#/definitions/SnapStoreOptions" + }, + { + "type": "string" + } + ] + } + }, + { + "type": [ + "null", + "string" + ] + } + ] + }, + "detectUpdateChannel": { + "description": "Whether to infer update channel from application version pre-release components. e.g. if version `0.12.1-alpha.1`, channel will be set to `alpha`. Otherwise to `latest`.", + "default": true, + "type": "boolean" + }, + "generateUpdatesFilesForAllChannels": { + "description": "Please see [Building and Releasing using Channels](https://github.com/electron-userland/electron-builder/issues/1182#issuecomment-324947139).", + "default": false, + "type": "boolean" + }, + "releaseInfo": { + "description": "The release info. Intended for command line usage:\n\n```\n-c.releaseInfo.releaseNotes=\"new features\"\n```", + "$ref": "#/definitions/ReleaseInfo" + }, + "cscLink": { + "type": [ + "null", + "string" + ] + }, + "cscKeyPassword": { + "type": [ + "null", + "string" + ] + }, + "defaultArch": { + "type": "string" + } + } + }, + "DebOptions": { + "type": "object", + "properties": { + "depends": { + "description": "Package dependencies. Defaults to `[\"gconf2\", \"gconf-service\", \"libnotify4\", \"libappindicator1\", \"libxtst6\", \"libnss3\"]`.", + "anyOf": [ + { + "type": "array", + "items": { + "type": "string" + } + }, + { + "type": "null" + } + ] + }, + "packageCategory": { + "description": "The [package category](https://www.debian.org/doc/debian-policy/ch-controlfields.html#s-f-Section).", + "type": [ + "null", + "string" + ] + }, + "priority": { + "description": "The [Priority](https://www.debian.org/doc/debian-policy/ch-controlfields.html#s-f-Priority) attribute.", + "type": [ + "null", + "string" + ] + }, + "compression": { + "description": "The compression type.", + "default": "xz", + "anyOf": [ + { + "enum": [ + "bzip2", + "gz", + "xz" + ], + "type": "string" + }, + { + "type": "null" + } + ] + }, + "icon": { + "type": "string" + }, + "packageName": { + "description": "The name of the package.", + "type": [ + "null", + "string" + ] + }, + "vendor": { + "type": [ + "null", + "string" + ] + }, + "maintainer": { + "type": [ + "null", + "string" + ] + }, + "afterInstall": { + "type": [ + "null", + "string" + ] + }, + "afterRemove": { + "type": [ + "null", + "string" + ] + }, + "fpm": { + "description": "*Advanced only* The [fpm](https://github.com/jordansissel/fpm/wiki#usage) options.\n\nExample: `[\"--before-install=build/deb-preinstall.sh\", \"--after-upgrade=build/deb-postinstall.sh\"]`", + "anyOf": [ + { + "type": "array", + "items": { + "type": "string" + } + }, + { + "type": "null" + } + ] + }, + "synopsis": { + "description": "The [short description](https://www.debian.org/doc/debian-policy/ch-controlfields.html#s-f-Description).", + "type": [ + "null", + "string" + ] + }, + "description": { + "description": "As [description](/configuration/configuration#Metadata-description) from application package.json, but allows you to specify different for Linux.", + "type": [ + "null", + "string" + ] + }, + "category": { + "description": "The [application category](https://specifications.freedesktop.org/menu-spec/latest/apa.html#main-category-registry).", + "type": [ + "null", + "string" + ] + }, + "mimeTypes": { + "description": "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.", + "anyOf": [ + { + "type": "array", + "items": { + "type": "string" + } + }, + { + "type": "null" + } + ] + }, + "desktop": { + "description": "The [Desktop file](https://developer.gnome.org/integration-guide/stable/desktop-files.html.en) entries (name to value)." + }, + "executableArgs": { + "description": "The executable parameters. Pass to executableName", + "anyOf": [ + { + "type": "array", + "items": { + "type": "string" + } + }, + { + "type": "null" + } + ] + }, + "artifactName": { + "description": "The [artifact file name template](/configuration/configuration#artifact-file-name-template).", + "type": [ + "null", + "string" + ] + }, + "publish": { + "anyOf": [ + { + "$ref": "#/definitions/GithubOptions" + }, + { + "$ref": "#/definitions/S3Options" + }, + { + "$ref": "#/definitions/SpacesOptions" + }, + { + "$ref": "#/definitions/GenericServerOptions" + }, + { + "$ref": "#/definitions/BintrayOptions" + }, + { + "$ref": "#/definitions/CustomPublishOptions" + }, + { + "$ref": "#/definitions/KeygenOptions" + }, + { + "$ref": "#/definitions/SnapStoreOptions" + }, + { + "type": "array", + "items": { + "anyOf": [ + { + "$ref": "#/definitions/GithubOptions" + }, + { + "$ref": "#/definitions/S3Options" + }, + { + "$ref": "#/definitions/SpacesOptions" + }, + { + "$ref": "#/definitions/GenericServerOptions" + }, + { + "$ref": "#/definitions/BintrayOptions" + }, + { + "$ref": "#/definitions/CustomPublishOptions" + }, + { + "$ref": "#/definitions/KeygenOptions" + }, + { + "$ref": "#/definitions/SnapStoreOptions" + }, + { + "type": "string" + } + ] + } + }, + { + "type": [ + "null", + "string" + ] + } + ] + } + } + }, + "SnapOptions": { + "type": "object", + "properties": { + "confinement": { + "description": "The type of [confinement](https://snapcraft.io/docs/reference/confinement) supported by the snap.", + "default": "strict", + "anyOf": [ + { + "enum": [ + "classic", + "devmode", + "strict" + ], + "type": "string" + }, + { + "type": "null" + } + ] + }, + "environment": { + "description": "The custom environment. Defaults to `{\"TMPDIR: \"$XDG_RUNTIME_DIR\"}`. If you set custom, it will be merged with default.", + "anyOf": [ + { + "type": "object", + "additionalProperties": { + "type": "string" + } + }, + { + "type": "null" + } + ] + }, + "summary": { + "description": "The 78 character long summary. Defaults to [productName](/configuration/configuration#Configuration-productName).", + "type": [ + "null", + "string" + ] + }, + "grade": { + "description": "The quality grade of the snap. It can be either `devel` (i.e. a development version of the snap, so not to be published to the “stable” or “candidate” channels) or “stable” (i.e. a stable release or release candidate, which can be released to all channels).", + "default": "stable", + "anyOf": [ + { + "enum": [ + "devel", + "stable" + ], + "type": "string" + }, + { + "type": "null" + } + ] + }, + "assumes": { + "description": "The list of features that must be supported by the core in order for this snap to install.", + "anyOf": [ + { + "type": "array", + "items": { + "type": "string" + } + }, + { + "type": [ + "null", + "string" + ] + } + ] + }, + "buildPackages": { + "description": "The list of debian packages needs to be installed for building this snap.", + "anyOf": [ + { + "type": "array", + "items": { + "type": "string" + } + }, + { + "type": "null" + } + ] + }, + "stagePackages": { + "description": "The list of Ubuntu packages to use that are needed to support the `app` part creation. Like `depends` for `deb`.\nDefaults to `[\"libnspr4\", \"libnss3\", \"libxss1\", \"libappindicator3-1\", \"libsecret-1-0\"]`.\n\nIf list contains `default`, it will be replaced to default list, so, `[\"default\", \"foo\"]` can be used to add custom package `foo` in addition to defaults.", + "anyOf": [ + { + "type": "array", + "items": { + "type": "string" + } + }, + { + "type": "null" + } + ] + }, + "hooks": { + "description": "The [hooks](https://docs.snapcraft.io/build-snaps/hooks) directory, relative to `build` (build resources directory).", + "default": "build/snap-hooks", + "type": [ + "null", + "string" + ] + }, + "plugs": { + "description": "The list of [plugs](https://snapcraft.io/docs/reference/interfaces).\nDefaults to `[\"desktop\", \"desktop-legacy\", \"home\", \"x11\", \"unity7\", \"browser-support\", \"network\", \"gsettings\", \"audio-playback\", \"pulseaudio\", \"opengl\"]`.\n\nIf list contains `default`, it will be replaced to default list, so, `[\"default\", \"foo\"]` can be used to add custom plug `foo` in addition to defaults.\n\nAdditional attributes can be specified using object instead of just name of plug:\n```\n[\n {\n \"browser-sandbox\": {\n \"interface\": \"browser-support\",\n \"allow-sandbox\": true\n },\n },\n \"another-simple-plug-name\"\n]\n```", + "anyOf": [ + { + "$ref": "#/definitions/PlugDescriptor" + }, + { + "type": "array", + "items": { + "anyOf": [ + { + "$ref": "#/definitions/PlugDescriptor" + }, + { + "type": "string" + } + ] + } + }, + { + "type": "null" + } + ] + }, + "slots": { + "description": "The list of [slots](https://snapcraft.io/docs/reference/interfaces).\n\nAdditional attributes can be specified using object instead of just name of slot:\n```\n[\n {\n \"mpris\": {\n \"name\": \"chromium\"\n },\n }\n]\n\nIn case you want your application to be a compliant MPris player, you will need to definie\nThe mpris slot with \"chromium\" name.\nThis electron has it [hardcoded](https://source.chromium.org/chromium/chromium/src/+/master:components/system_media_controls/linux/system_media_controls_linux.cc;l=51;bpv=0;bpt=1),\nand we need to pass this name so snap [will allow it](https://forum.snapcraft.io/t/unable-to-use-mpris-interface/15360/7) in strict confinement.", + "anyOf": [ + { + "$ref": "#/definitions/PlugDescriptor" + }, + { + "type": "array", + "items": { + "anyOf": [ + { + "$ref": "#/definitions/SlotDescriptor" + }, + { + "type": "string" + } + ] + } + }, + { + "type": "null" + } + ] + }, + "after": { + "description": "Specifies any [parts](https://snapcraft.io/docs/reference/parts) that should be built before this part.\nDefaults to `[\"desktop-gtk2\"\"]`.\n\nIf list contains `default`, it will be replaced to default list, so, `[\"default\", \"foo\"]` can be used to add custom parts `foo` in addition to defaults.", + "anyOf": [ + { + "type": "array", + "items": { + "type": "string" + } + }, + { + "type": "null" + } + ] + }, + "useTemplateApp": { + "description": "Whether to use template snap. Defaults to `true` if `stagePackages` not specified.", + "type": "boolean" + }, + "autoStart": { + "description": "Whether or not the snap should automatically start on login.", + "default": false, + "type": "boolean" + }, + "layout": { + "description": "Specifies any files to make accessible from locations such as `/usr`, `/var`, and `/etc`. See [snap layouts](https://snapcraft.io/docs/snap-layouts) to learn more.", + "anyOf": [ + { + "type": "object", + "additionalProperties": { + "type": "object", + "additionalProperties": { + "type": "string" + } + } + }, + { + "type": "null" + } + ] + }, + "appPartStage": { + "description": "Specifies which files from the app part to stage and which to exclude. Individual files, directories, wildcards, globstars, and exclusions are accepted. See [Snapcraft filesets](https://snapcraft.io/docs/snapcraft-filesets) to learn more about the format.\n\nThe defaults can be found in [snap.ts](https://github.com/electron-userland/electron-builder/blob/master/packages/app-builder-lib/templates/snap/snapcraft.yaml#L29).", + "anyOf": [ + { + "type": "array", + "items": { + "type": "string" + } + }, + { + "type": "null" + } + ] + }, + "title": { + "description": "An optional title for the snap, may contain uppercase letters and spaces. Defaults to `productName`. See [snap format documentation](https://snapcraft.io/docs/snap-format).", + "type": [ + "null", + "string" + ] + }, + "synopsis": { + "description": "The [short description](https://www.debian.org/doc/debian-policy/ch-controlfields.html#s-f-Description).", + "type": [ + "null", + "string" + ] + }, + "description": { + "description": "As [description](/configuration/configuration#Metadata-description) from application package.json, but allows you to specify different for Linux.", + "type": [ + "null", + "string" + ] + }, + "category": { + "description": "The [application category](https://specifications.freedesktop.org/menu-spec/latest/apa.html#main-category-registry).", + "type": [ + "null", + "string" + ] + }, + "mimeTypes": { + "description": "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.", + "anyOf": [ + { + "type": "array", + "items": { + "type": "string" + } + }, + { + "type": "null" + } + ] + }, + "desktop": { + "description": "The [Desktop file](https://developer.gnome.org/integration-guide/stable/desktop-files.html.en) entries (name to value)." + }, + "executableArgs": { + "description": "The executable parameters. Pass to executableName", + "anyOf": [ + { + "type": "array", + "items": { + "type": "string" + } + }, + { + "type": "null" + } + ] + }, + "artifactName": { + "description": "The [artifact file name template](/configuration/configuration#artifact-file-name-template).", + "type": [ + "null", + "string" + ] + }, + "publish": { + "anyOf": [ + { + "$ref": "#/definitions/GithubOptions" + }, + { + "$ref": "#/definitions/S3Options" + }, + { + "$ref": "#/definitions/SpacesOptions" + }, + { + "$ref": "#/definitions/GenericServerOptions" + }, + { + "$ref": "#/definitions/BintrayOptions" + }, + { + "$ref": "#/definitions/CustomPublishOptions" + }, + { + "$ref": "#/definitions/KeygenOptions" + }, + { + "$ref": "#/definitions/SnapStoreOptions" + }, + { + "type": "array", + "items": { + "anyOf": [ + { + "$ref": "#/definitions/GithubOptions" + }, + { + "$ref": "#/definitions/S3Options" + }, + { + "$ref": "#/definitions/SpacesOptions" + }, + { + "$ref": "#/definitions/GenericServerOptions" + }, + { + "$ref": "#/definitions/BintrayOptions" + }, + { + "$ref": "#/definitions/CustomPublishOptions" + }, + { + "$ref": "#/definitions/KeygenOptions" + }, + { + "$ref": "#/definitions/SnapStoreOptions" + }, + { + "type": "string" + } + ] + } + }, + { + "type": [ + "null", + "string" + ] + } + ] + } + } + }, + "PlugDescriptor": { + "type": "object", + "additionalProperties": { + "anyOf": [ + { + "type": "object", + "additionalProperties": {} + }, + { + "type": "null" + } + ] + } + }, + "SlotDescriptor": { + "type": "object", + "additionalProperties": { + "anyOf": [ + { + "type": "object", + "additionalProperties": {} + }, + { + "type": "null" + } + ] + } + }, + "AppImageOptions": { + "type": "object", + "properties": { + "license": { + "description": "The path to EULA license file. Defaults to `license.txt` or `eula.txt` (or uppercase variants). Only plain text is supported.", + "type": [ + "null", + "string" + ] + }, + "synopsis": { + "description": "The [short description](https://www.debian.org/doc/debian-policy/ch-controlfields.html#s-f-Description).", + "type": [ + "null", + "string" + ] + }, + "description": { + "description": "As [description](/configuration/configuration#Metadata-description) from application package.json, but allows you to specify different for Linux.", + "type": [ + "null", + "string" + ] + }, + "category": { + "description": "The [application category](https://specifications.freedesktop.org/menu-spec/latest/apa.html#main-category-registry).", + "type": [ + "null", + "string" + ] + }, + "mimeTypes": { + "description": "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.", + "anyOf": [ + { + "type": "array", + "items": { + "type": "string" + } + }, + { + "type": "null" + } + ] + }, + "desktop": { + "description": "The [Desktop file](https://developer.gnome.org/integration-guide/stable/desktop-files.html.en) entries (name to value)." + }, + "executableArgs": { + "description": "The executable parameters. Pass to executableName", + "anyOf": [ + { + "type": "array", + "items": { + "type": "string" + } + }, + { + "type": "null" + } + ] + }, + "artifactName": { + "description": "The [artifact file name template](/configuration/configuration#artifact-file-name-template).", + "type": [ + "null", + "string" + ] + }, + "publish": { + "anyOf": [ + { + "$ref": "#/definitions/GithubOptions" + }, + { + "$ref": "#/definitions/S3Options" + }, + { + "$ref": "#/definitions/SpacesOptions" + }, + { + "$ref": "#/definitions/GenericServerOptions" + }, + { + "$ref": "#/definitions/BintrayOptions" + }, + { + "$ref": "#/definitions/CustomPublishOptions" + }, + { + "$ref": "#/definitions/KeygenOptions" + }, + { + "$ref": "#/definitions/SnapStoreOptions" + }, + { + "type": "array", + "items": { + "anyOf": [ + { + "$ref": "#/definitions/GithubOptions" + }, + { + "$ref": "#/definitions/S3Options" + }, + { + "$ref": "#/definitions/SpacesOptions" + }, + { + "$ref": "#/definitions/GenericServerOptions" + }, + { + "$ref": "#/definitions/BintrayOptions" + }, + { + "$ref": "#/definitions/CustomPublishOptions" + }, + { + "$ref": "#/definitions/KeygenOptions" + }, + { + "$ref": "#/definitions/SnapStoreOptions" + }, + { + "type": "string" + } + ] + } + }, + { + "type": [ + "null", + "string" + ] + } + ] + } + } + }, + "FlatpakOptions": { + "type": "object", + "properties": { + "license": { + "description": "The path to EULA license file. Defaults to `license.txt` or `eula.txt` (or uppercase variants). Only plain text is supported.", + "type": [ + "null", + "string" + ] + }, + "runtime": { + "description": "The name of the runtime that the application uses. Defaults to `org.freedesktop.Platform`.\n\nSee [flatpak manifest documentation](https://docs.flatpak.org/en/latest/flatpak-builder-command-reference.html#flatpak-manifest).", + "type": "string" + }, + "runtimeVersion": { + "description": "The version of the runtime that the application uses. Defaults to `20.08`.\n\nSee [flatpak manifest documentation](https://docs.flatpak.org/en/latest/flatpak-builder-command-reference.html#flatpak-manifest).", + "type": "string" + }, + "sdk": { + "description": "The name of the development runtime that the application builds with. Defaults to `org.freedesktop.Sdk`.\n\nSee [flatpak manifest documentation](https://docs.flatpak.org/en/latest/flatpak-builder-command-reference.html#flatpak-manifest).", + "type": "string" + }, + "base": { + "description": "Start with the files from the specified application. This can be used to create applications that extend another application.\nDefaults to [org.electronjs.Electron2.BaseApp](https://github.com/flathub/org.electronjs.Electron2.BaseApp).\n\nSee [flatpak manifest documentation](https://docs.flatpak.org/en/latest/flatpak-builder-command-reference.html#flatpak-manifest).", + "type": "string" + }, + "baseVersion": { + "description": "Use this specific version of the application specified in base. Defaults to `20.08`.\n\nSee [flatpak manifest documentation](https://docs.flatpak.org/en/latest/flatpak-builder-command-reference.html#flatpak-manifest).", + "type": "string" + }, + "branch": { + "description": "The branch to use when exporting the application. Defaults to `master`.\n\nSee [flatpak manifest documentation](https://docs.flatpak.org/en/latest/flatpak-builder-command-reference.html#flatpak-manifest).", + "type": "string" + }, + "finishArgs": { + "description": "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\nSee [flatpak manifest documentation](https://docs.flatpak.org/en/latest/flatpak-builder-command-reference.html#flatpak-manifest).", + "type": "array", + "items": { + "type": "string" + } + }, + "modules": { + "description": "An array of objects specifying the modules to be built in order.\n\nSee [flatpak manifest documentation](https://docs.flatpak.org/en/latest/flatpak-builder-command-reference.html#flatpak-manifest).", + "type": "array", + "items": {} + }, + "files": { + "description": "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\nSee [@malept/flatpak-bundler documentation](https://github.com/malept/flatpak-bundler#build-options).", + "type": "array", + "items": { + "type": "array", + "items": [ + { + "type": "string" + }, + { + "type": "string" + } + ], + "minItems": 2, + "maxItems": 2 + } + }, + "symlinks": { + "description": "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\nSee [@malept/flatpak-bundler documentation](https://github.com/malept/flatpak-bundler#build-options).", + "type": "array", + "items": { + "type": "array", + "items": [ + { + "type": "string" + }, + { + "type": "string" + } + ], + "minItems": 2, + "maxItems": 2 + } + }, + "useWaylandFlags": { + "description": "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`.", + "type": "boolean" + }, + "synopsis": { + "description": "The [short description](https://www.debian.org/doc/debian-policy/ch-controlfields.html#s-f-Description).", + "type": [ + "null", + "string" + ] + }, + "description": { + "description": "As [description](/configuration/configuration#Metadata-description) from application package.json, but allows you to specify different for Linux.", + "type": [ + "null", + "string" + ] + }, + "category": { + "description": "The [application category](https://specifications.freedesktop.org/menu-spec/latest/apa.html#main-category-registry).", + "type": [ + "null", + "string" + ] + }, + "mimeTypes": { + "description": "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.", + "anyOf": [ + { + "type": "array", + "items": { + "type": "string" + } + }, + { + "type": "null" + } + ] + }, + "desktop": { + "description": "The [Desktop file](https://developer.gnome.org/integration-guide/stable/desktop-files.html.en) entries (name to value)." + }, + "executableArgs": { + "description": "The executable parameters. Pass to executableName", + "anyOf": [ + { + "type": "array", + "items": { + "type": "string" + } + }, + { + "type": "null" + } + ] + }, + "artifactName": { + "description": "The [artifact file name template](/configuration/configuration#artifact-file-name-template).", + "type": [ + "null", + "string" + ] + }, + "publish": { + "anyOf": [ + { + "$ref": "#/definitions/GithubOptions" + }, + { + "$ref": "#/definitions/S3Options" + }, + { + "$ref": "#/definitions/SpacesOptions" + }, + { + "$ref": "#/definitions/GenericServerOptions" + }, + { + "$ref": "#/definitions/BintrayOptions" + }, + { + "$ref": "#/definitions/CustomPublishOptions" + }, + { + "$ref": "#/definitions/KeygenOptions" + }, + { + "$ref": "#/definitions/SnapStoreOptions" + }, + { + "type": "array", + "items": { + "anyOf": [ + { + "$ref": "#/definitions/GithubOptions" + }, + { + "$ref": "#/definitions/S3Options" + }, + { + "$ref": "#/definitions/SpacesOptions" + }, + { + "$ref": "#/definitions/GenericServerOptions" + }, + { + "$ref": "#/definitions/BintrayOptions" + }, + { + "$ref": "#/definitions/CustomPublishOptions" + }, + { + "$ref": "#/definitions/KeygenOptions" + }, + { + "$ref": "#/definitions/SnapStoreOptions" + }, + { + "type": "string" + } + ] + } + }, + { + "type": [ + "null", + "string" + ] + } + ] + } + } + }, + "LinuxTargetSpecificOptions": { + "type": "object", + "properties": { + "depends": { + "description": "Package dependencies.", + "anyOf": [ + { + "type": "array", + "items": { + "type": "string" + } + }, + { + "type": "null" + } + ] + }, + "compression": { + "description": "The compression type.", + "default": "xz", + "anyOf": [ + { + "enum": [ + "bzip2", + "gz", + "xz" + ], + "type": "string" + }, + { + "type": "null" + } + ] + }, + "icon": { + "type": "string" + }, + "packageCategory": { + "description": "The package category.", + "type": [ + "null", + "string" + ] + }, + "packageName": { + "description": "The name of the package.", + "type": [ + "null", + "string" + ] + }, + "vendor": { + "type": [ + "null", + "string" + ] + }, + "maintainer": { + "type": [ + "null", + "string" + ] + }, + "afterInstall": { + "type": [ + "null", + "string" + ] + }, + "afterRemove": { + "type": [ + "null", + "string" + ] + }, + "fpm": { + "description": "*Advanced only* The [fpm](https://github.com/jordansissel/fpm/wiki#usage) options.\n\nExample: `[\"--before-install=build/deb-preinstall.sh\", \"--after-upgrade=build/deb-postinstall.sh\"]`", + "anyOf": [ + { + "type": "array", + "items": { + "type": "string" + } + }, + { + "type": "null" + } + ] + }, + "synopsis": { + "description": "The [short description](https://www.debian.org/doc/debian-policy/ch-controlfields.html#s-f-Description).", + "type": [ + "null", + "string" + ] + }, + "description": { + "description": "As [description](/configuration/configuration#Metadata-description) from application package.json, but allows you to specify different for Linux.", + "type": [ + "null", + "string" + ] + }, + "category": { + "description": "The [application category](https://specifications.freedesktop.org/menu-spec/latest/apa.html#main-category-registry).", + "type": [ + "null", + "string" + ] + }, + "mimeTypes": { + "description": "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.", + "anyOf": [ + { + "type": "array", + "items": { + "type": "string" + } + }, + { + "type": "null" + } + ] + }, + "desktop": { + "description": "The [Desktop file](https://developer.gnome.org/integration-guide/stable/desktop-files.html.en) entries (name to value)." + }, + "executableArgs": { + "description": "The executable parameters. Pass to executableName", + "anyOf": [ + { + "type": "array", + "items": { + "type": "string" + } + }, + { + "type": "null" + } + ] + }, + "artifactName": { + "description": "The [artifact file name template](/configuration/configuration#artifact-file-name-template).", + "type": [ + "null", + "string" + ] + }, + "publish": { + "anyOf": [ + { + "$ref": "#/definitions/GithubOptions" + }, + { + "$ref": "#/definitions/S3Options" + }, + { + "$ref": "#/definitions/SpacesOptions" + }, + { + "$ref": "#/definitions/GenericServerOptions" + }, + { + "$ref": "#/definitions/BintrayOptions" + }, + { + "$ref": "#/definitions/CustomPublishOptions" + }, + { + "$ref": "#/definitions/KeygenOptions" + }, + { + "$ref": "#/definitions/SnapStoreOptions" + }, + { + "type": "array", + "items": { + "anyOf": [ + { + "$ref": "#/definitions/GithubOptions" + }, + { + "$ref": "#/definitions/S3Options" + }, + { + "$ref": "#/definitions/SpacesOptions" + }, + { + "$ref": "#/definitions/GenericServerOptions" + }, + { + "$ref": "#/definitions/BintrayOptions" + }, + { + "$ref": "#/definitions/CustomPublishOptions" + }, + { + "$ref": "#/definitions/KeygenOptions" + }, + { + "$ref": "#/definitions/SnapStoreOptions" + }, + { + "type": "string" + } + ] + } + }, + { + "type": [ + "null", + "string" + ] + } + ] + } + } + }, + "ElectronDownloadOptions": { + "type": "object", + "properties": { + "version": { + "type": "string" + }, + "cache": { + "description": "The [cache location](https://github.com/electron-userland/electron-download#cache-location).", + "type": [ + "null", + "string" + ] + }, + "mirror": { + "description": "The mirror.", + "type": [ + "null", + "string" + ] + }, + "customDir": { + "type": [ + "null", + "string" + ] + }, + "customFilename": { + "type": [ + "null", + "string" + ] + }, + "strictSSL": { + "type": "boolean" + }, + "isVerifyChecksum": { + "type": "boolean" + }, + "platform": { + "enum": [ + "darwin", + "linux", + "mas", + "win32" + ], + "type": "string" + }, + "arch": { + "type": "string" + } + } + }, + "ElectronBrandingOptions": { + "description": "Electron distributables branding options.", + "type": "object", + "properties": { + "projectName": { + "type": "string" + }, + "productName": { + "type": "string" + } + } + }, + "PlatformPackager": { + "type": "object", + "properties": { + "packagerOptions": { + "$ref": "#/definitions/PackagerOptions" + }, + "buildResourcesDir": { + "type": "string" + }, + "projectDir": { + "type": "string" + }, + "config": { + "$ref": "#/definitions/Configuration" + }, + "platformSpecificBuildOptions": {}, + "resourceList": { + "$ref": "#/definitions/Promise" + }, + "_resourceList": { + "$ref": "#/definitions/Lazy" + }, + "appInfo": { + "$ref": "#/definitions/AppInfo" + }, + "info": { + "$ref": "#/definitions/Packager" + }, + "platform": { + "$ref": "#/definitions/Platform" + }, + "compression": { + "$ref": "#/definitions/CompressionLevel" + }, + "debugLogger": { + "$ref": "#/definitions/DebugLogger" + }, + "defaultTarget": { + "type": "array", + "items": { + "type": "string" + } + }, + "fileAssociations": { + "type": "array", + "items": { + "$ref": "#/definitions/FileAssociation" + } + }, + "forceCodeSigning": { + "type": "boolean" + } + }, + "required": [ + "_resourceList", + "appInfo", + "buildResourcesDir", + "compression", + "config", + "debugLogger", + "defaultTarget", + "fileAssociations", + "forceCodeSigning", + "info", + "packagerOptions", + "platform", + "platformSpecificBuildOptions", + "projectDir", + "resourceList" + ] + }, + "PackagerOptions": { + "type": "object", + "properties": { + "targets": { + "$ref": "#/definitions/Map>" + }, + "mac": { + "type": "array", + "items": { + "type": "string" + } + }, + "linux": { + "type": "array", + "items": { + "type": "string" + } + }, + "win": { + "type": "array", + "items": { + "type": "string" + } + }, + "projectDir": { + "type": [ + "null", + "string" + ] + }, + "platformPackagerFactory": { + "type": [ + "null", + "object" + ] + }, + "config": { + "anyOf": [ + { + "$ref": "#/definitions/Configuration" + }, + { + "type": [ + "null", + "string" + ] + } + ] + }, + "effectiveOptionComputed": { + "type": "object" + }, + "prepackaged": { + "type": [ + "null", + "string" + ] + } + } + }, + "Map>": { + "type": "object", + "properties": { + "size": { + "type": "number" + }, + "__@toStringTag": { + "type": "string" + } + }, + "required": [ + "__@toStringTag", + "size" + ] + }, + "Configuration": { + "description": "Configuration Options", + "type": "object", + "properties": { + "appId": { + "description": "The application id. Used as [CFBundleIdentifier](https://developer.apple.com/library/ios/documentation/General/Reference/InfoPlistKeyReference/Articles/CoreFoundationKeys.html#//apple_ref/doc/uid/20001431-102070) for MacOS and as\n[Application User Model ID](https://msdn.microsoft.com/en-us/library/windows/desktop/dd378459(v=vs.85).aspx) for Windows (NSIS target only, Squirrel.Windows not supported). It is strongly recommended that an explicit ID is set.", + "default": "com.electron.${name}", + "type": [ + "null", + "string" + ] + }, + "productName": { + "description": "As [name](#Metadata-name), but allows you to specify a product name for your executable which contains spaces and other special characters not allowed in the [name property](https://docs.npmjs.com/files/package.json#name).", + "type": [ + "null", + "string" + ] + }, + "copyright": { + "description": "The human-readable copyright line for the app.", + "default": "Copyright © year ${author}", + "type": [ + "null", + "string" + ] + }, + "directories": { + "anyOf": [ + { + "$ref": "#/definitions/MetadataDirectories" + }, + { + "type": "null" + } + ] + }, + "mac": { + "description": "Options related to how build macOS targets.", + "anyOf": [ + { + "$ref": "#/definitions/MacConfiguration" + }, + { + "type": "null" + } + ] + }, + "mas": { + "description": "MAS (Mac Application Store) options.", + "anyOf": [ + { + "$ref": "#/definitions/MasConfiguration" + }, + { + "type": "null" + } + ] + }, + "masDev": { + "description": "MAS (Mac Application Store) development options (`mas-dev` target).", + "anyOf": [ + { + "$ref": "#/definitions/MasConfiguration" + }, + { + "type": "null" + } + ] + }, + "dmg": { + "description": "macOS DMG options.", + "anyOf": [ + { + "$ref": "#/definitions/DmgOptions" + }, + { + "type": "null" + } + ] + }, + "pkg": { + "description": "macOS PKG options.", + "anyOf": [ + { + "$ref": "#/definitions/PkgOptions" + }, + { + "type": "null" + } + ] + }, + "win": { + "description": "Options related to how build Windows targets.", + "anyOf": [ + { + "$ref": "#/definitions/WindowsConfiguration" + }, + { + "type": "null" + } + ] + }, + "nsis": { + "anyOf": [ + { + "$ref": "#/definitions/NsisOptions" + }, + { + "type": "null" + } + ] + }, + "nsisWeb": { + "anyOf": [ + { + "$ref": "#/definitions/NsisWebOptions" + }, + { + "type": "null" + } + ] + }, + "portable": { + "anyOf": [ + { + "$ref": "#/definitions/PortableOptions" + }, + { + "type": "null" + } + ] + }, + "appx": { + "anyOf": [ + { + "$ref": "#/definitions/AppXOptions" + }, + { + "type": "null" + } + ] + }, + "msi": { + "anyOf": [ + { + "$ref": "#/definitions/MsiOptions" + }, + { + "type": "null" + } + ] + }, + "squirrelWindows": { + "anyOf": [ + { + "$ref": "#/definitions/SquirrelWindowsOptions" + }, + { + "type": "null" + } + ] + }, + "linux": { + "description": "Options related to how build Linux targets.", + "anyOf": [ + { + "$ref": "#/definitions/LinuxConfiguration" + }, + { + "type": "null" + } + ] + }, + "deb": { + "description": "Debian package options.", + "anyOf": [ + { + "$ref": "#/definitions/DebOptions" + }, + { + "type": "null" + } + ] + }, + "snap": { + "description": "Snap options.", + "anyOf": [ + { + "$ref": "#/definitions/SnapOptions" + }, + { + "type": "null" + } + ] + }, + "appImage": { + "description": "AppImage options.", + "anyOf": [ + { + "$ref": "#/definitions/AppImageOptions" + }, + { + "type": "null" + } + ] + }, + "flatpak": { + "description": "Flatpak options.", + "anyOf": [ + { + "$ref": "#/definitions/FlatpakOptions" + }, + { + "type": "null" + } + ] + }, + "pacman": { + "anyOf": [ + { + "$ref": "#/definitions/LinuxTargetSpecificOptions" + }, + { + "type": "null" + } + ] + }, + "rpm": { + "anyOf": [ + { + "$ref": "#/definitions/LinuxTargetSpecificOptions" + }, + { + "type": "null" + } + ] + }, + "freebsd": { + "anyOf": [ + { + "$ref": "#/definitions/LinuxTargetSpecificOptions" + }, + { + "type": "null" + } + ] + }, + "p5p": { + "anyOf": [ + { + "$ref": "#/definitions/LinuxTargetSpecificOptions" + }, + { + "type": "null" + } + ] + }, + "apk": { + "anyOf": [ + { + "$ref": "#/definitions/LinuxTargetSpecificOptions" + }, + { + "type": "null" + } + ] + }, + "includeSubNodeModules": { + "description": "Whether to include *all* of the submodules node_modules directories", + "default": false, + "type": "boolean" + }, + "buildDependenciesFromSource": { + "description": "Whether to build the application native dependencies from source.", + "default": false, + "type": "boolean" + }, + "nodeGypRebuild": { + "description": "Whether to execute `node-gyp rebuild` before starting to package the app.\n\nDon't [use](https://github.com/electron-userland/electron-builder/issues/683#issuecomment-241214075) [npm](http://electron.atom.io/docs/tutorial/using-native-node-modules/#using-npm) (neither `.npmrc`) for configuring electron headers. Use `electron-builder node-gyp-rebuild` instead.", + "default": false, + "type": "boolean" + }, + "npmArgs": { + "description": "Additional command line arguments to use when installing app native deps.", + "anyOf": [ + { + "type": "array", + "items": { + "type": "string" + } + }, + { + "type": [ + "null", + "string" + ] + } + ] + }, + "npmRebuild": { + "description": "Whether to [rebuild](https://docs.npmjs.com/cli/rebuild) native dependencies before starting to package the app.", + "default": true, + "type": "boolean" + }, + "buildVersion": { + "description": "The build version. Maps to the `CFBundleVersion` on macOS, and `FileVersion` metadata property on Windows. Defaults to the `version`.\nIf `TRAVIS_BUILD_NUMBER` or `APPVEYOR_BUILD_NUMBER` or `CIRCLE_BUILD_NUM` or `BUILD_NUMBER` or `bamboo.buildNumber` or `CI_PIPELINE_IID` env defined, it will be used as a build version (`version.build_number`).", + "type": [ + "null", + "string" + ] + }, + "electronCompile": { + "description": "Whether to use [electron-compile](http://github.com/electron/electron-compile) to compile app. Defaults to `true` if `electron-compile` in the dependencies. And `false` if in the `devDependencies` or doesn't specified.", + "type": "boolean" + }, + "electronDist": { + "description": "Returns the path to custom Electron build (e.g. `~/electron/out/R`). Zip files must follow the pattern `electron-v${version}-${platformName}-${arch}.zip`, otherwise it will be assumed to be an unpacked Electron app directory", + "type": [ + "string", + "object" + ] + }, + "electronDownload": { + "description": "The [electron-download](https://github.com/electron-userland/electron-download#usage) options.", + "$ref": "#/definitions/ElectronDownloadOptions" + }, + "electronBranding": { + "description": "The branding used by Electron's distributables. This is needed if a fork has modified Electron's BRANDING.json file.", + "$ref": "#/definitions/ElectronBrandingOptions" + }, + "electronVersion": { + "description": "The version of electron you are packaging for. Defaults to version of `electron`, `electron-prebuilt` or `electron-prebuilt-compile` dependency.", + "type": [ + "null", + "string" + ] + }, + "extends": { + "description": "The name of a built-in configuration preset (currently, only `react-cra` is supported) or any number of paths to config files (relative to project dir).\n\nThe latter allows to mixin a config from multiple other configs, as if you `Object.assign` them, but properly combine `files` glob patterns.\n\nIf `react-scripts` in the app dependencies, `react-cra` will be set automatically. Set to `null` to disable automatic detection.", + "anyOf": [ + { + "type": "array", + "items": { + "type": "string" + } + }, + { + "type": [ + "null", + "string" + ] + } + ] + }, + "extraMetadata": { + "description": "Inject properties to `package.json`." + }, + "forceCodeSigning": { + "description": "Whether to fail if the application is not signed (to prevent unsigned app if code signing configuration is not correct).", + "default": false, + "type": "boolean" + }, + "nodeVersion": { + "description": "*libui-based frameworks only* The version of NodeJS you are packaging for.\nYou can set it to `current` to set the Node.js version that you use to run.", + "type": [ + "null", + "string" + ] + }, + "launchUiVersion": { + "description": "*libui-based frameworks only* The version of LaunchUI you are packaging for. Applicable for Windows only. Defaults to version suitable for used framework version.", + "type": [ + "null", + "string", + "boolean" + ] + }, + "framework": { + "description": "The framework name. One of `electron`, `proton`, `libui`. Defaults to `electron`.", + "type": [ + "null", + "string" + ] + }, + "afterPack": { + "description": "The function (or path to file or module id) to be [run after pack](#afterpack) (but before pack into distributable format and sign).", + "type": [ + "null", + "string", + "object" + ] + }, + "afterSign": { + "description": "The function (or path to file or module id) to be [run after pack and sign](#aftersign) (but before pack into distributable format).", + "type": [ + "null", + "string", + "object" + ] + }, + "artifactBuildStarted": { + "description": "The function (or path to file or module id) to be run on artifact build start.", + "type": [ + "null", + "string", + "object" + ] + }, + "artifactBuildCompleted": { + "description": "The function (or path to file or module id) to be run on artifact build completed.", + "type": [ + "null", + "string", + "object" + ] + }, + "afterAllArtifactBuild": { + "description": "The function (or path to file or module id) to be [run after all artifacts are build](#afterAllArtifactBuild).", + "type": [ + "null", + "string", + "object" + ] + }, + "msiProjectCreated": { + "description": "MSI project created on disk - not packed into .msi package yet.", + "type": [ + "null", + "string", + "object" + ] + }, + "appxManifestCreated": { + "description": "Appx manifest created on disk - not packed into .appx package yet.", + "type": [ + "null", + "string", + "object" + ] + }, + "onNodeModuleFile": { + "description": "The function (or path to file or module id) to be [run on each node module](#onnodemodulefile) file.", + "type": [ + "null", + "string", + "object" + ] + }, + "beforeBuild": { + "description": "The function (or path to file or module id) to be run before dependencies are installed or rebuilt. Works when `npmRebuild` is set to `true`. Resolving to `false` will skip dependencies install or rebuild.\n\nIf provided and `node_modules` are missing, it will not invoke production dependencies check.", + "type": [ + "null", + "string", + "object" + ] + }, + "remoteBuild": { + "description": "Whether to build using Electron Build Service if target not supported on current OS.", + "default": true, + "type": "boolean" + }, + "includePdb": { + "description": "Whether to include PDB files.", + "default": false, + "type": "boolean" + }, + "removePackageScripts": { + "description": "Whether to remove `scripts` field from `package.json` files.", + "default": true, + "type": "boolean" + }, + "removePackageKeywords": { + "description": "Whether to remove `keywords` field from `package.json` files.", + "default": true, + "type": "boolean" + }, + "artifactName": { + "description": "The [artifact file name template](/configuration/configuration#artifact-file-name-template). Defaults to `${productName}-${version}.${ext}` (some target can have other defaults, see corresponding options).", + "type": [ + "null", + "string" + ] + }, + "executableName": { + "description": "The executable name. Defaults to `productName`.", + "type": [ + "null", + "string" + ] + }, + "compression": { + "description": "The compression level. If you want to rapidly test build, `store` can reduce build time significantly. `maximum` doesn't lead to noticeable size difference, but increase build time.", + "default": "normal", + "anyOf": [ + { + "enum": [ + "maximum", + "normal", + "store" + ], + "type": "string" + }, + { + "type": "null" + } + ] + }, + "files": { + "anyOf": [ + { + "$ref": "#/definitions/FileSet" + }, + { + "type": "array", + "items": { + "anyOf": [ + { + "$ref": "#/definitions/FileSet" + }, + { + "type": "string" + } + ] + } + }, + { + "type": [ + "null", + "string" + ] + } + ] + }, + "extraResources": { + "anyOf": [ + { + "$ref": "#/definitions/FileSet" + }, + { + "type": "array", + "items": { + "anyOf": [ + { + "$ref": "#/definitions/FileSet" + }, + { + "type": "string" + } + ] + } + }, + { + "type": [ + "null", + "string" + ] + } + ] + }, + "extraFiles": { + "anyOf": [ + { + "$ref": "#/definitions/FileSet" + }, + { + "type": "array", + "items": { + "anyOf": [ + { + "$ref": "#/definitions/FileSet" + }, + { + "type": "string" + } + ] + } + }, + { + "type": [ + "null", + "string" + ] + } + ] + }, + "asar": { + "description": "Whether to package the application's source code into an archive, using [Electron's archive format](http://electron.atom.io/docs/tutorial/application-packaging/).\n\nNode modules, that must be unpacked, will be detected automatically, you don't need to explicitly set [asarUnpack](#configuration-asarUnpack) - please file an issue if this doesn't work.", + "default": true, + "anyOf": [ + { + "$ref": "#/definitions/AsarOptions" + }, + { + "type": [ + "null", + "boolean" + ] + } + ] + }, + "asarUnpack": { + "description": "A [glob patterns](/file-patterns) relative to the [app directory](#MetadataDirectories-app), which specifies which files to unpack when creating the [asar](http://electron.atom.io/docs/tutorial/application-packaging/) archive.", + "anyOf": [ + { + "type": "array", + "items": { + "type": "string" + } + }, + { + "type": [ + "null", + "string" + ] + } + ] + }, + "icon": { + "type": [ + "null", + "string" + ] + }, + "fileAssociations": { + "description": "The file associations.", + "anyOf": [ + { + "$ref": "#/definitions/FileAssociation" + }, + { + "type": "array", + "items": { + "$ref": "#/definitions/FileAssociation" + } + } + ] + }, + "protocols": { + "description": "The URL protocol schemes.", + "anyOf": [ + { + "$ref": "#/definitions/Protocol" + }, + { + "type": "array", + "items": { + "$ref": "#/definitions/Protocol" + } + } + ] + }, + "electronUpdaterCompatibility": { + "description": "The [electron-updater compatibility](/auto-update#compatibility) semver range.", + "type": [ + "null", + "string" + ] + }, + "publish": { + "anyOf": [ + { + "$ref": "#/definitions/GithubOptions" + }, + { + "$ref": "#/definitions/S3Options" + }, + { + "$ref": "#/definitions/SpacesOptions" + }, + { + "$ref": "#/definitions/GenericServerOptions" + }, + { + "$ref": "#/definitions/BintrayOptions" + }, + { + "$ref": "#/definitions/CustomPublishOptions" + }, + { + "$ref": "#/definitions/KeygenOptions" + }, + { + "$ref": "#/definitions/SnapStoreOptions" + }, + { + "type": "array", + "items": { + "anyOf": [ + { + "$ref": "#/definitions/GithubOptions" + }, + { + "$ref": "#/definitions/S3Options" + }, + { + "$ref": "#/definitions/SpacesOptions" + }, + { + "$ref": "#/definitions/GenericServerOptions" + }, + { + "$ref": "#/definitions/BintrayOptions" + }, + { + "$ref": "#/definitions/CustomPublishOptions" + }, + { + "$ref": "#/definitions/KeygenOptions" + }, + { + "$ref": "#/definitions/SnapStoreOptions" + }, + { + "type": "string" + } + ] + } + }, + { + "type": [ + "null", + "string" + ] + } + ] + }, + "detectUpdateChannel": { + "description": "Whether to infer update channel from application version pre-release components. e.g. if version `0.12.1-alpha.1`, channel will be set to `alpha`. Otherwise to `latest`.", + "default": true, + "type": "boolean" + }, + "generateUpdatesFilesForAllChannels": { + "description": "Please see [Building and Releasing using Channels](https://github.com/electron-userland/electron-builder/issues/1182#issuecomment-324947139).", + "default": false, + "type": "boolean" + }, + "releaseInfo": { + "description": "The release info. Intended for command line usage:\n\n```\n-c.releaseInfo.releaseNotes=\"new features\"\n```", + "$ref": "#/definitions/ReleaseInfo" + }, + "target": { + "anyOf": [ + { + "$ref": "#/definitions/TargetConfiguration" + }, + { + "type": "array", + "items": { + "anyOf": [ + { + "$ref": "#/definitions/TargetConfiguration" + }, + { + "type": "string" + } + ] + } + }, + { + "type": [ + "null", + "string" + ] + } + ] + }, + "cscLink": { + "type": [ + "null", + "string" + ] + }, + "cscKeyPassword": { + "type": [ + "null", + "string" + ] + }, + "defaultArch": { + "type": "string" + } + } + }, + "Promise": { + "type": "object", + "properties": { + "__@toStringTag": { + "type": "string" + } + }, + "required": [ + "__@toStringTag" + ] + }, + "Lazy": { + "type": "object", + "properties": { + "_value": {}, + "creator": {}, + "hasValue": { + "type": "boolean" + }, + "value": { + "$ref": "#/definitions/Promise" + } + }, + "required": [ + "_value", + "creator", + "hasValue", + "value" + ] + }, + "AppInfo": { + "type": "object", + "properties": { + "description": { + "type": "string" + }, + "version": { + "type": "string" + }, + "shortVersion": { + "type": "string" + }, + "shortVersionWindows": { + "type": "string" + }, + "buildNumber": { + "type": "string" + }, + "buildVersion": { + "type": "string" + }, + "productName": { + "type": "string" + }, + "sanitizedProductName": { + "type": "string" + }, + "productFilename": { + "type": "string" + }, + "info": { + "$ref": "#/definitions/Packager" + }, + "platformSpecificOptions": { + "anyOf": [ + { + "$ref": "#/definitions/PlatformSpecificBuildOptions" + }, + { + "type": "null" + } + ], + "default": null + }, + "channel": { + "type": [ + "null", + "string" + ] + }, + "notNullDevMetadata": { + "$ref": "#/definitions/Metadata" + }, + "companyName": { + "type": [ + "null", + "string" + ] + }, + "id": { + "type": "string" + }, + "macBundleIdentifier": { + "type": "string" + }, + "name": { + "type": "string" + }, + "linuxPackageName": { + "type": "string" + }, + "sanitizedName": { + "type": "string" + }, + "updaterCacheDirName": { + "type": "string" + }, + "copyright": { + "type": "string" + } + }, + "required": [ + "buildVersion", + "channel", + "companyName", + "copyright", + "description", + "id", + "info", + "linuxPackageName", + "macBundleIdentifier", + "name", + "notNullDevMetadata", + "platformSpecificOptions", + "productFilename", + "productName", + "sanitizedName", + "sanitizedProductName", + "updaterCacheDirName", + "version" + ] + }, + "Packager": { + "type": "object", + "properties": { + "projectDir": { + "type": "string" + }, + "_appDir": { + "type": "string" + }, + "appDir": { + "type": "string" + }, + "_metadata": { + "anyOf": [ + { + "$ref": "#/definitions/Metadata" + }, + { + "type": "null" + } + ], + "default": null + }, + "metadata": { + "$ref": "#/definitions/Metadata" + }, + "_nodeModulesHandledExternally": { + "type": "boolean", + "default": false + }, + "areNodeModulesHandledExternally": { + "type": "boolean" + }, + "_isPrepackedAppAsar": { + "type": "boolean", + "default": false + }, + "isPrepackedAppAsar": { + "type": "boolean" + }, + "_devMetadata": { + "anyOf": [ + { + "$ref": "#/definitions/Metadata" + }, + { + "type": "null" + } + ], + "default": null + }, + "devMetadata": { + "anyOf": [ + { + "$ref": "#/definitions/Metadata" + }, + { + "type": "null" + } + ] + }, + "_configuration": { + "anyOf": [ + { + "$ref": "#/definitions/Configuration" + }, + { + "type": "null" + } + ], + "default": null + }, + "config": { + "$ref": "#/definitions/Configuration" + }, + "isTwoPackageJsonProjectLayoutUsed": { + "type": "boolean", + "default": false + }, + "eventEmitter": { + "$ref": "#/definitions/EventEmitter" + }, + "_appInfo": { + "anyOf": [ + { + "$ref": "#/definitions/AppInfo" + }, + { + "type": "null" + } + ], + "default": null + }, + "appInfo": { + "$ref": "#/definitions/AppInfo" + }, + "tempDirManager": { + "$ref": "#/definitions/TmpDir" + }, + "_repositoryInfo": { + "$ref": "#/definitions/Lazy" + }, + "afterPackHandlers": { + "type": "array", + "items": { + "type": "object" + }, + "default": [] + }, + "options": { + "$ref": "#/definitions/PackagerOptions" + }, + "debugLogger": { + "$ref": "#/definitions/DebugLogger" + }, + "repositoryInfo": { + "$ref": "#/definitions/Promise" + }, + "nodeDependencyInfo": { + "$ref": "#/definitions/Map>" + }, + "stageDirPathCustomizer": { + "type": "object" + }, + "_buildResourcesDir": { + "type": [ + "null", + "string" + ], + "default": null + }, + "buildResourcesDir": { + "type": "string" + }, + "relativeBuildResourcesDirname": { + "type": "string" + }, + "_framework": { + "anyOf": [ + { + "$ref": "#/definitions/Framework" + }, + { + "type": "null" + } + ], + "default": null + }, + "framework": { + "$ref": "#/definitions/Framework" + }, + "toDispose": { + "type": "array", + "items": { + "type": "object" + }, + "default": [] + }, + "cancellationToken": { + "$ref": "#/definitions/CancellationToken" + } + }, + "required": [ + "_appDir", + "_appInfo", + "_buildResourcesDir", + "_configuration", + "_devMetadata", + "_framework", + "_isPrepackedAppAsar", + "_metadata", + "_nodeModulesHandledExternally", + "_repositoryInfo", + "afterPackHandlers", + "appDir", + "appInfo", + "areNodeModulesHandledExternally", + "buildResourcesDir", + "cancellationToken", + "config", + "debugLogger", + "devMetadata", + "eventEmitter", + "framework", + "isPrepackedAppAsar", + "isTwoPackageJsonProjectLayoutUsed", + "metadata", + "nodeDependencyInfo", + "options", + "projectDir", + "relativeBuildResourcesDirname", + "repositoryInfo", + "stageDirPathCustomizer", + "tempDirManager", + "toDispose" + ] + }, + "Metadata": { + "type": "object", + "properties": { + "name": { + "description": "The application name.", + "type": "string" + }, + "description": { + "description": "The application description.", + "type": "string" + }, + "homepage": { + "description": "The url to the project [homepage](https://docs.npmjs.com/files/package.json#homepage) (NuGet Package `projectUrl` (optional) or Linux Package URL (required)).\n\nIf not specified and your project repository is public on GitHub, it will be `https://github.com/${user}/${project}` by default.", + "type": [ + "null", + "string" + ] + }, + "license": { + "description": "*linux-only.* The [license](https://docs.npmjs.com/files/package.json#license) name.", + "type": [ + "null", + "string" + ] + }, + "author": { + "anyOf": [ + { + "$ref": "#/definitions/AuthorMetadata" + }, + { + "type": "null" + } + ] + }, + "repository": { + "description": "The [repository](https://docs.npmjs.com/files/package.json#repository).", + "anyOf": [ + { + "$ref": "#/definitions/RepositoryInfo" + }, + { + "type": [ + "null", + "string" + ] + } + ] + }, + "build": { + "description": "The electron-builder configuration.", + "$ref": "#/definitions/Configuration" + }, + "dependencies": { + "type": "object", + "additionalProperties": { + "type": "string" + } + }, + "version": { + "type": "string" + }, + "shortVersion": { + "type": [ + "null", + "string" + ] + }, + "shortVersionWindows": { + "type": [ + "null", + "string" + ] + }, + "productName": { + "type": [ + "null", + "string" + ] + }, + "main": { + "type": [ + "null", + "string" + ] + } + } + }, + "AuthorMetadata": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "email": { + "type": "string" + } + }, + "required": [ + "name" + ] + }, + "RepositoryInfo": { + "type": "object", + "properties": { + "url": { + "type": "string" + } + }, + "required": [ + "url" + ] + }, + "EventEmitter": { + "description": "The `EventEmitter` class is defined and exposed by the `events` module:\n\n```js\nconst EventEmitter = require('events');\n```\n\nAll `EventEmitter`s emit the event `'newListener'` when new listeners are\nadded and `'removeListener'` when existing listeners are removed.\n\nIt supports the following option:", + "type": "object" + }, + "TmpDir": { + "type": "object", + "properties": { + "debugName": {}, + "tempFiles": {}, + "registered": {}, + "rootTempDir": { + "$ref": "#/definitions/Promise" + } + }, + "required": [ + "debugName", + "registered", + "rootTempDir", + "tempFiles" + ] + }, + "Promise": { + "type": "object", + "properties": { + "__@toStringTag": { + "type": "string" + } + }, + "required": [ + "__@toStringTag" + ] + }, + "Lazy": { + "type": "object", + "properties": { + "_value": {}, + "creator": {}, + "hasValue": { + "type": "boolean" + }, + "value": { + "$ref": "#/definitions/Promise" + } + }, + "required": [ + "_value", + "creator", + "hasValue", + "value" + ] + }, + "Promise": { + "type": "object", + "properties": { + "__@toStringTag": { + "type": "string" + } + }, + "required": [ + "__@toStringTag" + ] + }, + "DebugLogger": { + "type": "object", + "properties": { + "isEnabled": { + "type": "boolean" + }, + "data": {} + }, + "required": [ + "data", + "isEnabled" + ] + }, + "Map>": { + "type": "object", + "properties": { + "size": { + "type": "number" + }, + "__@toStringTag": { + "type": "string" + } + }, + "required": [ + "__@toStringTag", + "size" + ] + }, + "Framework": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "version": { + "type": "string" + }, + "distMacOsAppName": { + "type": "string" + }, + "macOsDefaultTargets": { + "type": "array", + "items": { + "type": "string" + } + }, + "defaultAppIdPrefix": { + "type": "string" + }, + "isNpmRebuildRequired": { + "type": "boolean" + }, + "isCopyElevateHelper": { + "type": "boolean" + } + }, + "required": [ + "defaultAppIdPrefix", + "distMacOsAppName", + "isCopyElevateHelper", + "isNpmRebuildRequired", + "macOsDefaultTargets", + "name", + "version" + ] + }, + "CancellationToken": { + "type": "object", + "properties": { + "parentCancelHandler": {}, + "_cancelled": {}, + "cancelled": { + "type": "boolean" + }, + "_parent": {}, + "parent": { + "$ref": "#/definitions/CancellationToken" + }, + "onCancel": {}, + "removeParentCancelHandler": {} + }, + "required": [ + "_cancelled", + "_parent", + "cancelled", + "onCancel", + "parent", + "parentCancelHandler", + "removeParentCancelHandler" + ] + }, + "PlatformSpecificBuildOptions": { + "type": "object", + "properties": { + "appId": { + "description": "The application id. Used as [CFBundleIdentifier](https://developer.apple.com/library/ios/documentation/General/Reference/InfoPlistKeyReference/Articles/CoreFoundationKeys.html#//apple_ref/doc/uid/20001431-102070) for MacOS and as\n[Application User Model ID](https://msdn.microsoft.com/en-us/library/windows/desktop/dd378459(v=vs.85).aspx) for Windows (NSIS target only, Squirrel.Windows not supported). It is strongly recommended that an explicit ID is set.", + "default": "com.electron.${name}", + "type": [ + "null", + "string" + ] + }, + "artifactName": { + "description": "The [artifact file name template](/configuration/configuration#artifact-file-name-template). Defaults to `${productName}-${version}.${ext}` (some target can have other defaults, see corresponding options).", + "type": [ + "null", + "string" + ] + }, + "executableName": { + "description": "The executable name. Defaults to `productName`.", + "type": [ + "null", + "string" + ] + }, + "compression": { + "description": "The compression level. If you want to rapidly test build, `store` can reduce build time significantly. `maximum` doesn't lead to noticeable size difference, but increase build time.", + "default": "normal", + "anyOf": [ + { + "enum": [ + "maximum", + "normal", + "store" + ], + "type": "string" + }, + { + "type": "null" + } + ] + }, + "files": { + "anyOf": [ + { + "$ref": "#/definitions/FileSet" + }, + { + "type": "array", + "items": { + "anyOf": [ + { + "$ref": "#/definitions/FileSet" + }, + { + "type": "string" + } + ] + } + }, + { + "type": [ + "null", + "string" + ] + } + ] + }, + "extraResources": { + "anyOf": [ + { + "$ref": "#/definitions/FileSet" + }, + { + "type": "array", + "items": { + "anyOf": [ + { + "$ref": "#/definitions/FileSet" + }, + { + "type": "string" + } + ] + } + }, + { + "type": [ + "null", + "string" + ] + } + ] + }, + "extraFiles": { + "anyOf": [ + { + "$ref": "#/definitions/FileSet" + }, + { + "type": "array", + "items": { + "anyOf": [ + { + "$ref": "#/definitions/FileSet" + }, + { + "type": "string" + } + ] + } + }, + { + "type": [ + "null", + "string" + ] + } + ] + }, + "asar": { + "description": "Whether to package the application's source code into an archive, using [Electron's archive format](http://electron.atom.io/docs/tutorial/application-packaging/).\n\nNode modules, that must be unpacked, will be detected automatically, you don't need to explicitly set [asarUnpack](#configuration-asarUnpack) - please file an issue if this doesn't work.", + "default": true, + "anyOf": [ + { + "$ref": "#/definitions/AsarOptions" + }, + { + "type": [ + "null", + "boolean" + ] + } + ] + }, + "asarUnpack": { + "description": "A [glob patterns](/file-patterns) relative to the [app directory](#MetadataDirectories-app), which specifies which files to unpack when creating the [asar](http://electron.atom.io/docs/tutorial/application-packaging/) archive.", + "anyOf": [ + { + "type": "array", + "items": { + "type": "string" + } + }, + { + "type": [ + "null", + "string" + ] + } + ] + }, + "icon": { + "type": [ + "null", + "string" + ] + }, + "fileAssociations": { + "description": "The file associations.", + "anyOf": [ + { + "$ref": "#/definitions/FileAssociation" + }, + { + "type": "array", + "items": { + "$ref": "#/definitions/FileAssociation" + } + } + ] + }, + "protocols": { + "description": "The URL protocol schemes.", + "anyOf": [ + { + "$ref": "#/definitions/Protocol" + }, + { + "type": "array", + "items": { + "$ref": "#/definitions/Protocol" + } + } + ] + }, + "forceCodeSigning": { + "description": "Whether to fail if app will be not code signed.", + "type": "boolean" + }, + "electronUpdaterCompatibility": { + "description": "The [electron-updater compatibility](/auto-update#compatibility) semver range.", + "type": [ + "null", + "string" + ] + }, + "publish": { + "anyOf": [ + { + "$ref": "#/definitions/GithubOptions" + }, + { + "$ref": "#/definitions/S3Options" + }, + { + "$ref": "#/definitions/SpacesOptions" + }, + { + "$ref": "#/definitions/GenericServerOptions" + }, + { + "$ref": "#/definitions/BintrayOptions" + }, + { + "$ref": "#/definitions/CustomPublishOptions" + }, + { + "$ref": "#/definitions/KeygenOptions" + }, + { + "$ref": "#/definitions/SnapStoreOptions" + }, + { + "type": "array", + "items": { + "anyOf": [ + { + "$ref": "#/definitions/GithubOptions" + }, + { + "$ref": "#/definitions/S3Options" + }, + { + "$ref": "#/definitions/SpacesOptions" + }, + { + "$ref": "#/definitions/GenericServerOptions" + }, + { + "$ref": "#/definitions/BintrayOptions" + }, + { + "$ref": "#/definitions/CustomPublishOptions" + }, + { + "$ref": "#/definitions/KeygenOptions" + }, + { + "$ref": "#/definitions/SnapStoreOptions" + }, + { + "type": "string" + } + ] + } + }, + { + "type": [ + "null", + "string" + ] + } + ] + }, + "detectUpdateChannel": { + "description": "Whether to infer update channel from application version pre-release components. e.g. if version `0.12.1-alpha.1`, channel will be set to `alpha`. Otherwise to `latest`.", + "default": true, + "type": "boolean" + }, + "generateUpdatesFilesForAllChannels": { + "description": "Please see [Building and Releasing using Channels](https://github.com/electron-userland/electron-builder/issues/1182#issuecomment-324947139).", + "default": false, + "type": "boolean" + }, + "releaseInfo": { + "description": "The release info. Intended for command line usage:\n\n```\n-c.releaseInfo.releaseNotes=\"new features\"\n```", + "$ref": "#/definitions/ReleaseInfo" + }, + "target": { + "anyOf": [ + { + "$ref": "#/definitions/TargetConfiguration" + }, + { + "type": "array", + "items": { + "anyOf": [ + { + "$ref": "#/definitions/TargetConfiguration" + }, + { + "type": "string" + } + ] + } + }, + { + "type": [ + "null", + "string" + ] + } + ] + }, + "cscLink": { + "type": [ + "null", + "string" + ] + }, + "cscKeyPassword": { + "type": [ + "null", + "string" + ] + }, + "defaultArch": { + "type": "string" + } + } + }, + "Platform": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "buildConfigurationKey": { + "type": "string" + }, + "nodeName": { + "$ref": "#/definitions/global.NodeJS.Platform" + } + }, + "required": [ + "buildConfigurationKey", + "name", + "nodeName" + ] + }, + "global.NodeJS.Platform": { + "enum": [ + "aix", + "android", + "cygwin", + "darwin", + "freebsd", + "haiku", + "linux", + "netbsd", + "openbsd", + "sunos", + "win32" + ], + "type": "string" + }, + "CompressionLevel": { + "enum": [ + "maximum", + "normal", + "store" + ], + "type": "string" + }, + "Arch": { + "enum": [ + 0, + 1, + 2, + 3, + 4 + ], + "type": "number" + }, + "Target": { + "oneOf": [ + { + "$ref": "#/definitions/FakeTarget" + }, + { + "$ref": "#/definitions/default" + }, + { + "$ref": "#/definitions/NsisTarget" + }, + { + "$ref": "#/definitions/ArchiveTarget" + }, + { + "$ref": "#/definitions/NoOpTarget" + }, + { + "$ref": "#/definitions/default_1" + }, + { + "$ref": "#/definitions/default_2" + }, + { + "$ref": "#/definitions/default_3" + }, + { + "$ref": "#/definitions/default_4" + }, + { + "$ref": "#/definitions/RemoteTarget" + }, + { + "$ref": "#/definitions/PkgTarget" + } + ] + }, + "FakeTarget": { + "type": "object", + "properties": { + "outDir": { + "type": "string" + }, + "options": { + "anyOf": [ + { + "$ref": "#/definitions/TargetSpecificOptions" + }, + { + "type": "null" + } + ] + }, + "name": { + "type": "string" + }, + "isAsyncSupported": { + "type": "boolean", + "default": true + } + }, + "required": [ + "isAsyncSupported", + "name", + "outDir" + ] + }, + "TargetSpecificOptions": { + "type": "object", + "properties": { + "artifactName": { + "description": "The [artifact file name template](/configuration/configuration#artifact-file-name-template).", + "type": [ + "null", + "string" + ] + }, + "publish": { + "anyOf": [ + { + "$ref": "#/definitions/GithubOptions" + }, + { + "$ref": "#/definitions/S3Options" + }, + { + "$ref": "#/definitions/SpacesOptions" + }, + { + "$ref": "#/definitions/GenericServerOptions" + }, + { + "$ref": "#/definitions/BintrayOptions" + }, + { + "$ref": "#/definitions/CustomPublishOptions" + }, + { + "$ref": "#/definitions/KeygenOptions" + }, + { + "$ref": "#/definitions/SnapStoreOptions" + }, + { + "type": "array", + "items": { + "anyOf": [ + { + "$ref": "#/definitions/GithubOptions" + }, + { + "$ref": "#/definitions/S3Options" + }, + { + "$ref": "#/definitions/SpacesOptions" + }, + { + "$ref": "#/definitions/GenericServerOptions" + }, + { + "$ref": "#/definitions/BintrayOptions" + }, + { + "$ref": "#/definitions/CustomPublishOptions" + }, + { + "$ref": "#/definitions/KeygenOptions" + }, + { + "$ref": "#/definitions/SnapStoreOptions" + }, + { + "type": "string" + } + ] + } + }, + { + "type": [ + "null", + "string" + ] + } + ] + } + } + }, + "default": { + "type": "object", + "properties": { + "options": { + "$ref": "#/definitions/AppXOptions" + }, + "packager": { + "$ref": "#/definitions/WinPackager" + }, + "outDir": { + "type": "string" + }, + "name": { + "type": "string" + }, + "isAsyncSupported": { + "type": "boolean", + "default": true + } + }, + "required": [ + "isAsyncSupported", + "name", + "options", + "outDir", + "packager" + ] + }, + "WinPackager": { + "type": "object", + "properties": { + "cscInfo": { + "$ref": "#/definitions/Lazy" + }, + "_iconPath": { + "$ref": "#/definitions/Lazy" + }, + "vm": { + "$ref": "#/definitions/Lazy" + }, + "computedPublisherName": { + "$ref": "#/definitions/Lazy" + }, + "lazyCertInfo": { + "$ref": "#/definitions/Lazy" + }, + "isForceCodeSigningVerification": { + "type": "boolean" + }, + "defaultTarget": { + "type": "array", + "items": { + "type": "string" + } + }, + "packagerOptions": { + "$ref": "#/definitions/PackagerOptions" + }, + "buildResourcesDir": { + "type": "string" + }, + "projectDir": { + "type": "string" + }, + "config": { + "$ref": "#/definitions/Configuration" + }, + "platformSpecificBuildOptions": { + "$ref": "#/definitions/WindowsConfiguration" + }, + "resourceList": { + "$ref": "#/definitions/Promise" + }, + "_resourceList": { + "$ref": "#/definitions/Lazy" + }, + "appInfo": { + "$ref": "#/definitions/AppInfo" + }, + "info": { + "$ref": "#/definitions/Packager" + }, + "platform": { + "$ref": "#/definitions/Platform" + }, + "compression": { + "$ref": "#/definitions/CompressionLevel" + }, + "debugLogger": { + "$ref": "#/definitions/DebugLogger" + }, + "fileAssociations": { + "type": "array", + "items": { + "$ref": "#/definitions/FileAssociation" + } + }, + "forceCodeSigning": { + "type": "boolean" + } + }, + "required": [ + "_iconPath", + "_resourceList", + "appInfo", + "buildResourcesDir", + "compression", + "computedPublisherName", + "config", + "cscInfo", + "debugLogger", + "defaultTarget", + "fileAssociations", + "forceCodeSigning", + "info", + "isForceCodeSigningVerification", + "lazyCertInfo", + "packagerOptions", + "platform", + "platformSpecificBuildOptions", + "projectDir", + "resourceList", + "vm" + ] + }, + "Lazy": { + "type": "object", + "properties": { + "_value": {}, + "creator": {}, + "hasValue": { + "type": "boolean" + }, + "value": { + "$ref": "#/definitions/Promise" + } + }, + "required": [ + "_value", + "creator", + "hasValue", + "value" + ] + }, + "Promise": { + "type": "object", + "properties": { + "__@toStringTag": { + "type": "string" + } + }, + "required": [ + "__@toStringTag" + ] + }, + "Lazy": { + "type": "object", + "properties": { + "_value": {}, + "creator": {}, + "hasValue": { + "type": "boolean" + }, + "value": { + "$ref": "#/definitions/Promise" + } + }, + "required": [ + "_value", + "creator", + "hasValue", + "value" + ] + }, + "Promise": { + "type": "object", + "properties": { + "__@toStringTag": { + "type": "string" + } + }, + "required": [ + "__@toStringTag" + ] + }, + "Lazy": { + "type": "object", + "properties": { + "_value": {}, + "creator": {}, + "hasValue": { + "type": "boolean" + }, + "value": { + "$ref": "#/definitions/Promise" + } + }, + "required": [ + "_value", + "creator", + "hasValue", + "value" + ] + }, + "Promise": { + "type": "object", + "properties": { + "__@toStringTag": { + "type": "string" + } + }, + "required": [ + "__@toStringTag" + ] + }, + "Lazy": { + "type": "object", + "properties": { + "_value": {}, + "creator": {}, + "hasValue": { + "type": "boolean" + }, + "value": { + "$ref": "#/definitions/Promise" + } + }, + "required": [ + "_value", + "creator", + "hasValue", + "value" + ] + }, + "Promise": { + "type": "object", + "properties": { + "__@toStringTag": { + "type": "string" + } + }, + "required": [ + "__@toStringTag" + ] + }, + "Lazy": { + "type": "object", + "properties": { + "_value": {}, + "creator": {}, + "hasValue": { + "type": "boolean" + }, + "value": { + "$ref": "#/definitions/Promise" + } + }, + "required": [ + "_value", + "creator", + "hasValue", + "value" + ] + }, + "Promise": { + "type": "object", + "properties": { + "__@toStringTag": { + "type": "string" + } + }, + "required": [ + "__@toStringTag" + ] + }, + "NsisTarget": { + "type": "object", + "properties": { + "options": { + "$ref": "#/definitions/NsisOptions" + }, + "archs": { + "$ref": "#/definitions/Map" + }, + "packager": { + "$ref": "#/definitions/WinPackager" + }, + "outDir": { + "type": "string" + }, + "packageHelper": { + "$ref": "#/definitions/AppPackageHelper" + }, + "isBuildDifferentialAware": { + "type": "boolean" + }, + "installerFilenamePattern": { + "type": "string" + }, + "isPortable": { + "type": "boolean" + }, + "isUnicodeEnabled": { + "type": "boolean" + }, + "isWebInstaller": { + "type": "boolean" + }, + "name": { + "type": "string" + }, + "isAsyncSupported": { + "type": "boolean", + "default": true + } + }, + "required": [ + "archs", + "installerFilenamePattern", + "isAsyncSupported", + "isBuildDifferentialAware", + "isPortable", + "isUnicodeEnabled", + "isWebInstaller", + "name", + "options", + "outDir", + "packageHelper", + "packager" + ] + }, + "Map": { + "type": "object", + "properties": { + "size": { + "type": "number" + }, + "__@toStringTag": { + "type": "string" + } + }, + "required": [ + "__@toStringTag", + "size" + ] + }, + "AppPackageHelper": { + "type": "object", + "properties": { + "archToFileInfo": { + "$ref": "#/definitions/Map>" + }, + "infoToIsDelete": { + "$ref": "#/definitions/Map" + }, + "refCount": { + "type": "number", + "default": 0 + }, + "elevateHelper": { + "$ref": "#/definitions/CopyElevateHelper" + } + }, + "required": [ + "archToFileInfo", + "elevateHelper", + "infoToIsDelete", + "refCount" + ] + }, + "Map>": { + "type": "object", + "properties": { + "size": { + "type": "number" + }, + "__@toStringTag": { + "type": "string" + } + }, + "required": [ + "__@toStringTag", + "size" + ] + }, + "Map": { + "type": "object", + "properties": { + "size": { + "type": "number" + }, + "__@toStringTag": { + "type": "string" + } + }, + "required": [ + "__@toStringTag", + "size" + ] + }, + "CopyElevateHelper": { + "type": "object", + "properties": { + "copied": { + "$ref": "#/definitions/Map>" + } + }, + "required": [ + "copied" + ] + }, + "Map>": { + "type": "object", + "properties": { + "size": { + "type": "number" + }, + "__@toStringTag": { + "type": "string" + } + }, + "required": [ + "__@toStringTag", + "size" + ] + }, + "ArchiveTarget": { + "type": "object", + "properties": { + "options": { + "$ref": "#/definitions/TargetSpecificOptions" + }, + "outDir": { + "type": "string" + }, + "packager": { + "$ref": "#/definitions/PlatformPackager" + }, + "isWriteUpdateInfo": { + "type": "boolean", + "default": false + }, + "name": { + "type": "string" + }, + "isAsyncSupported": { + "type": "boolean", + "default": true + } + }, + "required": [ + "isAsyncSupported", + "isWriteUpdateInfo", + "name", + "options", + "outDir", + "packager" + ] + }, + "NoOpTarget": { + "type": "object", + "properties": { + "options": { + "type": "null", + "default": null + }, + "outDir": { + "type": "string" + }, + "name": { + "type": "string" + }, + "isAsyncSupported": { + "type": "boolean", + "default": true + } + }, + "required": [ + "isAsyncSupported", + "name", + "options", + "outDir" + ] + }, + "default_1": { + "type": "object", + "properties": { + "options": { + "$ref": "#/definitions/AppImageOptions" + }, + "desktopEntry": { + "$ref": "#/definitions/Lazy" + }, + "packager": { + "$ref": "#/definitions/LinuxPackager" + }, + "helper": { + "$ref": "#/definitions/LinuxTargetHelper" + }, + "outDir": { + "type": "string" + }, + "name": { + "type": "string" + }, + "isAsyncSupported": { + "type": "boolean", + "default": true + } + }, + "required": [ + "desktopEntry", + "helper", + "isAsyncSupported", + "name", + "options", + "outDir", + "packager" + ] + }, + "Lazy": { + "type": "object", + "properties": { + "_value": {}, + "creator": {}, + "hasValue": { + "type": "boolean" + }, + "value": { + "$ref": "#/definitions/Promise" + } + }, + "required": [ + "_value", + "creator", + "hasValue", + "value" + ] + }, + "LinuxPackager": { + "type": "object", + "properties": { + "executableName": { + "type": "string" + }, + "defaultTarget": { + "type": "array", + "items": { + "type": "string" + } + }, + "packagerOptions": { + "$ref": "#/definitions/PackagerOptions" + }, + "buildResourcesDir": { + "type": "string" + }, + "projectDir": { + "type": "string" + }, + "config": { + "$ref": "#/definitions/Configuration" + }, + "platformSpecificBuildOptions": { + "$ref": "#/definitions/LinuxConfiguration" + }, + "resourceList": { + "$ref": "#/definitions/Promise" + }, + "_resourceList": { + "$ref": "#/definitions/Lazy" + }, + "appInfo": { + "$ref": "#/definitions/AppInfo" + }, + "info": { + "$ref": "#/definitions/Packager" + }, + "platform": { + "$ref": "#/definitions/Platform" + }, + "compression": { + "$ref": "#/definitions/CompressionLevel" + }, + "debugLogger": { + "$ref": "#/definitions/DebugLogger" + }, + "fileAssociations": { + "type": "array", + "items": { + "$ref": "#/definitions/FileAssociation" + } + }, + "forceCodeSigning": { + "type": "boolean" + } + }, + "required": [ + "_resourceList", + "appInfo", + "buildResourcesDir", + "compression", + "config", + "debugLogger", + "defaultTarget", + "executableName", + "fileAssociations", + "forceCodeSigning", + "info", + "packagerOptions", + "platform", + "platformSpecificBuildOptions", + "projectDir", + "resourceList" + ] + }, + "LinuxTargetHelper": { + "type": "object", + "properties": { + "iconPromise": { + "$ref": "#/definitions/Lazy" + }, + "mimeTypeFilesPromise": { + "$ref": "#/definitions/Lazy" + }, + "maxIconPath": { + "type": [ + "null", + "string" + ], + "default": null + }, + "packager": { + "$ref": "#/definitions/LinuxPackager" + }, + "icons": { + "$ref": "#/definitions/Promise" + }, + "mimeTypeFiles": { + "$ref": "#/definitions/Promise" + } + }, + "required": [ + "iconPromise", + "icons", + "maxIconPath", + "mimeTypeFiles", + "mimeTypeFilesPromise", + "packager" + ] + }, + "Lazy": { + "type": "object", + "properties": { + "_value": {}, + "creator": {}, + "hasValue": { + "type": "boolean" + }, + "value": { + "$ref": "#/definitions/Promise" + } + }, + "required": [ + "_value", + "creator", + "hasValue", + "value" + ] + }, + "Promise": { + "type": "object", + "properties": { + "__@toStringTag": { + "type": "string" + } + }, + "required": [ + "__@toStringTag" + ] + }, + "default_2": { + "type": "object", + "properties": { + "options": { + "$ref": "#/definitions/FlatpakOptions" + }, + "packager": { + "$ref": "#/definitions/LinuxPackager" + }, + "helper": { + "$ref": "#/definitions/LinuxTargetHelper" + }, + "outDir": { + "type": "string" + }, + "appId": { + "type": "string" + }, + "name": { + "type": "string" + }, + "isAsyncSupported": { + "type": "boolean", + "default": true + } + }, + "required": [ + "appId", + "helper", + "isAsyncSupported", + "name", + "options", + "outDir", + "packager" + ] + }, + "default_3": { + "type": "object", + "properties": { + "options": { + "$ref": "#/definitions/LinuxTargetSpecificOptions" + }, + "scriptFiles": { + "$ref": "#/definitions/Promise" + }, + "packager": { + "$ref": "#/definitions/LinuxPackager" + }, + "helper": { + "$ref": "#/definitions/LinuxTargetHelper" + }, + "outDir": { + "type": "string" + }, + "name": { + "type": "string" + }, + "isAsyncSupported": { + "type": "boolean", + "default": true + } + }, + "required": [ + "helper", + "isAsyncSupported", + "name", + "options", + "outDir", + "packager", + "scriptFiles" + ] + }, + "default_4": { + "type": "object", + "properties": { + "options": { + "$ref": "#/definitions/SnapOptions" + }, + "isUseTemplateApp": { + "type": "boolean", + "default": false + }, + "packager": { + "$ref": "#/definitions/LinuxPackager" + }, + "helper": { + "$ref": "#/definitions/LinuxTargetHelper" + }, + "outDir": { + "type": "string" + }, + "name": { + "type": "string" + }, + "isAsyncSupported": { + "type": "boolean", + "default": true + } + }, + "required": [ + "helper", + "isAsyncSupported", + "isUseTemplateApp", + "name", + "options", + "outDir", + "packager" + ] + }, + "RemoteTarget": { + "type": "object", + "properties": { + "buildTaskManager": { + "$ref": "#/definitions/AsyncTaskManager" + }, + "options": { + "anyOf": [ + { + "$ref": "#/definitions/TargetSpecificOptions" + }, + { + "type": "null" + } + ] + }, + "outDir": { + "type": "string" + }, + "target": { + "$ref": "#/definitions/Target" + }, + "remoteBuilder": { + "$ref": "#/definitions/RemoteBuilder" + }, + "name": { + "type": "string" + }, + "isAsyncSupported": { + "type": "boolean", + "default": true + } + }, + "required": [ + "buildTaskManager", + "isAsyncSupported", + "name", + "outDir", + "remoteBuilder", + "target" + ] + }, + "AsyncTaskManager": { + "type": "object", + "properties": { + "cancellationToken": {}, + "tasks": { + "type": "array", + "items": { + "$ref": "#/definitions/Promise" + } + }, + "errors": {} + }, + "required": [ + "cancellationToken", + "errors", + "tasks" + ] + }, + "Promise": { + "type": "object", + "properties": { + "__@toStringTag": { + "type": "string" + } + }, + "required": [ + "__@toStringTag" + ] + }, + "RemoteBuilder": { + "type": "object", + "properties": { + "toBuild": { + "$ref": "#/definitions/Map" + }, + "buildStarted": { + "type": "boolean", + "default": false + }, + "packager": { + "$ref": "#/definitions/PlatformPackager" + } + }, + "required": [ + "buildStarted", + "packager", + "toBuild" + ] + }, + "Map": { + "type": "object", + "properties": { + "size": { + "type": "number" + }, + "__@toStringTag": { + "type": "string" + } + }, + "required": [ + "__@toStringTag", + "size" + ] + }, + "PkgTarget": { + "type": "object", + "properties": { + "options": { + "$ref": "#/definitions/PkgOptions" + }, + "packager": { + "$ref": "#/definitions/default_5" + }, + "outDir": { + "type": "string" + }, + "name": { + "type": "string" + }, + "isAsyncSupported": { + "type": "boolean", + "default": true + } + }, + "required": [ + "isAsyncSupported", + "name", + "options", + "outDir", + "packager" + ] + }, + "default_5": { + "type": "object", + "properties": { + "codeSigningInfo": { + "$ref": "#/definitions/Lazy" + }, + "_iconPath": { + "$ref": "#/definitions/Lazy" + }, + "defaultTarget": { + "type": "array", + "items": { + "type": "string" + } + }, + "packagerOptions": { + "$ref": "#/definitions/PackagerOptions" + }, + "buildResourcesDir": { + "type": "string" + }, + "projectDir": { + "type": "string" + }, + "config": { + "$ref": "#/definitions/Configuration" + }, + "platformSpecificBuildOptions": { + "$ref": "#/definitions/MacConfiguration" + }, + "resourceList": { + "$ref": "#/definitions/Promise" + }, + "_resourceList": { + "$ref": "#/definitions/Lazy" + }, + "appInfo": { + "$ref": "#/definitions/AppInfo" + }, + "info": { + "$ref": "#/definitions/Packager" + }, + "platform": { + "$ref": "#/definitions/Platform" + }, + "compression": { + "$ref": "#/definitions/CompressionLevel" + }, + "debugLogger": { + "$ref": "#/definitions/DebugLogger" + }, + "fileAssociations": { + "type": "array", + "items": { + "$ref": "#/definitions/FileAssociation" + } + }, + "forceCodeSigning": { + "type": "boolean" + } + }, + "required": [ + "_iconPath", + "_resourceList", + "appInfo", + "buildResourcesDir", + "codeSigningInfo", + "compression", + "config", + "debugLogger", + "defaultTarget", + "fileAssociations", + "forceCodeSigning", + "info", + "packagerOptions", + "platform", + "platformSpecificBuildOptions", + "projectDir", + "resourceList" + ] + }, + "Lazy": { + "type": "object", + "properties": { + "_value": {}, + "creator": {}, + "hasValue": { + "type": "boolean" + }, + "value": { + "$ref": "#/definitions/Promise" + } + }, + "required": [ + "_value", + "creator", + "hasValue", + "value" + ] + }, + "Promise": { + "type": "object", + "properties": { + "__@toStringTag": { + "type": "string" + } + }, + "required": [ + "__@toStringTag" + ] + } + }, + "$schema": "http://json-schema.org/draft-07/schema#" +} \ No newline at end of file diff --git a/packages/app-builder-lib/scheme.json b/packages/app-builder-lib/src/schema/configuration.jsc.ts similarity index 89% rename from packages/app-builder-lib/scheme.json rename to packages/app-builder-lib/src/schema/configuration.jsc.ts index bd2bcd5890f..8ea207a6e2a 100644 --- a/packages/app-builder-lib/scheme.json +++ b/packages/app-builder-lib/src/schema/configuration.jsc.ts @@ -1,1163 +1,1319 @@ -{ - "$schema": "http://json-schema.org/draft-07/schema#", - "additionalProperties": false, - "definitions": { - "AppImageOptions": { - "additionalProperties": false, - "properties": { - "artifactName": { - "description": "The [artifact file name template](/configuration/configuration#artifact-file-name-template).", - "type": [ - "null", - "string" - ] +export default { + "description": "Configuration Options", + "type": "object", + "properties": { + "appId": { + "description": "The application id. Used as [CFBundleIdentifier](https://developer.apple.com/library/ios/documentation/General/Reference/InfoPlistKeyReference/Articles/CoreFoundationKeys.html#//apple_ref/doc/uid/20001431-102070) for MacOS and as\n[Application User Model ID](https://msdn.microsoft.com/en-us/library/windows/desktop/dd378459(v=vs.85).aspx) for Windows (NSIS target only, Squirrel.Windows not supported). It is strongly recommended that an explicit ID is set.", + "default": "com.electron.${name}", + "type": [ + "null", + "string" + ] + }, + "productName": { + "description": "As [name](#Metadata-name), but allows you to specify a product name for your executable which contains spaces and other special characters not allowed in the [name property](https://docs.npmjs.com/files/package.json#name).", + "type": [ + "null", + "string" + ] + }, + "copyright": { + "description": "The human-readable copyright line for the app.", + "default": "Copyright © year ${author}", + "type": [ + "null", + "string" + ] + }, + "directories": { + "anyOf": [ + { + "$ref": "#/definitions/MetadataDirectories" }, - "category": { - "description": "The [application category](https://specifications.freedesktop.org/menu-spec/latest/apa.html#main-category-registry).", - "type": [ - "null", - "string" - ] + { + "type": "null" + } + ] + }, + "mac": { + "description": "Options related to how build macOS targets.", + "anyOf": [ + { + "$ref": "#/definitions/MacConfiguration" }, - "description": { - "description": "As [description](/configuration/configuration#Metadata-description) from application package.json, but allows you to specify different for Linux.", - "type": [ - "null", - "string" - ] + { + "type": "null" + } + ] + }, + "mas": { + "description": "MAS (Mac Application Store) options.", + "anyOf": [ + { + "$ref": "#/definitions/MasConfiguration" }, - "desktop": { - "description": "The [Desktop file](https://developer.gnome.org/integration-guide/stable/desktop-files.html.en) entries (name to value)." + { + "type": "null" + } + ] + }, + "masDev": { + "description": "MAS (Mac Application Store) development options (`mas-dev` target).", + "anyOf": [ + { + "$ref": "#/definitions/MasConfiguration" }, - "executableArgs": { - "anyOf": [ - { - "items": { - "type": "string" - }, - "type": "array" - }, - { - "type": "null" - } - ], - "description": "The executable parameters. Pass to executableName" + { + "type": "null" + } + ] + }, + "dmg": { + "description": "macOS DMG options.", + "anyOf": [ + { + "$ref": "#/definitions/DmgOptions" }, - "license": { - "description": "The path to EULA license file. Defaults to `license.txt` or `eula.txt` (or uppercase variants). Only plain text is supported.", + { + "type": "null" + } + ] + }, + "pkg": { + "description": "macOS PKG options.", + "anyOf": [ + { + "$ref": "#/definitions/PkgOptions" + }, + { + "type": "null" + } + ] + }, + "win": { + "description": "Options related to how build Windows targets.", + "anyOf": [ + { + "$ref": "#/definitions/WindowsConfiguration" + }, + { + "type": "null" + } + ] + }, + "nsis": { + "anyOf": [ + { + "$ref": "#/definitions/NsisOptions" + }, + { + "type": "null" + } + ] + }, + "nsisWeb": { + "anyOf": [ + { + "$ref": "#/definitions/NsisWebOptions" + }, + { + "type": "null" + } + ] + }, + "portable": { + "anyOf": [ + { + "$ref": "#/definitions/PortableOptions" + }, + { + "type": "null" + } + ] + }, + "appx": { + "anyOf": [ + { + "$ref": "#/definitions/AppXOptions" + }, + { + "type": "null" + } + ] + }, + "msi": { + "anyOf": [ + { + "$ref": "#/definitions/MsiOptions" + }, + { + "type": "null" + } + ] + }, + "squirrelWindows": { + "anyOf": [ + { + "$ref": "#/definitions/SquirrelWindowsOptions" + }, + { + "type": "null" + } + ] + }, + "linux": { + "description": "Options related to how build Linux targets.", + "anyOf": [ + { + "$ref": "#/definitions/LinuxConfiguration" + }, + { + "type": "null" + } + ] + }, + "deb": { + "description": "Debian package options.", + "anyOf": [ + { + "$ref": "#/definitions/DebOptions" + }, + { + "type": "null" + } + ] + }, + "snap": { + "description": "Snap options.", + "anyOf": [ + { + "$ref": "#/definitions/SnapOptions" + }, + { + "type": "null" + } + ] + }, + "appImage": { + "description": "AppImage options.", + "anyOf": [ + { + "$ref": "#/definitions/AppImageOptions" + }, + { + "type": "null" + } + ] + }, + "flatpak": { + "description": "Flatpak options.", + "anyOf": [ + { + "$ref": "#/definitions/FlatpakOptions" + }, + { + "type": "null" + } + ] + }, + "pacman": { + "anyOf": [ + { + "$ref": "#/definitions/LinuxTargetSpecificOptions" + }, + { + "type": "null" + } + ] + }, + "rpm": { + "anyOf": [ + { + "$ref": "#/definitions/LinuxTargetSpecificOptions" + }, + { + "type": "null" + } + ] + }, + "freebsd": { + "anyOf": [ + { + "$ref": "#/definitions/LinuxTargetSpecificOptions" + }, + { + "type": "null" + } + ] + }, + "p5p": { + "anyOf": [ + { + "$ref": "#/definitions/LinuxTargetSpecificOptions" + }, + { + "type": "null" + } + ] + }, + "apk": { + "anyOf": [ + { + "$ref": "#/definitions/LinuxTargetSpecificOptions" + }, + { + "type": "null" + } + ] + }, + "includeSubNodeModules": { + "description": "Whether to include *all* of the submodules node_modules directories", + "default": false, + "type": "boolean" + }, + "buildDependenciesFromSource": { + "description": "Whether to build the application native dependencies from source.", + "default": false, + "type": "boolean" + }, + "nodeGypRebuild": { + "description": "Whether to execute `node-gyp rebuild` before starting to package the app.\n\nDon't [use](https://github.com/electron-userland/electron-builder/issues/683#issuecomment-241214075) [npm](http://electron.atom.io/docs/tutorial/using-native-node-modules/#using-npm) (neither `.npmrc`) for configuring electron headers. Use `electron-builder node-gyp-rebuild` instead.", + "default": false, + "type": "boolean" + }, + "npmArgs": { + "description": "Additional command line arguments to use when installing app native deps.", + "anyOf": [ + { + "type": "array", + "items": { + "type": "string" + } + }, + { "type": [ "null", "string" ] + } + ] + }, + "npmRebuild": { + "description": "Whether to [rebuild](https://docs.npmjs.com/cli/rebuild) native dependencies before starting to package the app.", + "default": true, + "type": "boolean" + }, + "buildVersion": { + "description": "The build version. Maps to the `CFBundleVersion` on macOS, and `FileVersion` metadata property on Windows. Defaults to the `version`.\nIf `TRAVIS_BUILD_NUMBER` or `APPVEYOR_BUILD_NUMBER` or `CIRCLE_BUILD_NUM` or `BUILD_NUMBER` or `bamboo.buildNumber` or `CI_PIPELINE_IID` env defined, it will be used as a build version (`version.build_number`).", + "type": [ + "null", + "string" + ] + }, + "electronCompile": { + "description": "Whether to use [electron-compile](http://github.com/electron/electron-compile) to compile app. Defaults to `true` if `electron-compile` in the dependencies. And `false` if in the `devDependencies` or doesn't specified.", + "type": "boolean" + }, + "electronDist": { + "description": "Returns the path to custom Electron build (e.g. `~/electron/out/R`). Zip files must follow the pattern `electron-v${version}-${platformName}-${arch}.zip`, otherwise it will be assumed to be an unpacked Electron app directory", + "type": [ + "string", + "object" + ] + }, + "electronDownload": { + "description": "The [electron-download](https://github.com/electron-userland/electron-download#usage) options.", + "$ref": "#/definitions/ElectronDownloadOptions" + }, + "electronBranding": { + "description": "The branding used by Electron's distributables. This is needed if a fork has modified Electron's BRANDING.json file.", + "$ref": "#/definitions/ElectronBrandingOptions" + }, + "electronVersion": { + "description": "The version of electron you are packaging for. Defaults to version of `electron`, `electron-prebuilt` or `electron-prebuilt-compile` dependency.", + "type": [ + "null", + "string" + ] + }, + "extends": { + "description": "The name of a built-in configuration preset (currently, only `react-cra` is supported) or any number of paths to config files (relative to project dir).\n\nThe latter allows to mixin a config from multiple other configs, as if you `Object.assign` them, but properly combine `files` glob patterns.\n\nIf `react-scripts` in the app dependencies, `react-cra` will be set automatically. Set to `null` to disable automatic detection.", + "anyOf": [ + { + "type": "array", + "items": { + "type": "string" + } }, - "mimeTypes": { - "anyOf": [ - { - "items": { - "type": "string" - }, - "type": "array" - }, - { - "type": "null" - } - ], - "description": "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." - }, - "publish": { - "anyOf": [ - { - "$ref": "#/definitions/GithubOptions" - }, - { - "$ref": "#/definitions/S3Options" - }, - { - "$ref": "#/definitions/SpacesOptions" - }, - { - "$ref": "#/definitions/GenericServerOptions" - }, - { - "$ref": "#/definitions/BintrayOptions" - }, - { - "$ref": "#/definitions/CustomPublishOptions" - }, - { - "$ref": "#/definitions/SnapStoreOptions" - }, - { - "items": { - "anyOf": [ - { - "$ref": "#/definitions/GithubOptions" - }, - { - "$ref": "#/definitions/S3Options" - }, - { - "$ref": "#/definitions/SpacesOptions" - }, - { - "$ref": "#/definitions/GenericServerOptions" - }, - { - "$ref": "#/definitions/BintrayOptions" - }, - { - "$ref": "#/definitions/CustomPublishOptions" - }, - { - "$ref": "#/definitions/SnapStoreOptions" - }, - { - "type": "string" - } - ] - }, - "type": "array" - }, - { - "type": [ - "null", - "string" - ] - } - ] - }, - "synopsis": { - "description": "The [short description](https://www.debian.org/doc/debian-policy/ch-controlfields.html#s-f-Description).", + { "type": [ "null", "string" ] } - }, - "type": "object" + ] + }, + "extraMetadata": { + "description": "Inject properties to `package.json`." + }, + "forceCodeSigning": { + "description": "Whether to fail if the application is not signed (to prevent unsigned app if code signing configuration is not correct).", + "default": false, + "type": "boolean" + }, + "nodeVersion": { + "description": "*libui-based frameworks only* The version of NodeJS you are packaging for.\nYou can set it to `current` to set the Node.js version that you use to run.", + "type": [ + "null", + "string" + ] + }, + "launchUiVersion": { + "description": "*libui-based frameworks only* The version of LaunchUI you are packaging for. Applicable for Windows only. Defaults to version suitable for used framework version.", + "type": [ + "null", + "string", + "boolean" + ] + }, + "framework": { + "description": "The framework name. One of `electron`, `proton`, `libui`. Defaults to `electron`.", + "type": [ + "null", + "string" + ] + }, + "afterPack": { + "description": "The function (or path to file or module id) to be [run after pack](#afterpack) (but before pack into distributable format and sign).", + "type": [ + "null", + "string", + "object" + ] + }, + "afterSign": { + "description": "The function (or path to file or module id) to be [run after pack and sign](#aftersign) (but before pack into distributable format).", + "type": [ + "null", + "string", + "object" + ] + }, + "artifactBuildStarted": { + "description": "The function (or path to file or module id) to be run on artifact build start.", + "type": [ + "null", + "string", + "object" + ] + }, + "artifactBuildCompleted": { + "description": "The function (or path to file or module id) to be run on artifact build completed.", + "type": [ + "null", + "string", + "object" + ] + }, + "afterAllArtifactBuild": { + "description": "The function (or path to file or module id) to be [run after all artifacts are build](#afterAllArtifactBuild).", + "type": [ + "null", + "string", + "object" + ] + }, + "msiProjectCreated": { + "description": "MSI project created on disk - not packed into .msi package yet.", + "type": [ + "null", + "string", + "object" + ] + }, + "appxManifestCreated": { + "description": "Appx manifest created on disk - not packed into .appx package yet.", + "type": [ + "null", + "string", + "object" + ] + }, + "onNodeModuleFile": { + "description": "The function (or path to file or module id) to be [run on each node module](#onnodemodulefile) file.", + "type": [ + "null", + "string", + "object" + ] }, - "AppXOptions": { - "additionalProperties": false, - "properties": { - "addAutoLaunchExtension": { - "description": "Whether to add auto launch extension. Defaults to `true` if [electron-winstore-auto-launch](https://github.com/felixrieseberg/electron-winstore-auto-launch) in the dependencies.", - "type": "boolean" - }, - "applicationId": { - "description": "The application id. Defaults to `identityName`. Can’t start with numbers.", - "type": "string" - }, - "artifactName": { - "description": "The [artifact file name template](/configuration/configuration#artifact-file-name-template).", - "type": [ - "null", - "string" - ] - }, - "backgroundColor": { - "default": "#464646", - "description": "The background color of the app tile. See [Visual Elements](https://msdn.microsoft.com/en-us/library/windows/apps/br211471.aspx).", - "type": [ - "null", - "string" - ] - }, - "customExtensionsPath": { - "description": "Relative path to custom extensions xml to be included in an `appmanifest.xml`.", + "beforeBuild": { + "description": "The function (or path to file or module id) to be run before dependencies are installed or rebuilt. Works when `npmRebuild` is set to `true`. Resolving to `false` will skip dependencies install or rebuild.\n\nIf provided and `node_modules` are missing, it will not invoke production dependencies check.", + "type": [ + "null", + "string", + "object" + ] + }, + "remoteBuild": { + "description": "Whether to build using Electron Build Service if target not supported on current OS.", + "default": true, + "type": "boolean" + }, + "includePdb": { + "description": "Whether to include PDB files.", + "default": false, + "type": "boolean" + }, + "removePackageScripts": { + "description": "Whether to remove `scripts` field from `package.json` files.", + "default": true, + "type": "boolean" + }, + "removePackageKeywords": { + "description": "Whether to remove `keywords` field from `package.json` files.", + "default": true, + "type": "boolean" + }, + "artifactName": { + "description": "The [artifact file name template](/configuration/configuration#artifact-file-name-template). Defaults to `${productName}-${version}.${ext}` (some target can have other defaults, see corresponding options).", + "type": [ + "null", + "string" + ] + }, + "executableName": { + "description": "The executable name. Defaults to `productName`.", + "type": [ + "null", + "string" + ] + }, + "compression": { + "description": "The compression level. If you want to rapidly test build, `store` can reduce build time significantly. `maximum` doesn't lead to noticeable size difference, but increase build time.", + "default": "normal", + "anyOf": [ + { + "enum": [ + "maximum", + "normal", + "store" + ], "type": "string" }, - "displayName": { - "description": "A friendly name that can be displayed to users. Corresponds to [Properties.DisplayName](https://msdn.microsoft.com/en-us/library/windows/apps/br211432.aspx).\nDefaults to the application product name.", - "type": [ - "null", - "string" - ] + { + "type": "null" + } + ] + }, + "files": { + "anyOf": [ + { + "$ref": "#/definitions/FileSet" }, - "electronUpdaterAware": { - "default": false, - "type": "boolean" + { + "type": "array", + "items": { + "anyOf": [ + { + "$ref": "#/definitions/FileSet" + }, + { + "type": "string" + } + ] + } }, - "identityName": { - "description": "The name. Corresponds to [Identity.Name](https://msdn.microsoft.com/en-us/library/windows/apps/br211441.aspx). Defaults to the [application name](/configuration/configuration#Metadata-name).", + { "type": [ "null", "string" ] + } + ] + }, + "extraResources": { + "anyOf": [ + { + "$ref": "#/definitions/FileSet" }, - "languages": { - "anyOf": [ - { - "items": { - "type": "string" + { + "type": "array", + "items": { + "anyOf": [ + { + "$ref": "#/definitions/FileSet" }, - "type": "array" - }, - { - "type": [ - "null", - "string" - ] - } - ], - "description": "The list of [supported languages](https://docs.microsoft.com/en-us/windows/uwp/globalizing/manage-language-and-region#specify-the-supported-languages-in-the-apps-manifest) that will be listed in the Windows Store.\nThe first entry (index 0) will be the default language.\nDefaults to en-US if omitted." - }, - "makeappxArgs": { - "anyOf": [ - { - "items": { + { "type": "string" - }, - "type": "array" - }, - { - "type": "null" - } - ] - }, - "publish": { - "anyOf": [ - { - "$ref": "#/definitions/GithubOptions" - }, - { - "$ref": "#/definitions/S3Options" - }, - { - "$ref": "#/definitions/SpacesOptions" - }, - { - "$ref": "#/definitions/GenericServerOptions" - }, - { - "$ref": "#/definitions/BintrayOptions" - }, - { - "$ref": "#/definitions/CustomPublishOptions" - }, - { - "$ref": "#/definitions/SnapStoreOptions" - }, - { - "items": { - "anyOf": [ - { - "$ref": "#/definitions/GithubOptions" - }, - { - "$ref": "#/definitions/S3Options" - }, - { - "$ref": "#/definitions/SpacesOptions" - }, - { - "$ref": "#/definitions/GenericServerOptions" - }, - { - "$ref": "#/definitions/BintrayOptions" - }, - { - "$ref": "#/definitions/CustomPublishOptions" - }, - { - "$ref": "#/definitions/SnapStoreOptions" - }, - { - "type": "string" - } - ] - }, - "type": "array" - }, - { - "type": [ - "null", - "string" - ] - } - ] - }, - "publisher": { - "description": "The Windows Store publisher. Not used if AppX is build for testing. See [AppX Package Code Signing](#appx-package-code-signing) below.", - "type": [ - "null", - "string" - ] + } + ] + } }, - "publisherDisplayName": { - "description": "A friendly name for the publisher that can be displayed to users. Corresponds to [Properties.PublisherDisplayName](https://msdn.microsoft.com/en-us/library/windows/apps/br211460.aspx).\nDefaults to company name from the application metadata.", + { "type": [ "null", "string" ] - }, - "setBuildNumber": { - "default": false, - "description": "Whether to set build number. See https://github.com/electron-userland/electron-builder/issues/3875", - "type": "boolean" - }, - "showNameOnTiles": { - "default": false, - "description": "Whether to overlay the app's name on top of tile images on the Start screen. Defaults to `false`. (https://docs.microsoft.com/en-us/uwp/schemas/appxpackage/uapmanifestschema/element-uap-shownameontiles) in the dependencies.", - "type": "boolean" } - }, - "type": "object" + ] }, - "AsarOptions": { - "additionalProperties": false, - "properties": { - "externalAllowed": { - "default": false, - "description": "Allows external asar files.", - "type": "boolean" + "extraFiles": { + "anyOf": [ + { + "$ref": "#/definitions/FileSet" + }, + { + "type": "array", + "items": { + "anyOf": [ + { + "$ref": "#/definitions/FileSet" + }, + { + "type": "string" + } + ] + } }, - "ordering": { + { "type": [ "null", "string" ] - }, - "smartUnpack": { - "default": true, - "description": "Whether to automatically unpack executables files.", - "type": "boolean" } - }, - "type": "object" + ] }, - "BintrayOptions": { - "additionalProperties": false, - "description": "[Bintray](https://bintray.com/) options. Requires an API key. An API key can be obtained from the user [profile](https://bintray.com/profile/edit) page (\"Edit Your Profile\" -> API Key).\nDefine `BT_TOKEN` environment variable.", - "properties": { - "component": { - "description": "The Bintray component (Debian only).", - "type": [ - "null", - "string" - ] + "asar": { + "description": "Whether to package the application's source code into an archive, using [Electron's archive format](http://electron.atom.io/docs/tutorial/application-packaging/).\n\nNode modules, that must be unpacked, will be detected automatically, you don't need to explicitly set [asarUnpack](#configuration-asarUnpack) - please file an issue if this doesn't work.", + "default": true, + "anyOf": [ + { + "$ref": "#/definitions/AsarOptions" }, - "distribution": { - "default": "stable", - "description": "The Bintray distribution (Debian only).", + { "type": [ "null", - "string" + "boolean" ] + } + ] + }, + "asarUnpack": { + "description": "A [glob patterns](/file-patterns) relative to the [app directory](#MetadataDirectories-app), which specifies which files to unpack when creating the [asar](http://electron.atom.io/docs/tutorial/application-packaging/) archive.", + "anyOf": [ + { + "type": "array", + "items": { + "type": "string" + } }, - "owner": { - "description": "The owner.", + { "type": [ "null", "string" ] + } + ] + }, + "icon": { + "type": [ + "null", + "string" + ] + }, + "fileAssociations": { + "description": "The file associations.", + "anyOf": [ + { + "$ref": "#/definitions/FileAssociation" }, - "package": { - "description": "The Bintray package name.", - "type": [ - "null", - "string" - ] + { + "type": "array", + "items": { + "$ref": "#/definitions/FileAssociation" + } + } + ] + }, + "protocols": { + "description": "The URL protocol schemes.", + "anyOf": [ + { + "$ref": "#/definitions/Protocol" }, - "provider": { - "description": "The provider. Must be `bintray`.", - "enum": [ - "bintray" - ], - "type": "string" + { + "type": "array", + "items": { + "$ref": "#/definitions/Protocol" + } + } + ] + }, + "electronUpdaterCompatibility": { + "description": "The [electron-updater compatibility](/auto-update#compatibility) semver range.", + "type": [ + "null", + "string" + ] + }, + "publish": { + "anyOf": [ + { + "$ref": "#/definitions/GithubOptions" }, - "publishAutoUpdate": { - "default": true, - "description": "Whether to publish auto update info files.\n\nAuto update relies only on the first provider in the list (you can specify several publishers).\nThus, probably, there`s no need to upload the metadata files for the other configured providers. But by default will be uploaded.", - "type": "boolean" + { + "$ref": "#/definitions/S3Options" }, - "publisherName": { - "anyOf": [ - { - "items": { - "type": "string" - }, - "type": "array" - }, - { - "type": "null" - } - ] + { + "$ref": "#/definitions/SpacesOptions" }, - "repo": { - "default": "generic", - "description": "The Bintray repository name.", - "type": [ - "null", - "string" - ] + { + "$ref": "#/definitions/GenericServerOptions" }, - "requestHeaders": { - "$ref": "#/definitions/OutgoingHttpHeaders", - "description": "Any custom request headers" + { + "$ref": "#/definitions/BintrayOptions" }, - "token": { - "type": [ - "null", - "string" - ] + { + "$ref": "#/definitions/CustomPublishOptions" }, - "updaterCacheDirName": { - "type": [ - "null", - "string" - ] + { + "$ref": "#/definitions/KeygenOptions" }, - "user": { - "description": "The Bintray user account. Used in cases where the owner is an organization.", + { + "$ref": "#/definitions/SnapStoreOptions" + }, + { + "type": "array", + "items": { + "anyOf": [ + { + "$ref": "#/definitions/GithubOptions" + }, + { + "$ref": "#/definitions/S3Options" + }, + { + "$ref": "#/definitions/SpacesOptions" + }, + { + "$ref": "#/definitions/GenericServerOptions" + }, + { + "$ref": "#/definitions/BintrayOptions" + }, + { + "$ref": "#/definitions/CustomPublishOptions" + }, + { + "$ref": "#/definitions/KeygenOptions" + }, + { + "$ref": "#/definitions/SnapStoreOptions" + }, + { + "type": "string" + } + ] + } + }, + { "type": [ "null", "string" ] } - }, - "required": [ - "provider" - ], - "type": "object" + ] }, - "CustomPublishOptions": { - "additionalProperties": {}, - "properties": { - "provider": { - "$ref": "#/definitions/PublishProvider", - "description": "The provider." - }, - "publishAutoUpdate": { - "default": true, - "description": "Whether to publish auto update info files.\n\nAuto update relies only on the first provider in the list (you can specify several publishers).\nThus, probably, there`s no need to upload the metadata files for the other configured providers. But by default will be uploaded.", - "type": "boolean" + "detectUpdateChannel": { + "description": "Whether to infer update channel from application version pre-release components. e.g. if version `0.12.1-alpha.1`, channel will be set to `alpha`. Otherwise to `latest`.", + "default": true, + "type": "boolean" + }, + "generateUpdatesFilesForAllChannels": { + "description": "Please see [Building and Releasing using Channels](https://github.com/electron-userland/electron-builder/issues/1182#issuecomment-324947139).", + "default": false, + "type": "boolean" + }, + "releaseInfo": { + "description": "The release info. Intended for command line usage:\n\n```\n-c.releaseInfo.releaseNotes=\"new features\"\n```", + "$ref": "#/definitions/ReleaseInfo" + }, + "target": { + "anyOf": [ + { + "$ref": "#/definitions/TargetConfiguration" }, - "publisherName": { - "anyOf": [ - { - "items": { - "type": "string" + { + "type": "array", + "items": { + "anyOf": [ + { + "$ref": "#/definitions/TargetConfiguration" }, - "type": "array" - }, - { - "type": "null" - } - ] - }, - "requestHeaders": { - "$ref": "#/definitions/OutgoingHttpHeaders", - "description": "Any custom request headers" + { + "type": "string" + } + ] + } }, - "updaterCacheDirName": { + { "type": [ "null", "string" ] } - }, - "required": [ - "provider" - ], - "type": "object" + ] }, - "DebOptions": { - "additionalProperties": false, + "cscLink": { + "type": [ + "null", + "string" + ] + }, + "cscKeyPassword": { + "type": [ + "null", + "string" + ] + }, + "defaultArch": { + "type": "string" + } + }, + "definitions": { + "MetadataDirectories": { + "type": "object", "properties": { - "afterInstall": { + "buildResources": { + "description": "The path to build resources.\n\nPlease note — build resources are not packed into the app. If you need to use some files, e.g. as tray icon, please include required files explicitly: `\"files\": [\"**\\/*\", \"build/icon.*\"]`", + "default": "build", "type": [ "null", "string" ] }, - "afterRemove": { + "output": { + "description": "The output directory. [File macros](/file-patterns#file-macros) are supported.", + "default": "dist", "type": [ "null", "string" ] }, - "artifactName": { - "description": "The [artifact file name template](/configuration/configuration#artifact-file-name-template).", + "app": { + "description": "The application directory (containing the application package.json), defaults to `app`, `www` or working directory.", "type": [ "null", "string" ] - }, + } + } + }, + "MacConfiguration": { + "type": "object", + "properties": { "category": { - "description": "The [application category](https://specifications.freedesktop.org/menu-spec/latest/apa.html#main-category-registry).", + "description": "The application category type, as shown in the Finder via *View -> Arrange by Application Category* when viewing the Applications directory.\n\nFor example, `\"category\": \"public.app-category.developer-tools\"` will set the application category to *Developer Tools*.\n\nValid values are listed in [Apple's documentation](https://developer.apple.com/library/ios/documentation/General/Reference/InfoPlistKeyReference/Articles/LaunchServicesKeys.html#//apple_ref/doc/uid/TP40009250-SW8).", "type": [ "null", "string" ] }, - "compression": { + "target": { + "description": "The target package type: list of `default`, `dmg`, `mas`, `mas-dev`, `pkg`, `7z`, `zip`, `tar.xz`, `tar.lz`, `tar.gz`, `tar.bz2`, `dir`. Defaults to `default` (dmg and zip for Squirrel.Mac).", "anyOf": [ { - "enum": [ - "bzip2", - "gz", - "xz" - ], - "type": "string" + "$ref": "#/definitions/TargetConfiguration" }, { - "type": "null" - } - ], - "default": "xz", - "description": "The compression type." - }, - "depends": { - "anyOf": [ - { + "type": "array", "items": { - "type": "string" - }, - "type": "array" + "anyOf": [ + { + "$ref": "#/definitions/TargetConfiguration" + }, + { + "enum": [ + "7z", + "default", + "dir", + "dmg", + "mas", + "mas-dev", + "pkg", + "tar.bz2", + "tar.gz", + "tar.lz", + "tar.xz", + "zip" + ], + "type": "string" + } + ] + } + }, + { + "enum": [ + "7z", + "default", + "dir", + "dmg", + "mas", + "mas-dev", + "pkg", + "tar.bz2", + "tar.gz", + "tar.lz", + "tar.xz", + "zip" + ], + "type": "string" }, { "type": "null" } - ], - "description": "Package dependencies. Defaults to `[\"gconf2\", \"gconf-service\", \"libnotify4\", \"libappindicator1\", \"libxtst6\", \"libnss3\"]`." + ] }, - "description": { - "description": "As [description](/configuration/configuration#Metadata-description) from application package.json, but allows you to specify different for Linux.", + "identity": { + "description": "The name of certificate to use when signing. Consider using environment variables [CSC_LINK or CSC_NAME](/code-signing) instead of specifying this option.\nMAS installer identity is specified in the [mas](/configuration/mas).", "type": [ "null", "string" ] }, - "desktop": { - "description": "The [Desktop file](https://developer.gnome.org/integration-guide/stable/desktop-files.html.en) entries (name to value)." - }, - "executableArgs": { - "anyOf": [ - { - "items": { - "type": "string" - }, - "type": "array" - }, - { - "type": "null" - } - ], - "description": "The executable parameters. Pass to executableName" - }, - "fpm": { - "anyOf": [ - { - "items": { - "type": "string" - }, - "type": "array" - }, - { - "type": "null" - } - ], - "description": "*Advanced only* The [fpm](https://github.com/jordansissel/fpm/wiki#usage) options.\n\nExample: `[\"--before-install=build/deb-preinstall.sh\", \"--after-upgrade=build/deb-postinstall.sh\"]`" - }, "icon": { - "type": "string" - }, - "maintainer": { + "description": "The path to application icon.", + "default": "build/icon.icns", "type": [ "null", "string" ] }, - "mimeTypes": { - "anyOf": [ - { - "items": { - "type": "string" - }, - "type": "array" - }, - { - "type": "null" - } - ], - "description": "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." - }, - "packageCategory": { - "description": "The [package category](https://www.debian.org/doc/debian-policy/ch-controlfields.html#s-f-Section).", + "entitlements": { + "description": "The path to entitlements file for signing the app. `build/entitlements.mac.plist` will be used if exists (it is a recommended way to set).\nMAS entitlements is specified in the [mas](/configuration/mas).", "type": [ "null", "string" ] }, - "packageName": { - "description": "The name of the package.", + "entitlementsInherit": { + "description": "The path to child entitlements which inherit the security settings for signing frameworks and bundles of a distribution. `build/entitlements.mac.inherit.plist` will be used if exists (it is a recommended way to set).\nOtherwise [default](https://github.com/electron-userland/electron-osx-sign/blob/master/default.entitlements.darwin.inherit.plist).\n\nThis option only applies when signing with `entitlements` provided.", "type": [ "null", "string" ] }, - "priority": { - "description": "The [Priority](https://www.debian.org/doc/debian-policy/ch-controlfields.html#s-f-Priority) attribute.", + "entitlementsLoginHelper": { + "description": "Path to login helper entitlement file.\nWhen using App Sandbox, the the `com.apple.security.inherit` key that is normally in the inherited entitlements cannot be inherited since the login helper is a standalone executable.\nDefaults to the value provided for `entitlements`. This option only applies when signing with `entitlements` provided.", "type": [ "null", "string" ] }, - "publish": { - "anyOf": [ - { - "$ref": "#/definitions/GithubOptions" - }, - { - "$ref": "#/definitions/S3Options" - }, - { - "$ref": "#/definitions/SpacesOptions" - }, - { - "$ref": "#/definitions/GenericServerOptions" - }, - { - "$ref": "#/definitions/BintrayOptions" - }, - { - "$ref": "#/definitions/CustomPublishOptions" - }, - { - "$ref": "#/definitions/SnapStoreOptions" - }, - { - "items": { - "anyOf": [ - { - "$ref": "#/definitions/GithubOptions" - }, - { - "$ref": "#/definitions/S3Options" - }, - { - "$ref": "#/definitions/SpacesOptions" - }, - { - "$ref": "#/definitions/GenericServerOptions" - }, - { - "$ref": "#/definitions/BintrayOptions" - }, - { - "$ref": "#/definitions/CustomPublishOptions" - }, - { - "$ref": "#/definitions/SnapStoreOptions" - }, - { - "type": "string" - } - ] - }, - "type": "array" - }, - { - "type": [ - "null", - "string" - ] - } + "provisioningProfile": { + "description": "The path to the provisioning profile to use when signing, absolute or relative to the app root.", + "type": [ + "null", + "string" ] }, - "synopsis": { - "description": "The [short description](https://www.debian.org/doc/debian-policy/ch-controlfields.html#s-f-Description).", + "bundleVersion": { + "description": "The `CFBundleVersion`. Do not use it unless [you need to](https://github.com/electron-userland/electron-builder/issues/565#issuecomment-230678643).", "type": [ "null", "string" ] }, - "vendor": { + "bundleShortVersion": { + "description": "The `CFBundleShortVersionString`. Do not use it unless you need to.", "type": [ "null", "string" ] - } - }, - "type": "object" - }, - "DmgContent": { - "additionalProperties": false, - "properties": { - "name": { - "description": "The name of the file within the DMG. Defaults to basename of `path`.", - "type": "string" - }, - "path": { - "description": "The path of the file within the DMG.", - "type": "string" - }, - "type": { - "enum": [ - "dir", - "file", - "link" - ], - "type": "string" - }, - "x": { - "description": "The device-independent pixel offset from the left of the window to the **center** of the icon.", - "type": "number" - }, - "y": { - "description": "The device-independent pixel offset from the top of the window to the **center** of the icon.", - "type": "number" - } - }, - "required": [ - "x", - "y" - ], - "type": "object" - }, - "DmgOptions": { - "additionalProperties": false, - "properties": { - "artifactName": { - "description": "The [artifact file name template](/configuration/configuration#artifact-file-name-template).", + }, + "darkModeSupport": { + "description": "Whether a dark mode is supported. If your app does have a dark mode, you can make your app follow the system-wide dark mode setting.", + "default": false, + "type": "boolean" + }, + "helperBundleId": { + "description": "The bundle identifier to use in the application helper's plist.", + "default": "${appBundleIdentifier}.helper", "type": [ "null", "string" ] }, - "background": { - "description": "The path to background image (default: `build/background.tiff` or `build/background.png` if exists). The resolution of this file determines the resolution of the installer window.\nIf background is not specified, use `window.size`. Default locations expected background size to be 540x380.", + "helperRendererBundleId": { + "description": "The bundle identifier to use in the Renderer helper's plist.", + "default": "${appBundleIdentifier}.helper.Renderer", "type": [ "null", "string" ] }, - "backgroundColor": { - "description": "The background color (accepts css colors). Defaults to `#ffffff` (white) if no background image.", + "helperPluginBundleId": { + "description": "The bundle identifier to use in the Plugin helper's plist.", + "default": "${appBundleIdentifier}.helper.Plugin", "type": [ "null", "string" ] }, - "contents": { - "description": "The content — to customize icon locations. The x and y coordinates refer to the position of the **center** of the icon (at 1x scale), and do not take the label into account.", - "items": { - "$ref": "#/definitions/DmgContent" - }, - "type": "array" - }, - "format": { - "default": "UDZO", - "description": "The disk image format. `ULFO` (lzfse-compressed image (OS X 10.11+ only)).", - "enum": [ - "UDBZ", - "UDCO", - "UDRO", - "UDRW", - "UDZO", - "ULFO" - ], - "type": "string" - }, - "icon": { - "description": "The path to DMG icon (volume icon), which will be shown when mounted, relative to the [build resources](/configuration/configuration#MetadataDirectories-buildResources) or to the project directory.\nDefaults to the application icon (`build/icon.icns`).", + "helperGPUBundleId": { + "description": "The bundle identifier to use in the GPU helper's plist.", + "default": "${appBundleIdentifier}.helper.GPU", "type": [ "null", "string" ] }, - "iconSize": { - "default": 80, - "description": "The size of all the icons inside the DMG.", + "helperEHBundleId": { + "description": "The bundle identifier to use in the EH helper's plist.", + "default": "${appBundleIdentifier}.helper.EH", "type": [ "null", - "number" + "string" ] }, - "iconTextSize": { - "default": 12, - "description": "The size of all the icon texts inside the DMG.", + "helperNPBundleId": { + "description": "The bundle identifier to use in the NP helper's plist.", + "default": "${appBundleIdentifier}.helper.NP", "type": [ "null", - "number" + "string" ] }, - "internetEnabled": { - "default": false, - "description": "Whether to create internet-enabled disk image (when it is downloaded using a browser it will automatically decompress the image, put the application on the desktop, unmount and remove the disk image file).", - "type": "boolean" - }, - "publish": { + "type": { + "description": "Whether to sign app for development or for distribution.", + "default": "distribution", "anyOf": [ { - "$ref": "#/definitions/GithubOptions" - }, - { - "$ref": "#/definitions/S3Options" - }, - { - "$ref": "#/definitions/SpacesOptions" - }, - { - "$ref": "#/definitions/GenericServerOptions" - }, - { - "$ref": "#/definitions/BintrayOptions" - }, - { - "$ref": "#/definitions/CustomPublishOptions" + "enum": [ + "development", + "distribution" + ], + "type": "string" }, { - "$ref": "#/definitions/SnapStoreOptions" - }, + "type": "null" + } + ] + }, + "extendInfo": { + "description": "The extra entries for `Info.plist`." + }, + "binaries": { + "description": "Paths of any extra binaries that need to be signed.", + "anyOf": [ { + "type": "array", "items": { - "anyOf": [ - { - "$ref": "#/definitions/GithubOptions" - }, - { - "$ref": "#/definitions/S3Options" - }, - { - "$ref": "#/definitions/SpacesOptions" - }, - { - "$ref": "#/definitions/GenericServerOptions" - }, - { - "$ref": "#/definitions/BintrayOptions" - }, - { - "$ref": "#/definitions/CustomPublishOptions" - }, - { - "$ref": "#/definitions/SnapStoreOptions" - }, - { - "type": "string" - } - ] - }, - "type": "array" + "type": "string" + } }, { - "type": [ - "null", - "string" - ] + "type": "null" } ] }, - "sign": { - "default": false, - "description": "Whether to sign the DMG or not. Signing is not required and will lead to unwanted errors in combination with notarization requirements.", - "type": "boolean" - }, - "title": { - "default": "${productName} ${version}", - "description": "The title of the produced DMG, which will be shown when mounted (volume name).\n\nMacro `${productName}`, `${version}` and `${name}` are supported.", + "minimumSystemVersion": { + "description": "The minimum version of macOS required for the app to run. Corresponds to `LSMinimumSystemVersion`.", "type": [ "null", "string" ] }, - "window": { - "$ref": "#/definitions/DmgWindow", - "description": "The DMG window position and size. With y co-ordinates running from bottom to top.\n\nThe Finder makes sure that the window will be on the user’s display, so if you want your window at the top left of the display you could use `\"x\": 0, \"y\": 100000` as the x, y co-ordinates.\nIt is not to be possible to position the window relative to the [top left](https://github.com/electron-userland/electron-builder/issues/3990#issuecomment-512960957) or relative to the center of the user’s screen." - }, - "writeUpdateInfo": { - "default": true, - "type": "boolean" - } - }, - "type": "object" - }, - "DmgWindow": { - "additionalProperties": false, - "properties": { - "height": { - "description": "The height. Defaults to background image height or 380.", - "type": "number" - }, - "width": { - "description": "The width. Defaults to background image width or 540.", - "type": "number" - }, - "x": { - "default": 400, - "description": "The X position relative to left of the screen.", - "type": "number" - }, - "y": { - "default": 100, - "description": "The Y position relative to bottom of the screen.", - "type": "number" - } - }, - "type": "object" - }, - "ElectronBrandingOptions": { - "additionalProperties": false, - "properties": { - "projectName": { - "type": "string" - }, - "productName": { - "type": "string" - } - }, - "type": "object" - }, - "ElectronDownloadOptions": { - "additionalProperties": false, - "properties": { - "arch": { - "type": "string" - }, - "cache": { - "description": "The [cache location](https://github.com/electron-userland/electron-download#cache-location).", + "requirements": { + "description": "Path of [requirements file](https://developer.apple.com/library/mac/documentation/Security/Conceptual/CodeSigningGuide/RequirementLang/RequirementLang.html) used in signing. Not applicable for MAS.", "type": [ "null", "string" ] }, - "customDir": { - "type": [ - "null", - "string" + "electronLanguages": { + "description": "The electron locales. By default Electron locales used as is.", + "anyOf": [ + { + "type": "array", + "items": { + "type": "string" + } + }, + { + "type": "string" + } ] }, - "customFilename": { + "cscInstallerLink": { "type": [ "null", "string" ] }, - "isVerifyChecksum": { - "type": "boolean" - }, - "mirror": { - "description": "The mirror.", + "cscInstallerKeyPassword": { "type": [ "null", "string" ] }, - "platform": { - "enum": [ - "darwin", - "linux", - "mas", - "win32" - ], - "type": "string" - }, - "strictSSL": { - "type": "boolean" + "extraDistFiles": { + "description": "Extra files to put in archive. Not applicable for `tar.*`.", + "anyOf": [ + { + "type": "array", + "items": { + "type": "string" + } + }, + { + "type": [ + "null", + "string" + ] + } + ] }, - "version": { - "type": "string" - } - }, - "type": "object" - }, - "FileAssociation": { - "additionalProperties": false, - "description": "File associations.\n\nmacOS (corresponds to [CFBundleDocumentTypes](https://developer.apple.com/library/content/documentation/General/Reference/InfoPlistKeyReference/Articles/CoreFoundationKeys.html#//apple_ref/doc/uid/20001431-101685)) and NSIS only.\n\nOn Windows works only if [nsis.perMachine](https://electron.build/configuration/configuration#NsisOptions-perMachine) is set to `true`.", - "properties": { - "description": { - "description": "*windows-only.* The description.", - "type": [ - "null", - "string" + "hardenedRuntime": { + "description": "Whether your app has to be signed with hardened runtime.", + "default": true, + "type": "boolean" + }, + "gatekeeperAssess": { + "description": "Whether to let electron-osx-sign validate the signing or not.", + "default": false, + "type": "boolean" + }, + "strictVerify": { + "description": "Whether to let electron-osx-sign verify the contents or not.", + "default": true, + "anyOf": [ + { + "type": "array", + "items": { + "type": "string" + } + }, + { + "type": [ + "string", + "boolean" + ] + } ] }, - "ext": { + "signIgnore": { + "description": "Regex or an array of regex's that signal skipping signing a file.", "anyOf": [ { + "type": "array", "items": { "type": "string" - }, - "type": "array" + } }, { - "type": "string" + "type": [ + "null", + "string" + ] } - ], - "description": "The extension (minus the leading period). e.g. `png`." + ] }, - "icon": { - "description": "The path to icon (`.icns` for MacOS and `.ico` for Windows), relative to `build` (build resources directory). Defaults to `${firstExt}.icns`/`${firstExt}.ico` (if several extensions specified, first is used) or to application icon.\n\nNot supported on Linux, file issue if need (default icon will be `x-office-document`).", + "timestamp": { + "description": "Specify the URL of the timestamp authority server", "type": [ "null", "string" ] }, - "isPackage": { - "description": "*macOS-only* Whether the document is distributed as a bundle. If set to true, the bundle directory is treated as a file. Corresponds to `LSTypeIsPackage`.", - "type": "boolean" + "appId": { + "description": "The application id. Used as [CFBundleIdentifier](https://developer.apple.com/library/ios/documentation/General/Reference/InfoPlistKeyReference/Articles/CoreFoundationKeys.html#//apple_ref/doc/uid/20001431-102070) for MacOS and as\n[Application User Model ID](https://msdn.microsoft.com/en-us/library/windows/desktop/dd378459(v=vs.85).aspx) for Windows (NSIS target only, Squirrel.Windows not supported). It is strongly recommended that an explicit ID is set.", + "default": "com.electron.${name}", + "type": [ + "null", + "string" + ] }, - "mimeType": { - "description": "*linux-only.* The mime-type.", + "artifactName": { + "description": "The [artifact file name template](/configuration/configuration#artifact-file-name-template). Defaults to `${productName}-${version}.${ext}` (some target can have other defaults, see corresponding options).", "type": [ "null", "string" ] }, - "name": { - "description": "The name. e.g. `PNG`. Defaults to `ext`.", + "executableName": { + "description": "The executable name. Defaults to `productName`.", "type": [ "null", "string" ] }, - "rank": { - "default": "Default", - "description": "*macOS-only* The app’s rank with respect to the type. The value can be `Owner`, `Default`, `Alternate`, or `None`. Corresponds to `LSHandlerRank`.", - "type": "string" + "compression": { + "description": "The compression level. If you want to rapidly test build, `store` can reduce build time significantly. `maximum` doesn't lead to noticeable size difference, but increase build time.", + "default": "normal", + "anyOf": [ + { + "enum": [ + "maximum", + "normal", + "store" + ], + "type": "string" + }, + { + "type": "null" + } + ] }, - "role": { - "default": "Editor", - "description": "*macOS-only* The app’s role with respect to the type. The value can be `Editor`, `Viewer`, `Shell`, or `None`. Corresponds to `CFBundleTypeRole`.", - "type": "string" - } - }, - "required": [ - "ext" - ], - "type": "object" - }, - "FileSet": { - "additionalProperties": false, - "properties": { - "filter": { + "files": { "anyOf": [ { + "$ref": "#/definitions/FileSet" + }, + { + "type": "array", "items": { - "type": "string" - }, - "type": "array" + "anyOf": [ + { + "$ref": "#/definitions/FileSet" + }, + { + "type": "string" + } + ] + } }, { - "type": "string" + "type": [ + "null", + "string" + ] } - ], - "description": "The [glob patterns](/file-patterns)." - }, - "from": { - "description": "The source path relative to the project directory.", - "type": "string" - }, - "to": { - "description": "The destination path relative to the app's content directory for `extraFiles` and the app's resource directory for `extraResources`.", - "type": "string" - } - }, - "type": "object" - }, - "FlatpakOptions": { - "additionalProperties": false, - "properties": { - "artifactName": { - "description": "The [artifact file name template](/configuration/configuration#artifact-file-name-template).", - "type": [ - "null", - "string" ] }, - "base": { - "description": "Start with the files from the specified application. This can be used to create applications that extend another application.\nDefaults to [org.electronjs.Electron2.BaseApp](https://github.com/flathub/org.electronjs.Electron2.BaseApp).\n\nSee [flatpak manifest documentation](https://docs.flatpak.org/en/latest/flatpak-builder-command-reference.html#flatpak-manifest).", - "type": "string" - }, - "baseVersion": { - "description": "Use this specific version of the application specified in base. Defaults to `20.08`.\n\nSee [flatpak manifest documentation](https://docs.flatpak.org/en/latest/flatpak-builder-command-reference.html#flatpak-manifest).", - "type": "string" - }, - "branch": { - "description": "The branch to use when exporting the application. Defaults to `master`.\n\nSee [flatpak manifest documentation](https://docs.flatpak.org/en/latest/flatpak-builder-command-reference.html#flatpak-manifest).", - "type": "string" - }, - "category": { - "description": "The [application category](https://specifications.freedesktop.org/menu-spec/latest/apa.html#main-category-registry).", - "type": [ - "null", - "string" + "extraResources": { + "anyOf": [ + { + "$ref": "#/definitions/FileSet" + }, + { + "type": "array", + "items": { + "anyOf": [ + { + "$ref": "#/definitions/FileSet" + }, + { + "type": "string" + } + ] + } + }, + { + "type": [ + "null", + "string" + ] + } ] }, - "description": { - "description": "As [description](/configuration/configuration#Metadata-description) from application package.json, but allows you to specify different for Linux.", - "type": [ - "null", - "string" + "extraFiles": { + "anyOf": [ + { + "$ref": "#/definitions/FileSet" + }, + { + "type": "array", + "items": { + "anyOf": [ + { + "$ref": "#/definitions/FileSet" + }, + { + "type": "string" + } + ] + } + }, + { + "type": [ + "null", + "string" + ] + } ] }, - "desktop": { - "description": "The [Desktop file](https://developer.gnome.org/integration-guide/stable/desktop-files.html.en) entries (name to value)." - }, - "executableArgs": { + "asar": { + "description": "Whether to package the application's source code into an archive, using [Electron's archive format](http://electron.atom.io/docs/tutorial/application-packaging/).\n\nNode modules, that must be unpacked, will be detected automatically, you don't need to explicitly set [asarUnpack](#configuration-asarUnpack) - please file an issue if this doesn't work.", + "default": true, "anyOf": [ { - "items": { - "type": "string" - }, - "type": "array" + "$ref": "#/definitions/AsarOptions" }, { - "type": "null" + "type": [ + "null", + "boolean" + ] } - ], - "description": "The executable parameters. Pass to executableName" + ] }, - "files": { - "description": "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\nSee [@malept/flatpak-bundler documentation](https://github.com/malept/flatpak-bundler#build-options).", - "items": { - "items": [ - { - "type": "string" - }, - { + "asarUnpack": { + "description": "A [glob patterns](/file-patterns) relative to the [app directory](#MetadataDirectories-app), which specifies which files to unpack when creating the [asar](http://electron.atom.io/docs/tutorial/application-packaging/) archive.", + "anyOf": [ + { + "type": "array", + "items": { "type": "string" } - ], - "maxItems": 2, - "minItems": 2, - "type": "array" - }, - "type": "array" - }, - "finishArgs": { - "description": "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\nSee [flatpak manifest documentation](https://docs.flatpak.org/en/latest/flatpak-builder-command-reference.html#flatpak-manifest).", - "items": { - "type": "string" - }, - "type": "array" + }, + { + "type": [ + "null", + "string" + ] + } + ] }, - "license": { - "description": "The path to EULA license file. Defaults to `license.txt` or `eula.txt` (or uppercase variants). Only plain text is supported.", - "type": [ - "null", - "string" + "fileAssociations": { + "description": "The file associations.", + "anyOf": [ + { + "$ref": "#/definitions/FileAssociation" + }, + { + "type": "array", + "items": { + "$ref": "#/definitions/FileAssociation" + } + } ] }, - "mimeTypes": { + "protocols": { + "description": "The URL protocol schemes.", "anyOf": [ { - "items": { - "type": "string" - }, - "type": "array" + "$ref": "#/definitions/Protocol" }, { - "type": "null" + "type": "array", + "items": { + "$ref": "#/definitions/Protocol" + } } - ], - "description": "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." + ] }, - "modules": { - "description": "An array of objects specifying the modules to be built in order.\n\nSee [flatpak manifest documentation](https://docs.flatpak.org/en/latest/flatpak-builder-command-reference.html#flatpak-manifest).", - "items": {}, - "type": "array" + "forceCodeSigning": { + "description": "Whether to fail if app will be not code signed.", + "type": "boolean" + }, + "electronUpdaterCompatibility": { + "description": "The [electron-updater compatibility](/auto-update#compatibility) semver range.", + "type": [ + "null", + "string" + ] }, "publish": { "anyOf": [ @@ -1179,10 +1335,14 @@ { "$ref": "#/definitions/CustomPublishOptions" }, + { + "$ref": "#/definitions/KeygenOptions" + }, { "$ref": "#/definitions/SnapStoreOptions" }, { + "type": "array", "items": { "anyOf": [ { @@ -1203,6 +1363,9 @@ { "$ref": "#/definitions/CustomPublishOptions" }, + { + "$ref": "#/definitions/KeygenOptions" + }, { "$ref": "#/definitions/SnapStoreOptions" }, @@ -1210,8 +1373,7 @@ "type": "string" } ] - }, - "type": "array" + } }, { "type": [ @@ -1221,896 +1383,1056 @@ } ] }, - "runtime": { - "description": "The name of the runtime that the application uses. Defaults to `org.freedesktop.Platform`.\n\nSee [flatpak manifest documentation](https://docs.flatpak.org/en/latest/flatpak-builder-command-reference.html#flatpak-manifest).", + "detectUpdateChannel": { + "description": "Whether to infer update channel from application version pre-release components. e.g. if version `0.12.1-alpha.1`, channel will be set to `alpha`. Otherwise to `latest`.", + "default": true, + "type": "boolean" + }, + "generateUpdatesFilesForAllChannels": { + "description": "Please see [Building and Releasing using Channels](https://github.com/electron-userland/electron-builder/issues/1182#issuecomment-324947139).", + "default": false, + "type": "boolean" + }, + "releaseInfo": { + "description": "The release info. Intended for command line usage:\n\n```\n-c.releaseInfo.releaseNotes=\"new features\"\n```", + "$ref": "#/definitions/ReleaseInfo" + }, + "cscLink": { + "type": [ + "null", + "string" + ] + }, + "cscKeyPassword": { + "type": [ + "null", + "string" + ] + }, + "defaultArch": { + "type": "string" + } + } + }, + "TargetConfiguration": { + "type": "object", + "properties": { + "target": { + "description": "The target name. e.g. `snap`.", "type": "string" }, - "runtimeVersion": { - "description": "The version of the runtime that the application uses. Defaults to `20.08`.\n\nSee [flatpak manifest documentation](https://docs.flatpak.org/en/latest/flatpak-builder-command-reference.html#flatpak-manifest).", + "arch": { + "description": "The arch or list of archs.", + "anyOf": [ + { + "type": "array", + "items": { + "enum": [ + "arm64", + "armv7l", + "ia32", + "universal", + "x64" + ], + "type": "string" + } + }, + { + "enum": [ + "arm64", + "armv7l", + "ia32", + "universal", + "x64" + ], + "type": "string" + } + ] + } + }, + "required": [ + "target" + ] + }, + "FileSet": { + "type": "object", + "properties": { + "from": { + "description": "The source path relative to the project directory.", "type": "string" }, - "sdk": { - "description": "The name of the development runtime that the application builds with. Defaults to `org.freedesktop.Sdk`.\n\nSee [flatpak manifest documentation](https://docs.flatpak.org/en/latest/flatpak-builder-command-reference.html#flatpak-manifest).", + "to": { + "description": "The destination path relative to the app's content directory for `extraFiles` and the app's resource directory for `extraResources`.", "type": "string" }, - "symlinks": { - "description": "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\nSee [@malept/flatpak-bundler documentation](https://github.com/malept/flatpak-bundler#build-options).", - "items": { - "items": [ - { + "filter": { + "description": "The [glob patterns](/file-patterns).", + "anyOf": [ + { + "type": "array", + "items": { "type": "string" - }, - { + } + }, + { + "type": "string" + } + ] + } + } + }, + "AsarOptions": { + "type": "object", + "properties": { + "smartUnpack": { + "description": "Whether to automatically unpack executables files.", + "default": true, + "type": "boolean" + }, + "ordering": { + "type": [ + "null", + "string" + ] + }, + "externalAllowed": { + "description": "Allows external asar files.", + "default": false, + "type": "boolean" + } + } + }, + "FileAssociation": { + "description": "File associations.\n\nmacOS (corresponds to [CFBundleDocumentTypes](https://developer.apple.com/library/content/documentation/General/Reference/InfoPlistKeyReference/Articles/CoreFoundationKeys.html#//apple_ref/doc/uid/20001431-101685)) and NSIS only.\n\nOn Windows works only if [nsis.perMachine](https://electron.build/configuration/configuration#NsisOptions-perMachine) is set to `true`.", + "type": "object", + "properties": { + "ext": { + "description": "The extension (minus the leading period). e.g. `png`.", + "anyOf": [ + { + "type": "array", + "items": { "type": "string" } - ], - "maxItems": 2, - "minItems": 2, - "type": "array" - }, - "type": "array" + }, + { + "type": "string" + } + ] }, - "synopsis": { - "description": "The [short description](https://www.debian.org/doc/debian-policy/ch-controlfields.html#s-f-Description).", + "name": { + "description": "The name. e.g. `PNG`. Defaults to `ext`.", + "type": [ + "null", + "string" + ] + }, + "description": { + "description": "*windows-only.* The description.", + "type": [ + "null", + "string" + ] + }, + "mimeType": { + "description": "*linux-only.* The mime-type.", + "type": [ + "null", + "string" + ] + }, + "icon": { + "description": "The path to icon (`.icns` for MacOS and `.ico` for Windows), relative to `build` (build resources directory). Defaults to `${firstExt}.icns`/`${firstExt}.ico` (if several extensions specified, first is used) or to application icon.\n\nNot supported on Linux, file issue if need (default icon will be `x-office-document`).", + "type": [ + "null", + "string" + ] + }, + "role": { + "description": "*macOS-only* The app’s role with respect to the type. The value can be `Editor`, `Viewer`, `Shell`, or `None`. Corresponds to `CFBundleTypeRole`.", + "default": "Editor", + "type": "string" + }, + "isPackage": { + "description": "*macOS-only* Whether the document is distributed as a bundle. If set to true, the bundle directory is treated as a file. Corresponds to `LSTypeIsPackage`.", + "type": "boolean" + }, + "rank": { + "description": "*macOS-only* The app’s rank with respect to the type. The value can be `Owner`, `Default`, `Alternate`, or `None`. Corresponds to `LSHandlerRank`.", + "default": "Default", + "type": "string" + } + }, + "required": [ + "ext" + ] + }, + "Protocol": { + "description": "URL Protocol Schemes. Protocols to associate the app with. macOS only.\n\nPlease note — on macOS [you need to register an `open-url` event handler](http://electron.atom.io/docs/api/app/#event-open-url-macos).", + "type": "object", + "properties": { + "name": { + "description": "The name. e.g. `IRC server URL`.", + "type": "string" + }, + "schemes": { + "description": "The schemes. e.g. `[\"irc\", \"ircs\"]`.", + "type": "array", + "items": { + "type": "string" + } + }, + "role": { + "description": "*macOS-only* The app’s role with respect to the type.", + "default": "Editor", + "enum": [ + "Editor", + "None", + "Shell", + "Viewer" + ], + "type": "string" + } + }, + "required": [ + "name", + "schemes" + ] + }, + "GithubOptions": { + "description": "[GitHub](https://help.github.com/articles/about-releases/) options.\n\nGitHub [personal access token](https://help.github.com/articles/creating-an-access-token-for-command-line-use/) is required. You can generate by going to [https://github.com/settings/tokens/new](https://github.com/settings/tokens/new). The access token should have the repo scope/permission.\nDefine `GH_TOKEN` environment variable.", + "type": "object", + "properties": { + "provider": { + "description": "The provider. Must be `github`.", + "type": "string", + "enum": [ + "github" + ] + }, + "repo": { + "description": "The repository name. [Detected automatically](#github-repository-and-bintray-package).", + "type": [ + "null", + "string" + ] + }, + "owner": { + "description": "The owner.", "type": [ "null", "string" ] }, - "useWaylandFlags": { - "description": "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`.", + "vPrefixedTagName": { + "description": "Whether to use `v`-prefixed tag name.", + "default": true, "type": "boolean" - } - }, - "type": "object" - }, - "GenericServerOptions": { - "additionalProperties": false, - "description": "Generic (any HTTP(S) server) options.\nIn all publish options [File Macros](/file-patterns#file-macros) are supported.", - "properties": { - "channel": { - "default": "latest", - "description": "The channel.", + }, + "host": { + "description": "The host (including the port if need).", + "default": "github.com", "type": [ "null", "string" ] }, - "provider": { - "description": "The provider. Must be `generic`.", - "enum": [ - "generic" - ], - "type": "string" + "protocol": { + "description": "The protocol. GitHub Publisher supports only `https`.", + "default": "https", + "anyOf": [ + { + "enum": [ + "http", + "https" + ], + "type": "string" + }, + { + "type": "null" + } + ] }, - "publishAutoUpdate": { - "default": true, - "description": "Whether to publish auto update info files.\n\nAuto update relies only on the first provider in the list (you can specify several publishers).\nThus, probably, there`s no need to upload the metadata files for the other configured providers. But by default will be uploaded.", - "type": "boolean" + "token": { + "description": "The access token to support auto-update from private github repositories. Never specify it in the configuration files. Only for [setFeedURL](/auto-update#appupdatersetfeedurloptions).", + "type": [ + "null", + "string" + ] + }, + "private": { + "description": "Whether to use private github auto-update provider if `GH_TOKEN` environment variable is defined. See [Private GitHub Update Repo](/auto-update#private-github-update-repo).", + "type": [ + "null", + "boolean" + ] + }, + "releaseType": { + "description": "The type of release. By default `draft` release will be created.\n\nAlso you can set release type using environment variable. If `EP_DRAFT`is set to `true` — `draft`, if `EP_PRE_RELEASE`is set to `true` — `prerelease`.", + "default": "draft", + "anyOf": [ + { + "enum": [ + "draft", + "prerelease", + "release" + ], + "type": "string" + }, + { + "type": "null" + } + ] }, "publisherName": { "anyOf": [ { + "type": "array", "items": { "type": "string" - }, - "type": "array" + } }, { "type": "null" } ] }, - "requestHeaders": { - "$ref": "#/definitions/OutgoingHttpHeaders", - "description": "Any custom request headers" - }, "updaterCacheDirName": { "type": [ "null", "string" ] }, - "url": { - "description": "The base url. e.g. `https://bucket_name.s3.amazonaws.com`.", - "type": "string" - }, - "useMultipleRangeRequest": { - "description": "Whether to use multiple range requests for differential update. Defaults to `true` if `url` doesn't contain `s3.amazonaws.com`.", + "publishAutoUpdate": { + "description": "Whether to publish auto update info files.\n\nAuto update relies only on the first provider in the list (you can specify several publishers).\nThus, probably, there`s no need to upload the metadata files for the other configured providers. But by default will be uploaded.", + "default": true, "type": "boolean" + }, + "requestHeaders": { + "description": "Any custom request headers", + "$ref": "#/definitions/OutgoingHttpHeaders" } }, "required": [ - "provider", - "url" - ], + "provider" + ] + }, + "OutgoingHttpHeaders": { "type": "object" }, - "GithubOptions": { - "additionalProperties": false, - "description": "[GitHub](https://help.github.com/articles/about-releases/) options.\n\nGitHub [personal access token](https://help.github.com/articles/creating-an-access-token-for-command-line-use/) is required. You can generate by going to [https://github.com/settings/tokens/new](https://github.com/settings/tokens/new). The access token should have the repo scope/permission.\nDefine `GH_TOKEN` environment variable.", + "S3Options": { + "type": "object", "properties": { - "host": { - "default": "github.com", - "description": "The host (including the port if need).", - "type": [ - "null", - "string" + "provider": { + "description": "The provider. Must be `s3`.", + "type": "string", + "enum": [ + "s3" ] }, - "owner": { - "description": "The owner.", - "type": [ - "null", - "string" - ] + "bucket": { + "description": "The bucket name.", + "type": "string" }, - "private": { - "description": "Whether to use private github auto-update provider if `GH_TOKEN` environment variable is defined. See [Private GitHub Update Repo](/auto-update#private-github-update-repo).", + "region": { + "description": "The region. Is determined and set automatically when publishing.", "type": [ "null", - "boolean" + "string" ] }, - "protocol": { + "acl": { + "description": "The ACL. Set to `null` to not [add](https://github.com/electron-userland/electron-builder/issues/1822).\n\nPlease see [required permissions for the S3 provider](https://github.com/electron-userland/electron-builder/issues/1618#issuecomment-314679128).", + "default": "public-read", "anyOf": [ { "enum": [ - "http", - "https" + "private", + "public-read" ], "type": "string" }, { "type": "null" } - ], - "default": "https", - "description": "The protocol. GitHub Publisher supports only `https`." - }, - "provider": { - "description": "The provider. Must be `github`.", - "enum": [ - "github" - ], - "type": "string" - }, - "publishAutoUpdate": { - "default": true, - "description": "Whether to publish auto update info files.\n\nAuto update relies only on the first provider in the list (you can specify several publishers).\nThus, probably, there`s no need to upload the metadata files for the other configured providers. But by default will be uploaded.", - "type": "boolean" + ] }, - "publisherName": { + "storageClass": { + "description": "The type of storage to use for the object.", + "default": "STANDARD", "anyOf": [ { - "items": { - "type": "string" - }, - "type": "array" + "enum": [ + "REDUCED_REDUNDANCY", + "STANDARD", + "STANDARD_IA" + ], + "type": "string" }, { "type": "null" } ] }, - "releaseType": { + "encryption": { + "description": "Server-side encryption algorithm to use for the object.", "anyOf": [ { "enum": [ - "draft", - "prerelease", - "release" + "AES256", + "aws:kms" ], "type": "string" }, { "type": "null" } - ], - "default": "draft", - "description": "The type of release. By default `draft` release will be created.\n\nAlso you can set release type using environment variable. If `EP_DRAFT`is set to `true` — `draft`, if `EP_PRE_RELEASE`is set to `true` — `prerelease`." + ] }, - "repo": { - "description": "The repository name. [Detected automatically](#github-repository-and-bintray-package).", + "endpoint": { + "description": "The endpoint URI to send requests to. The default endpoint is built from the configured region.\nThe endpoint should be a string like `https://{service}.{region}.amazonaws.com`.", "type": [ "null", "string" ] }, - "requestHeaders": { - "$ref": "#/definitions/OutgoingHttpHeaders", - "description": "Any custom request headers" + "channel": { + "description": "The update channel.", + "default": "latest", + "type": [ + "null", + "string" + ] }, - "token": { - "description": "The access token to support auto-update from private github repositories. Never specify it in the configuration files. Only for [setFeedURL](/auto-update#appupdatersetfeedurloptions).", + "path": { + "description": "The directory path.", + "default": "/", "type": [ "null", "string" ] }, + "publisherName": { + "anyOf": [ + { + "type": "array", + "items": { + "type": "string" + } + }, + { + "type": "null" + } + ] + }, "updaterCacheDirName": { "type": [ "null", "string" ] }, - "vPrefixedTagName": { + "publishAutoUpdate": { + "description": "Whether to publish auto update info files.\n\nAuto update relies only on the first provider in the list (you can specify several publishers).\nThus, probably, there`s no need to upload the metadata files for the other configured providers. But by default will be uploaded.", "default": true, - "description": "Whether to use `v`-prefixed tag name.", "type": "boolean" + }, + "requestHeaders": { + "description": "Any custom request headers", + "$ref": "#/definitions/OutgoingHttpHeaders" } }, "required": [ + "bucket", "provider" - ], - "type": "object" + ] }, - "LinuxConfiguration": { - "additionalProperties": false, + "SpacesOptions": { + "description": "[DigitalOcean Spaces](https://www.digitalocean.com/community/tutorials/an-introduction-to-digitalocean-spaces) options.\nAccess key is required, define `DO_KEY_ID` and `DO_SECRET_KEY` environment variables.", + "type": "object", "properties": { - "appId": { - "default": "com.electron.${name}", - "description": "The application id. Used as [CFBundleIdentifier](https://developer.apple.com/library/ios/documentation/General/Reference/InfoPlistKeyReference/Articles/CoreFoundationKeys.html#//apple_ref/doc/uid/20001431-102070) for MacOS and as\n[Application User Model ID](https://msdn.microsoft.com/en-us/library/windows/desktop/dd378459(v=vs.85).aspx) for Windows (NSIS target only, Squirrel.Windows not supported). It is strongly recommended that an explicit ID is set.", - "type": [ - "null", - "string" - ] - }, - "artifactName": { - "description": "The [artifact file name template](/configuration/configuration#artifact-file-name-template). Defaults to `${productName}-${version}.${ext}` (some target can have other defaults, see corresponding options).", - "type": [ - "null", - "string" - ] - }, - "asar": { - "anyOf": [ - { - "$ref": "#/definitions/AsarOptions" - }, - { - "type": [ - "null", - "boolean" - ] - } - ], - "default": true, - "description": "Whether to package the application's source code into an archive, using [Electron's archive format](http://electron.atom.io/docs/tutorial/application-packaging/).\n\nNode modules, that must be unpacked, will be detected automatically, you don't need to explicitly set [asarUnpack](#configuration-asarUnpack) - please file an issue if this doesn't work." - }, - "asarUnpack": { - "anyOf": [ - { - "items": { - "type": "string" - }, - "type": "array" - }, - { - "type": [ - "null", - "string" - ] - } - ], - "description": "A [glob patterns](/file-patterns) relative to the [app directory](#MetadataDirectories-app), which specifies which files to unpack when creating the [asar](http://electron.atom.io/docs/tutorial/application-packaging/) archive." + "provider": { + "description": "The provider. Must be `spaces`.", + "type": "string", + "enum": [ + "spaces" + ] }, - "category": { - "description": "The [application category](https://specifications.freedesktop.org/menu-spec/latest/apa.html#main-category-registry).", + "name": { + "description": "The space name.", + "type": "string" + }, + "region": { + "description": "The region (e.g. `nyc3`).", + "type": "string" + }, + "channel": { + "description": "The update channel.", + "default": "latest", "type": [ "null", "string" ] }, - "compression": { + "path": { + "description": "The directory path.", + "default": "/", + "type": [ + "null", + "string" + ] + }, + "acl": { + "description": "The ACL. Set to `null` to not [add](https://github.com/electron-userland/electron-builder/issues/1822).", + "default": "public-read", "anyOf": [ { "enum": [ - "maximum", - "normal", - "store" + "private", + "public-read" ], "type": "string" }, { "type": "null" } - ], - "default": "normal", - "description": "The compression level. If you want to rapidly test build, `store` can reduce build time significantly. `maximum` doesn't lead to noticeable size difference, but increase build time." - }, - "cscKeyPassword": { - "type": [ - "null", - "string" ] }, - "cscLink": { - "type": [ - "null", - "string" + "publisherName": { + "anyOf": [ + { + "type": "array", + "items": { + "type": "string" + } + }, + { + "type": "null" + } ] }, - "defaultArch": { - "type": "string" - }, - "description": { - "description": "As [description](/configuration/configuration#Metadata-description) from application package.json, but allows you to specify different for Linux.", + "updaterCacheDirName": { "type": [ "null", "string" ] }, - "desktop": { - "description": "The [Desktop file](https://developer.gnome.org/integration-guide/stable/desktop-files.html.en) entries (name to value)." - }, - "detectUpdateChannel": { + "publishAutoUpdate": { + "description": "Whether to publish auto update info files.\n\nAuto update relies only on the first provider in the list (you can specify several publishers).\nThus, probably, there`s no need to upload the metadata files for the other configured providers. But by default will be uploaded.", "default": true, - "description": "Whether to infer update channel from application version pre-release components. e.g. if version `0.12.1-alpha.1`, channel will be set to `alpha`. Otherwise to `latest`.", "type": "boolean" }, - "electronUpdaterCompatibility": { - "description": "The [electron-updater compatibility](/auto-update#compatibility) semver range.", + "requestHeaders": { + "description": "Any custom request headers", + "$ref": "#/definitions/OutgoingHttpHeaders" + } + }, + "required": [ + "name", + "provider", + "region" + ] + }, + "GenericServerOptions": { + "description": "Generic (any HTTP(S) server) options.\nIn all publish options [File Macros](/file-patterns#file-macros) are supported.", + "type": "object", + "properties": { + "provider": { + "description": "The provider. Must be `generic`.", + "type": "string", + "enum": [ + "generic" + ] + }, + "url": { + "description": "The base url. e.g. `https://bucket_name.s3.amazonaws.com`.", + "type": "string" + }, + "channel": { + "description": "The channel.", + "default": "latest", "type": [ "null", "string" ] }, - "executableArgs": { + "useMultipleRangeRequest": { + "description": "Whether to use multiple range requests for differential update. Defaults to `true` if `url` doesn't contain `s3.amazonaws.com`.", + "type": "boolean" + }, + "publisherName": { "anyOf": [ { + "type": "array", "items": { "type": "string" - }, - "type": "array" + } }, { "type": "null" } - ], - "description": "The executable parameters. Pass to executableName" + ] }, - "executableName": { - "description": "The executable name. Defaults to `productName`.", + "updaterCacheDirName": { "type": [ "null", "string" ] }, - "extraFiles": { - "anyOf": [ - { - "$ref": "#/definitions/FileSet" - }, - { - "items": { - "anyOf": [ - { - "$ref": "#/definitions/FileSet" - }, - { - "type": "string" - } - ] - }, - "type": "array" - }, - { - "type": [ - "null", - "string" - ] - } - ] + "publishAutoUpdate": { + "description": "Whether to publish auto update info files.\n\nAuto update relies only on the first provider in the list (you can specify several publishers).\nThus, probably, there`s no need to upload the metadata files for the other configured providers. But by default will be uploaded.", + "default": true, + "type": "boolean" }, - "extraResources": { - "anyOf": [ - { - "$ref": "#/definitions/FileSet" - }, - { - "items": { - "anyOf": [ - { - "$ref": "#/definitions/FileSet" - }, - { - "type": "string" - } - ] - }, - "type": "array" - }, - { - "type": [ - "null", - "string" - ] - } + "requestHeaders": { + "description": "Any custom request headers", + "$ref": "#/definitions/OutgoingHttpHeaders" + } + }, + "required": [ + "provider", + "url" + ] + }, + "BintrayOptions": { + "description": "[Bintray](https://bintray.com/) options. Requires an API key. An API key can be obtained from the user [profile](https://bintray.com/profile/edit) page (\"Edit Your Profile\" -> API Key).\nDefine `BT_TOKEN` environment variable.", + "type": "object", + "properties": { + "provider": { + "description": "The provider. Must be `bintray`.", + "type": "string", + "enum": [ + "bintray" ] }, - "fileAssociations": { - "anyOf": [ - { - "$ref": "#/definitions/FileAssociation" - }, - { - "items": { - "$ref": "#/definitions/FileAssociation" - }, - "type": "array" - } - ], - "description": "The file associations." - }, - "files": { - "anyOf": [ - { - "$ref": "#/definitions/FileSet" - }, - { - "items": { - "anyOf": [ - { - "$ref": "#/definitions/FileSet" - }, - { - "type": "string" - } - ] - }, - "type": "array" - }, - { - "type": [ - "null", - "string" - ] - } + "package": { + "description": "The Bintray package name.", + "type": [ + "null", + "string" ] }, - "forceCodeSigning": { - "description": "Whether to fail if app will be not code signed.", - "type": "boolean" - }, - "generateUpdatesFilesForAllChannels": { - "default": false, - "description": "Please see [Building and Releasing using Channels](https://github.com/electron-userland/electron-builder/issues/1182#issuecomment-324947139).", - "type": "boolean" + "repo": { + "description": "The Bintray repository name.", + "default": "generic", + "type": [ + "null", + "string" + ] }, - "icon": { - "description": "The path to icon set directory or one png file, relative to the [build resources](/configuration/configuration#MetadataDirectories-buildResources) or to the project directory. The icon filename must contain the size (e.g. 32x32.png) of the icon.\nBy default will be generated automatically based on the macOS icns file.", - "type": "string" + "owner": { + "description": "The owner.", + "type": [ + "null", + "string" + ] }, - "maintainer": { - "description": "The maintainer. Defaults to [author](/configuration/configuration#Metadata-author).", + "component": { + "description": "The Bintray component (Debian only).", "type": [ "null", "string" ] }, - "mimeTypes": { - "anyOf": [ - { - "items": { - "type": "string" - }, - "type": "array" - }, - { - "type": "null" - } - ], - "description": "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." + "distribution": { + "description": "The Bintray distribution (Debian only).", + "default": "stable", + "type": [ + "null", + "string" + ] }, - "packageCategory": { - "description": "backward compatibility + to allow specify fpm-only category for all possible fpm targets in one place", + "user": { + "description": "The Bintray user account. Used in cases where the owner is an organization.", "type": [ "null", "string" ] }, - "protocols": { - "anyOf": [ - { - "$ref": "#/definitions/Protocol" - }, - { - "items": { - "$ref": "#/definitions/Protocol" - }, - "type": "array" - } - ], - "description": "The URL protocol schemes." + "token": { + "type": [ + "null", + "string" + ] }, - "publish": { + "publisherName": { "anyOf": [ { - "$ref": "#/definitions/GithubOptions" - }, - { - "$ref": "#/definitions/S3Options" - }, - { - "$ref": "#/definitions/SpacesOptions" - }, - { - "$ref": "#/definitions/GenericServerOptions" - }, - { - "$ref": "#/definitions/BintrayOptions" - }, - { - "$ref": "#/definitions/CustomPublishOptions" - }, - { - "$ref": "#/definitions/SnapStoreOptions" - }, - { + "type": "array", "items": { - "anyOf": [ - { - "$ref": "#/definitions/GithubOptions" - }, - { - "$ref": "#/definitions/S3Options" - }, - { - "$ref": "#/definitions/SpacesOptions" - }, - { - "$ref": "#/definitions/GenericServerOptions" - }, - { - "$ref": "#/definitions/BintrayOptions" - }, - { - "$ref": "#/definitions/CustomPublishOptions" - }, - { - "$ref": "#/definitions/SnapStoreOptions" - }, - { - "type": "string" - } - ] - }, - "type": "array" + "type": "string" + } }, { - "type": [ - "null", - "string" - ] + "type": "null" } ] }, - "releaseInfo": { - "$ref": "#/definitions/ReleaseInfo", - "description": "The release info. Intended for command line usage:\n\n```\n-c.releaseInfo.releaseNotes=\"new features\"\n```" - }, - "synopsis": { - "description": "The [short description](https://www.debian.org/doc/debian-policy/ch-controlfields.html#s-f-Description).", + "updaterCacheDirName": { "type": [ "null", "string" ] }, - "target": { + "publishAutoUpdate": { + "description": "Whether to publish auto update info files.\n\nAuto update relies only on the first provider in the list (you can specify several publishers).\nThus, probably, there`s no need to upload the metadata files for the other configured providers. But by default will be uploaded.", + "default": true, + "type": "boolean" + }, + "requestHeaders": { + "description": "Any custom request headers", + "$ref": "#/definitions/OutgoingHttpHeaders" + } + }, + "required": [ + "provider" + ] + }, + "CustomPublishOptions": { + "type": "object", + "additionalProperties": {}, + "properties": { + "provider": { + "description": "The provider. Must be `custom`.", + "type": "string", + "enum": [ + "custom" + ] + }, + "updateProvider": { + "description": "The Provider to provide UpdateInfo regarding available updates. Required\nto use custom providers with electron-updater.", + "type": "object" + }, + "publisherName": { "anyOf": [ { - "$ref": "#/definitions/TargetConfiguration" - }, - { + "type": "array", "items": { - "anyOf": [ - { - "$ref": "#/definitions/TargetConfiguration" - }, - { - "type": "string" - } - ] - }, - "type": "array" + "type": "string" + } }, { - "type": [ - "null", - "string" - ] + "type": "null" } - ], - "default": "AppImage", - "description": "Target package type: list of `AppImage`, `snap`, `deb`, `rpm`, `freebsd`, `pacman`, `p5p`, `apk`, `7z`, `zip`, `tar.xz`, `tar.lz`, `tar.gz`, `tar.bz2`, `dir`.\n\nelectron-builder [docker image](/multi-platform-build#docker) can be used to build Linux targets on any platform.\n\nPlease [do not put an AppImage into another archive](https://github.com/probonopd/AppImageKit/wiki/Creating-AppImages#common-mistake) like a .zip or .tar.gz." + ] }, - "vendor": { - "description": "The vendor. Defaults to [author](/configuration/configuration#Metadata-author).", + "updaterCacheDirName": { "type": [ "null", "string" ] + }, + "publishAutoUpdate": { + "description": "Whether to publish auto update info files.\n\nAuto update relies only on the first provider in the list (you can specify several publishers).\nThus, probably, there`s no need to upload the metadata files for the other configured providers. But by default will be uploaded.", + "default": true, + "type": "boolean" + }, + "requestHeaders": { + "description": "Any custom request headers", + "$ref": "#/definitions/OutgoingHttpHeaders" } }, - "type": "object" + "required": [ + "provider" + ] }, - "LinuxTargetSpecificOptions": { - "additionalProperties": false, + "KeygenOptions": { + "description": "Keygen options.\nhttps://keygen.sh/\nDefine `KEYGEN_TOKEN` environment variable.", + "type": "object", "properties": { - "afterInstall": { - "type": [ - "null", - "string" + "provider": { + "description": "The provider. Must be `keygen`.", + "type": "string", + "enum": [ + "keygen" ] }, - "afterRemove": { + "account": { + "description": "Keygen account's UUID", + "type": "string" + }, + "product": { + "description": "Keygen product's UUID", + "type": "string" + }, + "channel": { + "description": "The channel.", + "default": "stable", "type": [ "null", "string" ] }, - "artifactName": { - "description": "The [artifact file name template](/configuration/configuration#artifact-file-name-template).", - "type": [ - "null", - "string" + "platform": { + "description": "The target Platform. Is set programmatically explicitly for publishing.", + "type": "string" + }, + "publisherName": { + "anyOf": [ + { + "type": "array", + "items": { + "type": "string" + } + }, + { + "type": "null" + } ] }, - "category": { - "description": "The [application category](https://specifications.freedesktop.org/menu-spec/latest/apa.html#main-category-registry).", + "updaterCacheDirName": { "type": [ "null", "string" ] }, - "compression": { + "publishAutoUpdate": { + "description": "Whether to publish auto update info files.\n\nAuto update relies only on the first provider in the list (you can specify several publishers).\nThus, probably, there`s no need to upload the metadata files for the other configured providers. But by default will be uploaded.", + "default": true, + "type": "boolean" + }, + "requestHeaders": { + "description": "Any custom request headers", + "$ref": "#/definitions/OutgoingHttpHeaders" + } + }, + "required": [ + "account", + "product", + "provider" + ] + }, + "SnapStoreOptions": { + "description": "[Snap Store](https://snapcraft.io/) options.", + "type": "object", + "properties": { + "channels": { + "description": "The list of channels the snap would be released.", + "default": [ + "edge" + ], "anyOf": [ { - "enum": [ - "bzip2", - "gz", - "xz" - ], - "type": "string" + "type": "array", + "items": { + "type": "string" + } }, { - "type": "null" + "type": [ + "null", + "string" + ] } - ], - "default": "xz", - "description": "The compression type." + ] }, - "depends": { + "provider": { + "$ref": "#/definitions/PublishProvider", + "description": "The provider." + }, + "publisherName": { "anyOf": [ { + "type": "array", "items": { "type": "string" - }, - "type": "array" + } }, { "type": "null" } - ], - "description": "Package dependencies." + ] }, - "description": { - "description": "As [description](/configuration/configuration#Metadata-description) from application package.json, but allows you to specify different for Linux.", + "updaterCacheDirName": { + "type": [ + "null", + "string" + ] + }, + "publishAutoUpdate": { + "description": "Whether to publish auto update info files.\n\nAuto update relies only on the first provider in the list (you can specify several publishers).\nThus, probably, there`s no need to upload the metadata files for the other configured providers. But by default will be uploaded.", + "default": true, + "type": "boolean" + }, + "requestHeaders": { + "description": "Any custom request headers", + "$ref": "#/definitions/OutgoingHttpHeaders" + } + }, + "required": [ + "provider" + ] + }, + "PublishProvider": { + "enum": [ + "bintray", + "custom", + "generic", + "github", + "keygen", + "s3", + "snapStore", + "spaces" + ], + "type": "string" + }, + "ReleaseInfo": { + "type": "object", + "properties": { + "releaseName": { + "description": "The release name.", "type": [ "null", "string" ] }, - "desktop": { - "description": "The [Desktop file](https://developer.gnome.org/integration-guide/stable/desktop-files.html.en) entries (name to value)." - }, - "executableArgs": { - "anyOf": [ - { - "items": { - "type": "string" - }, - "type": "array" - }, - { - "type": "null" - } - ], - "description": "The executable parameters. Pass to executableName" + "releaseNotes": { + "description": "The release notes.", + "type": [ + "null", + "string" + ] }, - "fpm": { - "anyOf": [ - { - "items": { - "type": "string" - }, - "type": "array" - }, - { - "type": "null" - } - ], - "description": "*Advanced only* The [fpm](https://github.com/jordansissel/fpm/wiki#usage) options.\n\nExample: `[\"--before-install=build/deb-preinstall.sh\", \"--after-upgrade=build/deb-postinstall.sh\"]`" + "releaseNotesFile": { + "description": "The path to release notes file. Defaults to `release-notes-${platform}.md` (where `platform` it is current platform — `mac`, `linux` or `windows`) or `release-notes.md` in the [build resources](#MetadataDirectories-buildResources).", + "type": [ + "null", + "string" + ] }, - "icon": { + "releaseDate": { + "description": "The release date.", "type": "string" + } + } + }, + "MasConfiguration": { + "type": "object", + "properties": { + "entitlements": { + "description": "The path to entitlements file for signing the app. `build/entitlements.mas.plist` will be used if exists (it is a recommended way to set).\nOtherwise [default](https://github.com/electron-userland/electron-osx-sign/blob/master/default.entitlements.mas.plist).", + "type": [ + "null", + "string" + ] }, - "maintainer": { + "entitlementsInherit": { + "description": "The path to child entitlements which inherit the security settings for signing frameworks and bundles of a distribution. `build/entitlements.mas.inherit.plist` will be used if exists (it is a recommended way to set).\nOtherwise [default](https://github.com/electron-userland/electron-osx-sign/blob/master/default.entitlements.mas.inherit.plist).", "type": [ "null", "string" ] }, - "mimeTypes": { + "binaries": { + "description": "Paths of any extra binaries that need to be signed.", "anyOf": [ { + "type": "array", "items": { "type": "string" - }, - "type": "array" + } }, { "type": "null" } - ], - "description": "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." - }, - "packageCategory": { - "description": "The package category.", - "type": [ - "null", - "string" ] }, - "packageName": { - "description": "The name of the package.", + "category": { + "description": "The application category type, as shown in the Finder via *View -> Arrange by Application Category* when viewing the Applications directory.\n\nFor example, `\"category\": \"public.app-category.developer-tools\"` will set the application category to *Developer Tools*.\n\nValid values are listed in [Apple's documentation](https://developer.apple.com/library/ios/documentation/General/Reference/InfoPlistKeyReference/Articles/LaunchServicesKeys.html#//apple_ref/doc/uid/TP40009250-SW8).", "type": [ "null", "string" ] }, - "publish": { + "target": { + "description": "The target package type: list of `default`, `dmg`, `mas`, `mas-dev`, `pkg`, `7z`, `zip`, `tar.xz`, `tar.lz`, `tar.gz`, `tar.bz2`, `dir`. Defaults to `default` (dmg and zip for Squirrel.Mac).", "anyOf": [ { - "$ref": "#/definitions/GithubOptions" - }, - { - "$ref": "#/definitions/S3Options" - }, - { - "$ref": "#/definitions/SpacesOptions" - }, - { - "$ref": "#/definitions/GenericServerOptions" - }, - { - "$ref": "#/definitions/BintrayOptions" - }, - { - "$ref": "#/definitions/CustomPublishOptions" - }, - { - "$ref": "#/definitions/SnapStoreOptions" + "$ref": "#/definitions/TargetConfiguration" }, { + "type": "array", "items": { "anyOf": [ { - "$ref": "#/definitions/GithubOptions" - }, - { - "$ref": "#/definitions/S3Options" - }, - { - "$ref": "#/definitions/SpacesOptions" - }, - { - "$ref": "#/definitions/GenericServerOptions" - }, - { - "$ref": "#/definitions/BintrayOptions" - }, - { - "$ref": "#/definitions/CustomPublishOptions" - }, - { - "$ref": "#/definitions/SnapStoreOptions" + "$ref": "#/definitions/TargetConfiguration" }, { + "enum": [ + "7z", + "default", + "dir", + "dmg", + "mas", + "mas-dev", + "pkg", + "tar.bz2", + "tar.gz", + "tar.lz", + "tar.xz", + "zip" + ], "type": "string" } ] - }, - "type": "array" + } }, { - "type": [ - "null", - "string" - ] + "enum": [ + "7z", + "default", + "dir", + "dmg", + "mas", + "mas-dev", + "pkg", + "tar.bz2", + "tar.gz", + "tar.lz", + "tar.xz", + "zip" + ], + "type": "string" + }, + { + "type": "null" } ] }, - "synopsis": { - "description": "The [short description](https://www.debian.org/doc/debian-policy/ch-controlfields.html#s-f-Description).", + "identity": { + "description": "The name of certificate to use when signing. Consider using environment variables [CSC_LINK or CSC_NAME](/code-signing) instead of specifying this option.\nMAS installer identity is specified in the [mas](/configuration/mas).", "type": [ "null", "string" ] }, - "vendor": { + "icon": { + "description": "The path to application icon.", + "default": "build/icon.icns", "type": [ "null", "string" ] - } - }, - "type": "object" - }, - "MacConfiguration": { - "additionalProperties": false, - "properties": { - "appId": { - "default": "com.electron.${name}", - "description": "The application id. Used as [CFBundleIdentifier](https://developer.apple.com/library/ios/documentation/General/Reference/InfoPlistKeyReference/Articles/CoreFoundationKeys.html#//apple_ref/doc/uid/20001431-102070) for MacOS and as\n[Application User Model ID](https://msdn.microsoft.com/en-us/library/windows/desktop/dd378459(v=vs.85).aspx) for Windows (NSIS target only, Squirrel.Windows not supported). It is strongly recommended that an explicit ID is set.", + }, + "entitlementsLoginHelper": { + "description": "Path to login helper entitlement file.\nWhen using App Sandbox, the the `com.apple.security.inherit` key that is normally in the inherited entitlements cannot be inherited since the login helper is a standalone executable.\nDefaults to the value provided for `entitlements`. This option only applies when signing with `entitlements` provided.", "type": [ "null", "string" ] }, - "artifactName": { - "description": "The [artifact file name template](/configuration/configuration#artifact-file-name-template). Defaults to `${productName}-${version}.${ext}` (some target can have other defaults, see corresponding options).", + "provisioningProfile": { + "description": "The path to the provisioning profile to use when signing, absolute or relative to the app root.", "type": [ "null", "string" ] }, - "asar": { - "anyOf": [ - { - "$ref": "#/definitions/AsarOptions" - }, - { - "type": [ - "null", - "boolean" - ] - } - ], - "default": true, - "description": "Whether to package the application's source code into an archive, using [Electron's archive format](http://electron.atom.io/docs/tutorial/application-packaging/).\n\nNode modules, that must be unpacked, will be detected automatically, you don't need to explicitly set [asarUnpack](#configuration-asarUnpack) - please file an issue if this doesn't work." - }, - "asarUnpack": { - "anyOf": [ - { - "items": { - "type": "string" - }, - "type": "array" - }, - { - "type": [ - "null", - "string" - ] - } - ], - "description": "A [glob patterns](/file-patterns) relative to the [app directory](#MetadataDirectories-app), which specifies which files to unpack when creating the [asar](http://electron.atom.io/docs/tutorial/application-packaging/) archive." - }, - "binaries": { - "anyOf": [ - { - "items": { - "type": "string" - }, - "type": "array" - }, - { - "type": "null" - } - ], - "description": "Paths of any extra binaries that need to be signed." + "bundleVersion": { + "description": "The `CFBundleVersion`. Do not use it unless [you need to](https://github.com/electron-userland/electron-builder/issues/565#issuecomment-230678643).", + "type": [ + "null", + "string" + ] }, "bundleShortVersion": { "description": "The `CFBundleShortVersionString`. Do not use it unless you need to.", @@ -2119,111 +2441,197 @@ "string" ] }, - "bundleVersion": { - "description": "The `CFBundleVersion`. Do not use it unless [you need to](https://github.com/electron-userland/electron-builder/issues/565#issuecomment-230678643).", + "darkModeSupport": { + "description": "Whether a dark mode is supported. If your app does have a dark mode, you can make your app follow the system-wide dark mode setting.", + "default": false, + "type": "boolean" + }, + "helperBundleId": { + "description": "The bundle identifier to use in the application helper's plist.", + "default": "${appBundleIdentifier}.helper", + "type": [ + "null", + "string" + ] + }, + "helperRendererBundleId": { + "description": "The bundle identifier to use in the Renderer helper's plist.", + "default": "${appBundleIdentifier}.helper.Renderer", + "type": [ + "null", + "string" + ] + }, + "helperPluginBundleId": { + "description": "The bundle identifier to use in the Plugin helper's plist.", + "default": "${appBundleIdentifier}.helper.Plugin", + "type": [ + "null", + "string" + ] + }, + "helperGPUBundleId": { + "description": "The bundle identifier to use in the GPU helper's plist.", + "default": "${appBundleIdentifier}.helper.GPU", + "type": [ + "null", + "string" + ] + }, + "helperEHBundleId": { + "description": "The bundle identifier to use in the EH helper's plist.", + "default": "${appBundleIdentifier}.helper.EH", "type": [ "null", "string" ] }, - "category": { - "description": "The application category type, as shown in the Finder via *View -> Arrange by Application Category* when viewing the Applications directory.\n\nFor example, `\"category\": \"public.app-category.developer-tools\"` will set the application category to *Developer Tools*.\n\nValid values are listed in [Apple's documentation](https://developer.apple.com/library/ios/documentation/General/Reference/InfoPlistKeyReference/Articles/LaunchServicesKeys.html#//apple_ref/doc/uid/TP40009250-SW8).", + "helperNPBundleId": { + "description": "The bundle identifier to use in the NP helper's plist.", + "default": "${appBundleIdentifier}.helper.NP", "type": [ "null", "string" ] }, - "compression": { + "type": { + "description": "Whether to sign app for development or for distribution.", + "default": "distribution", "anyOf": [ { "enum": [ - "maximum", - "normal", - "store" + "development", + "distribution" ], "type": "string" }, { "type": "null" } - ], - "default": "normal", - "description": "The compression level. If you want to rapidly test build, `store` can reduce build time significantly. `maximum` doesn't lead to noticeable size difference, but increase build time." + ] }, - "cscInstallerKeyPassword": { + "extendInfo": { + "description": "The extra entries for `Info.plist`." + }, + "minimumSystemVersion": { + "description": "The minimum version of macOS required for the app to run. Corresponds to `LSMinimumSystemVersion`.", "type": [ "null", "string" ] }, - "cscInstallerLink": { + "requirements": { + "description": "Path of [requirements file](https://developer.apple.com/library/mac/documentation/Security/Conceptual/CodeSigningGuide/RequirementLang/RequirementLang.html) used in signing. Not applicable for MAS.", "type": [ "null", "string" ] }, - "cscKeyPassword": { + "electronLanguages": { + "description": "The electron locales. By default Electron locales used as is.", + "anyOf": [ + { + "type": "array", + "items": { + "type": "string" + } + }, + { + "type": "string" + } + ] + }, + "cscInstallerLink": { "type": [ "null", "string" ] }, - "cscLink": { + "cscInstallerKeyPassword": { "type": [ "null", "string" ] }, - "darkModeSupport": { - "default": false, - "description": "Whether a dark mode is supported. If your app does have a dark mode, you can make your app follow the system-wide dark mode setting.", - "type": "boolean" - }, - "defaultArch": { - "type": "string" + "extraDistFiles": { + "description": "Extra files to put in archive. Not applicable for `tar.*`.", + "anyOf": [ + { + "type": "array", + "items": { + "type": "string" + } + }, + { + "type": [ + "null", + "string" + ] + } + ] }, - "detectUpdateChannel": { + "hardenedRuntime": { + "description": "Whether your app has to be signed with hardened runtime.", "default": true, - "description": "Whether to infer update channel from application version pre-release components. e.g. if version `0.12.1-alpha.1`, channel will be set to `alpha`. Otherwise to `latest`.", "type": "boolean" }, - "electronLanguages": { + "gatekeeperAssess": { + "description": "Whether to let electron-osx-sign validate the signing or not.", + "default": false, + "type": "boolean" + }, + "strictVerify": { + "description": "Whether to let electron-osx-sign verify the contents or not.", + "default": true, "anyOf": [ { + "type": "array", "items": { "type": "string" - }, - "type": "array" + } }, { - "type": "string" + "type": [ + "string", + "boolean" + ] } - ], - "description": "The electron locales. By default Electron locales used as is." + ] }, - "electronUpdaterCompatibility": { - "description": "The [electron-updater compatibility](/auto-update#compatibility) semver range.", - "type": [ - "null", - "string" + "signIgnore": { + "description": "Regex or an array of regex's that signal skipping signing a file.", + "anyOf": [ + { + "type": "array", + "items": { + "type": "string" + } + }, + { + "type": [ + "null", + "string" + ] + } ] }, - "entitlements": { - "description": "The path to entitlements file for signing the app. `build/entitlements.mac.plist` will be used if exists (it is a recommended way to set).\nMAS entitlements is specified in the [mas](/configuration/mas).", + "timestamp": { + "description": "Specify the URL of the timestamp authority server", "type": [ "null", "string" ] }, - "entitlementsInherit": { - "description": "The path to child entitlements which inherit the security settings for signing frameworks and bundles of a distribution. `build/entitlements.mac.inherit.plist` will be used if exists (it is a recommended way to set).\nOtherwise [default](https://github.com/electron-userland/electron-osx-sign/blob/master/default.entitlements.darwin.inherit.plist).\n\nThis option only applies when signing with `entitlements` provided.", + "appId": { + "description": "The application id. Used as [CFBundleIdentifier](https://developer.apple.com/library/ios/documentation/General/Reference/InfoPlistKeyReference/Articles/CoreFoundationKeys.html#//apple_ref/doc/uid/20001431-102070) for MacOS and as\n[Application User Model ID](https://msdn.microsoft.com/en-us/library/windows/desktop/dd378459(v=vs.85).aspx) for Windows (NSIS target only, Squirrel.Windows not supported). It is strongly recommended that an explicit ID is set.", + "default": "com.electron.${name}", "type": [ "null", "string" ] }, - "entitlementsLoginHelper": { - "description": "Path to login helper entitlement file.\nWhen using App Sandbox, the the `com.apple.security.inherit` key that is normally in the inherited entitlements cannot be inherited since the login helper is a standalone executable.\nDefaults to the value provided for `entitlements`. This option only applies when signing with `entitlements` provided.", + "artifactName": { + "description": "The [artifact file name template](/configuration/configuration#artifact-file-name-template). Defaults to `${productName}-${version}.${ext}` (some target can have other defaults, see corresponding options).", "type": [ "null", "string" @@ -2236,16 +2644,40 @@ "string" ] }, - "extendInfo": { - "description": "The extra entries for `Info.plist`." + "compression": { + "description": "The compression level. If you want to rapidly test build, `store` can reduce build time significantly. `maximum` doesn't lead to noticeable size difference, but increase build time.", + "default": "normal", + "anyOf": [ + { + "enum": [ + "maximum", + "normal", + "store" + ], + "type": "string" + }, + { + "type": "null" + } + ] }, - "extraDistFiles": { + "files": { "anyOf": [ { + "$ref": "#/definitions/FileSet" + }, + { + "type": "array", "items": { - "type": "string" - }, - "type": "array" + "anyOf": [ + { + "$ref": "#/definitions/FileSet" + }, + { + "type": "string" + } + ] + } }, { "type": [ @@ -2253,15 +2685,15 @@ "string" ] } - ], - "description": "Extra files to put in archive. Not applicable for `tar.*`." + ] }, - "extraFiles": { + "extraResources": { "anyOf": [ { "$ref": "#/definitions/FileSet" }, { + "type": "array", "items": { "anyOf": [ { @@ -2271,8 +2703,7 @@ "type": "string" } ] - }, - "type": "array" + } }, { "type": [ @@ -2282,12 +2713,13 @@ } ] }, - "extraResources": { + "extraFiles": { "anyOf": [ { "$ref": "#/definitions/FileSet" }, { + "type": "array", "items": { "anyOf": [ { @@ -2297,8 +2729,39 @@ "type": "string" } ] - }, - "type": "array" + } + }, + { + "type": [ + "null", + "string" + ] + } + ] + }, + "asar": { + "description": "Whether to package the application's source code into an archive, using [Electron's archive format](http://electron.atom.io/docs/tutorial/application-packaging/).\n\nNode modules, that must be unpacked, will be detected automatically, you don't need to explicitly set [asarUnpack](#configuration-asarUnpack) - please file an issue if this doesn't work.", + "default": true, + "anyOf": [ + { + "$ref": "#/definitions/AsarOptions" + }, + { + "type": [ + "null", + "boolean" + ] + } + ] + }, + "asarUnpack": { + "description": "A [glob patterns](/file-patterns) relative to the [app directory](#MetadataDirectories-app), which specifies which files to unpack when creating the [asar](http://electron.atom.io/docs/tutorial/application-packaging/) archive.", + "anyOf": [ + { + "type": "array", + "items": { + "type": "string" + } }, { "type": [ @@ -2309,36 +2772,103 @@ ] }, "fileAssociations": { + "description": "The file associations.", "anyOf": [ { "$ref": "#/definitions/FileAssociation" }, { + "type": "array", "items": { "$ref": "#/definitions/FileAssociation" - }, - "type": "array" + } } - ], - "description": "The file associations." + ] }, - "files": { + "protocols": { + "description": "The URL protocol schemes.", "anyOf": [ { - "$ref": "#/definitions/FileSet" + "$ref": "#/definitions/Protocol" + }, + { + "type": "array", + "items": { + "$ref": "#/definitions/Protocol" + } + } + ] + }, + "forceCodeSigning": { + "description": "Whether to fail if app will be not code signed.", + "type": "boolean" + }, + "electronUpdaterCompatibility": { + "description": "The [electron-updater compatibility](/auto-update#compatibility) semver range.", + "type": [ + "null", + "string" + ] + }, + "publish": { + "anyOf": [ + { + "$ref": "#/definitions/GithubOptions" + }, + { + "$ref": "#/definitions/S3Options" + }, + { + "$ref": "#/definitions/SpacesOptions" + }, + { + "$ref": "#/definitions/GenericServerOptions" + }, + { + "$ref": "#/definitions/BintrayOptions" + }, + { + "$ref": "#/definitions/CustomPublishOptions" + }, + { + "$ref": "#/definitions/KeygenOptions" }, { + "$ref": "#/definitions/SnapStoreOptions" + }, + { + "type": "array", "items": { "anyOf": [ { - "$ref": "#/definitions/FileSet" + "$ref": "#/definitions/GithubOptions" + }, + { + "$ref": "#/definitions/S3Options" + }, + { + "$ref": "#/definitions/SpacesOptions" + }, + { + "$ref": "#/definitions/GenericServerOptions" + }, + { + "$ref": "#/definitions/BintrayOptions" + }, + { + "$ref": "#/definitions/CustomPublishOptions" + }, + { + "$ref": "#/definitions/KeygenOptions" + }, + { + "$ref": "#/definitions/SnapStoreOptions" }, { "type": "string" } ] - }, - "type": "array" + } }, { "type": [ @@ -2348,111 +2878,125 @@ } ] }, - "forceCodeSigning": { - "description": "Whether to fail if app will be not code signed.", - "type": "boolean" - }, - "gatekeeperAssess": { - "default": false, - "description": "Whether to let electron-osx-sign validate the signing or not.", + "detectUpdateChannel": { + "description": "Whether to infer update channel from application version pre-release components. e.g. if version `0.12.1-alpha.1`, channel will be set to `alpha`. Otherwise to `latest`.", + "default": true, "type": "boolean" }, "generateUpdatesFilesForAllChannels": { - "default": false, "description": "Please see [Building and Releasing using Channels](https://github.com/electron-userland/electron-builder/issues/1182#issuecomment-324947139).", + "default": false, "type": "boolean" }, - "hardenedRuntime": { - "default": true, - "description": "Whether your app has to be signed with hardened runtime.", - "type": "boolean" + "releaseInfo": { + "description": "The release info. Intended for command line usage:\n\n```\n-c.releaseInfo.releaseNotes=\"new features\"\n```", + "$ref": "#/definitions/ReleaseInfo" }, - "helperBundleId": { - "default": "${appBundleIdentifier}.helper", - "description": "The bundle identifier to use in the application helper's plist.", + "cscLink": { "type": [ "null", "string" ] }, - "helperEHBundleId": { - "default": "${appBundleIdentifier}.helper.EH", - "description": "The bundle identifier to use in the EH helper's plist.", + "cscKeyPassword": { "type": [ "null", "string" ] }, - "helperGPUBundleId": { - "default": "${appBundleIdentifier}.helper.GPU", - "description": "The bundle identifier to use in the GPU helper's plist.", + "defaultArch": { + "type": "string" + } + } + }, + "DmgOptions": { + "type": "object", + "properties": { + "background": { + "description": "The path to background image (default: `build/background.tiff` or `build/background.png` if exists). The resolution of this file determines the resolution of the installer window.\nIf background is not specified, use `window.size`. Default locations expected background size to be 540x380.", "type": [ "null", "string" ] }, - "helperNPBundleId": { - "default": "${appBundleIdentifier}.helper.NP", - "description": "The bundle identifier to use in the NP helper's plist.", + "backgroundColor": { + "description": "The background color (accepts css colors). Defaults to `#ffffff` (white) if no background image.", "type": [ "null", "string" ] }, - "helperPluginBundleId": { - "default": "${appBundleIdentifier}.helper.Plugin", - "description": "The bundle identifier to use in the Plugin helper's plist.", + "icon": { + "description": "The path to DMG icon (volume icon), which will be shown when mounted, relative to the [build resources](/configuration/configuration#MetadataDirectories-buildResources) or to the project directory.\nDefaults to the application icon (`build/icon.icns`).", "type": [ "null", "string" ] }, - "helperRendererBundleId": { - "default": "${appBundleIdentifier}.helper.Renderer", - "description": "The bundle identifier to use in the Renderer helper's plist.", + "iconSize": { + "description": "The size of all the icons inside the DMG.", + "default": 80, "type": [ "null", - "string" + "number" ] }, - "icon": { - "default": "build/icon.icns", - "description": "The path to application icon.", + "iconTextSize": { + "description": "The size of all the icon texts inside the DMG.", + "default": 12, "type": [ "null", - "string" + "number" ] }, - "identity": { - "description": "The name of certificate to use when signing. Consider using environment variables [CSC_LINK or CSC_NAME](/code-signing) instead of specifying this option.\nMAS installer identity is specified in the [mas](/configuration/mas).", + "title": { + "description": "The title of the produced DMG, which will be shown when mounted (volume name).\n\nMacro `${productName}`, `${version}` and `${name}` are supported.", + "default": "${productName} ${version}", "type": [ "null", "string" ] }, - "minimumSystemVersion": { - "description": "The minimum version of macOS required for the app to run. Corresponds to `LSMinimumSystemVersion`.", - "type": [ - "null", - "string" - ] + "contents": { + "description": "The content — to customize icon locations. The x and y coordinates refer to the position of the **center** of the icon (at 1x scale), and do not take the label into account.", + "type": "array", + "items": { + "$ref": "#/definitions/DmgContent" + } }, - "protocols": { - "anyOf": [ - { - "$ref": "#/definitions/Protocol" - }, - { - "items": { - "$ref": "#/definitions/Protocol" - }, - "type": "array" - } + "format": { + "description": "The disk image format. `ULFO` (lzfse-compressed image (OS X 10.11+ only)).", + "default": "UDZO", + "enum": [ + "UDBZ", + "UDCO", + "UDRO", + "UDRW", + "UDZO", + "ULFO" ], - "description": "The URL protocol schemes." + "type": "string" }, - "provisioningProfile": { - "description": "The path to the provisioning profile to use when signing, absolute or relative to the app root.", + "window": { + "description": "The DMG window position and size. With y co-ordinates running from bottom to top.\n\nThe Finder makes sure that the window will be on the user’s display, so if you want your window at the top left of the display you could use `\"x\": 0, \"y\": 100000` as the x, y co-ordinates.\nIt is not to be possible to position the window relative to the [top left](https://github.com/electron-userland/electron-builder/issues/3990#issuecomment-512960957) or relative to the center of the user’s screen.", + "$ref": "#/definitions/DmgWindow" + }, + "internetEnabled": { + "description": "Whether to create internet-enabled disk image (when it is downloaded using a browser it will automatically decompress the image, put the application on the desktop, unmount and remove the disk image file).", + "default": false, + "type": "boolean" + }, + "sign": { + "description": "Whether to sign the DMG or not. Signing is not required and will lead to unwanted errors in combination with notarization requirements.", + "default": false, + "type": "boolean" + }, + "writeUpdateInfo": { + "default": true, + "type": "boolean" + }, + "artifactName": { + "description": "The [artifact file name template](/configuration/configuration#artifact-file-name-template).", "type": [ "null", "string" @@ -2478,10 +3022,14 @@ { "$ref": "#/definitions/CustomPublishOptions" }, + { + "$ref": "#/definitions/KeygenOptions" + }, { "$ref": "#/definitions/SnapStoreOptions" }, { + "type": "array", "items": { "anyOf": [ { @@ -2502,6 +3050,9 @@ { "$ref": "#/definitions/CustomPublishOptions" }, + { + "$ref": "#/definitions/KeygenOptions" + }, { "$ref": "#/definitions/SnapStoreOptions" }, @@ -2509,8 +3060,7 @@ "type": "string" } ] - }, - "type": "array" + } }, { "type": [ @@ -2519,359 +3069,282 @@ ] } ] + } + } + }, + "DmgContent": { + "type": "object", + "properties": { + "x": { + "description": "The device-independent pixel offset from the left of the window to the **center** of the icon.", + "type": "number" }, - "releaseInfo": { - "$ref": "#/definitions/ReleaseInfo", - "description": "The release info. Intended for command line usage:\n\n```\n-c.releaseInfo.releaseNotes=\"new features\"\n```" - }, - "requirements": { - "description": "Path of [requirements file](https://developer.apple.com/library/mac/documentation/Security/Conceptual/CodeSigningGuide/RequirementLang/RequirementLang.html) used in signing. Not applicable for MAS.", - "type": [ - "null", - "string" - ] - }, - "signIgnore": { - "anyOf": [ - { - "items": { - "type": "string" - }, - "type": "array" - }, - { - "type": [ - "null", - "string" - ] - } - ], - "description": "Regex or an array of regex's that signal skipping signing a file." - }, - "strictVerify": { - "anyOf": [ - { - "items": { - "type": "string" - }, - "type": "array" - }, - { - "type": [ - "string", - "boolean" - ] - } - ], - "default": true, - "description": "Whether to let electron-osx-sign verify the contents or not." - }, - "target": { - "anyOf": [ - { - "$ref": "#/definitions/TargetConfiguration" - }, - { - "items": { - "anyOf": [ - { - "$ref": "#/definitions/TargetConfiguration" - }, - { - "enum": [ - "7z", - "default", - "dir", - "dmg", - "mas", - "mas-dev", - "pkg", - "tar.bz2", - "tar.gz", - "tar.lz", - "tar.xz", - "zip" - ], - "type": "string" - } - ] - }, - "type": "array" - }, - { - "enum": [ - "7z", - "default", - "dir", - "dmg", - "mas", - "mas-dev", - "pkg", - "tar.bz2", - "tar.gz", - "tar.lz", - "tar.xz", - "zip" - ], - "type": "string" - }, - { - "type": "null" - } - ], - "description": "The target package type: list of `default`, `dmg`, `mas`, `mas-dev`, `pkg`, `7z`, `zip`, `tar.xz`, `tar.lz`, `tar.gz`, `tar.bz2`, `dir`. Defaults to `default` (dmg and zip for Squirrel.Mac)." - }, - "timestamp": { - "type": [ - "null", - "string" - ], - "description": "Specify the URL of the timestamp authority server" - }, - "type": { - "anyOf": [ - { - "enum": [ - "development", - "distribution" - ], - "type": "string" - }, - { - "type": "null" - } + "y": { + "description": "The device-independent pixel offset from the top of the window to the **center** of the icon.", + "type": "number" + }, + "type": { + "enum": [ + "dir", + "file", + "link" ], - "default": "distribution", - "description": "Whether to sign app for development or for distribution." + "type": "string" + }, + "name": { + "description": "The name of the file within the DMG. Defaults to basename of `path`.", + "type": "string" + }, + "path": { + "description": "The path of the file within the DMG.", + "type": "string" } }, - "type": "object" + "required": [ + "x", + "y" + ] }, - "MasConfiguration": { - "additionalProperties": false, + "DmgWindow": { + "type": "object", "properties": { - "appId": { - "default": "com.electron.${name}", - "description": "The application id. Used as [CFBundleIdentifier](https://developer.apple.com/library/ios/documentation/General/Reference/InfoPlistKeyReference/Articles/CoreFoundationKeys.html#//apple_ref/doc/uid/20001431-102070) for MacOS and as\n[Application User Model ID](https://msdn.microsoft.com/en-us/library/windows/desktop/dd378459(v=vs.85).aspx) for Windows (NSIS target only, Squirrel.Windows not supported). It is strongly recommended that an explicit ID is set.", - "type": [ - "null", - "string" - ] + "x": { + "description": "The X position relative to left of the screen.", + "default": 400, + "type": "number" }, - "artifactName": { - "description": "The [artifact file name template](/configuration/configuration#artifact-file-name-template). Defaults to `${productName}-${version}.${ext}` (some target can have other defaults, see corresponding options).", + "y": { + "description": "The Y position relative to bottom of the screen.", + "default": 100, + "type": "number" + }, + "width": { + "description": "The width. Defaults to background image width or 540.", + "type": "number" + }, + "height": { + "description": "The height. Defaults to background image height or 380.", + "type": "number" + } + } + }, + "PkgOptions": { + "description": "macOS product archive options.", + "type": "object", + "properties": { + "scripts": { + "description": "The scripts directory, relative to `build` (build resources directory).\nThe scripts can be in any language so long as the files are marked executable and have the appropriate shebang indicating the path to the interpreter.\nScripts are required to be executable (`chmod +x file`).", + "default": "build/pkg-scripts", "type": [ "null", "string" ] }, - "asar": { - "anyOf": [ - { - "$ref": "#/definitions/AsarOptions" - }, - { - "type": [ - "null", - "boolean" - ] - } - ], - "default": true, - "description": "Whether to package the application's source code into an archive, using [Electron's archive format](http://electron.atom.io/docs/tutorial/application-packaging/).\n\nNode modules, that must be unpacked, will be detected automatically, you don't need to explicitly set [asarUnpack](#configuration-asarUnpack) - please file an issue if this doesn't work." - }, - "asarUnpack": { - "anyOf": [ - { - "items": { - "type": "string" - }, - "type": "array" - }, - { - "type": [ - "null", - "string" - ] - } - ], - "description": "A [glob patterns](/file-patterns) relative to the [app directory](#MetadataDirectories-app), which specifies which files to unpack when creating the [asar](http://electron.atom.io/docs/tutorial/application-packaging/) archive." - }, - "binaries": { + "productbuild": { + "description": "should be not documented, only to experiment", "anyOf": [ { + "type": "array", "items": { "type": "string" - }, - "type": "array" + } }, { "type": "null" } - ], - "description": "Paths of any extra binaries that need to be signed." + ] }, - "bundleShortVersion": { - "description": "The `CFBundleShortVersionString`. Do not use it unless you need to.", + "installLocation": { + "description": "The install location. [Do not use it](https://stackoverflow.com/questions/12863944/how-do-you-specify-a-default-install-location-to-home-with-pkgbuild) to create per-user package.\nMostly never you will need to change this option. `/Applications` would install it as expected into `/Applications` if the local system domain is chosen, or into `$HOME/Applications` if the home installation is chosen.", + "default": "/Applications", "type": [ "null", "string" ] }, - "bundleVersion": { - "description": "The `CFBundleVersion`. Do not use it unless [you need to](https://github.com/electron-userland/electron-builder/issues/565#issuecomment-230678643).", + "allowAnywhere": { + "description": "Whether can be installed at the root of any volume, including non-system volumes. Otherwise, it cannot be installed at the root of a volume.\n\nCorresponds to [enable_anywhere](https://developer.apple.com/library/content/documentation/DeveloperTools/Reference/DistributionDefinitionRef/Chapters/Distribution_XML_Ref.html#//apple_ref/doc/uid/TP40005370-CH100-SW70).", + "default": true, "type": [ "null", - "string" + "boolean" ] }, - "category": { - "description": "The application category type, as shown in the Finder via *View -> Arrange by Application Category* when viewing the Applications directory.\n\nFor example, `\"category\": \"public.app-category.developer-tools\"` will set the application category to *Developer Tools*.\n\nValid values are listed in [Apple's documentation](https://developer.apple.com/library/ios/documentation/General/Reference/InfoPlistKeyReference/Articles/LaunchServicesKeys.html#//apple_ref/doc/uid/TP40009250-SW8).", + "allowCurrentUserHome": { + "description": "Whether can be installed into the current user’s home directory.\nA home directory installation is done as the current user (not as root), and it cannot write outside of the home directory.\nIf the product cannot be installed in the user’s home directory and be not completely functional from user’s home directory.\n\nCorresponds to [enable_currentUserHome](https://developer.apple.com/library/content/documentation/DeveloperTools/Reference/DistributionDefinitionRef/Chapters/Distribution_XML_Ref.html#//apple_ref/doc/uid/TP40005370-CH100-SW70).", + "default": true, "type": [ "null", - "string" + "boolean" ] }, - "compression": { - "anyOf": [ - { - "enum": [ - "maximum", - "normal", - "store" - ], - "type": "string" - }, - { - "type": "null" - } - ], - "default": "normal", - "description": "The compression level. If you want to rapidly test build, `store` can reduce build time significantly. `maximum` doesn't lead to noticeable size difference, but increase build time." - }, - "cscInstallerKeyPassword": { + "allowRootDirectory": { + "description": "Whether can be installed into the root directory. Should usually be `true` unless the product can be installed only to the user’s home directory.\n\nCorresponds to [enable_localSystem](https://developer.apple.com/library/content/documentation/DeveloperTools/Reference/DistributionDefinitionRef/Chapters/Distribution_XML_Ref.html#//apple_ref/doc/uid/TP40005370-CH100-SW70).", + "default": true, "type": [ "null", - "string" + "boolean" ] }, - "cscInstallerLink": { + "identity": { + "description": "The name of certificate to use when signing. Consider using environment variables [CSC_LINK or CSC_NAME](/code-signing) instead of specifying this option.", "type": [ "null", "string" ] }, - "cscKeyPassword": { + "license": { + "description": "The path to EULA license file. Defaults to `license.txt` or `eula.txt` (or uppercase variants). In addition to `txt, `rtf` and `html` supported (don't forget to use `target=\"_blank\"` for links).", "type": [ "null", "string" ] }, - "cscLink": { + "background": { + "description": "Options for the background image for the installer.", + "anyOf": [ + { + "$ref": "#/definitions/PkgBackgroundOptions" + }, + { + "type": "null" + } + ] + }, + "welcome": { + "description": "The path to the welcome file. This may be used to customize the text on the Introduction page of the installer.", "type": [ "null", "string" ] }, - "darkModeSupport": { - "default": false, - "description": "Whether a dark mode is supported. If your app does have a dark mode, you can make your app follow the system-wide dark mode setting.", - "type": "boolean" - }, - "defaultArch": { - "type": "string" - }, - "detectUpdateChannel": { - "default": true, - "description": "Whether to infer update channel from application version pre-release components. e.g. if version `0.12.1-alpha.1`, channel will be set to `alpha`. Otherwise to `latest`.", - "type": "boolean" - }, - "electronLanguages": { + "mustClose": { + "description": "Identifies applications that must be closed before the package is installed.\\n\\nCorresponds to [must-close](https://developer.apple.com/library/archive/documentation/DeveloperTools/Reference/DistributionDefinitionRef/Chapters/Distribution_XML_Ref.html#//apple_ref/doc/uid/TP40005370-CH100-SW77)", "anyOf": [ { + "type": "array", "items": { "type": "string" - }, - "type": "array" + } }, { - "type": "string" + "type": "null" } - ], - "description": "The electron locales. By default Electron locales used as is." + ] }, - "electronUpdaterCompatibility": { - "description": "The [electron-updater compatibility](/auto-update#compatibility) semver range.", + "conclusion": { + "description": "The path to the conclusion file. This may be used to customize the text on the final \"Summary\" page of the installer.", "type": [ "null", "string" ] }, - "entitlements": { - "description": "The path to entitlements file for signing the app. `build/entitlements.mas.plist` will be used if exists (it is a recommended way to set).\nOtherwise [default](https://github.com/electron-userland/electron-osx-sign/blob/master/default.entitlements.mas.plist).", + "isRelocatable": { + "description": "Install bundle over previous version if moved by user?", + "default": true, "type": [ "null", - "string" + "boolean" ] }, - "entitlementsInherit": { - "description": "The path to child entitlements which inherit the security settings for signing frameworks and bundles of a distribution. `build/entitlements.mas.inherit.plist` will be used if exists (it is a recommended way to set).\nOtherwise [default](https://github.com/electron-userland/electron-osx-sign/blob/master/default.entitlements.mas.inherit.plist).", + "isVersionChecked": { + "description": "Don't install bundle if newer version on disk?", + "default": true, "type": [ "null", - "string" + "boolean" ] }, - "entitlementsLoginHelper": { - "description": "Path to login helper entitlement file.\nWhen using App Sandbox, the the `com.apple.security.inherit` key that is normally in the inherited entitlements cannot be inherited since the login helper is a standalone executable.\nDefaults to the value provided for `entitlements`. This option only applies when signing with `entitlements` provided.", + "hasStrictIdentifier": { + "description": "Require identical bundle identifiers at install path?", + "default": true, "type": [ "null", - "string" + "boolean" ] }, - "executableName": { - "description": "The executable name. Defaults to `productName`.", + "overwriteAction": { + "description": "Specifies how an existing version of the bundle on disk should be handled when the version in\nthe package is installed.\n\nIf you specify upgrade, the bundle in the package atomi-cally replaces any version on disk;\nthis has the effect of deleting old paths that no longer exist in the new version of\nthe bundle.\n\nIf you specify update, the bundle in the package overwrites the version on disk, and any files\nnot contained in the package will be left intact; this is appropriate when you are delivering\nan update-only package.\n\nAnother effect of update is that the package bundle will not be installed at all if there is\nnot already a version on disk; this allows a package to deliver an update for an app that\nthe user might have deleted.", + "default": "upgrade", + "anyOf": [ + { + "enum": [ + "update", + "upgrade" + ], + "type": "string" + }, + { + "type": "null" + } + ] + }, + "artifactName": { + "description": "The [artifact file name template](/configuration/configuration#artifact-file-name-template).", "type": [ "null", "string" ] }, - "extendInfo": { - "description": "The extra entries for `Info.plist`." - }, - "extraDistFiles": { + "publish": { "anyOf": [ { - "items": { - "type": "string" - }, - "type": "array" + "$ref": "#/definitions/GithubOptions" }, { - "type": [ - "null", - "string" - ] - } - ], - "description": "Extra files to put in archive. Not applicable for `tar.*`." - }, - "extraFiles": { - "anyOf": [ + "$ref": "#/definitions/S3Options" + }, { - "$ref": "#/definitions/FileSet" + "$ref": "#/definitions/SpacesOptions" + }, + { + "$ref": "#/definitions/GenericServerOptions" + }, + { + "$ref": "#/definitions/BintrayOptions" + }, + { + "$ref": "#/definitions/CustomPublishOptions" }, { + "$ref": "#/definitions/KeygenOptions" + }, + { + "$ref": "#/definitions/SnapStoreOptions" + }, + { + "type": "array", "items": { "anyOf": [ { - "$ref": "#/definitions/FileSet" + "$ref": "#/definitions/GithubOptions" + }, + { + "$ref": "#/definitions/S3Options" + }, + { + "$ref": "#/definitions/SpacesOptions" + }, + { + "$ref": "#/definitions/GenericServerOptions" + }, + { + "$ref": "#/definitions/BintrayOptions" + }, + { + "$ref": "#/definitions/CustomPublishOptions" + }, + { + "$ref": "#/definitions/KeygenOptions" + }, + { + "$ref": "#/definitions/SnapStoreOptions" }, { "type": "string" } ] - }, - "type": "array" + } }, { "type": [ @@ -2880,64 +3353,81 @@ ] } ] + } + } + }, + "PkgBackgroundOptions": { + "description": "Options for the background image in a PKG installer", + "type": "object", + "properties": { + "file": { + "description": "Path to the image to use as an installer background.", + "type": "string" }, - "extraResources": { + "alignment": { + "description": "Alignment of the background image.\nOptions are: center, left, right, top, bottom, topleft, topright, bottomleft, bottomright", + "default": "center", "anyOf": [ { - "$ref": "#/definitions/FileSet" - }, - { - "items": { - "anyOf": [ - { - "$ref": "#/definitions/FileSet" - }, - { - "type": "string" - } - ] - }, - "type": "array" + "enum": [ + "bottom", + "bottomleft", + "bottomright", + "center", + "left", + "right", + "top", + "topleft", + "topright" + ], + "type": "string" }, { - "type": [ - "null", - "string" - ] + "type": "null" } ] }, - "fileAssociations": { + "scaling": { + "description": "Scaling of the background image.\nOptions are: tofit, none, proportional", + "default": "tofit", "anyOf": [ { - "$ref": "#/definitions/FileAssociation" + "enum": [ + "none", + "proportional", + "tofit" + ], + "type": "string" }, { - "items": { - "$ref": "#/definitions/FileAssociation" - }, - "type": "array" + "type": "null" } - ], - "description": "The file associations." - }, - "files": { + ] + } + } + }, + "WindowsConfiguration": { + "type": "object", + "properties": { + "target": { + "description": "The target package type: list of `nsis`, `nsis-web` (Web installer), `portable` ([portable](/configuration/nsis#portable) app without installation), `appx`, `msi`, `squirrel`, `7z`, `zip`, `tar.xz`, `tar.lz`, `tar.gz`, `tar.bz2`, `dir`.\nAppX package can be built only on Windows 10.\n\nTo use Squirrel.Windows please install `electron-builder-squirrel-windows` dependency.", + "default": "nsis", "anyOf": [ { - "$ref": "#/definitions/FileSet" + "$ref": "#/definitions/TargetConfiguration" }, { + "type": "array", "items": { "anyOf": [ { - "$ref": "#/definitions/FileSet" + "$ref": "#/definitions/TargetConfiguration" }, { "type": "string" } ] - }, - "type": "array" + } }, { "type": [ @@ -2947,169 +3437,256 @@ } ] }, - "forceCodeSigning": { - "description": "Whether to fail if app will be not code signed.", - "type": "boolean" + "icon": { + "description": "The path to application icon.", + "default": "build/icon.ico", + "type": [ + "null", + "string" + ] }, - "gatekeeperAssess": { - "default": false, - "description": "Whether to let electron-osx-sign validate the signing or not.", - "type": "boolean" + "legalTrademarks": { + "description": "The trademarks and registered trademarks.", + "type": [ + "null", + "string" + ] }, - "generateUpdatesFilesForAllChannels": { - "default": false, - "description": "Please see [Building and Releasing using Channels](https://github.com/electron-userland/electron-builder/issues/1182#issuecomment-324947139).", - "type": "boolean" + "signingHashAlgorithms": { + "description": "Array of signing algorithms used. For AppX `sha256` is always used.", + "default": "['sha1', 'sha256']", + "anyOf": [ + { + "type": "array", + "items": { + "enum": [ + "sha1", + "sha256" + ], + "type": "string" + } + }, + { + "type": "null" + } + ] }, - "hardenedRuntime": { - "default": true, - "description": "Whether your app has to be signed with hardened runtime.", - "type": "boolean" + "sign": { + "description": "The custom function (or path to file or module id) to sign Windows executable.", + "type": [ + "null", + "string", + "object" + ] }, - "helperBundleId": { - "default": "${appBundleIdentifier}.helper", - "description": "The bundle identifier to use in the application helper's plist.", + "certificateFile": { + "description": "The path to the *.pfx certificate you want to sign with. Please use it only if you cannot use env variable `CSC_LINK` (`WIN_CSC_LINK`) for some reason.\nPlease see [Code Signing](/code-signing).", "type": [ "null", "string" ] }, - "helperEHBundleId": { - "default": "${appBundleIdentifier}.helper.EH", - "description": "The bundle identifier to use in the EH helper's plist.", + "certificatePassword": { + "description": "The password to the certificate provided in `certificateFile`. Please use it only if you cannot use env variable `CSC_KEY_PASSWORD` (`WIN_CSC_KEY_PASSWORD`) for some reason.\nPlease see [Code Signing](/code-signing).", "type": [ "null", "string" ] }, - "helperGPUBundleId": { - "default": "${appBundleIdentifier}.helper.GPU", - "description": "The bundle identifier to use in the GPU helper's plist.", + "certificateSubjectName": { + "description": "The name of the subject of the signing certificate. Required only for EV Code Signing and works only on Windows (or on macOS if [Parallels Desktop](https://www.parallels.com/products/desktop/) Windows 10 virtual machines exits).", "type": [ "null", "string" ] }, - "helperNPBundleId": { - "default": "${appBundleIdentifier}.helper.NP", - "description": "The bundle identifier to use in the NP helper's plist.", + "certificateSha1": { + "description": "The SHA1 hash of the signing certificate. The SHA1 hash is commonly specified when multiple certificates satisfy the criteria specified by the remaining switches. Works only on Windows (or on macOS if [Parallels Desktop](https://www.parallels.com/products/desktop/) Windows 10 virtual machines exits).", "type": [ "null", "string" ] }, - "helperPluginBundleId": { - "default": "${appBundleIdentifier}.helper.Plugin", - "description": "The bundle identifier to use in the Plugin helper's plist.", + "additionalCertificateFile": { + "description": "The path to an additional certificate file you want to add to the signature block.", "type": [ "null", "string" ] }, - "helperRendererBundleId": { - "default": "${appBundleIdentifier}.helper.Renderer", - "description": "The bundle identifier to use in the Renderer helper's plist.", + "rfc3161TimeStampServer": { + "description": "The URL of the RFC 3161 time stamp server.", + "default": "http://timestamp.digicert.com", "type": [ "null", "string" ] }, - "icon": { - "default": "build/icon.icns", - "description": "The path to application icon.", + "timeStampServer": { + "description": "The URL of the time stamp server.", + "default": "http://timestamp.digicert.com", "type": [ "null", "string" ] }, - "identity": { - "description": "The name of certificate to use when signing. Consider using environment variables [CSC_LINK or CSC_NAME](/code-signing) instead of specifying this option.\nMAS installer identity is specified in the [mas](/configuration/mas).", + "publisherName": { + "description": "[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.\nDefaults to common name from your code signing certificate.", + "anyOf": [ + { + "type": "array", + "items": { + "type": "string" + } + }, + { + "type": [ + "null", + "string" + ] + } + ] + }, + "verifyUpdateCodeSignature": { + "description": "Whether to verify the signature of an available update before installation.\nThe [publisher name](#publisherName) will be used for the signature verification.", + "default": true, + "type": "boolean" + }, + "requestedExecutionLevel": { + "description": "The [security level](https://msdn.microsoft.com/en-us/library/6ad1fshk.aspx#Anchor_9) at which the application requests to be executed.\nCannot be specified per target, allowed only in the `win`.", + "default": "asInvoker", + "anyOf": [ + { + "enum": [ + "asInvoker", + "highestAvailable", + "requireAdministrator" + ], + "type": "string" + }, + { + "type": "null" + } + ] + }, + "signAndEditExecutable": { + "description": "Whether to sign and add metadata to executable. Advanced option.", + "default": true, + "type": "boolean" + }, + "signDlls": { + "description": "Whether to sign DLL files. Advanced option.", + "default": false, + "type": "boolean" + }, + "appId": { + "description": "The application id. Used as [CFBundleIdentifier](https://developer.apple.com/library/ios/documentation/General/Reference/InfoPlistKeyReference/Articles/CoreFoundationKeys.html#//apple_ref/doc/uid/20001431-102070) for MacOS and as\n[Application User Model ID](https://msdn.microsoft.com/en-us/library/windows/desktop/dd378459(v=vs.85).aspx) for Windows (NSIS target only, Squirrel.Windows not supported). It is strongly recommended that an explicit ID is set.", + "default": "com.electron.${name}", "type": [ "null", "string" ] }, - "minimumSystemVersion": { - "description": "The minimum version of macOS required for the app to run. Corresponds to `LSMinimumSystemVersion`.", + "artifactName": { + "description": "The [artifact file name template](/configuration/configuration#artifact-file-name-template). Defaults to `${productName}-${version}.${ext}` (some target can have other defaults, see corresponding options).", "type": [ "null", "string" ] }, - "protocols": { + "executableName": { + "description": "The executable name. Defaults to `productName`.", + "type": [ + "null", + "string" + ] + }, + "compression": { + "description": "The compression level. If you want to rapidly test build, `store` can reduce build time significantly. `maximum` doesn't lead to noticeable size difference, but increase build time.", + "default": "normal", "anyOf": [ { - "$ref": "#/definitions/Protocol" - }, - { - "items": { - "$ref": "#/definitions/Protocol" - }, - "type": "array" + "enum": [ + "maximum", + "normal", + "store" + ], + "type": "string" + }, + { + "type": "null" } - ], - "description": "The URL protocol schemes." - }, - "provisioningProfile": { - "description": "The path to the provisioning profile to use when signing, absolute or relative to the app root.", - "type": [ - "null", - "string" ] }, - "publish": { + "files": { "anyOf": [ { - "$ref": "#/definitions/GithubOptions" + "$ref": "#/definitions/FileSet" }, { - "$ref": "#/definitions/S3Options" + "type": "array", + "items": { + "anyOf": [ + { + "$ref": "#/definitions/FileSet" + }, + { + "type": "string" + } + ] + } }, { - "$ref": "#/definitions/SpacesOptions" - }, + "type": [ + "null", + "string" + ] + } + ] + }, + "extraResources": { + "anyOf": [ { - "$ref": "#/definitions/GenericServerOptions" + "$ref": "#/definitions/FileSet" }, { - "$ref": "#/definitions/BintrayOptions" + "type": "array", + "items": { + "anyOf": [ + { + "$ref": "#/definitions/FileSet" + }, + { + "type": "string" + } + ] + } }, { - "$ref": "#/definitions/CustomPublishOptions" - }, + "type": [ + "null", + "string" + ] + } + ] + }, + "extraFiles": { + "anyOf": [ { - "$ref": "#/definitions/SnapStoreOptions" + "$ref": "#/definitions/FileSet" }, { + "type": "array", "items": { "anyOf": [ { - "$ref": "#/definitions/GithubOptions" - }, - { - "$ref": "#/definitions/S3Options" - }, - { - "$ref": "#/definitions/SpacesOptions" - }, - { - "$ref": "#/definitions/GenericServerOptions" - }, - { - "$ref": "#/definitions/BintrayOptions" - }, - { - "$ref": "#/definitions/CustomPublishOptions" - }, - { - "$ref": "#/definitions/SnapStoreOptions" + "$ref": "#/definitions/FileSet" }, { "type": "string" } ] - }, - "type": "array" + } }, { "type": [ @@ -3119,204 +3696,77 @@ } ] }, - "releaseInfo": { - "$ref": "#/definitions/ReleaseInfo", - "description": "The release info. Intended for command line usage:\n\n```\n-c.releaseInfo.releaseNotes=\"new features\"\n```" - }, - "requirements": { - "description": "Path of [requirements file](https://developer.apple.com/library/mac/documentation/Security/Conceptual/CodeSigningGuide/RequirementLang/RequirementLang.html) used in signing. Not applicable for MAS.", - "type": [ - "null", - "string" - ] - }, - "signIgnore": { + "asar": { + "description": "Whether to package the application's source code into an archive, using [Electron's archive format](http://electron.atom.io/docs/tutorial/application-packaging/).\n\nNode modules, that must be unpacked, will be detected automatically, you don't need to explicitly set [asarUnpack](#configuration-asarUnpack) - please file an issue if this doesn't work.", + "default": true, "anyOf": [ { - "items": { - "type": "string" - }, - "type": "array" + "$ref": "#/definitions/AsarOptions" }, { "type": [ "null", - "string" + "boolean" ] } - ], - "description": "Regex or an array of regex's that signal skipping signing a file." + ] }, - "strictVerify": { + "asarUnpack": { + "description": "A [glob patterns](/file-patterns) relative to the [app directory](#MetadataDirectories-app), which specifies which files to unpack when creating the [asar](http://electron.atom.io/docs/tutorial/application-packaging/) archive.", "anyOf": [ { + "type": "array", "items": { "type": "string" - }, - "type": "array" + } }, { "type": [ - "string", - "boolean" + "null", + "string" ] } - ], - "default": true, - "description": "Whether to let electron-osx-sign verify the contents or not." + ] }, - "target": { + "fileAssociations": { + "description": "The file associations.", "anyOf": [ { - "$ref": "#/definitions/TargetConfiguration" + "$ref": "#/definitions/FileAssociation" }, { + "type": "array", "items": { - "anyOf": [ - { - "$ref": "#/definitions/TargetConfiguration" - }, - { - "enum": [ - "7z", - "default", - "dir", - "dmg", - "mas", - "mas-dev", - "pkg", - "tar.bz2", - "tar.gz", - "tar.lz", - "tar.xz", - "zip" - ], - "type": "string" - } - ] - }, - "type": "array" - }, - { - "enum": [ - "7z", - "default", - "dir", - "dmg", - "mas", - "mas-dev", - "pkg", - "tar.bz2", - "tar.gz", - "tar.lz", - "tar.xz", - "zip" - ], - "type": "string" - }, - { - "type": "null" + "$ref": "#/definitions/FileAssociation" + } } - ], - "description": "The target package type: list of `default`, `dmg`, `mas`, `mas-dev`, `pkg`, `7z`, `zip`, `tar.xz`, `tar.lz`, `tar.gz`, `tar.bz2`, `dir`. Defaults to `default` (dmg and zip for Squirrel.Mac)." - }, - "timestamp": { - "type": [ - "null", - "string" - ], - "description": "Specify the URL of the timestamp authority server" + ] }, - "type": { + "protocols": { + "description": "The URL protocol schemes.", "anyOf": [ { - "enum": [ - "development", - "distribution" - ], - "type": "string" + "$ref": "#/definitions/Protocol" }, { - "type": "null" + "type": "array", + "items": { + "$ref": "#/definitions/Protocol" + } } - ], - "default": "distribution", - "description": "Whether to sign app for development or for distribution." - } - }, - "type": "object" - }, - "MetadataDirectories": { - "additionalProperties": false, - "properties": { - "app": { - "description": "The application directory (containing the application package.json), defaults to `app`, `www` or working directory.", - "type": [ - "null", - "string" - ] - }, - "buildResources": { - "default": "build", - "description": "The path to build resources.\n\nPlease note — build resources are not packed into the app. If you need to use some files, e.g. as tray icon, please include required files explicitly: `\"files\": [\"**\\/*\", \"build/icon.*\"]`", - "type": [ - "null", - "string" - ] - }, - "output": { - "default": "dist", - "description": "The output directory. [File macros](/file-patterns#file-macros) are supported.", - "type": [ - "null", - "string" - ] - } - }, - "type": "object" - }, - "MsiOptions": { - "additionalProperties": false, - "properties": { - "artifactName": { - "description": "The [artifact file name template](/configuration/configuration#artifact-file-name-template).", - "type": [ - "null", - "string" - ] - }, - "createDesktopShortcut": { - "default": true, - "description": "Whether to create desktop shortcut. Set to `always` if to recreate also on reinstall (even if removed by user).", - "enum": [ - "always", - false, - true - ] - }, - "createStartMenuShortcut": { - "default": true, - "description": "Whether to create start menu shortcut.", - "type": "boolean" - }, - "menuCategory": { - "default": false, - "description": "Whether to create submenu for start menu shortcut and program files directory. If `true`, company name will be used. Or string value.", - "type": [ - "string", - "boolean" ] }, - "oneClick": { - "default": true, - "description": "One-click installation.", - "type": "boolean" - }, - "perMachine": { - "default": false, - "description": "Whether to install per all users (per-machine).", + "forceCodeSigning": { + "description": "Whether to fail if app will be not code signed.", "type": "boolean" }, + "electronUpdaterCompatibility": { + "description": "The [electron-updater compatibility](/auto-update#compatibility) semver range.", + "type": [ + "null", + "string" + ] + }, "publish": { "anyOf": [ { @@ -3337,10 +3787,14 @@ { "$ref": "#/definitions/CustomPublishOptions" }, + { + "$ref": "#/definitions/KeygenOptions" + }, { "$ref": "#/definitions/SnapStoreOptions" }, { + "type": "array", "items": { "anyOf": [ { @@ -3361,6 +3815,9 @@ { "$ref": "#/definitions/CustomPublishOptions" }, + { + "$ref": "#/definitions/KeygenOptions" + }, { "$ref": "#/definitions/SnapStoreOptions" }, @@ -3368,8 +3825,7 @@ "type": "string" } ] - }, - "type": "array" + } }, { "type": [ @@ -3379,126 +3835,108 @@ } ] }, - "runAfterFinish": { + "detectUpdateChannel": { + "description": "Whether to infer update channel from application version pre-release components. e.g. if version `0.12.1-alpha.1`, channel will be set to `alpha`. Otherwise to `latest`.", "default": true, - "description": "Whether to run the installed application after finish. For assisted installer corresponding checkbox will be removed.", "type": "boolean" }, - "shortcutName": { - "description": "The name that will be used for all shortcuts. Defaults to the application name.", + "generateUpdatesFilesForAllChannels": { + "description": "Please see [Building and Releasing using Channels](https://github.com/electron-userland/electron-builder/issues/1182#issuecomment-324947139).", + "default": false, + "type": "boolean" + }, + "releaseInfo": { + "description": "The release info. Intended for command line usage:\n\n```\n-c.releaseInfo.releaseNotes=\"new features\"\n```", + "$ref": "#/definitions/ReleaseInfo" + }, + "cscLink": { "type": [ "null", "string" ] }, - "upgradeCode": { - "description": "The [upgrade code](https://msdn.microsoft.com/en-us/library/windows/desktop/aa372375(v=vs.85).aspx). Optional, by default generated using app id.", + "cscKeyPassword": { "type": [ "null", "string" ] }, - "warningsAsErrors": { - "default": true, - "description": "If `warningsAsErrors` is `true` (default): treat warnings as errors. If `warningsAsErrors` is `false`: allow warnings.", - "type": "boolean" - }, - "additionalWixArgs": { - "description": "Any additional arguments to be passed to the WiX installer compiler, such as `[\"-ext\", \"WixUtilExtension\"]`", - "type": [ - "null", - "array" - ] + "defaultArch": { + "type": "string" } - }, - "type": "object" + } }, "NsisOptions": { - "additionalProperties": false, + "type": "object", "properties": { - "allowElevation": { + "oneClick": { + "description": "Whether to create one-click installer or assisted.", "default": true, + "type": "boolean" + }, + "perMachine": { + "description": "Whether to show install mode installer page (choice per-machine or per-user) for assisted installer. Or whether installation always per all users (per-machine).\n\nIf `oneClick` is `true` (default): Whether to install per all users (per-machine).\n\nIf `oneClick` is `false` and `perMachine` is `true`: no install mode installer page, always install per-machine.\n\nIf `oneClick` is `false` and `perMachine` is `false` (default): install mode installer page.", + "default": false, + "type": "boolean" + }, + "allowElevation": { "description": "*assisted installer only.* Allow requesting for elevation. If false, user will have to restart installer with elevated permissions.", + "default": true, "type": "boolean" }, "allowToChangeInstallationDirectory": { - "default": false, "description": "*assisted installer only.* Whether to allow user to change installation directory.", + "default": false, "type": "boolean" }, - "artifactName": { - "description": "The [artifact file name template](/configuration/configuration#artifact-file-name-template). Defaults to `${productName} Setup ${version}.${ext}`.", + "installerIcon": { + "description": "The path to installer icon, relative to the [build resources](/configuration/configuration#MetadataDirectories-buildResources) or to the project directory.\nDefaults to `build/installerIcon.ico` or application icon.", "type": [ "null", "string" ] }, - "createDesktopShortcut": { - "default": true, - "description": "Whether to create desktop shortcut. Set to `always` if to recreate also on reinstall (even if removed by user).", - "enum": [ - "always", - false, - true + "uninstallerIcon": { + "description": "The path to uninstaller icon, relative to the [build resources](/configuration/configuration#MetadataDirectories-buildResources) or to the project directory.\nDefaults to `build/uninstallerIcon.ico` or application icon.", + "type": [ + "null", + "string" ] }, - "createStartMenuShortcut": { - "default": true, - "description": "Whether to create start menu shortcut.", - "type": "boolean" - }, - "customNsisBinary": { - "description": "Allows providing the URL configuration for `makensis`.", + "installerHeader": { + "description": "*assisted installer only.* `MUI_HEADERIMAGE`, relative to the [build resources](/configuration/configuration#MetadataDirectories-buildResources) or to the project directory.", + "default": "build/installerHeader.bmp", "type": [ "null", - "object" - ], - "properties": { - "url": { - "description": "URL to download from", - "type": "string" - }, - "checksum": { - "description": "SHA256 to validate downloaded `makensis`", - "type": [ - "null", - "string" - ] - }, - "version": { - "description": "Version of `makensis` (used for caching)", - "type": [ - "null", - "string" - ] - } - } - }, - "debugLogging": { - "default": false, - "description": "Enables `LogText` to be used in `nsh` scripts", - "type": "boolean" - }, - "deleteAppDataOnUninstall": { - "default": false, - "description": "*one-click installer only.* Whether to delete app data on uninstall.", - "type": "boolean" + "string" + ] }, - "differentialPackage": { - "type": "boolean" + "installerHeaderIcon": { + "description": "*one-click installer only.* The path to header icon (above the progress bar), relative to the [build resources](/configuration/configuration#MetadataDirectories-buildResources) or to the project directory.\nDefaults to `build/installerHeaderIcon.ico` or application icon.", + "type": [ + "null", + "string" + ] }, - "displayLanguageSelector": { - "default": false, - "description": "Whether to display a language selection dialog. Not recommended (by default will be detected using OS language).", - "type": "boolean" + "installerSidebar": { + "description": "*assisted installer only.* `MUI_WELCOMEFINISHPAGE_BITMAP`, relative to the [build resources](/configuration/configuration#MetadataDirectories-buildResources) or to the project directory.\nDefaults to `build/installerSidebar.bmp` or `${NSISDIR}\\\\Contrib\\\\Graphics\\\\Wizard\\\\nsis3-metro.bmp`. Image size 164 × 314 pixels.", + "type": [ + "null", + "string" + ] }, - "guid": { - "description": "See [GUID vs Application Name](../configuration/nsis#guid-vs-application-name).", + "uninstallerSidebar": { + "description": "*assisted installer only.* `MUI_UNWELCOMEFINISHPAGE_BITMAP`, relative to the [build resources](/configuration/configuration#MetadataDirectories-buildResources) or to the project directory.\nDefaults to `installerSidebar` option or `build/uninstallerSidebar.bmp` or `build/installerSidebar.bmp` or `${NSISDIR}\\\\Contrib\\\\Graphics\\\\Wizard\\\\nsis3-metro.bmp`", "type": [ "null", "string" ] }, + "uninstallDisplayName": { + "description": "The uninstaller display name in the control panel.", + "default": "${productName} ${version}", + "type": "string" + }, "include": { "description": "The path to NSIS include script to customize installer. Defaults to `build/installer.nsh`. See [Custom NSIS script](#custom-nsis-script).", "type": [ @@ -3506,35 +3944,48 @@ "string" ] }, - "installerHeader": { - "default": "build/installerHeader.bmp", - "description": "*assisted installer only.* `MUI_HEADERIMAGE`, relative to the [build resources](/configuration/configuration#MetadataDirectories-buildResources) or to the project directory.", + "script": { + "description": "The path to NSIS script to customize installer. Defaults to `build/installer.nsi`. See [Custom NSIS script](#custom-nsis-script).", "type": [ "null", "string" ] }, - "installerHeaderIcon": { - "description": "*one-click installer only.* The path to header icon (above the progress bar), relative to the [build resources](/configuration/configuration#MetadataDirectories-buildResources) or to the project directory.\nDefaults to `build/installerHeaderIcon.ico` or application icon.", + "license": { + "description": "The path to EULA license file. Defaults to `license.txt` or `eula.txt` (or uppercase variants). In addition to `txt, `rtf` and `html` supported (don't forget to use `target=\"_blank\"` for links).\n\nMultiple license files in different languages are supported — use lang postfix (e.g. `_de`, `_ru`)). For example, create files `license_de.txt` and `license_en.txt` in the build resources.\nIf OS language is german, `license_de.txt` will be displayed. See map of [language code to name](https://github.com/meikidd/iso-639-1/blob/master/src/data.js).\n\nAppropriate license file will be selected by user OS language.", "type": [ "null", "string" ] }, - "installerIcon": { - "description": "The path to installer icon, relative to the [build resources](/configuration/configuration#MetadataDirectories-buildResources) or to the project directory.\nDefaults to `build/installerIcon.ico` or application icon.", + "artifactName": { + "description": "The [artifact file name template](/configuration/configuration#artifact-file-name-template). Defaults to `${productName} Setup ${version}.${ext}`.", "type": [ "null", "string" ] }, + "deleteAppDataOnUninstall": { + "description": "*one-click installer only.* Whether to delete app data on uninstall.", + "default": false, + "type": "boolean" + }, + "differentialPackage": { + "type": "boolean" + }, + "displayLanguageSelector": { + "description": "Whether to display a language selection dialog. Not recommended (by default will be detected using OS language).", + "default": false, + "type": "boolean" + }, "installerLanguages": { + "description": "The installer languages (e.g. `en_US`, `de_DE`). Change only if you understand what do you do and for what.", "anyOf": [ { + "type": "array", "items": { "type": "string" - }, - "type": "array" + } }, { "type": [ @@ -3542,14 +3993,6 @@ "string" ] } - ], - "description": "The installer languages (e.g. `en_US`, `de_DE`). Change only if you understand what do you do and for what." - }, - "installerSidebar": { - "description": "*assisted installer only.* `MUI_WELCOMEFINISHPAGE_BITMAP`, relative to the [build resources](/configuration/configuration#MetadataDirectories-buildResources) or to the project directory.\nDefaults to `build/installerSidebar.bmp` or `${NSISDIR}\\\\Contrib\\\\Graphics\\\\Wizard\\\\nsis3-metro.bmp`. Image size 164 × 314 pixels.", - "type": [ - "null", - "string" ] }, "language": { @@ -3559,67 +4002,114 @@ "string" ] }, - "license": { - "description": "The path to EULA license file. Defaults to `license.txt` or `eula.txt` (or uppercase variants). In addition to `txt, `rtf` and `html` supported (don't forget to use `target=\"_blank\"` for links).\n\nMultiple license files in different languages are supported — use lang postfix (e.g. `_de`, `_ru`)). For example, create files `license_de.txt` and `license_en.txt` in the build resources.\nIf OS language is german, `license_de.txt` will be displayed. See map of [language code to name](https://github.com/meikidd/iso-639-1/blob/master/src/data.js).\n\nAppropriate license file will be selected by user OS language.", + "multiLanguageInstaller": { + "description": "Whether to create multi-language installer. Defaults to `unicode` option value.", + "type": "boolean" + }, + "packElevateHelper": { + "description": "Whether to pack the elevate executable (required for electron-updater if per-machine installer used or can be used in the future). Ignored if `perMachine` is set to `true`.", + "default": true, + "type": "boolean" + }, + "preCompressedFileExtensions": { + "description": "The file extension of files that will be not compressed. Applicable only for `extraResources` and `extraFiles` files.", + "default": [ + ".avi", + ".mov", + ".m4v", + ".mp4", + ".m4p", + ".qt", + ".mkv", + ".webm", + ".vmdk" + ], + "anyOf": [ + { + "type": "array", + "items": { + "type": "string" + } + }, + { + "type": [ + "null", + "string" + ] + } + ] + }, + "unicode": { + "description": "Whether to create [Unicode installer](http://nsis.sourceforge.net/Docs/Chapter1.html#intro-unicode).", + "default": true, + "type": "boolean" + }, + "guid": { + "description": "See [GUID vs Application Name](../configuration/nsis#guid-vs-application-name).", "type": [ "null", "string" ] }, - "menuCategory": { + "warningsAsErrors": { + "description": "If `warningsAsErrors` is `true` (default): NSIS will treat warnings as errors. If `warningsAsErrors` is `false`: NSIS will allow warnings.", + "default": true, + "type": "boolean" + }, + "useZip": { "default": false, - "description": "Whether to create submenu for start menu shortcut and program files directory. If `true`, company name will be used. Or string value.", + "type": "boolean" + }, + "customNsisBinary": { + "anyOf": [ + { + "$ref": "#/definitions/CustomNsisBinary" + }, + { + "type": "null" + } + ] + }, + "debugLogging": { + "description": "Whether or not to enable NSIS logging for debugging.\nNote: Requires a debug-enabled NSIS build.\nelectron-builder's included `makensis` only supports building debug-enabled NSIS installers on Windows currently\nhttps://github.com/electron-userland/electron-builder/issues/5119#issuecomment-811353612", "type": [ - "string", + "null", "boolean" ] }, - "multiLanguageInstaller": { - "description": "Whether to create multi-language installer. Defaults to `unicode` option value.", + "runAfterFinish": { + "description": "Whether to run the installed application after finish. For assisted installer corresponding checkbox will be removed.", + "default": true, "type": "boolean" }, - "oneClick": { + "createDesktopShortcut": { + "description": "Whether to create desktop shortcut. Set to `always` if to recreate also on reinstall (even if removed by user).", "default": true, - "description": "Whether to create one-click installer or assisted.", - "type": "boolean" + "enum": [ + "always", + false, + true + ] }, - "packElevateHelper": { + "createStartMenuShortcut": { + "description": "Whether to create start menu shortcut.", "default": true, - "description": "Whether to pack the elevate executable (required for electron-updater if per-machine installer used or can be used in the future). Ignored if `perMachine` is set to `true`.", "type": "boolean" }, - "perMachine": { + "menuCategory": { + "description": "Whether to create submenu for start menu shortcut and program files directory. If `true`, company name will be used. Or string value.", "default": false, - "description": "Whether to show install mode installer page (choice per-machine or per-user) for assisted installer. Or whether installation always per all users (per-machine).\n\nIf `oneClick` is `true` (default): Whether to install per all users (per-machine).\n\nIf `oneClick` is `false` and `perMachine` is `true`: no install mode installer page, always install per-machine.\n\nIf `oneClick` is `false` and `perMachine` is `false` (default): install mode installer page.", - "type": "boolean" + "type": [ + "string", + "boolean" + ] }, - "preCompressedFileExtensions": { - "anyOf": [ - { - "items": { - "type": "string" - }, - "type": "array" - }, - { - "type": [ - "null", - "string" - ] - } - ], - "default": [ - ".avi", - ".mov", - ".m4v", - ".mp4", - ".m4p", - ".qt", - ".mkv", - ".webm", - ".vmdk" - ], - "description": "The file extension of files that will be not compressed. Applicable only for `extraResources` and `extraFiles` files." + "shortcutName": { + "description": "The name that will be used for all shortcuts. Defaults to the application name.", + "type": [ + "null", + "string" + ] }, "publish": { "anyOf": [ @@ -3641,10 +4131,14 @@ { "$ref": "#/definitions/CustomPublishOptions" }, + { + "$ref": "#/definitions/KeygenOptions" + }, { "$ref": "#/definitions/SnapStoreOptions" }, { + "type": "array", "items": { "anyOf": [ { @@ -3665,6 +4159,9 @@ { "$ref": "#/definitions/CustomPublishOptions" }, + { + "$ref": "#/definitions/KeygenOptions" + }, { "$ref": "#/definitions/SnapStoreOptions" }, @@ -3672,8 +4169,7 @@ "type": "string" } ] - }, - "type": "array" + } }, { "type": [ @@ -3682,76 +4178,42 @@ ] } ] - }, - "runAfterFinish": { - "default": true, - "description": "Whether to run the installed application after finish. For assisted installer corresponding checkbox will be removed.", - "type": "boolean" - }, - "script": { - "description": "The path to NSIS script to customize installer. Defaults to `build/installer.nsi`. See [Custom NSIS script](#custom-nsis-script).", - "type": [ - "null", - "string" - ] - }, - "shortcutName": { - "description": "The name that will be used for all shortcuts. Defaults to the application name.", + } + } + }, + "CustomNsisBinary": { + "type": "object", + "properties": { + "url": { + "default": "https://github.com/electron-userland/electron-builder-binaries/releases/download", "type": [ "null", "string" ] }, - "unicode": { - "default": true, - "description": "Whether to create [Unicode installer](http://nsis.sourceforge.net/Docs/Chapter1.html#intro-unicode).", - "type": "boolean" - }, - "uninstallDisplayName": { - "default": "${productName} ${version}", - "description": "The uninstaller display name in the control panel.", - "type": "string" - }, - "uninstallerIcon": { - "description": "The path to uninstaller icon, relative to the [build resources](/configuration/configuration#MetadataDirectories-buildResources) or to the project directory.\nDefaults to `build/uninstallerIcon.ico` or application icon.", + "checksum": { + "default": "o+YZsXHp8LNihhuk7JsCDhdIgx0MKKK+1b3sGD+4zX5djZULe4/4QMcAsfQ+0r+a8FnwBt7BVBHkIkJHjKQ0sg==", "type": [ "null", "string" ] }, - "uninstallerSidebar": { - "description": "*assisted installer only.* `MUI_UNWELCOMEFINISHPAGE_BITMAP`, relative to the [build resources](/configuration/configuration#MetadataDirectories-buildResources) or to the project directory.\nDefaults to `installerSidebar` option or `build/uninstallerSidebar.bmp` or `build/installerSidebar.bmp` or `${NSISDIR}\\\\Contrib\\\\Graphics\\\\Wizard\\\\nsis3-metro.bmp`", + "version": { + "default": "3.0.4.2", "type": [ "null", "string" ] - }, - "useZip": { - "default": false, - "type": "boolean" - }, - "warningsAsErrors": { - "default": true, - "description": "If `warningsAsErrors` is `true` (default): NSIS will treat warnings as errors. If `warningsAsErrors` is `false`: NSIS will allow warnings.", - "type": "boolean" } }, - "type": "object" + "required": [ + "url" + ] }, "NsisWebOptions": { - "additionalProperties": false, "description": "Web Installer options.", + "type": "object", "properties": { - "allowElevation": { - "default": true, - "description": "*assisted installer only.* Allow requesting for elevation. If false, user will have to restart installer with elevated permissions.", - "type": "boolean" - }, - "allowToChangeInstallationDirectory": { - "default": false, - "description": "*assisted installer only.* Whether to allow user to change installation directory.", - "type": "boolean" - }, "appPackageUrl": { "description": "The application package download URL. Optional — by default computed using publish configuration.\n\nURL like `https://example.com/download/latest` allows web installer to be version independent (installer will download latest application package).\nPlease note — it is [full URL](https://github.com/electron-userland/electron-builder/issues/1810#issuecomment-317650878).\n\nCustom `X-Arch` http header is set to `32` or `64`.", "type": [ @@ -3766,82 +4228,43 @@ "string" ] }, - "createDesktopShortcut": { - "default": true, - "description": "Whether to create desktop shortcut. Set to `always` if to recreate also on reinstall (even if removed by user).", - "enum": [ - "always", - false, - true - ] - }, - "createStartMenuShortcut": { + "oneClick": { + "description": "Whether to create one-click installer or assisted.", "default": true, - "description": "Whether to create start menu shortcut.", - "type": "boolean" - }, - "customNsisBinary": { - "description": "Allows providing the URL configuration for `makensis`.", - "type": [ - "null", - "object" - ], - "properties": { - "url": { - "description": "URL to download from", - "type": "string" - }, - "checksum": { - "description": "SHA256 to validate downloaded `makensis`", - "type": [ - "null", - "string" - ] - }, - "version": { - "description": "Version of `makensis` (used for caching)", - "type": [ - "null", - "string" - ] - } - } - }, - "debugLogging": { - "default": false, - "description": "Enables `LogText` to be used in `nsh` scripts", "type": "boolean" }, - "deleteAppDataOnUninstall": { + "perMachine": { + "description": "Whether to show install mode installer page (choice per-machine or per-user) for assisted installer. Or whether installation always per all users (per-machine).\n\nIf `oneClick` is `true` (default): Whether to install per all users (per-machine).\n\nIf `oneClick` is `false` and `perMachine` is `true`: no install mode installer page, always install per-machine.\n\nIf `oneClick` is `false` and `perMachine` is `false` (default): install mode installer page.", "default": false, - "description": "*one-click installer only.* Whether to delete app data on uninstall.", "type": "boolean" }, - "differentialPackage": { + "allowElevation": { + "description": "*assisted installer only.* Allow requesting for elevation. If false, user will have to restart installer with elevated permissions.", + "default": true, "type": "boolean" }, - "displayLanguageSelector": { + "allowToChangeInstallationDirectory": { + "description": "*assisted installer only.* Whether to allow user to change installation directory.", "default": false, - "description": "Whether to display a language selection dialog. Not recommended (by default will be detected using OS language).", "type": "boolean" }, - "guid": { - "description": "See [GUID vs Application Name](../configuration/nsis#guid-vs-application-name).", + "installerIcon": { + "description": "The path to installer icon, relative to the [build resources](/configuration/configuration#MetadataDirectories-buildResources) or to the project directory.\nDefaults to `build/installerIcon.ico` or application icon.", "type": [ "null", "string" ] }, - "include": { - "description": "The path to NSIS include script to customize installer. Defaults to `build/installer.nsh`. See [Custom NSIS script](#custom-nsis-script).", + "uninstallerIcon": { + "description": "The path to uninstaller icon, relative to the [build resources](/configuration/configuration#MetadataDirectories-buildResources) or to the project directory.\nDefaults to `build/uninstallerIcon.ico` or application icon.", "type": [ "null", "string" ] }, "installerHeader": { - "default": "build/installerHeader.bmp", "description": "*assisted installer only.* `MUI_HEADERIMAGE`, relative to the [build resources](/configuration/configuration#MetadataDirectories-buildResources) or to the project directory.", + "default": "build/installerHeader.bmp", "type": [ "null", "string" @@ -3854,20 +4277,111 @@ "string" ] }, - "installerIcon": { - "description": "The path to installer icon, relative to the [build resources](/configuration/configuration#MetadataDirectories-buildResources) or to the project directory.\nDefaults to `build/installerIcon.ico` or application icon.", + "installerSidebar": { + "description": "*assisted installer only.* `MUI_WELCOMEFINISHPAGE_BITMAP`, relative to the [build resources](/configuration/configuration#MetadataDirectories-buildResources) or to the project directory.\nDefaults to `build/installerSidebar.bmp` or `${NSISDIR}\\\\Contrib\\\\Graphics\\\\Wizard\\\\nsis3-metro.bmp`. Image size 164 × 314 pixels.", + "type": [ + "null", + "string" + ] + }, + "uninstallerSidebar": { + "description": "*assisted installer only.* `MUI_UNWELCOMEFINISHPAGE_BITMAP`, relative to the [build resources](/configuration/configuration#MetadataDirectories-buildResources) or to the project directory.\nDefaults to `installerSidebar` option or `build/uninstallerSidebar.bmp` or `build/installerSidebar.bmp` or `${NSISDIR}\\\\Contrib\\\\Graphics\\\\Wizard\\\\nsis3-metro.bmp`", + "type": [ + "null", + "string" + ] + }, + "uninstallDisplayName": { + "description": "The uninstaller display name in the control panel.", + "default": "${productName} ${version}", + "type": "string" + }, + "include": { + "description": "The path to NSIS include script to customize installer. Defaults to `build/installer.nsh`. See [Custom NSIS script](#custom-nsis-script).", + "type": [ + "null", + "string" + ] + }, + "script": { + "description": "The path to NSIS script to customize installer. Defaults to `build/installer.nsi`. See [Custom NSIS script](#custom-nsis-script).", "type": [ "null", "string" ] }, + "license": { + "description": "The path to EULA license file. Defaults to `license.txt` or `eula.txt` (or uppercase variants). In addition to `txt, `rtf` and `html` supported (don't forget to use `target=\"_blank\"` for links).\n\nMultiple license files in different languages are supported — use lang postfix (e.g. `_de`, `_ru`)). For example, create files `license_de.txt` and `license_en.txt` in the build resources.\nIf OS language is german, `license_de.txt` will be displayed. See map of [language code to name](https://github.com/meikidd/iso-639-1/blob/master/src/data.js).\n\nAppropriate license file will be selected by user OS language.", + "type": [ + "null", + "string" + ] + }, + "deleteAppDataOnUninstall": { + "description": "*one-click installer only.* Whether to delete app data on uninstall.", + "default": false, + "type": "boolean" + }, + "differentialPackage": { + "type": "boolean" + }, + "displayLanguageSelector": { + "description": "Whether to display a language selection dialog. Not recommended (by default will be detected using OS language).", + "default": false, + "type": "boolean" + }, "installerLanguages": { + "description": "The installer languages (e.g. `en_US`, `de_DE`). Change only if you understand what do you do and for what.", "anyOf": [ { + "type": "array", "items": { "type": "string" - }, - "type": "array" + } + }, + { + "type": [ + "null", + "string" + ] + } + ] + }, + "language": { + "description": "[LCID Dec](https://msdn.microsoft.com/en-au/goglobal/bb964664.aspx), defaults to `1033`(`English - United States`).", + "type": [ + "null", + "string" + ] + }, + "multiLanguageInstaller": { + "description": "Whether to create multi-language installer. Defaults to `unicode` option value.", + "type": "boolean" + }, + "packElevateHelper": { + "description": "Whether to pack the elevate executable (required for electron-updater if per-machine installer used or can be used in the future). Ignored if `perMachine` is set to `true`.", + "default": true, + "type": "boolean" + }, + "preCompressedFileExtensions": { + "description": "The file extension of files that will be not compressed. Applicable only for `extraResources` and `extraFiles` files.", + "default": [ + ".avi", + ".mov", + ".m4v", + ".mp4", + ".m4p", + ".qt", + ".mkv", + ".webm", + ".vmdk" + ], + "anyOf": [ + { + "type": "array", + "items": { + "type": "string" + } }, { "type": [ @@ -3875,84 +4389,79 @@ "string" ] } - ], - "description": "The installer languages (e.g. `en_US`, `de_DE`). Change only if you understand what do you do and for what." - }, - "installerSidebar": { - "description": "*assisted installer only.* `MUI_WELCOMEFINISHPAGE_BITMAP`, relative to the [build resources](/configuration/configuration#MetadataDirectories-buildResources) or to the project directory.\nDefaults to `build/installerSidebar.bmp` or `${NSISDIR}\\\\Contrib\\\\Graphics\\\\Wizard\\\\nsis3-metro.bmp`. Image size 164 × 314 pixels.", - "type": [ - "null", - "string" ] }, - "language": { - "description": "[LCID Dec](https://msdn.microsoft.com/en-au/goglobal/bb964664.aspx), defaults to `1033`(`English - United States`).", - "type": [ - "null", - "string" - ] + "unicode": { + "description": "Whether to create [Unicode installer](http://nsis.sourceforge.net/Docs/Chapter1.html#intro-unicode).", + "default": true, + "type": "boolean" }, - "license": { - "description": "The path to EULA license file. Defaults to `license.txt` or `eula.txt` (or uppercase variants). In addition to `txt, `rtf` and `html` supported (don't forget to use `target=\"_blank\"` for links).\n\nMultiple license files in different languages are supported — use lang postfix (e.g. `_de`, `_ru`)). For example, create files `license_de.txt` and `license_en.txt` in the build resources.\nIf OS language is german, `license_de.txt` will be displayed. See map of [language code to name](https://github.com/meikidd/iso-639-1/blob/master/src/data.js).\n\nAppropriate license file will be selected by user OS language.", + "guid": { + "description": "See [GUID vs Application Name](../configuration/nsis#guid-vs-application-name).", "type": [ "null", "string" ] }, - "menuCategory": { + "warningsAsErrors": { + "description": "If `warningsAsErrors` is `true` (default): NSIS will treat warnings as errors. If `warningsAsErrors` is `false`: NSIS will allow warnings.", + "default": true, + "type": "boolean" + }, + "useZip": { "default": false, - "description": "Whether to create submenu for start menu shortcut and program files directory. If `true`, company name will be used. Or string value.", + "type": "boolean" + }, + "customNsisBinary": { + "anyOf": [ + { + "$ref": "#/definitions/CustomNsisBinary" + }, + { + "type": "null" + } + ] + }, + "debugLogging": { + "description": "Whether or not to enable NSIS logging for debugging.\nNote: Requires a debug-enabled NSIS build.\nelectron-builder's included `makensis` only supports building debug-enabled NSIS installers on Windows currently\nhttps://github.com/electron-userland/electron-builder/issues/5119#issuecomment-811353612", "type": [ - "string", + "null", "boolean" ] }, - "multiLanguageInstaller": { - "description": "Whether to create multi-language installer. Defaults to `unicode` option value.", + "runAfterFinish": { + "description": "Whether to run the installed application after finish. For assisted installer corresponding checkbox will be removed.", + "default": true, "type": "boolean" }, - "oneClick": { + "createDesktopShortcut": { + "description": "Whether to create desktop shortcut. Set to `always` if to recreate also on reinstall (even if removed by user).", "default": true, - "description": "Whether to create one-click installer or assisted.", - "type": "boolean" + "enum": [ + "always", + false, + true + ] }, - "packElevateHelper": { + "createStartMenuShortcut": { + "description": "Whether to create start menu shortcut.", "default": true, - "description": "Whether to pack the elevate executable (required for electron-updater if per-machine installer used or can be used in the future). Ignored if `perMachine` is set to `true`.", "type": "boolean" }, - "perMachine": { + "menuCategory": { + "description": "Whether to create submenu for start menu shortcut and program files directory. If `true`, company name will be used. Or string value.", "default": false, - "description": "Whether to show install mode installer page (choice per-machine or per-user) for assisted installer. Or whether installation always per all users (per-machine).\n\nIf `oneClick` is `true` (default): Whether to install per all users (per-machine).\n\nIf `oneClick` is `false` and `perMachine` is `true`: no install mode installer page, always install per-machine.\n\nIf `oneClick` is `false` and `perMachine` is `false` (default): install mode installer page.", - "type": "boolean" + "type": [ + "string", + "boolean" + ] }, - "preCompressedFileExtensions": { - "anyOf": [ - { - "items": { - "type": "string" - }, - "type": "array" - }, - { - "type": [ - "null", - "string" - ] - } - ], - "default": [ - ".avi", - ".mov", - ".m4v", - ".mp4", - ".m4p", - ".qt", - ".mkv", - ".webm", - ".vmdk" - ], - "description": "The file extension of files that will be not compressed. Applicable only for `extraResources` and `extraFiles` files." + "shortcutName": { + "description": "The name that will be used for all shortcuts. Defaults to the application name.", + "type": [ + "null", + "string" + ] }, "publish": { "anyOf": [ @@ -3974,10 +4483,14 @@ { "$ref": "#/definitions/CustomPublishOptions" }, + { + "$ref": "#/definitions/KeygenOptions" + }, { "$ref": "#/definitions/SnapStoreOptions" }, { + "type": "array", "items": { "anyOf": [ { @@ -3998,6 +4511,9 @@ { "$ref": "#/definitions/CustomPublishOptions" }, + { + "$ref": "#/definitions/KeygenOptions" + }, { "$ref": "#/definitions/SnapStoreOptions" }, @@ -4005,8 +4521,7 @@ "type": "string" } ] - }, - "type": "array" + } }, { "type": [ @@ -4015,259 +4530,253 @@ ] } ] + } + } + }, + "PortableOptions": { + "description": "Portable options.", + "type": "object", + "properties": { + "requestExecutionLevel": { + "description": "The [requested execution level](http://nsis.sourceforge.net/Reference/RequestExecutionLevel) for Windows.", + "default": "user", + "enum": [ + "admin", + "highest", + "user" + ], + "type": "string" }, - "runAfterFinish": { - "default": true, - "description": "Whether to run the installed application after finish. For assisted installer corresponding checkbox will be removed.", - "type": "boolean" - }, - "script": { - "description": "The path to NSIS script to customize installer. Defaults to `build/installer.nsi`. See [Custom NSIS script](#custom-nsis-script).", - "type": [ - "null", - "string" - ] - }, - "shortcutName": { - "description": "The name that will be used for all shortcuts. Defaults to the application name.", + "unpackDirName": { + "description": "The unpack directory for the portable app resources.\n\nIf set to a string, it will be the name in [TEMP](https://www.askvg.com/where-does-windows-store-temporary-files-and-how-to-change-temp-folder-location/) directory\nIf set explicitly to `false`, it will use the Windows temp directory ($PLUGINSDIR) that is unique to each launch of the portable application.\n\nDefaults to [uuid](https://github.com/segmentio/ksuid) of build (changed on each build of portable executable).", "type": [ - "null", - "string" + "string", + "boolean" ] }, - "unicode": { - "default": true, - "description": "Whether to create [Unicode installer](http://nsis.sourceforge.net/Docs/Chapter1.html#intro-unicode).", - "type": "boolean" - }, - "uninstallDisplayName": { - "default": "${productName} ${version}", - "description": "The uninstaller display name in the control panel.", - "type": "string" - }, - "uninstallerIcon": { - "description": "The path to uninstaller icon, relative to the [build resources](/configuration/configuration#MetadataDirectories-buildResources) or to the project directory.\nDefaults to `build/uninstallerIcon.ico` or application icon.", + "splashImage": { + "description": "The image to show while the portable executable is extracting. This image must be a bitmap (`.bmp`) image.", "type": [ "null", "string" ] }, - "uninstallerSidebar": { - "description": "*assisted installer only.* `MUI_UNWELCOMEFINISHPAGE_BITMAP`, relative to the [build resources](/configuration/configuration#MetadataDirectories-buildResources) or to the project directory.\nDefaults to `installerSidebar` option or `build/uninstallerSidebar.bmp` or `build/installerSidebar.bmp` or `${NSISDIR}\\\\Contrib\\\\Graphics\\\\Wizard\\\\nsis3-metro.bmp`", + "artifactName": { + "description": "The [artifact file name template](/configuration/configuration#artifact-file-name-template).", "type": [ "null", "string" ] }, - "useZip": { - "default": false, - "type": "boolean" - }, - "warningsAsErrors": { - "default": true, - "description": "If `warningsAsErrors` is `true` (default): NSIS will treat warnings as errors. If `warningsAsErrors` is `false`: NSIS will allow warnings.", - "type": "boolean" - } - }, - "type": "object" - }, - "OutgoingHttpHeaders": { - "additionalProperties": false, - "type": "object" - }, - "PkgBackgroundOptions": { - "additionalProperties": false, - "description": "Options for the background image in a PKG installer", - "properties": { - "alignment": { + "publish": { "anyOf": [ { - "enum": [ - "bottom", - "bottomleft", - "bottomright", - "center", - "left", - "right", - "top", - "topleft", - "topright" - ], - "type": "string" + "$ref": "#/definitions/GithubOptions" }, { - "type": "null" - } - ], - "default": "center", - "description": "Alignment of the background image.\nOptions are: center, left, right, top, bottom, topleft, topright, bottomleft, bottomright" - }, - "file": { - "description": "Path to the image to use as an installer background.", - "type": "string" - }, - "scaling": { - "anyOf": [ + "$ref": "#/definitions/S3Options" + }, { - "enum": [ - "none", - "proportional", - "tofit" - ], - "type": "string" + "$ref": "#/definitions/SpacesOptions" + }, + { + "$ref": "#/definitions/GenericServerOptions" + }, + { + "$ref": "#/definitions/BintrayOptions" + }, + { + "$ref": "#/definitions/CustomPublishOptions" + }, + { + "$ref": "#/definitions/KeygenOptions" + }, + { + "$ref": "#/definitions/SnapStoreOptions" + }, + { + "type": "array", + "items": { + "anyOf": [ + { + "$ref": "#/definitions/GithubOptions" + }, + { + "$ref": "#/definitions/S3Options" + }, + { + "$ref": "#/definitions/SpacesOptions" + }, + { + "$ref": "#/definitions/GenericServerOptions" + }, + { + "$ref": "#/definitions/BintrayOptions" + }, + { + "$ref": "#/definitions/CustomPublishOptions" + }, + { + "$ref": "#/definitions/KeygenOptions" + }, + { + "$ref": "#/definitions/SnapStoreOptions" + }, + { + "type": "string" + } + ] + } }, { - "type": "null" + "type": [ + "null", + "string" + ] } - ], - "default": "tofit", - "description": "Scaling of the background image.\nOptions are: tofit, none, proportional" - } - }, - "type": "object" - }, - "PkgOptions": { - "additionalProperties": false, - "description": "macOS product archive options.", - "properties": { - "allowAnywhere": { - "default": true, - "description": "Whether can be installed at the root of any volume, including non-system volumes. Otherwise, it cannot be installed at the root of a volume.\n\nCorresponds to [enable_anywhere](https://developer.apple.com/library/content/documentation/DeveloperTools/Reference/DistributionDefinitionRef/Chapters/Distribution_XML_Ref.html#//apple_ref/doc/uid/TP40005370-CH100-SW70).", - "type": [ - "null", - "boolean" ] }, - "allowCurrentUserHome": { + "unicode": { + "description": "Whether to create [Unicode installer](http://nsis.sourceforge.net/Docs/Chapter1.html#intro-unicode).", "default": true, - "description": "Whether can be installed into the current user’s home directory.\nA home directory installation is done as the current user (not as root), and it cannot write outside of the home directory.\nIf the product cannot be installed in the user’s home directory and be not completely functional from user’s home directory.\n\nCorresponds to [enable_currentUserHome](https://developer.apple.com/library/content/documentation/DeveloperTools/Reference/DistributionDefinitionRef/Chapters/Distribution_XML_Ref.html#//apple_ref/doc/uid/TP40005370-CH100-SW70).", + "type": "boolean" + }, + "guid": { + "description": "See [GUID vs Application Name](../configuration/nsis#guid-vs-application-name).", "type": [ "null", - "boolean" + "string" ] }, - "allowRootDirectory": { + "warningsAsErrors": { + "description": "If `warningsAsErrors` is `true` (default): NSIS will treat warnings as errors. If `warningsAsErrors` is `false`: NSIS will allow warnings.", "default": true, - "description": "Whether can be installed into the root directory. Should usually be `true` unless the product can be installed only to the user’s home directory.\n\nCorresponds to [enable_localSystem](https://developer.apple.com/library/content/documentation/DeveloperTools/Reference/DistributionDefinitionRef/Chapters/Distribution_XML_Ref.html#//apple_ref/doc/uid/TP40005370-CH100-SW70).", - "type": [ - "null", - "boolean" - ] + "type": "boolean" }, - "artifactName": { - "description": "The [artifact file name template](/configuration/configuration#artifact-file-name-template).", - "type": [ - "null", - "string" - ] + "useZip": { + "default": false, + "type": "boolean" }, - "background": { + "customNsisBinary": { "anyOf": [ { - "$ref": "#/definitions/PkgBackgroundOptions" + "$ref": "#/definitions/CustomNsisBinary" }, { "type": "null" } - ], - "description": "Options for the background image for the installer." - }, - "conclusion": { - "description": "The path to the conclusion file. This may be used to customize the text on the final \"Summary\" page of the installer.", - "type": [ - "null", - "string" ] }, - "hasStrictIdentifier": { - "default": true, - "description": "Require identical bundle identifiers at install path?", + "debugLogging": { + "description": "Whether or not to enable NSIS logging for debugging.\nNote: Requires a debug-enabled NSIS build.\nelectron-builder's included `makensis` only supports building debug-enabled NSIS installers on Windows currently\nhttps://github.com/electron-userland/electron-builder/issues/5119#issuecomment-811353612", "type": [ "null", "boolean" ] + } + } + }, + "AppXOptions": { + "type": "object", + "properties": { + "applicationId": { + "description": "The application id. Defaults to `identityName`. Can’t start with numbers.", + "type": "string" }, - "identity": { - "description": "The name of certificate to use when signing. Consider using environment variables [CSC_LINK or CSC_NAME](/code-signing) instead of specifying this option.", + "backgroundColor": { + "description": "The background color of the app tile. See [Visual Elements](https://msdn.microsoft.com/en-us/library/windows/apps/br211471.aspx).", + "default": "#464646", "type": [ "null", "string" ] }, - "installLocation": { - "default": "/Applications", - "description": "The install location. [Do not use it](https://stackoverflow.com/questions/12863944/how-do-you-specify-a-default-install-location-to-home-with-pkgbuild) to create per-user package.\nMostly never you will need to change this option. `/Applications` would install it as expected into `/Applications` if the local system domain is chosen, or into `$HOME/Applications` if the home installation is chosen.", + "displayName": { + "description": "A friendly name that can be displayed to users. Corresponds to [Properties.DisplayName](https://msdn.microsoft.com/en-us/library/windows/apps/br211432.aspx).\nDefaults to the application product name.", "type": [ "null", "string" ] }, - "isRelocatable": { - "default": true, - "description": "Install bundle over previous version if moved by user?", + "identityName": { + "description": "The name. Corresponds to [Identity.Name](https://msdn.microsoft.com/en-us/library/windows/apps/br211441.aspx). Defaults to the [application name](/configuration/configuration#Metadata-name).", "type": [ "null", - "boolean" + "string" ] }, - "isVersionChecked": { - "default": true, - "description": "Don't install bundle if newer version on disk?", + "publisher": { + "description": "The Windows Store publisher. Not used if AppX is build for testing. See [AppX Package Code Signing](#appx-package-code-signing) below.", "type": [ "null", - "boolean" + "string" ] }, - "license": { - "description": "The path to EULA license file. Defaults to `license.txt` or `eula.txt` (or uppercase variants). In addition to `txt, `rtf` and `html` supported (don't forget to use `target=\"_blank\"` for links).", + "publisherDisplayName": { + "description": "A friendly name for the publisher that can be displayed to users. Corresponds to [Properties.PublisherDisplayName](https://msdn.microsoft.com/en-us/library/windows/apps/br211460.aspx).\nDefaults to company name from the application metadata.", "type": [ "null", "string" ] }, - "mustClose": { + "languages": { + "description": "The list of [supported languages](https://docs.microsoft.com/en-us/windows/uwp/globalizing/manage-language-and-region#specify-the-supported-languages-in-the-apps-manifest) that will be listed in the Windows Store.\nThe first entry (index 0) will be the default language.\nDefaults to en-US if omitted.", "anyOf": [ { + "type": "array", "items": { "type": "string" - }, - "type": "array" + } }, { - "type": "null" + "type": [ + "null", + "string" + ] } - ], - "description": "Identifies applications that must be closed before the package is installed.\\n\\nCorresponds to [must-close](https://developer.apple.com/library/archive/documentation/DeveloperTools/Reference/DistributionDefinitionRef/Chapters/Distribution_XML_Ref.html#//apple_ref/doc/uid/TP40005370-CH100-SW77)" + ] }, - "overwriteAction": { - "anyOf": [ - { - "enum": [ - "update", - "upgrade" - ], - "type": "string" - }, - { - "type": "null" - } - ], - "default": "upgrade", - "description": "Specifies how an existing version of the bundle on disk should be handled when the version in\nthe package is installed.\n\nIf you specify upgrade, the bundle in the package atomi-cally replaces any version on disk;\nthis has the effect of deleting old paths that no longer exist in the new version of\nthe bundle.\n\nIf you specify update, the bundle in the package overwrites the version on disk, and any files\nnot contained in the package will be left intact; this is appropriate when you are delivering\nan update-only package.\n\nAnother effect of update is that the package bundle will not be installed at all if there is\nnot already a version on disk; this allows a package to deliver an update for an app that\nthe user might have deleted." + "addAutoLaunchExtension": { + "description": "Whether to add auto launch extension. Defaults to `true` if [electron-winstore-auto-launch](https://github.com/felixrieseberg/electron-winstore-auto-launch) in the dependencies.", + "type": "boolean" }, - "productbuild": { + "customExtensionsPath": { + "description": "Relative path to custom extensions xml to be included in an `appmanifest.xml`.", + "type": "string" + }, + "showNameOnTiles": { + "description": "Whether to overlay the app's name on top of tile images on the Start screen. Defaults to `false`. (https://docs.microsoft.com/en-us/uwp/schemas/appxpackage/uapmanifestschema/element-uap-shownameontiles) in the dependencies.", + "default": false, + "type": "boolean" + }, + "electronUpdaterAware": { + "default": false, + "type": "boolean" + }, + "setBuildNumber": { + "description": "Whether to set build number. See https://github.com/electron-userland/electron-builder/issues/3875", + "default": false, + "type": "boolean" + }, + "makeappxArgs": { "anyOf": [ { + "type": "array", "items": { "type": "string" - }, - "type": "array" + } }, { "type": "null" } - ], - "description": "should be not documented, only to experiment" + ] + }, + "artifactName": { + "description": "The [artifact file name template](/configuration/configuration#artifact-file-name-template).", + "type": [ + "null", + "string" + ] }, "publish": { "anyOf": [ @@ -4289,10 +4798,14 @@ { "$ref": "#/definitions/CustomPublishOptions" }, + { + "$ref": "#/definitions/KeygenOptions" + }, { "$ref": "#/definitions/SnapStoreOptions" }, { + "type": "array", "items": { "anyOf": [ { @@ -4313,6 +4826,9 @@ { "$ref": "#/definitions/CustomPublishOptions" }, + { + "$ref": "#/definitions/KeygenOptions" + }, { "$ref": "#/definitions/SnapStoreOptions" }, @@ -4320,8 +4836,7 @@ "type": "string" } ] - }, - "type": "array" + } }, { "type": [ @@ -4330,51 +4845,84 @@ ] } ] + } + } + }, + "MsiOptions": { + "type": "object", + "properties": { + "oneClick": { + "description": "One-click installation.", + "default": true, + "type": "boolean" }, - "scripts": { - "default": "build/pkg-scripts", - "description": "The scripts directory, relative to `build` (build resources directory).\nThe scripts can be in any language so long as the files are marked executable and have the appropriate shebang indicating the path to the interpreter.\nScripts are required to be executable (`chmod +x file`).", + "upgradeCode": { + "description": "The [upgrade code](https://msdn.microsoft.com/en-us/library/windows/desktop/aa372375(v=vs.85).aspx). Optional, by default generated using app id.", "type": [ "null", "string" ] }, - "welcome": { - "description": "The path to the welcome file. This may be used to customize the text on the Introduction page of the installer.", + "warningsAsErrors": { + "description": "If `warningsAsErrors` is `true` (default): treat warnings as errors. If `warningsAsErrors` is `false`: allow warnings.", + "default": true, + "type": "boolean" + }, + "additionalWixArgs": { + "description": "Any additional arguments to be passed to the WiX installer compiler, such as `[\"-ext\", \"WixUtilExtension\"]`", + "anyOf": [ + { + "type": "array", + "items": { + "type": "string" + } + }, + { + "type": "null" + } + ] + }, + "perMachine": { + "description": "Whether to install per all users (per-machine).", + "default": false, + "type": "boolean" + }, + "runAfterFinish": { + "description": "Whether to run the installed application after finish. For assisted installer corresponding checkbox will be removed.", + "default": true, + "type": "boolean" + }, + "createDesktopShortcut": { + "description": "Whether to create desktop shortcut. Set to `always` if to recreate also on reinstall (even if removed by user).", + "default": true, + "enum": [ + "always", + false, + true + ] + }, + "createStartMenuShortcut": { + "description": "Whether to create start menu shortcut.", + "default": true, + "type": "boolean" + }, + "menuCategory": { + "description": "Whether to create submenu for start menu shortcut and program files directory. If `true`, company name will be used. Or string value.", + "default": false, "type": [ - "null", - "string" + "string", + "boolean" ] - } - }, - "type": "object" - }, - "PlugDescriptor": { - "additionalProperties": { - "anyOf": [ - { - "type": "object" - }, - { - "type": "null" - } - ] - }, - "type": "object" - }, - "PortableOptions": { - "additionalProperties": false, - "description": "Portable options.", - "properties": { - "artifactName": { - "description": "The [artifact file name template](/configuration/configuration#artifact-file-name-template).", + }, + "shortcutName": { + "description": "The name that will be used for all shortcuts. Defaults to the application name.", "type": [ "null", "string" ] }, - "guid": { - "description": "See [GUID vs Application Name](../configuration/nsis#guid-vs-application-name).", + "artifactName": { + "description": "The [artifact file name template](/configuration/configuration#artifact-file-name-template).", "type": [ "null", "string" @@ -4400,10 +4948,14 @@ { "$ref": "#/definitions/CustomPublishOptions" }, + { + "$ref": "#/definitions/KeygenOptions" + }, { "$ref": "#/definitions/SnapStoreOptions" }, { + "type": "array", "items": { "anyOf": [ { @@ -4424,6 +4976,9 @@ { "$ref": "#/definitions/CustomPublishOptions" }, + { + "$ref": "#/definitions/KeygenOptions" + }, { "$ref": "#/definitions/SnapStoreOptions" }, @@ -4431,8 +4986,7 @@ "type": "string" } ] - }, - "type": "array" + } }, { "type": [ @@ -4441,361 +4995,192 @@ ] } ] - }, - "requestExecutionLevel": { - "default": "user", - "description": "The [requested execution level](http://nsis.sourceforge.net/Reference/RequestExecutionLevel) for Windows.", - "enum": [ - "admin", - "highest", - "user" - ], - "type": "string" - }, - "splashImage": { - "description": "The image to show while the portable executable is extracting. This image must be a bitmap (`.bmp`) image.", + } + } + }, + "SquirrelWindowsOptions": { + "type": "object", + "properties": { + "iconUrl": { + "description": "A URL to an ICO file to use as the application icon (displayed in Control Panel > Programs and Features). Defaults to the Electron icon.\n\nPlease note — [local icon file url is not accepted](https://github.com/atom/grunt-electron-installer/issues/73), must be https/http.\n\nIf you don't plan to build windows installer, you can omit it.\nIf your project repository is public on GitHub, it will be `https://github.com/${u}/${p}/blob/master/build/icon.ico?raw=true` by default.", "type": [ "null", "string" ] }, - "unicode": { - "default": true, - "description": "Whether to create [Unicode installer](http://nsis.sourceforge.net/Docs/Chapter1.html#intro-unicode).", - "type": "boolean" - }, - "unpackDirName": { - "description": "The unpack directory for the portable app resources.\nIf set to a string, it will be the name in [TEMP](https://www.askvg.com/where-does-windows-store-temporary-files-and-how-to-change-temp-folder-location/) directory.\nIf set explicitly to `false`, it will use the Windows temp directory ($PLUGINSDIR) that is unique to each launch of the portable application.\nDefaults to [uuid](https://github.com/segmentio/ksuid) of build (changed on each build of portable executable).", + "loadingGif": { + "description": "The path to a .gif file to display during install. `build/install-spinner.gif` will be used if exists (it is a recommended way to set)\n(otherwise [default](https://github.com/electron/windows-installer/blob/master/resources/install-spinner.gif)).", "type": [ - "string", - "boolean" + "null", + "string" ] }, - "useZip": { - "default": false, - "type": "boolean" - }, - "warningsAsErrors": { - "default": true, - "description": "If `warningsAsErrors` is `true` (default): NSIS will treat warnings as errors. If `warningsAsErrors` is `false`: NSIS will allow warnings.", + "msi": { + "description": "Whether to create an MSI installer. Defaults to `false` (MSI is not created).", "type": "boolean" - } - }, - "type": "object" - }, - "Protocol": { - "additionalProperties": false, - "description": "URL Protocol Schemes. Protocols to associate the app with. macOS only.\n\nPlease note — on macOS [you need to register an `open-url` event handler](http://electron.atom.io/docs/api/app/#event-open-url-macos).", - "properties": { - "name": { - "description": "The name. e.g. `IRC server URL`.", - "type": "string" - }, - "role": { - "default": "Editor", - "description": "*macOS-only* The app’s role with respect to the type.", - "enum": [ - "Editor", - "None", - "Shell", - "Viewer" - ], - "type": "string" - }, - "schemes": { - "description": "The schemes. e.g. `[\"irc\", \"ircs\"]`.", - "items": { - "type": "string" - }, - "type": "array" - } - }, - "required": [ - "name", - "schemes" - ], - "type": "object" - }, - "PublishProvider": { - "enum": [ - "bintray", - "custom", - "generic", - "github", - "s3", - "snapStore", - "spaces" - ], - "type": "string" - }, - "ReleaseInfo": { - "additionalProperties": false, - "properties": { - "releaseDate": { - "description": "The release date.", - "type": "string" }, - "releaseName": { - "description": "The release name.", + "remoteReleases": { + "description": "A URL to your existing updates. Or `true` to automatically set to your GitHub repository. If given, these will be downloaded to create delta updates.", "type": [ "null", - "string" + "string", + "boolean" ] }, - "releaseNotes": { - "description": "The release notes.", + "remoteToken": { + "description": "Authentication token for remote updates", "type": [ "null", "string" ] }, - "releaseNotesFile": { - "description": "The path to release notes file. Defaults to `release-notes-${platform}.md` (where `platform` it is current platform — `mac`, `linux` or `windows`) or `release-notes.md` in the [build resources](#MetadataDirectories-buildResources).", - "type": [ - "null", - "string" - ] - } - }, - "type": "object" - }, - "S3Options": { - "additionalProperties": false, - "properties": { - "acl": { - "anyOf": [ - { - "enum": [ - "private", - "public-read" - ], - "type": "string" - }, - { - "type": "null" - } - ], - "default": "public-read", - "description": "The ACL. Set to `null` to not [add](https://github.com/electron-userland/electron-builder/issues/1822).\n\nPlease see [required permissions for the S3 provider](https://github.com/electron-userland/electron-builder/issues/1618#issuecomment-314679128)." + "useAppIdAsId": { + "description": "Use `appId` to identify package instead of `name`.", + "type": "boolean" }, - "bucket": { - "description": "The bucket name.", + "name": { + "description": "https://github.com/electron-userland/electron-builder/issues/1743", "type": "string" }, - "channel": { - "default": "latest", - "description": "The update channel.", + "artifactName": { + "description": "The [artifact file name template](/configuration/configuration#artifact-file-name-template).", "type": [ "null", "string" ] }, - "encryption": { + "publish": { "anyOf": [ { - "enum": [ - "AES256", - "aws:kms" - ], - "type": "string" + "$ref": "#/definitions/GithubOptions" }, { - "type": "null" - } - ], - "description": "Server-side encryption algorithm to use for the object." - }, - "endpoint": { - "description": "The endpoint URI to send requests to. The default endpoint is built from the configured region.\nThe endpoint should be a string like `https://{service}.{region}.amazonaws.com`.", - "type": [ - "null", - "string" - ] - }, - "path": { - "default": "/", - "description": "The directory path.", - "type": [ - "null", - "string" - ] - }, - "provider": { - "description": "The provider. Must be `s3`.", - "enum": [ - "s3" - ], - "type": "string" - }, - "publishAutoUpdate": { - "default": true, - "description": "Whether to publish auto update info files.\n\nAuto update relies only on the first provider in the list (you can specify several publishers).\nThus, probably, there`s no need to upload the metadata files for the other configured providers. But by default will be uploaded.", - "type": "boolean" - }, - "publisherName": { - "anyOf": [ + "$ref": "#/definitions/S3Options" + }, { - "items": { - "type": "string" - }, - "type": "array" + "$ref": "#/definitions/SpacesOptions" }, { - "type": "null" - } - ] - }, - "region": { - "description": "The region. Is determined and set automatically when publishing.", - "type": [ - "null", - "string" - ] - }, - "requestHeaders": { - "$ref": "#/definitions/OutgoingHttpHeaders", - "description": "Any custom request headers" - }, - "storageClass": { - "anyOf": [ + "$ref": "#/definitions/GenericServerOptions" + }, { - "enum": [ - "REDUCED_REDUNDANCY", - "STANDARD", - "STANDARD_IA" - ], - "type": "string" + "$ref": "#/definitions/BintrayOptions" + }, + { + "$ref": "#/definitions/CustomPublishOptions" + }, + { + "$ref": "#/definitions/KeygenOptions" + }, + { + "$ref": "#/definitions/SnapStoreOptions" + }, + { + "type": "array", + "items": { + "anyOf": [ + { + "$ref": "#/definitions/GithubOptions" + }, + { + "$ref": "#/definitions/S3Options" + }, + { + "$ref": "#/definitions/SpacesOptions" + }, + { + "$ref": "#/definitions/GenericServerOptions" + }, + { + "$ref": "#/definitions/BintrayOptions" + }, + { + "$ref": "#/definitions/CustomPublishOptions" + }, + { + "$ref": "#/definitions/KeygenOptions" + }, + { + "$ref": "#/definitions/SnapStoreOptions" + }, + { + "type": "string" + } + ] + } }, { - "type": "null" + "type": [ + "null", + "string" + ] } - ], - "default": "STANDARD", - "description": "The type of storage to use for the object." - }, - "updaterCacheDirName": { - "type": [ - "null", - "string" ] } - }, - "required": [ - "bucket", - "provider" - ], - "type": "object" - }, - "SlotDescriptor": { - "additionalProperties": { - "anyOf": [ - { - "typeof": "function" - }, - { - "type": "null" - } - ] - }, - "type": "object" + } }, - "SnapOptions": { - "additionalProperties": false, + "LinuxConfiguration": { + "type": "object", "properties": { - "after": { + "target": { + "description": "Target package type: list of `AppImage`, `snap`, `deb`, `rpm`, `freebsd`, `pacman`, `p5p`, `apk`, `7z`, `zip`, `tar.xz`, `tar.lz`, `tar.gz`, `tar.bz2`, `dir`.\n\nelectron-builder [docker image](/multi-platform-build#docker) can be used to build Linux targets on any platform.\n\nPlease [do not put an AppImage into another archive](https://github.com/probonopd/AppImageKit/wiki/Creating-AppImages#common-mistake) like a .zip or .tar.gz.", + "default": "AppImage", "anyOf": [ { - "items": { - "type": "string" - }, - "type": "array" + "$ref": "#/definitions/TargetConfiguration" }, { - "type": "null" - } - ], - "description": "Specifies any [parts](https://snapcraft.io/docs/reference/parts) that should be built before this part.\nDefaults to `[\"desktop-gtk2\"\"]`.\n\nIf list contains `default`, it will be replaced to default list, so, `[\"default\", \"foo\"]` can be used to add custom parts `foo` in addition to defaults." - }, - "appPartStage": { - "anyOf": [ - { + "type": "array", "items": { - "type": "string" - }, - "type": "array" + "anyOf": [ + { + "$ref": "#/definitions/TargetConfiguration" + }, + { + "type": "string" + } + ] + } }, { - "type": "null" + "type": [ + "null", + "string" + ] } - ], - "description": "Specifies which files from the app part to stage and which to exclude. Individual files, directories, wildcards, globstars, and exclusions are accepted. See [Snapcraft filesets](https://snapcraft.io/docs/snapcraft-filesets) to learn more about the format.\n\nThe defaults can be found in [snap.ts](https://github.com/electron-userland/electron-builder/blob/master/packages/app-builder-lib/templates/snap/snapcraft.yaml#L29)." + ] }, - "artifactName": { - "description": "The [artifact file name template](/configuration/configuration#artifact-file-name-template).", + "maintainer": { + "description": "The maintainer. Defaults to [author](/configuration/configuration#Metadata-author).", "type": [ "null", "string" ] }, - "assumes": { - "anyOf": [ - { - "items": { - "type": "string" - }, - "type": "array" - }, - { - "type": [ - "null", - "string" - ] - } - ], - "description": "The list of features that must be supported by the core in order for this snap to install." - }, - "autoStart": { - "default": false, - "description": "Whether or not the snap should automatically start on login.", - "type": "boolean" + "vendor": { + "description": "The vendor. Defaults to [author](/configuration/configuration#Metadata-author).", + "type": [ + "null", + "string" + ] }, - "buildPackages": { - "anyOf": [ - { - "items": { - "type": "string" - }, - "type": "array" - }, - { - "type": "null" - } - ], - "description": "The list of debian packages needs to be installed for building this snap." + "icon": { + "description": "The path to icon set directory or one png file, relative to the [build resources](/configuration/configuration#MetadataDirectories-buildResources) or to the project directory. The icon filename must contain the size (e.g. 32x32.png) of the icon.\nBy default will be generated automatically based on the macOS icns file.", + "type": "string" }, - "category": { - "description": "The [application category](https://specifications.freedesktop.org/menu-spec/latest/apa.html#main-category-registry).", + "packageCategory": { + "description": "backward compatibility + to allow specify fpm-only category for all possible fpm targets in one place", "type": [ "null", "string" ] }, - "confinement": { - "anyOf": [ - { - "enum": [ - "classic", - "devmode", - "strict" - ], - "type": "string" - }, - { - "type": "null" - } - ], - "default": "strict", - "description": "The type of [confinement](https://snapcraft.io/docs/reference/confinement) supported by the snap." + "synopsis": { + "description": "The [short description](https://www.debian.org/doc/debian-policy/ch-controlfields.html#s-f-Description).", + "type": [ + "null", + "string" + ] }, "description": { "description": "As [description](/configuration/configuration#Metadata-description) from application package.json, but allows you to specify different for Linux.", @@ -4804,163 +5189,100 @@ "string" ] }, - "desktop": { - "description": "The [Desktop file](https://developer.gnome.org/integration-guide/stable/desktop-files.html.en) entries (name to value)." + "category": { + "description": "The [application category](https://specifications.freedesktop.org/menu-spec/latest/apa.html#main-category-registry).", + "type": [ + "null", + "string" + ] }, - "environment": { + "mimeTypes": { + "description": "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.", "anyOf": [ { - "additionalProperties": { + "type": "array", + "items": { "type": "string" - }, - "type": "object" + } }, { "type": "null" } - ], - "description": "The custom environment. Defaults to `{\"TMPDIR: \"$XDG_RUNTIME_DIR\"}`. If you set custom, it will be merged with default." + ] + }, + "desktop": { + "description": "The [Desktop file](https://developer.gnome.org/integration-guide/stable/desktop-files.html.en) entries (name to value)." }, "executableArgs": { + "description": "The executable parameters. Pass to executableName", "anyOf": [ { + "type": "array", "items": { "type": "string" - }, - "type": "array" - }, - { - "type": "null" - } - ], - "description": "The executable parameters. Pass to executableName" - }, - "grade": { - "anyOf": [ - { - "enum": [ - "devel", - "stable" - ], - "type": "string" + } }, { "type": "null" } - ], - "default": "stable", - "description": "The quality grade of the snap. It can be either `devel` (i.e. a development version of the snap, so not to be published to the “stable” or “candidate” channels) or “stable” (i.e. a stable release or release candidate, which can be released to all channels)." + ] }, - "hooks": { - "default": "build/snap-hooks", - "description": "The [hooks](https://docs.snapcraft.io/build-snaps/hooks) directory, relative to `build` (build resources directory).", + "appId": { + "description": "The application id. Used as [CFBundleIdentifier](https://developer.apple.com/library/ios/documentation/General/Reference/InfoPlistKeyReference/Articles/CoreFoundationKeys.html#//apple_ref/doc/uid/20001431-102070) for MacOS and as\n[Application User Model ID](https://msdn.microsoft.com/en-us/library/windows/desktop/dd378459(v=vs.85).aspx) for Windows (NSIS target only, Squirrel.Windows not supported). It is strongly recommended that an explicit ID is set.", + "default": "com.electron.${name}", "type": [ "null", "string" ] }, - "layout": { - "anyOf": [ - { - "typeof": "function" - }, - { - "type": "null" - } - ], - "description": "Specifies any files to make accessible from locations such as `/usr`, `/var`, and `/etc`. See [snap layouts](https://snapcraft.io/docs/snap-layouts) to learn more." - }, - "mimeTypes": { - "anyOf": [ - { - "items": { - "type": "string" - }, - "type": "array" - }, - { - "type": "null" - } - ], - "description": "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." + "artifactName": { + "description": "The [artifact file name template](/configuration/configuration#artifact-file-name-template). Defaults to `${productName}-${version}.${ext}` (some target can have other defaults, see corresponding options).", + "type": [ + "null", + "string" + ] }, - "plugs": { - "anyOf": [ - { - "$ref": "#/definitions/PlugDescriptor" - }, - { - "items": { - "anyOf": [ - { - "$ref": "#/definitions/PlugDescriptor" - }, - { - "type": "string" - } - ] - }, - "type": "array" - }, - { - "type": "null" - } - ], - "description": "The list of [plugs](https://snapcraft.io/docs/reference/interfaces).\nDefaults to `[\"desktop\", \"desktop-legacy\", \"home\", \"x11\", \"unity7\", \"browser-support\", \"network\", \"gsettings\", \"audio-playback\", \"pulseaudio\", \"opengl\"]`.\n\nIf list contains `default`, it will be replaced to default list, so, `[\"default\", \"foo\"]` can be used to add custom plug `foo` in addition to defaults.\n\nAdditional attributes can be specified using object instead of just name of plug:\n```\n[\n {\n \"browser-sandbox\": {\n \"interface\": \"browser-support\",\n \"allow-sandbox\": true\n },\n },\n \"another-simple-plug-name\"\n]\n```" + "executableName": { + "description": "The executable name. Defaults to `productName`.", + "type": [ + "null", + "string" + ] }, - "publish": { + "compression": { + "description": "The compression level. If you want to rapidly test build, `store` can reduce build time significantly. `maximum` doesn't lead to noticeable size difference, but increase build time.", + "default": "normal", "anyOf": [ { - "$ref": "#/definitions/GithubOptions" - }, - { - "$ref": "#/definitions/S3Options" - }, - { - "$ref": "#/definitions/SpacesOptions" - }, - { - "$ref": "#/definitions/GenericServerOptions" - }, - { - "$ref": "#/definitions/BintrayOptions" - }, - { - "$ref": "#/definitions/CustomPublishOptions" + "enum": [ + "maximum", + "normal", + "store" + ], + "type": "string" }, { - "$ref": "#/definitions/SnapStoreOptions" + "type": "null" + } + ] + }, + "files": { + "anyOf": [ + { + "$ref": "#/definitions/FileSet" }, { + "type": "array", "items": { "anyOf": [ { - "$ref": "#/definitions/GithubOptions" - }, - { - "$ref": "#/definitions/S3Options" - }, - { - "$ref": "#/definitions/SpacesOptions" - }, - { - "$ref": "#/definitions/GenericServerOptions" - }, - { - "$ref": "#/definitions/BintrayOptions" - }, - { - "$ref": "#/definitions/CustomPublishOptions" - }, - { - "$ref": "#/definitions/SnapStoreOptions" + "$ref": "#/definitions/FileSet" }, { "type": "string" } ] - }, - "type": "array" + } }, { "type": [ @@ -4970,253 +5292,129 @@ } ] }, - "slots": { + "extraResources": { "anyOf": [ { - "$ref": "#/definitions/PlugDescriptor" + "$ref": "#/definitions/FileSet" }, { + "type": "array", "items": { "anyOf": [ { - "$ref": "#/definitions/SlotDescriptor" + "$ref": "#/definitions/FileSet" }, { "type": "string" } ] - }, - "type": "array" + } }, { - "type": "null" + "type": [ + "null", + "string" + ] } - ], - "description": "The list of [slots](https://snapcraft.io/docs/reference/interfaces).\n\nAdditional attributes can be specified using object instead of just name of slot:\n```\n[\n {\n \"mpris\": {\n \"name\": \"chromium\"\n },\n }\n]\n\nIn case you want your application to be a compliant MPris player, you will need to definie\nThe mpris slot with \"chromium\" name.\nThis electron has it [hardcoded](https://source.chromium.org/chromium/chromium/src/+/master:components/system_media_controls/linux/system_media_controls_linux.cc;l=51;bpv=0;bpt=1),\nand we need to pass this name so snap [will allow it](https://forum.snapcraft.io/t/unable-to-use-mpris-interface/15360/7) in strict confinement." + ] }, - "stagePackages": { + "extraFiles": { "anyOf": [ { + "$ref": "#/definitions/FileSet" + }, + { + "type": "array", "items": { - "type": "string" - }, - "type": "array" + "anyOf": [ + { + "$ref": "#/definitions/FileSet" + }, + { + "type": "string" + } + ] + } }, { - "type": "null" + "type": [ + "null", + "string" + ] } - ], - "description": "The list of Ubuntu packages to use that are needed to support the `app` part creation. Like `depends` for `deb`.\nDefaults to `[\"libnspr4\", \"libnss3\", \"libxss1\", \"libappindicator3-1\", \"libsecret-1-0\"]`.\n\nIf list contains `default`, it will be replaced to default list, so, `[\"default\", \"foo\"]` can be used to add custom package `foo` in addition to defaults." - }, - "summary": { - "description": "The 78 character long summary. Defaults to [productName](/configuration/configuration#Configuration-productName).", - "type": [ - "null", - "string" - ] - }, - "synopsis": { - "description": "The [short description](https://www.debian.org/doc/debian-policy/ch-controlfields.html#s-f-Description).", - "type": [ - "null", - "string" - ] - }, - "title": { - "description": "An optional title for the snap, may contain uppercase letters and spaces. Defaults to `productName`. See [snap format documentation](https://snapcraft.io/docs/snap-format).", - "type": [ - "null", - "string" ] }, - "useTemplateApp": { - "description": "Whether to use template snap. Defaults to `true` if `stagePackages` not specified.", - "type": "boolean" - } - }, - "type": "object" - }, - "SnapStoreOptions": { - "additionalProperties": false, - "description": "[Snap Store](https://snapcraft.io/) options.", - "properties": { - "channels": { + "asar": { + "description": "Whether to package the application's source code into an archive, using [Electron's archive format](http://electron.atom.io/docs/tutorial/application-packaging/).\n\nNode modules, that must be unpacked, will be detected automatically, you don't need to explicitly set [asarUnpack](#configuration-asarUnpack) - please file an issue if this doesn't work.", + "default": true, "anyOf": [ { - "items": { - "type": "string" - }, - "type": "array" + "$ref": "#/definitions/AsarOptions" }, { "type": [ "null", - "string" + "boolean" ] } - ], - "default": [ - "edge" - ], - "description": "The list of channels the snap would be released." - }, - "provider": { - "$ref": "#/definitions/PublishProvider", - "description": "The provider." - }, - "publishAutoUpdate": { - "default": true, - "description": "Whether to publish auto update info files.\n\nAuto update relies only on the first provider in the list (you can specify several publishers).\nThus, probably, there`s no need to upload the metadata files for the other configured providers. But by default will be uploaded.", - "type": "boolean" + ] }, - "publisherName": { + "asarUnpack": { + "description": "A [glob patterns](/file-patterns) relative to the [app directory](#MetadataDirectories-app), which specifies which files to unpack when creating the [asar](http://electron.atom.io/docs/tutorial/application-packaging/) archive.", "anyOf": [ { + "type": "array", "items": { "type": "string" - }, - "type": "array" + } }, { - "type": "null" + "type": [ + "null", + "string" + ] } ] }, - "requestHeaders": { - "$ref": "#/definitions/OutgoingHttpHeaders", - "description": "Any custom request headers" - }, - "updaterCacheDirName": { - "type": [ - "null", - "string" - ] - } - }, - "required": [ - "provider" - ], - "type": "object" - }, - "SpacesOptions": { - "additionalProperties": false, - "description": "[DigitalOcean Spaces](https://www.digitalocean.com/community/tutorials/an-introduction-to-digitalocean-spaces) options.\nAccess key is required, define `DO_KEY_ID` and `DO_SECRET_KEY` environment variables.", - "properties": { - "acl": { + "fileAssociations": { + "description": "The file associations.", "anyOf": [ { - "enum": [ - "private", - "public-read" - ], - "type": "string" + "$ref": "#/definitions/FileAssociation" }, { - "type": "null" + "type": "array", + "items": { + "$ref": "#/definitions/FileAssociation" + } } - ], - "default": "public-read", - "description": "The ACL. Set to `null` to not [add](https://github.com/electron-userland/electron-builder/issues/1822)." - }, - "channel": { - "default": "latest", - "description": "The update channel.", - "type": [ - "null", - "string" - ] - }, - "name": { - "description": "The space name.", - "type": "string" - }, - "path": { - "default": "/", - "description": "The directory path.", - "type": [ - "null", - "string" ] }, - "provider": { - "description": "The provider. Must be `spaces`.", - "enum": [ - "spaces" - ], - "type": "string" - }, - "publishAutoUpdate": { - "default": true, - "description": "Whether to publish auto update info files.\n\nAuto update relies only on the first provider in the list (you can specify several publishers).\nThus, probably, there`s no need to upload the metadata files for the other configured providers. But by default will be uploaded.", - "type": "boolean" - }, - "publisherName": { + "protocols": { + "description": "The URL protocol schemes.", "anyOf": [ { - "items": { - "type": "string" - }, - "type": "array" + "$ref": "#/definitions/Protocol" }, { - "type": "null" + "type": "array", + "items": { + "$ref": "#/definitions/Protocol" + } } ] }, - "region": { - "description": "The region (e.g. `nyc3`).", - "type": "string" - }, - "requestHeaders": { - "$ref": "#/definitions/OutgoingHttpHeaders", - "description": "Any custom request headers" - }, - "updaterCacheDirName": { - "type": [ - "null", - "string" - ] - } - }, - "required": [ - "name", - "provider", - "region" - ], - "type": "object" - }, - "SquirrelWindowsOptions": { - "additionalProperties": false, - "properties": { - "artifactName": { - "description": "The [artifact file name template](/configuration/configuration#artifact-file-name-template).", - "type": [ - "null", - "string" - ] - }, - "iconUrl": { - "description": "A URL to an ICO file to use as the application icon (displayed in Control Panel > Programs and Features). Defaults to the Electron icon.\n\nPlease note — [local icon file url is not accepted](https://github.com/atom/grunt-electron-installer/issues/73), must be https/http.\n\nIf you don't plan to build windows installer, you can omit it.\nIf your project repository is public on GitHub, it will be `https://github.com/${u}/${p}/blob/master/build/icon.ico?raw=true` by default.", - "type": [ - "null", - "string" - ] + "forceCodeSigning": { + "description": "Whether to fail if app will be not code signed.", + "type": "boolean" }, - "loadingGif": { - "description": "The path to a .gif file to display during install. `build/install-spinner.gif` will be used if exists (it is a recommended way to set)\n(otherwise [default](https://github.com/electron/windows-installer/blob/master/resources/install-spinner.gif)).", + "electronUpdaterCompatibility": { + "description": "The [electron-updater compatibility](/auto-update#compatibility) semver range.", "type": [ "null", "string" ] }, - "msi": { - "description": "Whether to create an MSI installer. Defaults to `false` (MSI is not created).", - "type": "boolean" - }, - "name": { - "description": "https://github.com/electron-userland/electron-builder/issues/1743", - "type": "string" - }, "publish": { "anyOf": [ { @@ -5237,10 +5435,14 @@ { "$ref": "#/definitions/CustomPublishOptions" }, + { + "$ref": "#/definitions/KeygenOptions" + }, { "$ref": "#/definitions/SnapStoreOptions" }, { + "type": "array", "items": { "anyOf": [ { @@ -5261,6 +5463,9 @@ { "$ref": "#/definitions/CustomPublishOptions" }, + { + "$ref": "#/definitions/KeygenOptions" + }, { "$ref": "#/definitions/SnapStoreOptions" }, @@ -5268,8 +5473,7 @@ "type": "string" } ] - }, - "type": "array" + } }, { "type": [ @@ -5279,334 +5483,191 @@ } ] }, - "remoteReleases": { - "description": "A URL to your existing updates. Or `true` to automatically set to your GitHub repository. If given, these will be downloaded to create delta updates.", - "type": [ - "null", - "string", - "boolean" - ] - }, - "remoteToken": { - "description": "Authentication token for remote updates", - "type": [ - "null", - "string" - ] + "detectUpdateChannel": { + "description": "Whether to infer update channel from application version pre-release components. e.g. if version `0.12.1-alpha.1`, channel will be set to `alpha`. Otherwise to `latest`.", + "default": true, + "type": "boolean" }, - "useAppIdAsId": { - "description": "Use `appId` to identify package instead of `name`.", + "generateUpdatesFilesForAllChannels": { + "description": "Please see [Building and Releasing using Channels](https://github.com/electron-userland/electron-builder/issues/1182#issuecomment-324947139).", + "default": false, "type": "boolean" - } - }, - "type": "object" - }, - "TargetConfiguration": { - "additionalProperties": false, - "properties": { - "arch": { - "anyOf": [ - { - "items": { - "enum": [ - "arm64", - "armv7l", - "ia32", - "universal", - "x64" - ], - "type": "string" - }, - "type": "array" - }, - { - "enum": [ - "arm64", - "armv7l", - "ia32", - "universal", - "x64" - ], - "type": "string" - } - ], - "description": "The arch or list of archs." }, - "target": { - "description": "The target name. e.g. `snap`.", - "type": "string" - } - }, - "required": [ - "target" - ], - "type": "object" - }, - "WindowsConfiguration": { - "additionalProperties": false, - "properties": { - "additionalCertificateFile": { - "description": "The path to an additional certificate file you want to add to the signature block.", - "type": [ - "null", - "string" - ] + "releaseInfo": { + "description": "The release info. Intended for command line usage:\n\n```\n-c.releaseInfo.releaseNotes=\"new features\"\n```", + "$ref": "#/definitions/ReleaseInfo" }, - "appId": { - "default": "com.electron.${name}", - "description": "The application id. Used as [CFBundleIdentifier](https://developer.apple.com/library/ios/documentation/General/Reference/InfoPlistKeyReference/Articles/CoreFoundationKeys.html#//apple_ref/doc/uid/20001431-102070) for MacOS and as\n[Application User Model ID](https://msdn.microsoft.com/en-us/library/windows/desktop/dd378459(v=vs.85).aspx) for Windows (NSIS target only, Squirrel.Windows not supported). It is strongly recommended that an explicit ID is set.", + "cscLink": { "type": [ "null", "string" ] }, - "artifactName": { - "description": "The [artifact file name template](/configuration/configuration#artifact-file-name-template). Defaults to `${productName}-${version}.${ext}` (some target can have other defaults, see corresponding options).", + "cscKeyPassword": { "type": [ "null", "string" ] }, - "asar": { - "anyOf": [ - { - "$ref": "#/definitions/AsarOptions" - }, - { - "type": [ - "null", - "boolean" - ] - } - ], - "default": true, - "description": "Whether to package the application's source code into an archive, using [Electron's archive format](http://electron.atom.io/docs/tutorial/application-packaging/).\n\nNode modules, that must be unpacked, will be detected automatically, you don't need to explicitly set [asarUnpack](#configuration-asarUnpack) - please file an issue if this doesn't work." - }, - "asarUnpack": { + "defaultArch": { + "type": "string" + } + } + }, + "DebOptions": { + "type": "object", + "properties": { + "depends": { + "description": "Package dependencies. Defaults to `[\"gconf2\", \"gconf-service\", \"libnotify4\", \"libappindicator1\", \"libxtst6\", \"libnss3\"]`.", "anyOf": [ { + "type": "array", "items": { "type": "string" - }, - "type": "array" + } }, { - "type": [ - "null", - "string" - ] + "type": "null" } - ], - "description": "A [glob patterns](/file-patterns) relative to the [app directory](#MetadataDirectories-app), which specifies which files to unpack when creating the [asar](http://electron.atom.io/docs/tutorial/application-packaging/) archive." - }, - "certificateFile": { - "description": "The path to the *.pfx certificate you want to sign with. Please use it only if you cannot use env variable `CSC_LINK` (`WIN_CSC_LINK`) for some reason.\nPlease see [Code Signing](/code-signing).", - "type": [ - "null", - "string" - ] - }, - "certificatePassword": { - "description": "The password to the certificate provided in `certificateFile`. Please use it only if you cannot use env variable `CSC_KEY_PASSWORD` (`WIN_CSC_KEY_PASSWORD`) for some reason.\nPlease see [Code Signing](/code-signing).", - "type": [ - "null", - "string" ] }, - "certificateSha1": { - "description": "The SHA1 hash of the signing certificate. The SHA1 hash is commonly specified when multiple certificates satisfy the criteria specified by the remaining switches. Works only on Windows (or on macOS if [Parallels Desktop](https://www.parallels.com/products/desktop/) Windows 10 virtual machines exits).", + "packageCategory": { + "description": "The [package category](https://www.debian.org/doc/debian-policy/ch-controlfields.html#s-f-Section).", "type": [ "null", "string" ] }, - "certificateSubjectName": { - "description": "The name of the subject of the signing certificate. Required only for EV Code Signing and works only on Windows (or on macOS if [Parallels Desktop](https://www.parallels.com/products/desktop/) Windows 10 virtual machines exits).", + "priority": { + "description": "The [Priority](https://www.debian.org/doc/debian-policy/ch-controlfields.html#s-f-Priority) attribute.", "type": [ "null", "string" ] }, "compression": { + "description": "The compression type.", + "default": "xz", "anyOf": [ { "enum": [ - "maximum", - "normal", - "store" + "bzip2", + "gz", + "xz" ], "type": "string" }, { "type": "null" } - ], - "default": "normal", - "description": "The compression level. If you want to rapidly test build, `store` can reduce build time significantly. `maximum` doesn't lead to noticeable size difference, but increase build time." + ] }, - "cscKeyPassword": { + "icon": { + "type": "string" + }, + "packageName": { + "description": "The name of the package.", "type": [ "null", "string" ] }, - "cscLink": { + "vendor": { "type": [ "null", "string" ] }, - "defaultArch": { - "type": "string" - }, - "detectUpdateChannel": { - "default": true, - "description": "Whether to infer update channel from application version pre-release components. e.g. if version `0.12.1-alpha.1`, channel will be set to `alpha`. Otherwise to `latest`.", - "type": "boolean" - }, - "electronUpdaterCompatibility": { - "description": "The [electron-updater compatibility](/auto-update#compatibility) semver range.", + "maintainer": { "type": [ "null", "string" ] }, - "executableName": { - "description": "The executable name. Defaults to `productName`.", + "afterInstall": { "type": [ "null", "string" ] }, - "extraFiles": { - "anyOf": [ - { - "$ref": "#/definitions/FileSet" - }, - { - "items": { - "anyOf": [ - { - "$ref": "#/definitions/FileSet" - }, - { - "type": "string" - } - ] - }, - "type": "array" - }, - { - "type": [ - "null", - "string" - ] - } - ] - }, - "extraResources": { - "anyOf": [ - { - "$ref": "#/definitions/FileSet" - }, - { - "items": { - "anyOf": [ - { - "$ref": "#/definitions/FileSet" - }, - { - "type": "string" - } - ] - }, - "type": "array" - }, - { - "type": [ - "null", - "string" - ] - } + "afterRemove": { + "type": [ + "null", + "string" ] }, - "fileAssociations": { - "anyOf": [ - { - "$ref": "#/definitions/FileAssociation" - }, - { - "items": { - "$ref": "#/definitions/FileAssociation" - }, - "type": "array" - } - ], - "description": "The file associations." - }, - "files": { + "fpm": { + "description": "*Advanced only* The [fpm](https://github.com/jordansissel/fpm/wiki#usage) options.\n\nExample: `[\"--before-install=build/deb-preinstall.sh\", \"--after-upgrade=build/deb-postinstall.sh\"]`", "anyOf": [ { - "$ref": "#/definitions/FileSet" - }, - { + "type": "array", "items": { - "anyOf": [ - { - "$ref": "#/definitions/FileSet" - }, - { - "type": "string" - } - ] - }, - "type": "array" + "type": "string" + } }, { - "type": [ - "null", - "string" - ] - } - ] - }, - "forceCodeSigning": { - "description": "Whether to fail if app will be not code signed.", - "type": "boolean" + "type": "null" + } + ] }, - "generateUpdatesFilesForAllChannels": { - "default": false, - "description": "Please see [Building and Releasing using Channels](https://github.com/electron-userland/electron-builder/issues/1182#issuecomment-324947139).", - "type": "boolean" + "synopsis": { + "description": "The [short description](https://www.debian.org/doc/debian-policy/ch-controlfields.html#s-f-Description).", + "type": [ + "null", + "string" + ] }, - "icon": { - "default": "build/icon.ico", - "description": "The path to application icon.", + "description": { + "description": "As [description](/configuration/configuration#Metadata-description) from application package.json, but allows you to specify different for Linux.", "type": [ "null", "string" ] }, - "legalTrademarks": { - "description": "The trademarks and registered trademarks.", + "category": { + "description": "The [application category](https://specifications.freedesktop.org/menu-spec/latest/apa.html#main-category-registry).", "type": [ "null", "string" ] }, - "protocols": { + "mimeTypes": { + "description": "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.", "anyOf": [ { - "$ref": "#/definitions/Protocol" + "type": "array", + "items": { + "type": "string" + } }, { + "type": "null" + } + ] + }, + "desktop": { + "description": "The [Desktop file](https://developer.gnome.org/integration-guide/stable/desktop-files.html.en) entries (name to value)." + }, + "executableArgs": { + "description": "The executable parameters. Pass to executableName", + "anyOf": [ + { + "type": "array", "items": { - "$ref": "#/definitions/Protocol" - }, - "type": "array" + "type": "string" + } + }, + { + "type": "null" } - ], - "description": "The URL protocol schemes." + ] + }, + "artifactName": { + "description": "The [artifact file name template](/configuration/configuration#artifact-file-name-template).", + "type": [ + "null", + "string" + ] }, "publish": { "anyOf": [ @@ -5628,10 +5689,14 @@ { "$ref": "#/definitions/CustomPublishOptions" }, + { + "$ref": "#/definitions/KeygenOptions" + }, { "$ref": "#/definitions/SnapStoreOptions" }, { + "type": "array", "items": { "anyOf": [ { @@ -5652,6 +5717,9 @@ { "$ref": "#/definitions/CustomPublishOptions" }, + { + "$ref": "#/definitions/KeygenOptions" + }, { "$ref": "#/definitions/SnapStoreOptions" }, @@ -5659,8 +5727,7 @@ "type": "string" } ] - }, - "type": "array" + } }, { "type": [ @@ -5669,14 +5736,74 @@ ] } ] + } + } + }, + "SnapOptions": { + "type": "object", + "properties": { + "confinement": { + "description": "The type of [confinement](https://snapcraft.io/docs/reference/confinement) supported by the snap.", + "default": "strict", + "anyOf": [ + { + "enum": [ + "classic", + "devmode", + "strict" + ], + "type": "string" + }, + { + "type": "null" + } + ] }, - "publisherName": { + "environment": { + "description": "The custom environment. Defaults to `{\"TMPDIR: \"$XDG_RUNTIME_DIR\"}`. If you set custom, it will be merged with default.", + "anyOf": [ + { + "type": "object", + "additionalProperties": { + "type": "string" + } + }, + { + "type": "null" + } + ] + }, + "summary": { + "description": "The 78 character long summary. Defaults to [productName](/configuration/configuration#Configuration-productName).", + "type": [ + "null", + "string" + ] + }, + "grade": { + "description": "The quality grade of the snap. It can be either `devel` (i.e. a development version of the snap, so not to be published to the “stable” or “candidate” channels) or “stable” (i.e. a stable release or release candidate, which can be released to all channels).", + "default": "stable", + "anyOf": [ + { + "enum": [ + "devel", + "stable" + ], + "type": "string" + }, + { + "type": "null" + } + ] + }, + "assumes": { + "description": "The list of features that must be supported by the core in order for this snap to install.", "anyOf": [ { + "type": "array", "items": { "type": "string" - }, - "type": "array" + } }, { "type": [ @@ -5684,98 +5811,271 @@ "string" ] } - ], - "description": "[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.\nDefaults to common name from your code signing certificate." + ] }, - "releaseInfo": { - "$ref": "#/definitions/ReleaseInfo", - "description": "The release info. Intended for command line usage:\n\n```\n-c.releaseInfo.releaseNotes=\"new features\"\n```" + "buildPackages": { + "description": "The list of debian packages needs to be installed for building this snap.", + "anyOf": [ + { + "type": "array", + "items": { + "type": "string" + } + }, + { + "type": "null" + } + ] }, - "requestedExecutionLevel": { + "stagePackages": { + "description": "The list of Ubuntu packages to use that are needed to support the `app` part creation. Like `depends` for `deb`.\nDefaults to `[\"libnspr4\", \"libnss3\", \"libxss1\", \"libappindicator3-1\", \"libsecret-1-0\"]`.\n\nIf list contains `default`, it will be replaced to default list, so, `[\"default\", \"foo\"]` can be used to add custom package `foo` in addition to defaults.", "anyOf": [ { - "enum": [ - "asInvoker", - "highestAvailable", - "requireAdministrator" - ], - "type": "string" + "type": "array", + "items": { + "type": "string" + } }, { "type": "null" } - ], - "default": "asInvoker", - "description": "The [security level](https://msdn.microsoft.com/en-us/library/6ad1fshk.aspx#Anchor_9) at which the application requests to be executed.\nCannot be specified per target, allowed only in the `win`." + ] + }, + "hooks": { + "description": "The [hooks](https://docs.snapcraft.io/build-snaps/hooks) directory, relative to `build` (build resources directory).", + "default": "build/snap-hooks", + "type": [ + "null", + "string" + ] + }, + "plugs": { + "description": "The list of [plugs](https://snapcraft.io/docs/reference/interfaces).\nDefaults to `[\"desktop\", \"desktop-legacy\", \"home\", \"x11\", \"unity7\", \"browser-support\", \"network\", \"gsettings\", \"audio-playback\", \"pulseaudio\", \"opengl\"]`.\n\nIf list contains `default`, it will be replaced to default list, so, `[\"default\", \"foo\"]` can be used to add custom plug `foo` in addition to defaults.\n\nAdditional attributes can be specified using object instead of just name of plug:\n```\n[\n {\n \"browser-sandbox\": {\n \"interface\": \"browser-support\",\n \"allow-sandbox\": true\n },\n },\n \"another-simple-plug-name\"\n]\n```", + "anyOf": [ + { + "$ref": "#/definitions/PlugDescriptor" + }, + { + "type": "array", + "items": { + "anyOf": [ + { + "$ref": "#/definitions/PlugDescriptor" + }, + { + "type": "string" + } + ] + } + }, + { + "type": "null" + } + ] + }, + "slots": { + "description": "The list of [slots](https://snapcraft.io/docs/reference/interfaces).\n\nAdditional attributes can be specified using object instead of just name of slot:\n```\n[\n {\n \"mpris\": {\n \"name\": \"chromium\"\n },\n }\n]\n\nIn case you want your application to be a compliant MPris player, you will need to definie\nThe mpris slot with \"chromium\" name.\nThis electron has it [hardcoded](https://source.chromium.org/chromium/chromium/src/+/master:components/system_media_controls/linux/system_media_controls_linux.cc;l=51;bpv=0;bpt=1),\nand we need to pass this name so snap [will allow it](https://forum.snapcraft.io/t/unable-to-use-mpris-interface/15360/7) in strict confinement.", + "anyOf": [ + { + "$ref": "#/definitions/PlugDescriptor" + }, + { + "type": "array", + "items": { + "anyOf": [ + { + "$ref": "#/definitions/SlotDescriptor" + }, + { + "type": "string" + } + ] + } + }, + { + "type": "null" + } + ] + }, + "after": { + "description": "Specifies any [parts](https://snapcraft.io/docs/reference/parts) that should be built before this part.\nDefaults to `[\"desktop-gtk2\"\"]`.\n\nIf list contains `default`, it will be replaced to default list, so, `[\"default\", \"foo\"]` can be used to add custom parts `foo` in addition to defaults.", + "anyOf": [ + { + "type": "array", + "items": { + "type": "string" + } + }, + { + "type": "null" + } + ] + }, + "useTemplateApp": { + "description": "Whether to use template snap. Defaults to `true` if `stagePackages` not specified.", + "type": "boolean" + }, + "autoStart": { + "description": "Whether or not the snap should automatically start on login.", + "default": false, + "type": "boolean" + }, + "layout": { + "description": "Specifies any files to make accessible from locations such as `/usr`, `/var`, and `/etc`. See [snap layouts](https://snapcraft.io/docs/snap-layouts) to learn more.", + "anyOf": [ + { + "type": "object", + "additionalProperties": { + "type": "object", + "additionalProperties": { + "type": "string" + } + } + }, + { + "type": "null" + } + ] + }, + "appPartStage": { + "description": "Specifies which files from the app part to stage and which to exclude. Individual files, directories, wildcards, globstars, and exclusions are accepted. See [Snapcraft filesets](https://snapcraft.io/docs/snapcraft-filesets) to learn more about the format.\n\nThe defaults can be found in [snap.ts](https://github.com/electron-userland/electron-builder/blob/master/packages/app-builder-lib/templates/snap/snapcraft.yaml#L29).", + "anyOf": [ + { + "type": "array", + "items": { + "type": "string" + } + }, + { + "type": "null" + } + ] + }, + "title": { + "description": "An optional title for the snap, may contain uppercase letters and spaces. Defaults to `productName`. See [snap format documentation](https://snapcraft.io/docs/snap-format).", + "type": [ + "null", + "string" + ] + }, + "synopsis": { + "description": "The [short description](https://www.debian.org/doc/debian-policy/ch-controlfields.html#s-f-Description).", + "type": [ + "null", + "string" + ] + }, + "description": { + "description": "As [description](/configuration/configuration#Metadata-description) from application package.json, but allows you to specify different for Linux.", + "type": [ + "null", + "string" + ] }, - "rfc3161TimeStampServer": { - "default": "http://timestamp.digicert.com", - "description": "The URL of the RFC 3161 time stamp server.", + "category": { + "description": "The [application category](https://specifications.freedesktop.org/menu-spec/latest/apa.html#main-category-registry).", "type": [ "null", "string" ] }, - "sign": { + "mimeTypes": { + "description": "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.", "anyOf": [ { - "typeof": "function" + "type": "array", + "items": { + "type": "string" + } }, { - "type": [ - "null", - "string" - ] + "type": "null" } - ], - "description": "The custom function (or path to file or module id) to sign Windows executable." - }, - "signAndEditExecutable": { - "default": true, - "description": "Whether to sign and add metadata to executable. Advanced option.", - "type": "boolean" + ] }, - "signDlls": { - "default": false, - "description": "Whether to sign DLL files. Advanced option.", - "type": "boolean" + "desktop": { + "description": "The [Desktop file](https://developer.gnome.org/integration-guide/stable/desktop-files.html.en) entries (name to value)." }, - "signingHashAlgorithms": { + "executableArgs": { + "description": "The executable parameters. Pass to executableName", "anyOf": [ { + "type": "array", "items": { - "enum": [ - "sha1", - "sha256" - ], "type": "string" - }, - "type": "array" + } }, { "type": "null" } - ], - "default": "['sha1', 'sha256']", - "description": "Array of signing algorithms used. For AppX `sha256` is always used." + ] }, - "target": { + "artifactName": { + "description": "The [artifact file name template](/configuration/configuration#artifact-file-name-template).", + "type": [ + "null", + "string" + ] + }, + "publish": { "anyOf": [ { - "$ref": "#/definitions/TargetConfiguration" + "$ref": "#/definitions/GithubOptions" + }, + { + "$ref": "#/definitions/S3Options" + }, + { + "$ref": "#/definitions/SpacesOptions" + }, + { + "$ref": "#/definitions/GenericServerOptions" }, { + "$ref": "#/definitions/BintrayOptions" + }, + { + "$ref": "#/definitions/CustomPublishOptions" + }, + { + "$ref": "#/definitions/KeygenOptions" + }, + { + "$ref": "#/definitions/SnapStoreOptions" + }, + { + "type": "array", "items": { "anyOf": [ { - "$ref": "#/definitions/TargetConfiguration" + "$ref": "#/definitions/GithubOptions" + }, + { + "$ref": "#/definitions/S3Options" + }, + { + "$ref": "#/definitions/SpacesOptions" + }, + { + "$ref": "#/definitions/GenericServerOptions" + }, + { + "$ref": "#/definitions/BintrayOptions" + }, + { + "$ref": "#/definitions/CustomPublishOptions" + }, + { + "$ref": "#/definitions/KeygenOptions" + }, + { + "$ref": "#/definitions/SnapStoreOptions" }, { "type": "string" } ] - }, - "type": "array" + } }, { "type": [ @@ -5783,866 +6083,672 @@ "string" ] } - ], - "default": "nsis", - "description": "The target package type: list of `nsis`, `nsis-web` (Web installer), `portable` ([portable](/configuration/nsis#portable) app without installation), `appx`, `msi`, `squirrel`, `7z`, `zip`, `tar.xz`, `tar.lz`, `tar.gz`, `tar.bz2`, `dir`.\nAppX package can be built only on Windows 10.\n\nTo use Squirrel.Windows please install `electron-builder-squirrel-windows` dependency." - }, - "timeStampServer": { - "default": "http://timestamp.digicert.com", - "description": "The URL of the time stamp server.", - "type": [ - "null", - "string" - ] - }, - "verifyUpdateCodeSignature": { - "default": true, - "description": "Whether to verify the signature of an available update before installation.\nThe [publisher name](#publisherName) will be used for the signature verification.", - "type": "boolean" - } - }, - "type": "object" - } - }, - "description": "Configuration Options", - "properties": { - "afterAllArtifactBuild": { - "anyOf": [ - { - "typeof": "function" - }, - { - "type": [ - "null", - "string" - ] - } - ], - "description": "The function (or path to file or module id) to be [run after all artifacts are build](#afterAllArtifactBuild)." - }, - "afterPack": { - "anyOf": [ - { - "typeof": "function" - }, - { - "type": [ - "null", - "string" - ] - } - ], - "description": "The function (or path to file or module id) to be [run after pack](#afterpack) (but before pack into distributable format and sign)." - }, - "afterSign": { - "anyOf": [ - { - "typeof": "function" - }, - { - "type": [ - "null", - "string" ] } - ], - "description": "The function (or path to file or module id) to be [run after pack and sign](#aftersign) (but before pack into distributable format)." - }, - "apk": { - "anyOf": [ - { - "$ref": "#/definitions/LinuxTargetSpecificOptions" - }, - { - "type": "null" - } - ] - }, - "appId": { - "default": "com.electron.${name}", - "description": "The application id. Used as [CFBundleIdentifier](https://developer.apple.com/library/ios/documentation/General/Reference/InfoPlistKeyReference/Articles/CoreFoundationKeys.html#//apple_ref/doc/uid/20001431-102070) for MacOS and as\n[Application User Model ID](https://msdn.microsoft.com/en-us/library/windows/desktop/dd378459(v=vs.85).aspx) for Windows (NSIS target only, Squirrel.Windows not supported). It is strongly recommended that an explicit ID is set.", - "type": [ - "null", - "string" - ] - }, - "appImage": { - "anyOf": [ - { - "$ref": "#/definitions/AppImageOptions" - }, - { - "type": "null" - } - ], - "description": "AppImage options." - }, - "appx": { - "anyOf": [ - { - "$ref": "#/definitions/AppXOptions" - }, - { - "type": "null" - } - ] + } }, - "appxManifestCreated": { - "anyOf": [ - { - "typeof": "function" - }, - { - "type": [ - "null", - "string" - ] - } - ], - "description": "Appx manifest created on disk - not packed into .appx package yet." + "PlugDescriptor": { + "type": "object", + "additionalProperties": { + "anyOf": [ + { + "type": "object", + "additionalProperties": {} + }, + { + "type": "null" + } + ] + } }, - "artifactBuildCompleted": { - "anyOf": [ - { - "typeof": "function" - }, - { - "type": [ - "null", - "string" - ] - } - ], - "description": "The function (or path to file or module id) to be run on artifact build completed." + "SlotDescriptor": { + "type": "object", + "additionalProperties": { + "anyOf": [ + { + "type": "object", + "additionalProperties": {} + }, + { + "type": "null" + } + ] + } }, - "artifactBuildStarted": { - "anyOf": [ - { - "typeof": "function" - }, - { + "AppImageOptions": { + "type": "object", + "properties": { + "license": { + "description": "The path to EULA license file. Defaults to `license.txt` or `eula.txt` (or uppercase variants). Only plain text is supported.", "type": [ "null", "string" ] - } - ], - "description": "The function (or path to file or module id) to be run on artifact build start." - }, - "artifactName": { - "description": "The [artifact file name template](/configuration/configuration#artifact-file-name-template). Defaults to `${productName}-${version}.${ext}` (some target can have other defaults, see corresponding options).", - "type": [ - "null", - "string" - ] - }, - "asar": { - "anyOf": [ - { - "$ref": "#/definitions/AsarOptions" }, - { + "synopsis": { + "description": "The [short description](https://www.debian.org/doc/debian-policy/ch-controlfields.html#s-f-Description).", "type": [ "null", - "boolean" + "string" ] - } - ], - "default": true, - "description": "Whether to package the application's source code into an archive, using [Electron's archive format](http://electron.atom.io/docs/tutorial/application-packaging/).\n\nNode modules, that must be unpacked, will be detected automatically, you don't need to explicitly set [asarUnpack](#configuration-asarUnpack) - please file an issue if this doesn't work." - }, - "asarUnpack": { - "anyOf": [ - { - "items": { - "type": "string" - }, - "type": "array" }, - { + "description": { + "description": "As [description](/configuration/configuration#Metadata-description) from application package.json, but allows you to specify different for Linux.", "type": [ "null", "string" ] - } - ], - "description": "A [glob patterns](/file-patterns) relative to the [app directory](#MetadataDirectories-app), which specifies which files to unpack when creating the [asar](http://electron.atom.io/docs/tutorial/application-packaging/) archive." - }, - "beforeBuild": { - "anyOf": [ - { - "typeof": "function" }, - { + "category": { + "description": "The [application category](https://specifications.freedesktop.org/menu-spec/latest/apa.html#main-category-registry).", "type": [ "null", "string" ] - } - ], - "description": "The function (or path to file or module id) to be run before dependencies are installed or rebuilt. Works when `npmRebuild` is set to `true`. Resolving to `false` will skip dependencies install or rebuild.\n\nIf provided and `node_modules` are missing, it will not invoke production dependencies check." - }, - "buildDependenciesFromSource": { - "default": false, - "description": "Whether to build the application native dependencies from source.", - "type": "boolean" - }, - "buildVersion": { - "description": "The build version. Maps to the `CFBundleVersion` on macOS, and `FileVersion` metadata property on Windows. Defaults to the `version`.\nIf `TRAVIS_BUILD_NUMBER` or `APPVEYOR_BUILD_NUMBER` or `CIRCLE_BUILD_NUM` or `BUILD_NUMBER` or `bamboo.buildNumber` or `CI_PIPELINE_IID` env defined, it will be used as a build version (`version.build_number`).", - "type": [ - "null", - "string" - ] - }, - "compression": { - "anyOf": [ - { - "enum": [ - "maximum", - "normal", - "store" - ], - "type": "string" }, - { - "type": "null" - } - ], - "default": "normal", - "description": "The compression level. If you want to rapidly test build, `store` can reduce build time significantly. `maximum` doesn't lead to noticeable size difference, but increase build time." - }, - "copyright": { - "default": "Copyright © year ${author}", - "description": "The human-readable copyright line for the app.", - "type": [ - "null", - "string" - ] - }, - "cscKeyPassword": { - "type": [ - "null", - "string" - ] - }, - "cscLink": { - "type": [ - "null", - "string" - ] - }, - "deb": { - "anyOf": [ - { - "$ref": "#/definitions/DebOptions" + "mimeTypes": { + "description": "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.", + "anyOf": [ + { + "type": "array", + "items": { + "type": "string" + } + }, + { + "type": "null" + } + ] }, - { - "type": "null" - } - ], - "description": "Debian package options." - }, - "defaultArch": { - "type": "string" - }, - "detectUpdateChannel": { - "default": true, - "description": "Whether to infer update channel from application version pre-release components. e.g. if version `0.12.1-alpha.1`, channel will be set to `alpha`. Otherwise to `latest`.", - "type": "boolean" - }, - "directories": { - "anyOf": [ - { - "$ref": "#/definitions/MetadataDirectories" + "desktop": { + "description": "The [Desktop file](https://developer.gnome.org/integration-guide/stable/desktop-files.html.en) entries (name to value)." }, - { - "type": "null" - } - ] - }, - "dmg": { - "anyOf": [ - { - "$ref": "#/definitions/DmgOptions" + "executableArgs": { + "description": "The executable parameters. Pass to executableName", + "anyOf": [ + { + "type": "array", + "items": { + "type": "string" + } + }, + { + "type": "null" + } + ] }, - { - "type": "null" + "artifactName": { + "description": "The [artifact file name template](/configuration/configuration#artifact-file-name-template).", + "type": [ + "null", + "string" + ] + }, + "publish": { + "anyOf": [ + { + "$ref": "#/definitions/GithubOptions" + }, + { + "$ref": "#/definitions/S3Options" + }, + { + "$ref": "#/definitions/SpacesOptions" + }, + { + "$ref": "#/definitions/GenericServerOptions" + }, + { + "$ref": "#/definitions/BintrayOptions" + }, + { + "$ref": "#/definitions/CustomPublishOptions" + }, + { + "$ref": "#/definitions/KeygenOptions" + }, + { + "$ref": "#/definitions/SnapStoreOptions" + }, + { + "type": "array", + "items": { + "anyOf": [ + { + "$ref": "#/definitions/GithubOptions" + }, + { + "$ref": "#/definitions/S3Options" + }, + { + "$ref": "#/definitions/SpacesOptions" + }, + { + "$ref": "#/definitions/GenericServerOptions" + }, + { + "$ref": "#/definitions/BintrayOptions" + }, + { + "$ref": "#/definitions/CustomPublishOptions" + }, + { + "$ref": "#/definitions/KeygenOptions" + }, + { + "$ref": "#/definitions/SnapStoreOptions" + }, + { + "type": "string" + } + ] + } + }, + { + "type": [ + "null", + "string" + ] + } + ] } - ], - "description": "macOS DMG options." - }, - "electronCompile": { - "description": "Whether to use [electron-compile](http://github.com/electron/electron-compile) to compile app. Defaults to `true` if `electron-compile` in the dependencies. And `false` if in the `devDependencies` or doesn't specified.", - "type": "boolean" + } }, - "electronDist": { - "anyOf": [ - { - "typeof": "function" + "FlatpakOptions": { + "type": "object", + "properties": { + "license": { + "description": "The path to EULA license file. Defaults to `license.txt` or `eula.txt` (or uppercase variants). Only plain text is supported.", + "type": [ + "null", + "string" + ] }, - { + "runtime": { + "description": "The name of the runtime that the application uses. Defaults to `org.freedesktop.Platform`.\n\nSee [flatpak manifest documentation](https://docs.flatpak.org/en/latest/flatpak-builder-command-reference.html#flatpak-manifest).", "type": "string" - } - ], - "description": "Returns the path to custom Electron build (e.g. `~/electron/out/R`). Zip files must follow the pattern `electron-v${version}-${platformName}-${arch}.zip`, otherwise it will be assumed to be an unpacked Electron app directory" - }, - "electronBranding": { - "$ref": "#/definitions/ElectronBrandingOptions", - "description": "The branding used by Electron's distributables. This is needed if a fork has modified Electron's BRANDING.json file." - }, - "electronDownload": { - "$ref": "#/definitions/ElectronDownloadOptions", - "description": "The [electron-download](https://github.com/electron-userland/electron-download#usage) options." - }, - "electronUpdaterCompatibility": { - "description": "The [electron-updater compatibility](/auto-update#compatibility) semver range.", - "type": [ - "null", - "string" - ] - }, - "electronVersion": { - "description": "The version of electron you are packaging for. Defaults to version of `electron`, `electron-prebuilt` or `electron-prebuilt-compile` dependency.", - "type": [ - "null", - "string" - ] - }, - "executableName": { - "description": "The executable name. Defaults to `productName`.", - "type": [ - "null", - "string" - ] - }, - "extends": { - "anyOf": [ - { + }, + "runtimeVersion": { + "description": "The version of the runtime that the application uses. Defaults to `20.08`.\n\nSee [flatpak manifest documentation](https://docs.flatpak.org/en/latest/flatpak-builder-command-reference.html#flatpak-manifest).", + "type": "string" + }, + "sdk": { + "description": "The name of the development runtime that the application builds with. Defaults to `org.freedesktop.Sdk`.\n\nSee [flatpak manifest documentation](https://docs.flatpak.org/en/latest/flatpak-builder-command-reference.html#flatpak-manifest).", + "type": "string" + }, + "base": { + "description": "Start with the files from the specified application. This can be used to create applications that extend another application.\nDefaults to [org.electronjs.Electron2.BaseApp](https://github.com/flathub/org.electronjs.Electron2.BaseApp).\n\nSee [flatpak manifest documentation](https://docs.flatpak.org/en/latest/flatpak-builder-command-reference.html#flatpak-manifest).", + "type": "string" + }, + "baseVersion": { + "description": "Use this specific version of the application specified in base. Defaults to `20.08`.\n\nSee [flatpak manifest documentation](https://docs.flatpak.org/en/latest/flatpak-builder-command-reference.html#flatpak-manifest).", + "type": "string" + }, + "branch": { + "description": "The branch to use when exporting the application. Defaults to `master`.\n\nSee [flatpak manifest documentation](https://docs.flatpak.org/en/latest/flatpak-builder-command-reference.html#flatpak-manifest).", + "type": "string" + }, + "finishArgs": { + "description": "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\nSee [flatpak manifest documentation](https://docs.flatpak.org/en/latest/flatpak-builder-command-reference.html#flatpak-manifest).", + "type": "array", "items": { "type": "string" - }, - "type": "array" + } }, - { - "type": [ - "null", - "string" - ] - } - ], - "description": "The name of a built-in configuration preset (currently, only `react-cra` is supported) or any number of paths to config files (relative to project dir).\n\nThe latter allows to mixin a config from multiple other configs, as if you `Object.assign` them, but properly combine `files` glob patterns.\n\nIf `react-scripts` in the app dependencies, `react-cra` will be set automatically. Set to `null` to disable automatic detection." - }, - "extraFiles": { - "anyOf": [ - { - "$ref": "#/definitions/FileSet" + "modules": { + "description": "An array of objects specifying the modules to be built in order.\n\nSee [flatpak manifest documentation](https://docs.flatpak.org/en/latest/flatpak-builder-command-reference.html#flatpak-manifest).", + "type": "array", + "items": {} }, - { + "files": { + "description": "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\nSee [@malept/flatpak-bundler documentation](https://github.com/malept/flatpak-bundler#build-options).", + "type": "array", "items": { - "anyOf": [ + "type": "array", + "items": [ { - "$ref": "#/definitions/FileSet" + "type": "string" }, { "type": "string" } - ] - }, - "type": "array" - }, - { - "type": [ - "null", - "string" - ] - } - ] - }, - "extraMetadata": { - "description": "Inject properties to `package.json`." - }, - "extraResources": { - "anyOf": [ - { - "$ref": "#/definitions/FileSet" + ], + "minItems": 2, + "maxItems": 2 + } }, - { + "symlinks": { + "description": "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\nSee [@malept/flatpak-bundler documentation](https://github.com/malept/flatpak-bundler#build-options).", + "type": "array", "items": { - "anyOf": [ + "type": "array", + "items": [ { - "$ref": "#/definitions/FileSet" + "type": "string" }, { "type": "string" } - ] - }, - "type": "array" + ], + "minItems": 2, + "maxItems": 2 + } }, - { + "useWaylandFlags": { + "description": "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`.", + "type": "boolean" + }, + "synopsis": { + "description": "The [short description](https://www.debian.org/doc/debian-policy/ch-controlfields.html#s-f-Description).", "type": [ "null", "string" ] - } - ] - }, - "fileAssociations": { - "anyOf": [ - { - "$ref": "#/definitions/FileAssociation" - }, - { - "items": { - "$ref": "#/definitions/FileAssociation" - }, - "type": "array" - } - ], - "description": "The file associations." - }, - "files": { - "anyOf": [ - { - "$ref": "#/definitions/FileSet" }, - { - "items": { - "anyOf": [ - { - "$ref": "#/definitions/FileSet" - }, - { - "type": "string" - } - ] - }, - "type": "array" + "description": { + "description": "As [description](/configuration/configuration#Metadata-description) from application package.json, but allows you to specify different for Linux.", + "type": [ + "null", + "string" + ] }, - { + "category": { + "description": "The [application category](https://specifications.freedesktop.org/menu-spec/latest/apa.html#main-category-registry).", "type": [ "null", "string" ] - } - ] - }, - "flatpak": { - "anyOf": [ - { - "$ref": "#/definitions/FlatpakOptions" }, - { - "type": "null" - } - ], - "description": "Flatpak options." - }, - "forceCodeSigning": { - "default": false, - "description": "Whether to fail if the application is not signed (to prevent unsigned app if code signing configuration is not correct).", - "type": "boolean" - }, - "framework": { - "description": "The framework name. One of `electron`, `proton`, `libui`. Defaults to `electron`.", - "type": [ - "null", - "string" - ] - }, - "freebsd": { - "anyOf": [ - { - "$ref": "#/definitions/LinuxTargetSpecificOptions" + "mimeTypes": { + "description": "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.", + "anyOf": [ + { + "type": "array", + "items": { + "type": "string" + } + }, + { + "type": "null" + } + ] }, - { - "type": "null" - } - ] - }, - "generateUpdatesFilesForAllChannels": { - "default": false, - "description": "Please see [Building and Releasing using Channels](https://github.com/electron-userland/electron-builder/issues/1182#issuecomment-324947139).", - "type": "boolean" - }, - "icon": { - "type": [ - "null", - "string" - ] - }, - "includePdb": { - "default": false, - "description": "Whether to include PDB files.", - "type": "boolean" - }, - "includeSubNodeModules": { - "default": false, - "description": "Whether to include *all* of the submodules 'node_modules' directories.", - "type": "boolean" - }, - "launchUiVersion": { - "description": "*libui-based frameworks only* The version of LaunchUI you are packaging for. Applicable for Windows only. Defaults to version suitable for used framework version.", - "type": [ - "null", - "string", - "boolean" - ] - }, - "linux": { - "anyOf": [ - { - "$ref": "#/definitions/LinuxConfiguration" + "desktop": { + "description": "The [Desktop file](https://developer.gnome.org/integration-guide/stable/desktop-files.html.en) entries (name to value)." }, - { - "type": "null" - } - ], - "description": "Options related to how build Linux targets." - }, - "mac": { - "anyOf": [ - { - "$ref": "#/definitions/MacConfiguration" + "executableArgs": { + "description": "The executable parameters. Pass to executableName", + "anyOf": [ + { + "type": "array", + "items": { + "type": "string" + } + }, + { + "type": "null" + } + ] }, - { - "type": "null" - } - ], - "description": "Options related to how build macOS targets." - }, - "mas": { - "anyOf": [ - { - "$ref": "#/definitions/MasConfiguration" + "artifactName": { + "description": "The [artifact file name template](/configuration/configuration#artifact-file-name-template).", + "type": [ + "null", + "string" + ] }, - { - "type": "null" + "publish": { + "anyOf": [ + { + "$ref": "#/definitions/GithubOptions" + }, + { + "$ref": "#/definitions/S3Options" + }, + { + "$ref": "#/definitions/SpacesOptions" + }, + { + "$ref": "#/definitions/GenericServerOptions" + }, + { + "$ref": "#/definitions/BintrayOptions" + }, + { + "$ref": "#/definitions/CustomPublishOptions" + }, + { + "$ref": "#/definitions/KeygenOptions" + }, + { + "$ref": "#/definitions/SnapStoreOptions" + }, + { + "type": "array", + "items": { + "anyOf": [ + { + "$ref": "#/definitions/GithubOptions" + }, + { + "$ref": "#/definitions/S3Options" + }, + { + "$ref": "#/definitions/SpacesOptions" + }, + { + "$ref": "#/definitions/GenericServerOptions" + }, + { + "$ref": "#/definitions/BintrayOptions" + }, + { + "$ref": "#/definitions/CustomPublishOptions" + }, + { + "$ref": "#/definitions/KeygenOptions" + }, + { + "$ref": "#/definitions/SnapStoreOptions" + }, + { + "type": "string" + } + ] + } + }, + { + "type": [ + "null", + "string" + ] + } + ] } - ], - "description": "MAS (Mac Application Store) options." + } }, - "masDev": { - "anyOf": [ - { - "$ref": "#/definitions/MasConfiguration" + "LinuxTargetSpecificOptions": { + "type": "object", + "properties": { + "depends": { + "description": "Package dependencies.", + "anyOf": [ + { + "type": "array", + "items": { + "type": "string" + } + }, + { + "type": "null" + } + ] }, - { - "type": "null" - } - ], - "description": "MAS (Mac Application Store) development options (`mas-dev` target)." - }, - "msi": { - "anyOf": [ - { - "$ref": "#/definitions/MsiOptions" + "compression": { + "description": "The compression type.", + "default": "xz", + "anyOf": [ + { + "enum": [ + "bzip2", + "gz", + "xz" + ], + "type": "string" + }, + { + "type": "null" + } + ] }, - { - "type": "null" - } - ] - }, - "msiProjectCreated": { - "anyOf": [ - { - "typeof": "function" + "icon": { + "type": "string" }, - { + "packageCategory": { + "description": "The package category.", "type": [ "null", "string" ] - } - ], - "description": "MSI project created on disk - not packed into .msi package yet." - }, - "nodeGypRebuild": { - "default": false, - "description": "Whether to execute `node-gyp rebuild` before starting to package the app.\n\nDon't [use](https://github.com/electron-userland/electron-builder/issues/683#issuecomment-241214075) [npm](http://electron.atom.io/docs/tutorial/using-native-node-modules/#using-npm) (neither `.npmrc`) for configuring electron headers. Use `electron-builder node-gyp-rebuild` instead.", - "type": "boolean" - }, - "nodeVersion": { - "description": "*libui-based frameworks only* The version of NodeJS you are packaging for.\nYou can set it to `current` to set the Node.js version that you use to run.", - "type": [ - "null", - "string" - ] - }, - "npmArgs": { - "anyOf": [ - { - "items": { - "type": "string" - }, - "type": "array" }, - { + "packageName": { + "description": "The name of the package.", "type": [ "null", "string" ] - } - ], - "description": "Additional command line arguments to use when installing app native deps." - }, - "npmRebuild": { - "default": true, - "description": "Whether to [rebuild](https://docs.npmjs.com/cli/rebuild) native dependencies before starting to package the app.", - "type": "boolean" - }, - "nsis": { - "anyOf": [ - { - "$ref": "#/definitions/NsisOptions" - }, - { - "type": "null" - } - ] - }, - "nsisWeb": { - "anyOf": [ - { - "$ref": "#/definitions/NsisWebOptions" - }, - { - "type": "null" - } - ] - }, - "onNodeModuleFile": { - "anyOf": [ - { - "typeof": "function" }, - { + "vendor": { "type": [ "null", "string" ] - } - ], - "description": "The function (or path to file or module id) to be [run on each node module](#onnodemodulefile) file." - }, - "p5p": { - "anyOf": [ - { - "$ref": "#/definitions/LinuxTargetSpecificOptions" - }, - { - "type": "null" - } - ] - }, - "pacman": { - "anyOf": [ - { - "$ref": "#/definitions/LinuxTargetSpecificOptions" - }, - { - "type": "null" - } - ] - }, - "pkg": { - "anyOf": [ - { - "$ref": "#/definitions/PkgOptions" }, - { - "type": "null" - } - ], - "description": "macOS PKG options." - }, - "portable": { - "anyOf": [ - { - "$ref": "#/definitions/PortableOptions" + "maintainer": { + "type": [ + "null", + "string" + ] }, - { - "type": "null" - } - ] - }, - "productName": { - "description": "As [name](#Metadata-name), but allows you to specify a product name for your executable which contains spaces and other special characters not allowed in the [name property](https://docs.npmjs.com/files/package.json#name).", - "type": [ - "null", - "string" - ] - }, - "protocols": { - "anyOf": [ - { - "$ref": "#/definitions/Protocol" + "afterInstall": { + "type": [ + "null", + "string" + ] }, - { - "items": { - "$ref": "#/definitions/Protocol" - }, - "type": "array" - } - ], - "description": "The URL protocol schemes." - }, - "publish": { - "anyOf": [ - { - "$ref": "#/definitions/GithubOptions" + "afterRemove": { + "type": [ + "null", + "string" + ] }, - { - "$ref": "#/definitions/S3Options" + "fpm": { + "description": "*Advanced only* The [fpm](https://github.com/jordansissel/fpm/wiki#usage) options.\n\nExample: `[\"--before-install=build/deb-preinstall.sh\", \"--after-upgrade=build/deb-postinstall.sh\"]`", + "anyOf": [ + { + "type": "array", + "items": { + "type": "string" + } + }, + { + "type": "null" + } + ] }, - { - "$ref": "#/definitions/SpacesOptions" + "synopsis": { + "description": "The [short description](https://www.debian.org/doc/debian-policy/ch-controlfields.html#s-f-Description).", + "type": [ + "null", + "string" + ] }, - { - "$ref": "#/definitions/GenericServerOptions" + "description": { + "description": "As [description](/configuration/configuration#Metadata-description) from application package.json, but allows you to specify different for Linux.", + "type": [ + "null", + "string" + ] }, - { - "$ref": "#/definitions/BintrayOptions" + "category": { + "description": "The [application category](https://specifications.freedesktop.org/menu-spec/latest/apa.html#main-category-registry).", + "type": [ + "null", + "string" + ] }, - { - "$ref": "#/definitions/CustomPublishOptions" + "mimeTypes": { + "description": "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.", + "anyOf": [ + { + "type": "array", + "items": { + "type": "string" + } + }, + { + "type": "null" + } + ] }, - { - "$ref": "#/definitions/SnapStoreOptions" + "desktop": { + "description": "The [Desktop file](https://developer.gnome.org/integration-guide/stable/desktop-files.html.en) entries (name to value)." }, - { - "items": { - "anyOf": [ - { - "$ref": "#/definitions/GithubOptions" - }, - { - "$ref": "#/definitions/S3Options" - }, - { - "$ref": "#/definitions/SpacesOptions" - }, - { - "$ref": "#/definitions/GenericServerOptions" - }, - { - "$ref": "#/definitions/BintrayOptions" - }, - { - "$ref": "#/definitions/CustomPublishOptions" - }, - { - "$ref": "#/definitions/SnapStoreOptions" - }, - { + "executableArgs": { + "description": "The executable parameters. Pass to executableName", + "anyOf": [ + { + "type": "array", + "items": { "type": "string" } - ] - }, - "type": "array" + }, + { + "type": "null" + } + ] }, - { + "artifactName": { + "description": "The [artifact file name template](/configuration/configuration#artifact-file-name-template).", "type": [ "null", "string" ] - } - ] - }, - "releaseInfo": { - "$ref": "#/definitions/ReleaseInfo", - "description": "The release info. Intended for command line usage:\n\n```\n-c.releaseInfo.releaseNotes=\"new features\"\n```" - }, - "remoteBuild": { - "default": true, - "description": "Whether to build using Electron Build Service if target not supported on current OS.", - "type": "boolean" - }, - "removePackageScripts": { - "default": true, - "description": "Whether to remove `scripts` field from `package.json` files.", - "type": "boolean" - }, - "removePackageKeywords": { - "default": true, - "description": "Whether to remove `keywords` field from `package.json` files.", - "type": "boolean" - }, - "rpm": { - "anyOf": [ - { - "$ref": "#/definitions/LinuxTargetSpecificOptions" }, - { - "type": "null" + "publish": { + "anyOf": [ + { + "$ref": "#/definitions/GithubOptions" + }, + { + "$ref": "#/definitions/S3Options" + }, + { + "$ref": "#/definitions/SpacesOptions" + }, + { + "$ref": "#/definitions/GenericServerOptions" + }, + { + "$ref": "#/definitions/BintrayOptions" + }, + { + "$ref": "#/definitions/CustomPublishOptions" + }, + { + "$ref": "#/definitions/KeygenOptions" + }, + { + "$ref": "#/definitions/SnapStoreOptions" + }, + { + "type": "array", + "items": { + "anyOf": [ + { + "$ref": "#/definitions/GithubOptions" + }, + { + "$ref": "#/definitions/S3Options" + }, + { + "$ref": "#/definitions/SpacesOptions" + }, + { + "$ref": "#/definitions/GenericServerOptions" + }, + { + "$ref": "#/definitions/BintrayOptions" + }, + { + "$ref": "#/definitions/CustomPublishOptions" + }, + { + "$ref": "#/definitions/KeygenOptions" + }, + { + "$ref": "#/definitions/SnapStoreOptions" + }, + { + "type": "string" + } + ] + } + }, + { + "type": [ + "null", + "string" + ] + } + ] } - ] + } }, - "snap": { - "anyOf": [ - { - "$ref": "#/definitions/SnapOptions" + "ElectronDownloadOptions": { + "type": "object", + "properties": { + "version": { + "type": "string" }, - { - "type": "null" - } - ], - "description": "Snap options." - }, - "squirrelWindows": { - "anyOf": [ - { - "$ref": "#/definitions/SquirrelWindowsOptions" + "cache": { + "description": "The [cache location](https://github.com/electron-userland/electron-download#cache-location).", + "type": [ + "null", + "string" + ] }, - { - "type": "null" - } - ] - }, - "target": { - "anyOf": [ - { - "$ref": "#/definitions/TargetConfiguration" + "mirror": { + "description": "The mirror.", + "type": [ + "null", + "string" + ] }, - { - "items": { - "anyOf": [ - { - "$ref": "#/definitions/TargetConfiguration" - }, - { - "type": "string" - } - ] - }, - "type": "array" + "customDir": { + "type": [ + "null", + "string" + ] }, - { + "customFilename": { "type": [ "null", "string" ] + }, + "strictSSL": { + "type": "boolean" + }, + "isVerifyChecksum": { + "type": "boolean" + }, + "platform": { + "enum": [ + "darwin", + "linux", + "mas", + "win32" + ], + "type": "string" + }, + "arch": { + "type": "string" } - ] + } }, - "win": { - "anyOf": [ - { - "$ref": "#/definitions/WindowsConfiguration" + "ElectronBrandingOptions": { + "description": "Electron distributables branding options.", + "type": "object", + "properties": { + "projectName": { + "type": "string" }, - { - "type": "null" + "productName": { + "type": "string" } - ], - "description": "Options related to how build Windows targets." - }, - "$schema": { - "description": "JSON Schema for this document.", - "type": [ - "null", - "string" - ] + } } }, - "type": "object" + "$schema": "http://json-schema.org/draft-07/schema#" } \ No newline at end of file diff --git a/packages/app-builder-lib/src/schema/metadata-directories.jsc.ts b/packages/app-builder-lib/src/schema/metadata-directories.jsc.ts new file mode 100644 index 00000000000..3da8c96f68a --- /dev/null +++ b/packages/app-builder-lib/src/schema/metadata-directories.jsc.ts @@ -0,0 +1,9055 @@ +export default { + "$ref": "#/definitions/MetadataDirectories", + "definitions": { + "MetadataDirectories": { + "type": "object", + "properties": { + "buildResources": { + "description": "The path to build resources.\n\nPlease note — build resources are not packed into the app. If you need to use some files, e.g. as tray icon, please include required files explicitly: `\"files\": [\"**\\/*\", \"build/icon.*\"]`", + "default": "build", + "type": [ + "null", + "string" + ] + }, + "output": { + "description": "The output directory. [File macros](/file-patterns#file-macros) are supported.", + "default": "dist", + "type": [ + "null", + "string" + ] + }, + "app": { + "description": "The application directory (containing the application package.json), defaults to `app`, `www` or working directory.", + "type": [ + "null", + "string" + ] + } + } + }, + "MacConfiguration": { + "type": "object", + "properties": { + "category": { + "description": "The application category type, as shown in the Finder via *View -> Arrange by Application Category* when viewing the Applications directory.\n\nFor example, `\"category\": \"public.app-category.developer-tools\"` will set the application category to *Developer Tools*.\n\nValid values are listed in [Apple's documentation](https://developer.apple.com/library/ios/documentation/General/Reference/InfoPlistKeyReference/Articles/LaunchServicesKeys.html#//apple_ref/doc/uid/TP40009250-SW8).", + "type": [ + "null", + "string" + ] + }, + "target": { + "description": "The target package type: list of `default`, `dmg`, `mas`, `mas-dev`, `pkg`, `7z`, `zip`, `tar.xz`, `tar.lz`, `tar.gz`, `tar.bz2`, `dir`. Defaults to `default` (dmg and zip for Squirrel.Mac).", + "anyOf": [ + { + "$ref": "#/definitions/TargetConfiguration" + }, + { + "type": "array", + "items": { + "anyOf": [ + { + "$ref": "#/definitions/TargetConfiguration" + }, + { + "enum": [ + "7z", + "default", + "dir", + "dmg", + "mas", + "mas-dev", + "pkg", + "tar.bz2", + "tar.gz", + "tar.lz", + "tar.xz", + "zip" + ], + "type": "string" + } + ] + } + }, + { + "enum": [ + "7z", + "default", + "dir", + "dmg", + "mas", + "mas-dev", + "pkg", + "tar.bz2", + "tar.gz", + "tar.lz", + "tar.xz", + "zip" + ], + "type": "string" + }, + { + "type": "null" + } + ] + }, + "identity": { + "description": "The name of certificate to use when signing. Consider using environment variables [CSC_LINK or CSC_NAME](/code-signing) instead of specifying this option.\nMAS installer identity is specified in the [mas](/configuration/mas).", + "type": [ + "null", + "string" + ] + }, + "icon": { + "description": "The path to application icon.", + "default": "build/icon.icns", + "type": [ + "null", + "string" + ] + }, + "entitlements": { + "description": "The path to entitlements file for signing the app. `build/entitlements.mac.plist` will be used if exists (it is a recommended way to set).\nMAS entitlements is specified in the [mas](/configuration/mas).", + "type": [ + "null", + "string" + ] + }, + "entitlementsInherit": { + "description": "The path to child entitlements which inherit the security settings for signing frameworks and bundles of a distribution. `build/entitlements.mac.inherit.plist` will be used if exists (it is a recommended way to set).\nOtherwise [default](https://github.com/electron-userland/electron-osx-sign/blob/master/default.entitlements.darwin.inherit.plist).\n\nThis option only applies when signing with `entitlements` provided.", + "type": [ + "null", + "string" + ] + }, + "entitlementsLoginHelper": { + "description": "Path to login helper entitlement file.\nWhen using App Sandbox, the the `com.apple.security.inherit` key that is normally in the inherited entitlements cannot be inherited since the login helper is a standalone executable.\nDefaults to the value provided for `entitlements`. This option only applies when signing with `entitlements` provided.", + "type": [ + "null", + "string" + ] + }, + "provisioningProfile": { + "description": "The path to the provisioning profile to use when signing, absolute or relative to the app root.", + "type": [ + "null", + "string" + ] + }, + "bundleVersion": { + "description": "The `CFBundleVersion`. Do not use it unless [you need to](https://github.com/electron-userland/electron-builder/issues/565#issuecomment-230678643).", + "type": [ + "null", + "string" + ] + }, + "bundleShortVersion": { + "description": "The `CFBundleShortVersionString`. Do not use it unless you need to.", + "type": [ + "null", + "string" + ] + }, + "darkModeSupport": { + "description": "Whether a dark mode is supported. If your app does have a dark mode, you can make your app follow the system-wide dark mode setting.", + "default": false, + "type": "boolean" + }, + "helperBundleId": { + "description": "The bundle identifier to use in the application helper's plist.", + "default": "${appBundleIdentifier}.helper", + "type": [ + "null", + "string" + ] + }, + "helperRendererBundleId": { + "description": "The bundle identifier to use in the Renderer helper's plist.", + "default": "${appBundleIdentifier}.helper.Renderer", + "type": [ + "null", + "string" + ] + }, + "helperPluginBundleId": { + "description": "The bundle identifier to use in the Plugin helper's plist.", + "default": "${appBundleIdentifier}.helper.Plugin", + "type": [ + "null", + "string" + ] + }, + "helperGPUBundleId": { + "description": "The bundle identifier to use in the GPU helper's plist.", + "default": "${appBundleIdentifier}.helper.GPU", + "type": [ + "null", + "string" + ] + }, + "helperEHBundleId": { + "description": "The bundle identifier to use in the EH helper's plist.", + "default": "${appBundleIdentifier}.helper.EH", + "type": [ + "null", + "string" + ] + }, + "helperNPBundleId": { + "description": "The bundle identifier to use in the NP helper's plist.", + "default": "${appBundleIdentifier}.helper.NP", + "type": [ + "null", + "string" + ] + }, + "type": { + "description": "Whether to sign app for development or for distribution.", + "default": "distribution", + "anyOf": [ + { + "enum": [ + "development", + "distribution" + ], + "type": "string" + }, + { + "type": "null" + } + ] + }, + "extendInfo": { + "description": "The extra entries for `Info.plist`." + }, + "binaries": { + "description": "Paths of any extra binaries that need to be signed.", + "anyOf": [ + { + "type": "array", + "items": { + "type": "string" + } + }, + { + "type": "null" + } + ] + }, + "minimumSystemVersion": { + "description": "The minimum version of macOS required for the app to run. Corresponds to `LSMinimumSystemVersion`.", + "type": [ + "null", + "string" + ] + }, + "requirements": { + "description": "Path of [requirements file](https://developer.apple.com/library/mac/documentation/Security/Conceptual/CodeSigningGuide/RequirementLang/RequirementLang.html) used in signing. Not applicable for MAS.", + "type": [ + "null", + "string" + ] + }, + "electronLanguages": { + "description": "The electron locales. By default Electron locales used as is.", + "anyOf": [ + { + "type": "array", + "items": { + "type": "string" + } + }, + { + "type": "string" + } + ] + }, + "cscInstallerLink": { + "type": [ + "null", + "string" + ] + }, + "cscInstallerKeyPassword": { + "type": [ + "null", + "string" + ] + }, + "extraDistFiles": { + "description": "Extra files to put in archive. Not applicable for `tar.*`.", + "anyOf": [ + { + "type": "array", + "items": { + "type": "string" + } + }, + { + "type": [ + "null", + "string" + ] + } + ] + }, + "hardenedRuntime": { + "description": "Whether your app has to be signed with hardened runtime.", + "default": true, + "type": "boolean" + }, + "gatekeeperAssess": { + "description": "Whether to let electron-osx-sign validate the signing or not.", + "default": false, + "type": "boolean" + }, + "strictVerify": { + "description": "Whether to let electron-osx-sign verify the contents or not.", + "default": true, + "anyOf": [ + { + "type": "array", + "items": { + "type": "string" + } + }, + { + "type": [ + "string", + "boolean" + ] + } + ] + }, + "signIgnore": { + "description": "Regex or an array of regex's that signal skipping signing a file.", + "anyOf": [ + { + "type": "array", + "items": { + "type": "string" + } + }, + { + "type": [ + "null", + "string" + ] + } + ] + }, + "timestamp": { + "description": "Specify the URL of the timestamp authority server", + "type": [ + "null", + "string" + ] + }, + "appId": { + "description": "The application id. Used as [CFBundleIdentifier](https://developer.apple.com/library/ios/documentation/General/Reference/InfoPlistKeyReference/Articles/CoreFoundationKeys.html#//apple_ref/doc/uid/20001431-102070) for MacOS and as\n[Application User Model ID](https://msdn.microsoft.com/en-us/library/windows/desktop/dd378459(v=vs.85).aspx) for Windows (NSIS target only, Squirrel.Windows not supported). It is strongly recommended that an explicit ID is set.", + "default": "com.electron.${name}", + "type": [ + "null", + "string" + ] + }, + "artifactName": { + "description": "The [artifact file name template](/configuration/configuration#artifact-file-name-template). Defaults to `${productName}-${version}.${ext}` (some target can have other defaults, see corresponding options).", + "type": [ + "null", + "string" + ] + }, + "executableName": { + "description": "The executable name. Defaults to `productName`.", + "type": [ + "null", + "string" + ] + }, + "compression": { + "description": "The compression level. If you want to rapidly test build, `store` can reduce build time significantly. `maximum` doesn't lead to noticeable size difference, but increase build time.", + "default": "normal", + "anyOf": [ + { + "enum": [ + "maximum", + "normal", + "store" + ], + "type": "string" + }, + { + "type": "null" + } + ] + }, + "files": { + "anyOf": [ + { + "$ref": "#/definitions/FileSet" + }, + { + "type": "array", + "items": { + "anyOf": [ + { + "$ref": "#/definitions/FileSet" + }, + { + "type": "string" + } + ] + } + }, + { + "type": [ + "null", + "string" + ] + } + ] + }, + "extraResources": { + "anyOf": [ + { + "$ref": "#/definitions/FileSet" + }, + { + "type": "array", + "items": { + "anyOf": [ + { + "$ref": "#/definitions/FileSet" + }, + { + "type": "string" + } + ] + } + }, + { + "type": [ + "null", + "string" + ] + } + ] + }, + "extraFiles": { + "anyOf": [ + { + "$ref": "#/definitions/FileSet" + }, + { + "type": "array", + "items": { + "anyOf": [ + { + "$ref": "#/definitions/FileSet" + }, + { + "type": "string" + } + ] + } + }, + { + "type": [ + "null", + "string" + ] + } + ] + }, + "asar": { + "description": "Whether to package the application's source code into an archive, using [Electron's archive format](http://electron.atom.io/docs/tutorial/application-packaging/).\n\nNode modules, that must be unpacked, will be detected automatically, you don't need to explicitly set [asarUnpack](#configuration-asarUnpack) - please file an issue if this doesn't work.", + "default": true, + "anyOf": [ + { + "$ref": "#/definitions/AsarOptions" + }, + { + "type": [ + "null", + "boolean" + ] + } + ] + }, + "asarUnpack": { + "description": "A [glob patterns](/file-patterns) relative to the [app directory](#MetadataDirectories-app), which specifies which files to unpack when creating the [asar](http://electron.atom.io/docs/tutorial/application-packaging/) archive.", + "anyOf": [ + { + "type": "array", + "items": { + "type": "string" + } + }, + { + "type": [ + "null", + "string" + ] + } + ] + }, + "fileAssociations": { + "description": "The file associations.", + "anyOf": [ + { + "$ref": "#/definitions/FileAssociation" + }, + { + "type": "array", + "items": { + "$ref": "#/definitions/FileAssociation" + } + } + ] + }, + "protocols": { + "description": "The URL protocol schemes.", + "anyOf": [ + { + "$ref": "#/definitions/Protocol" + }, + { + "type": "array", + "items": { + "$ref": "#/definitions/Protocol" + } + } + ] + }, + "forceCodeSigning": { + "description": "Whether to fail if app will be not code signed.", + "type": "boolean" + }, + "electronUpdaterCompatibility": { + "description": "The [electron-updater compatibility](/auto-update#compatibility) semver range.", + "type": [ + "null", + "string" + ] + }, + "publish": { + "anyOf": [ + { + "$ref": "#/definitions/GithubOptions" + }, + { + "$ref": "#/definitions/S3Options" + }, + { + "$ref": "#/definitions/SpacesOptions" + }, + { + "$ref": "#/definitions/GenericServerOptions" + }, + { + "$ref": "#/definitions/BintrayOptions" + }, + { + "$ref": "#/definitions/CustomPublishOptions" + }, + { + "$ref": "#/definitions/KeygenOptions" + }, + { + "$ref": "#/definitions/SnapStoreOptions" + }, + { + "type": "array", + "items": { + "anyOf": [ + { + "$ref": "#/definitions/GithubOptions" + }, + { + "$ref": "#/definitions/S3Options" + }, + { + "$ref": "#/definitions/SpacesOptions" + }, + { + "$ref": "#/definitions/GenericServerOptions" + }, + { + "$ref": "#/definitions/BintrayOptions" + }, + { + "$ref": "#/definitions/CustomPublishOptions" + }, + { + "$ref": "#/definitions/KeygenOptions" + }, + { + "$ref": "#/definitions/SnapStoreOptions" + }, + { + "type": "string" + } + ] + } + }, + { + "type": [ + "null", + "string" + ] + } + ] + }, + "detectUpdateChannel": { + "description": "Whether to infer update channel from application version pre-release components. e.g. if version `0.12.1-alpha.1`, channel will be set to `alpha`. Otherwise to `latest`.", + "default": true, + "type": "boolean" + }, + "generateUpdatesFilesForAllChannels": { + "description": "Please see [Building and Releasing using Channels](https://github.com/electron-userland/electron-builder/issues/1182#issuecomment-324947139).", + "default": false, + "type": "boolean" + }, + "releaseInfo": { + "description": "The release info. Intended for command line usage:\n\n```\n-c.releaseInfo.releaseNotes=\"new features\"\n```", + "$ref": "#/definitions/ReleaseInfo" + }, + "cscLink": { + "type": [ + "null", + "string" + ] + }, + "cscKeyPassword": { + "type": [ + "null", + "string" + ] + }, + "defaultArch": { + "type": "string" + } + } + }, + "TargetConfiguration": { + "type": "object", + "properties": { + "target": { + "description": "The target name. e.g. `snap`.", + "type": "string" + }, + "arch": { + "description": "The arch or list of archs.", + "anyOf": [ + { + "type": "array", + "items": { + "enum": [ + "arm64", + "armv7l", + "ia32", + "universal", + "x64" + ], + "type": "string" + } + }, + { + "enum": [ + "arm64", + "armv7l", + "ia32", + "universal", + "x64" + ], + "type": "string" + } + ] + } + }, + "required": [ + "target" + ] + }, + "FileSet": { + "type": "object", + "properties": { + "from": { + "description": "The source path relative to the project directory.", + "type": "string" + }, + "to": { + "description": "The destination path relative to the app's content directory for `extraFiles` and the app's resource directory for `extraResources`.", + "type": "string" + }, + "filter": { + "description": "The [glob patterns](/file-patterns).", + "anyOf": [ + { + "type": "array", + "items": { + "type": "string" + } + }, + { + "type": "string" + } + ] + } + } + }, + "AsarOptions": { + "type": "object", + "properties": { + "smartUnpack": { + "description": "Whether to automatically unpack executables files.", + "default": true, + "type": "boolean" + }, + "ordering": { + "type": [ + "null", + "string" + ] + }, + "externalAllowed": { + "description": "Allows external asar files.", + "default": false, + "type": "boolean" + } + } + }, + "FileAssociation": { + "description": "File associations.\n\nmacOS (corresponds to [CFBundleDocumentTypes](https://developer.apple.com/library/content/documentation/General/Reference/InfoPlistKeyReference/Articles/CoreFoundationKeys.html#//apple_ref/doc/uid/20001431-101685)) and NSIS only.\n\nOn Windows works only if [nsis.perMachine](https://electron.build/configuration/configuration#NsisOptions-perMachine) is set to `true`.", + "type": "object", + "properties": { + "ext": { + "description": "The extension (minus the leading period). e.g. `png`.", + "anyOf": [ + { + "type": "array", + "items": { + "type": "string" + } + }, + { + "type": "string" + } + ] + }, + "name": { + "description": "The name. e.g. `PNG`. Defaults to `ext`.", + "type": [ + "null", + "string" + ] + }, + "description": { + "description": "*windows-only.* The description.", + "type": [ + "null", + "string" + ] + }, + "mimeType": { + "description": "*linux-only.* The mime-type.", + "type": [ + "null", + "string" + ] + }, + "icon": { + "description": "The path to icon (`.icns` for MacOS and `.ico` for Windows), relative to `build` (build resources directory). Defaults to `${firstExt}.icns`/`${firstExt}.ico` (if several extensions specified, first is used) or to application icon.\n\nNot supported on Linux, file issue if need (default icon will be `x-office-document`).", + "type": [ + "null", + "string" + ] + }, + "role": { + "description": "*macOS-only* The app’s role with respect to the type. The value can be `Editor`, `Viewer`, `Shell`, or `None`. Corresponds to `CFBundleTypeRole`.", + "default": "Editor", + "type": "string" + }, + "isPackage": { + "description": "*macOS-only* Whether the document is distributed as a bundle. If set to true, the bundle directory is treated as a file. Corresponds to `LSTypeIsPackage`.", + "type": "boolean" + }, + "rank": { + "description": "*macOS-only* The app’s rank with respect to the type. The value can be `Owner`, `Default`, `Alternate`, or `None`. Corresponds to `LSHandlerRank`.", + "default": "Default", + "type": "string" + } + }, + "required": [ + "ext" + ] + }, + "Protocol": { + "description": "URL Protocol Schemes. Protocols to associate the app with. macOS only.\n\nPlease note — on macOS [you need to register an `open-url` event handler](http://electron.atom.io/docs/api/app/#event-open-url-macos).", + "type": "object", + "properties": { + "name": { + "description": "The name. e.g. `IRC server URL`.", + "type": "string" + }, + "schemes": { + "description": "The schemes. e.g. `[\"irc\", \"ircs\"]`.", + "type": "array", + "items": { + "type": "string" + } + }, + "role": { + "description": "*macOS-only* The app’s role with respect to the type.", + "default": "Editor", + "enum": [ + "Editor", + "None", + "Shell", + "Viewer" + ], + "type": "string" + } + }, + "required": [ + "name", + "schemes" + ] + }, + "GithubOptions": { + "description": "[GitHub](https://help.github.com/articles/about-releases/) options.\n\nGitHub [personal access token](https://help.github.com/articles/creating-an-access-token-for-command-line-use/) is required. You can generate by going to [https://github.com/settings/tokens/new](https://github.com/settings/tokens/new). The access token should have the repo scope/permission.\nDefine `GH_TOKEN` environment variable.", + "type": "object", + "properties": { + "provider": { + "description": "The provider. Must be `github`.", + "type": "string", + "enum": [ + "github" + ] + }, + "repo": { + "description": "The repository name. [Detected automatically](#github-repository-and-bintray-package).", + "type": [ + "null", + "string" + ] + }, + "owner": { + "description": "The owner.", + "type": [ + "null", + "string" + ] + }, + "vPrefixedTagName": { + "description": "Whether to use `v`-prefixed tag name.", + "default": true, + "type": "boolean" + }, + "host": { + "description": "The host (including the port if need).", + "default": "github.com", + "type": [ + "null", + "string" + ] + }, + "protocol": { + "description": "The protocol. GitHub Publisher supports only `https`.", + "default": "https", + "anyOf": [ + { + "enum": [ + "http", + "https" + ], + "type": "string" + }, + { + "type": "null" + } + ] + }, + "token": { + "description": "The access token to support auto-update from private github repositories. Never specify it in the configuration files. Only for [setFeedURL](/auto-update#appupdatersetfeedurloptions).", + "type": [ + "null", + "string" + ] + }, + "private": { + "description": "Whether to use private github auto-update provider if `GH_TOKEN` environment variable is defined. See [Private GitHub Update Repo](/auto-update#private-github-update-repo).", + "type": [ + "null", + "boolean" + ] + }, + "releaseType": { + "description": "The type of release. By default `draft` release will be created.\n\nAlso you can set release type using environment variable. If `EP_DRAFT`is set to `true` — `draft`, if `EP_PRE_RELEASE`is set to `true` — `prerelease`.", + "default": "draft", + "anyOf": [ + { + "enum": [ + "draft", + "prerelease", + "release" + ], + "type": "string" + }, + { + "type": "null" + } + ] + }, + "publisherName": { + "anyOf": [ + { + "type": "array", + "items": { + "type": "string" + } + }, + { + "type": "null" + } + ] + }, + "updaterCacheDirName": { + "type": [ + "null", + "string" + ] + }, + "publishAutoUpdate": { + "description": "Whether to publish auto update info files.\n\nAuto update relies only on the first provider in the list (you can specify several publishers).\nThus, probably, there`s no need to upload the metadata files for the other configured providers. But by default will be uploaded.", + "default": true, + "type": "boolean" + }, + "requestHeaders": { + "description": "Any custom request headers", + "$ref": "#/definitions/OutgoingHttpHeaders" + } + }, + "required": [ + "provider" + ] + }, + "OutgoingHttpHeaders": { + "type": "object" + }, + "S3Options": { + "type": "object", + "properties": { + "provider": { + "description": "The provider. Must be `s3`.", + "type": "string", + "enum": [ + "s3" + ] + }, + "bucket": { + "description": "The bucket name.", + "type": "string" + }, + "region": { + "description": "The region. Is determined and set automatically when publishing.", + "type": [ + "null", + "string" + ] + }, + "acl": { + "description": "The ACL. Set to `null` to not [add](https://github.com/electron-userland/electron-builder/issues/1822).\n\nPlease see [required permissions for the S3 provider](https://github.com/electron-userland/electron-builder/issues/1618#issuecomment-314679128).", + "default": "public-read", + "anyOf": [ + { + "enum": [ + "private", + "public-read" + ], + "type": "string" + }, + { + "type": "null" + } + ] + }, + "storageClass": { + "description": "The type of storage to use for the object.", + "default": "STANDARD", + "anyOf": [ + { + "enum": [ + "REDUCED_REDUNDANCY", + "STANDARD", + "STANDARD_IA" + ], + "type": "string" + }, + { + "type": "null" + } + ] + }, + "encryption": { + "description": "Server-side encryption algorithm to use for the object.", + "anyOf": [ + { + "enum": [ + "AES256", + "aws:kms" + ], + "type": "string" + }, + { + "type": "null" + } + ] + }, + "endpoint": { + "description": "The endpoint URI to send requests to. The default endpoint is built from the configured region.\nThe endpoint should be a string like `https://{service}.{region}.amazonaws.com`.", + "type": [ + "null", + "string" + ] + }, + "channel": { + "description": "The update channel.", + "default": "latest", + "type": [ + "null", + "string" + ] + }, + "path": { + "description": "The directory path.", + "default": "/", + "type": [ + "null", + "string" + ] + }, + "publisherName": { + "anyOf": [ + { + "type": "array", + "items": { + "type": "string" + } + }, + { + "type": "null" + } + ] + }, + "updaterCacheDirName": { + "type": [ + "null", + "string" + ] + }, + "publishAutoUpdate": { + "description": "Whether to publish auto update info files.\n\nAuto update relies only on the first provider in the list (you can specify several publishers).\nThus, probably, there`s no need to upload the metadata files for the other configured providers. But by default will be uploaded.", + "default": true, + "type": "boolean" + }, + "requestHeaders": { + "description": "Any custom request headers", + "$ref": "#/definitions/OutgoingHttpHeaders" + } + }, + "required": [ + "bucket", + "provider" + ] + }, + "SpacesOptions": { + "description": "[DigitalOcean Spaces](https://www.digitalocean.com/community/tutorials/an-introduction-to-digitalocean-spaces) options.\nAccess key is required, define `DO_KEY_ID` and `DO_SECRET_KEY` environment variables.", + "type": "object", + "properties": { + "provider": { + "description": "The provider. Must be `spaces`.", + "type": "string", + "enum": [ + "spaces" + ] + }, + "name": { + "description": "The space name.", + "type": "string" + }, + "region": { + "description": "The region (e.g. `nyc3`).", + "type": "string" + }, + "channel": { + "description": "The update channel.", + "default": "latest", + "type": [ + "null", + "string" + ] + }, + "path": { + "description": "The directory path.", + "default": "/", + "type": [ + "null", + "string" + ] + }, + "acl": { + "description": "The ACL. Set to `null` to not [add](https://github.com/electron-userland/electron-builder/issues/1822).", + "default": "public-read", + "anyOf": [ + { + "enum": [ + "private", + "public-read" + ], + "type": "string" + }, + { + "type": "null" + } + ] + }, + "publisherName": { + "anyOf": [ + { + "type": "array", + "items": { + "type": "string" + } + }, + { + "type": "null" + } + ] + }, + "updaterCacheDirName": { + "type": [ + "null", + "string" + ] + }, + "publishAutoUpdate": { + "description": "Whether to publish auto update info files.\n\nAuto update relies only on the first provider in the list (you can specify several publishers).\nThus, probably, there`s no need to upload the metadata files for the other configured providers. But by default will be uploaded.", + "default": true, + "type": "boolean" + }, + "requestHeaders": { + "description": "Any custom request headers", + "$ref": "#/definitions/OutgoingHttpHeaders" + } + }, + "required": [ + "name", + "provider", + "region" + ] + }, + "GenericServerOptions": { + "description": "Generic (any HTTP(S) server) options.\nIn all publish options [File Macros](/file-patterns#file-macros) are supported.", + "type": "object", + "properties": { + "provider": { + "description": "The provider. Must be `generic`.", + "type": "string", + "enum": [ + "generic" + ] + }, + "url": { + "description": "The base url. e.g. `https://bucket_name.s3.amazonaws.com`.", + "type": "string" + }, + "channel": { + "description": "The channel.", + "default": "latest", + "type": [ + "null", + "string" + ] + }, + "useMultipleRangeRequest": { + "description": "Whether to use multiple range requests for differential update. Defaults to `true` if `url` doesn't contain `s3.amazonaws.com`.", + "type": "boolean" + }, + "publisherName": { + "anyOf": [ + { + "type": "array", + "items": { + "type": "string" + } + }, + { + "type": "null" + } + ] + }, + "updaterCacheDirName": { + "type": [ + "null", + "string" + ] + }, + "publishAutoUpdate": { + "description": "Whether to publish auto update info files.\n\nAuto update relies only on the first provider in the list (you can specify several publishers).\nThus, probably, there`s no need to upload the metadata files for the other configured providers. But by default will be uploaded.", + "default": true, + "type": "boolean" + }, + "requestHeaders": { + "description": "Any custom request headers", + "$ref": "#/definitions/OutgoingHttpHeaders" + } + }, + "required": [ + "provider", + "url" + ] + }, + "BintrayOptions": { + "description": "[Bintray](https://bintray.com/) options. Requires an API key. An API key can be obtained from the user [profile](https://bintray.com/profile/edit) page (\"Edit Your Profile\" -> API Key).\nDefine `BT_TOKEN` environment variable.", + "type": "object", + "properties": { + "provider": { + "description": "The provider. Must be `bintray`.", + "type": "string", + "enum": [ + "bintray" + ] + }, + "package": { + "description": "The Bintray package name.", + "type": [ + "null", + "string" + ] + }, + "repo": { + "description": "The Bintray repository name.", + "default": "generic", + "type": [ + "null", + "string" + ] + }, + "owner": { + "description": "The owner.", + "type": [ + "null", + "string" + ] + }, + "component": { + "description": "The Bintray component (Debian only).", + "type": [ + "null", + "string" + ] + }, + "distribution": { + "description": "The Bintray distribution (Debian only).", + "default": "stable", + "type": [ + "null", + "string" + ] + }, + "user": { + "description": "The Bintray user account. Used in cases where the owner is an organization.", + "type": [ + "null", + "string" + ] + }, + "token": { + "type": [ + "null", + "string" + ] + }, + "publisherName": { + "anyOf": [ + { + "type": "array", + "items": { + "type": "string" + } + }, + { + "type": "null" + } + ] + }, + "updaterCacheDirName": { + "type": [ + "null", + "string" + ] + }, + "publishAutoUpdate": { + "description": "Whether to publish auto update info files.\n\nAuto update relies only on the first provider in the list (you can specify several publishers).\nThus, probably, there`s no need to upload the metadata files for the other configured providers. But by default will be uploaded.", + "default": true, + "type": "boolean" + }, + "requestHeaders": { + "description": "Any custom request headers", + "$ref": "#/definitions/OutgoingHttpHeaders" + } + }, + "required": [ + "provider" + ] + }, + "CustomPublishOptions": { + "type": "object", + "additionalProperties": {}, + "properties": { + "provider": { + "description": "The provider. Must be `custom`.", + "type": "string", + "enum": [ + "custom" + ] + }, + "updateProvider": { + "description": "The Provider to provide UpdateInfo regarding available updates. Required\nto use custom providers with electron-updater.", + "type": "object" + }, + "publisherName": { + "anyOf": [ + { + "type": "array", + "items": { + "type": "string" + } + }, + { + "type": "null" + } + ] + }, + "updaterCacheDirName": { + "type": [ + "null", + "string" + ] + }, + "publishAutoUpdate": { + "description": "Whether to publish auto update info files.\n\nAuto update relies only on the first provider in the list (you can specify several publishers).\nThus, probably, there`s no need to upload the metadata files for the other configured providers. But by default will be uploaded.", + "default": true, + "type": "boolean" + }, + "requestHeaders": { + "description": "Any custom request headers", + "$ref": "#/definitions/OutgoingHttpHeaders" + } + }, + "required": [ + "provider" + ] + }, + "KeygenOptions": { + "description": "Keygen options.\nhttps://keygen.sh/\nDefine `KEYGEN_TOKEN` environment variable.", + "type": "object", + "properties": { + "provider": { + "description": "The provider. Must be `keygen`.", + "type": "string", + "enum": [ + "keygen" + ] + }, + "account": { + "description": "Keygen account's UUID", + "type": "string" + }, + "product": { + "description": "Keygen product's UUID", + "type": "string" + }, + "channel": { + "description": "The channel.", + "default": "stable", + "type": [ + "null", + "string" + ] + }, + "platform": { + "description": "The target Platform. Is set programmatically explicitly for publishing.", + "type": "string" + }, + "publisherName": { + "anyOf": [ + { + "type": "array", + "items": { + "type": "string" + } + }, + { + "type": "null" + } + ] + }, + "updaterCacheDirName": { + "type": [ + "null", + "string" + ] + }, + "publishAutoUpdate": { + "description": "Whether to publish auto update info files.\n\nAuto update relies only on the first provider in the list (you can specify several publishers).\nThus, probably, there`s no need to upload the metadata files for the other configured providers. But by default will be uploaded.", + "default": true, + "type": "boolean" + }, + "requestHeaders": { + "description": "Any custom request headers", + "$ref": "#/definitions/OutgoingHttpHeaders" + } + }, + "required": [ + "account", + "product", + "provider" + ] + }, + "SnapStoreOptions": { + "description": "[Snap Store](https://snapcraft.io/) options.", + "type": "object", + "properties": { + "channels": { + "description": "The list of channels the snap would be released.", + "default": [ + "edge" + ], + "anyOf": [ + { + "type": "array", + "items": { + "type": "string" + } + }, + { + "type": [ + "null", + "string" + ] + } + ] + }, + "provider": { + "$ref": "#/definitions/PublishProvider", + "description": "The provider." + }, + "publisherName": { + "anyOf": [ + { + "type": "array", + "items": { + "type": "string" + } + }, + { + "type": "null" + } + ] + }, + "updaterCacheDirName": { + "type": [ + "null", + "string" + ] + }, + "publishAutoUpdate": { + "description": "Whether to publish auto update info files.\n\nAuto update relies only on the first provider in the list (you can specify several publishers).\nThus, probably, there`s no need to upload the metadata files for the other configured providers. But by default will be uploaded.", + "default": true, + "type": "boolean" + }, + "requestHeaders": { + "description": "Any custom request headers", + "$ref": "#/definitions/OutgoingHttpHeaders" + } + }, + "required": [ + "provider" + ] + }, + "PublishProvider": { + "enum": [ + "bintray", + "custom", + "generic", + "github", + "keygen", + "s3", + "snapStore", + "spaces" + ], + "type": "string" + }, + "ReleaseInfo": { + "type": "object", + "properties": { + "releaseName": { + "description": "The release name.", + "type": [ + "null", + "string" + ] + }, + "releaseNotes": { + "description": "The release notes.", + "type": [ + "null", + "string" + ] + }, + "releaseNotesFile": { + "description": "The path to release notes file. Defaults to `release-notes-${platform}.md` (where `platform` it is current platform — `mac`, `linux` or `windows`) or `release-notes.md` in the [build resources](#MetadataDirectories-buildResources).", + "type": [ + "null", + "string" + ] + }, + "releaseDate": { + "description": "The release date.", + "type": "string" + } + } + }, + "MasConfiguration": { + "type": "object", + "properties": { + "entitlements": { + "description": "The path to entitlements file for signing the app. `build/entitlements.mas.plist` will be used if exists (it is a recommended way to set).\nOtherwise [default](https://github.com/electron-userland/electron-osx-sign/blob/master/default.entitlements.mas.plist).", + "type": [ + "null", + "string" + ] + }, + "entitlementsInherit": { + "description": "The path to child entitlements which inherit the security settings for signing frameworks and bundles of a distribution. `build/entitlements.mas.inherit.plist` will be used if exists (it is a recommended way to set).\nOtherwise [default](https://github.com/electron-userland/electron-osx-sign/blob/master/default.entitlements.mas.inherit.plist).", + "type": [ + "null", + "string" + ] + }, + "binaries": { + "description": "Paths of any extra binaries that need to be signed.", + "anyOf": [ + { + "type": "array", + "items": { + "type": "string" + } + }, + { + "type": "null" + } + ] + }, + "category": { + "description": "The application category type, as shown in the Finder via *View -> Arrange by Application Category* when viewing the Applications directory.\n\nFor example, `\"category\": \"public.app-category.developer-tools\"` will set the application category to *Developer Tools*.\n\nValid values are listed in [Apple's documentation](https://developer.apple.com/library/ios/documentation/General/Reference/InfoPlistKeyReference/Articles/LaunchServicesKeys.html#//apple_ref/doc/uid/TP40009250-SW8).", + "type": [ + "null", + "string" + ] + }, + "target": { + "description": "The target package type: list of `default`, `dmg`, `mas`, `mas-dev`, `pkg`, `7z`, `zip`, `tar.xz`, `tar.lz`, `tar.gz`, `tar.bz2`, `dir`. Defaults to `default` (dmg and zip for Squirrel.Mac).", + "anyOf": [ + { + "$ref": "#/definitions/TargetConfiguration" + }, + { + "type": "array", + "items": { + "anyOf": [ + { + "$ref": "#/definitions/TargetConfiguration" + }, + { + "enum": [ + "7z", + "default", + "dir", + "dmg", + "mas", + "mas-dev", + "pkg", + "tar.bz2", + "tar.gz", + "tar.lz", + "tar.xz", + "zip" + ], + "type": "string" + } + ] + } + }, + { + "enum": [ + "7z", + "default", + "dir", + "dmg", + "mas", + "mas-dev", + "pkg", + "tar.bz2", + "tar.gz", + "tar.lz", + "tar.xz", + "zip" + ], + "type": "string" + }, + { + "type": "null" + } + ] + }, + "identity": { + "description": "The name of certificate to use when signing. Consider using environment variables [CSC_LINK or CSC_NAME](/code-signing) instead of specifying this option.\nMAS installer identity is specified in the [mas](/configuration/mas).", + "type": [ + "null", + "string" + ] + }, + "icon": { + "description": "The path to application icon.", + "default": "build/icon.icns", + "type": [ + "null", + "string" + ] + }, + "entitlementsLoginHelper": { + "description": "Path to login helper entitlement file.\nWhen using App Sandbox, the the `com.apple.security.inherit` key that is normally in the inherited entitlements cannot be inherited since the login helper is a standalone executable.\nDefaults to the value provided for `entitlements`. This option only applies when signing with `entitlements` provided.", + "type": [ + "null", + "string" + ] + }, + "provisioningProfile": { + "description": "The path to the provisioning profile to use when signing, absolute or relative to the app root.", + "type": [ + "null", + "string" + ] + }, + "bundleVersion": { + "description": "The `CFBundleVersion`. Do not use it unless [you need to](https://github.com/electron-userland/electron-builder/issues/565#issuecomment-230678643).", + "type": [ + "null", + "string" + ] + }, + "bundleShortVersion": { + "description": "The `CFBundleShortVersionString`. Do not use it unless you need to.", + "type": [ + "null", + "string" + ] + }, + "darkModeSupport": { + "description": "Whether a dark mode is supported. If your app does have a dark mode, you can make your app follow the system-wide dark mode setting.", + "default": false, + "type": "boolean" + }, + "helperBundleId": { + "description": "The bundle identifier to use in the application helper's plist.", + "default": "${appBundleIdentifier}.helper", + "type": [ + "null", + "string" + ] + }, + "helperRendererBundleId": { + "description": "The bundle identifier to use in the Renderer helper's plist.", + "default": "${appBundleIdentifier}.helper.Renderer", + "type": [ + "null", + "string" + ] + }, + "helperPluginBundleId": { + "description": "The bundle identifier to use in the Plugin helper's plist.", + "default": "${appBundleIdentifier}.helper.Plugin", + "type": [ + "null", + "string" + ] + }, + "helperGPUBundleId": { + "description": "The bundle identifier to use in the GPU helper's plist.", + "default": "${appBundleIdentifier}.helper.GPU", + "type": [ + "null", + "string" + ] + }, + "helperEHBundleId": { + "description": "The bundle identifier to use in the EH helper's plist.", + "default": "${appBundleIdentifier}.helper.EH", + "type": [ + "null", + "string" + ] + }, + "helperNPBundleId": { + "description": "The bundle identifier to use in the NP helper's plist.", + "default": "${appBundleIdentifier}.helper.NP", + "type": [ + "null", + "string" + ] + }, + "type": { + "description": "Whether to sign app for development or for distribution.", + "default": "distribution", + "anyOf": [ + { + "enum": [ + "development", + "distribution" + ], + "type": "string" + }, + { + "type": "null" + } + ] + }, + "extendInfo": { + "description": "The extra entries for `Info.plist`." + }, + "minimumSystemVersion": { + "description": "The minimum version of macOS required for the app to run. Corresponds to `LSMinimumSystemVersion`.", + "type": [ + "null", + "string" + ] + }, + "requirements": { + "description": "Path of [requirements file](https://developer.apple.com/library/mac/documentation/Security/Conceptual/CodeSigningGuide/RequirementLang/RequirementLang.html) used in signing. Not applicable for MAS.", + "type": [ + "null", + "string" + ] + }, + "electronLanguages": { + "description": "The electron locales. By default Electron locales used as is.", + "anyOf": [ + { + "type": "array", + "items": { + "type": "string" + } + }, + { + "type": "string" + } + ] + }, + "cscInstallerLink": { + "type": [ + "null", + "string" + ] + }, + "cscInstallerKeyPassword": { + "type": [ + "null", + "string" + ] + }, + "extraDistFiles": { + "description": "Extra files to put in archive. Not applicable for `tar.*`.", + "anyOf": [ + { + "type": "array", + "items": { + "type": "string" + } + }, + { + "type": [ + "null", + "string" + ] + } + ] + }, + "hardenedRuntime": { + "description": "Whether your app has to be signed with hardened runtime.", + "default": true, + "type": "boolean" + }, + "gatekeeperAssess": { + "description": "Whether to let electron-osx-sign validate the signing or not.", + "default": false, + "type": "boolean" + }, + "strictVerify": { + "description": "Whether to let electron-osx-sign verify the contents or not.", + "default": true, + "anyOf": [ + { + "type": "array", + "items": { + "type": "string" + } + }, + { + "type": [ + "string", + "boolean" + ] + } + ] + }, + "signIgnore": { + "description": "Regex or an array of regex's that signal skipping signing a file.", + "anyOf": [ + { + "type": "array", + "items": { + "type": "string" + } + }, + { + "type": [ + "null", + "string" + ] + } + ] + }, + "timestamp": { + "description": "Specify the URL of the timestamp authority server", + "type": [ + "null", + "string" + ] + }, + "appId": { + "description": "The application id. Used as [CFBundleIdentifier](https://developer.apple.com/library/ios/documentation/General/Reference/InfoPlistKeyReference/Articles/CoreFoundationKeys.html#//apple_ref/doc/uid/20001431-102070) for MacOS and as\n[Application User Model ID](https://msdn.microsoft.com/en-us/library/windows/desktop/dd378459(v=vs.85).aspx) for Windows (NSIS target only, Squirrel.Windows not supported). It is strongly recommended that an explicit ID is set.", + "default": "com.electron.${name}", + "type": [ + "null", + "string" + ] + }, + "artifactName": { + "description": "The [artifact file name template](/configuration/configuration#artifact-file-name-template). Defaults to `${productName}-${version}.${ext}` (some target can have other defaults, see corresponding options).", + "type": [ + "null", + "string" + ] + }, + "executableName": { + "description": "The executable name. Defaults to `productName`.", + "type": [ + "null", + "string" + ] + }, + "compression": { + "description": "The compression level. If you want to rapidly test build, `store` can reduce build time significantly. `maximum` doesn't lead to noticeable size difference, but increase build time.", + "default": "normal", + "anyOf": [ + { + "enum": [ + "maximum", + "normal", + "store" + ], + "type": "string" + }, + { + "type": "null" + } + ] + }, + "files": { + "anyOf": [ + { + "$ref": "#/definitions/FileSet" + }, + { + "type": "array", + "items": { + "anyOf": [ + { + "$ref": "#/definitions/FileSet" + }, + { + "type": "string" + } + ] + } + }, + { + "type": [ + "null", + "string" + ] + } + ] + }, + "extraResources": { + "anyOf": [ + { + "$ref": "#/definitions/FileSet" + }, + { + "type": "array", + "items": { + "anyOf": [ + { + "$ref": "#/definitions/FileSet" + }, + { + "type": "string" + } + ] + } + }, + { + "type": [ + "null", + "string" + ] + } + ] + }, + "extraFiles": { + "anyOf": [ + { + "$ref": "#/definitions/FileSet" + }, + { + "type": "array", + "items": { + "anyOf": [ + { + "$ref": "#/definitions/FileSet" + }, + { + "type": "string" + } + ] + } + }, + { + "type": [ + "null", + "string" + ] + } + ] + }, + "asar": { + "description": "Whether to package the application's source code into an archive, using [Electron's archive format](http://electron.atom.io/docs/tutorial/application-packaging/).\n\nNode modules, that must be unpacked, will be detected automatically, you don't need to explicitly set [asarUnpack](#configuration-asarUnpack) - please file an issue if this doesn't work.", + "default": true, + "anyOf": [ + { + "$ref": "#/definitions/AsarOptions" + }, + { + "type": [ + "null", + "boolean" + ] + } + ] + }, + "asarUnpack": { + "description": "A [glob patterns](/file-patterns) relative to the [app directory](#MetadataDirectories-app), which specifies which files to unpack when creating the [asar](http://electron.atom.io/docs/tutorial/application-packaging/) archive.", + "anyOf": [ + { + "type": "array", + "items": { + "type": "string" + } + }, + { + "type": [ + "null", + "string" + ] + } + ] + }, + "fileAssociations": { + "description": "The file associations.", + "anyOf": [ + { + "$ref": "#/definitions/FileAssociation" + }, + { + "type": "array", + "items": { + "$ref": "#/definitions/FileAssociation" + } + } + ] + }, + "protocols": { + "description": "The URL protocol schemes.", + "anyOf": [ + { + "$ref": "#/definitions/Protocol" + }, + { + "type": "array", + "items": { + "$ref": "#/definitions/Protocol" + } + } + ] + }, + "forceCodeSigning": { + "description": "Whether to fail if app will be not code signed.", + "type": "boolean" + }, + "electronUpdaterCompatibility": { + "description": "The [electron-updater compatibility](/auto-update#compatibility) semver range.", + "type": [ + "null", + "string" + ] + }, + "publish": { + "anyOf": [ + { + "$ref": "#/definitions/GithubOptions" + }, + { + "$ref": "#/definitions/S3Options" + }, + { + "$ref": "#/definitions/SpacesOptions" + }, + { + "$ref": "#/definitions/GenericServerOptions" + }, + { + "$ref": "#/definitions/BintrayOptions" + }, + { + "$ref": "#/definitions/CustomPublishOptions" + }, + { + "$ref": "#/definitions/KeygenOptions" + }, + { + "$ref": "#/definitions/SnapStoreOptions" + }, + { + "type": "array", + "items": { + "anyOf": [ + { + "$ref": "#/definitions/GithubOptions" + }, + { + "$ref": "#/definitions/S3Options" + }, + { + "$ref": "#/definitions/SpacesOptions" + }, + { + "$ref": "#/definitions/GenericServerOptions" + }, + { + "$ref": "#/definitions/BintrayOptions" + }, + { + "$ref": "#/definitions/CustomPublishOptions" + }, + { + "$ref": "#/definitions/KeygenOptions" + }, + { + "$ref": "#/definitions/SnapStoreOptions" + }, + { + "type": "string" + } + ] + } + }, + { + "type": [ + "null", + "string" + ] + } + ] + }, + "detectUpdateChannel": { + "description": "Whether to infer update channel from application version pre-release components. e.g. if version `0.12.1-alpha.1`, channel will be set to `alpha`. Otherwise to `latest`.", + "default": true, + "type": "boolean" + }, + "generateUpdatesFilesForAllChannels": { + "description": "Please see [Building and Releasing using Channels](https://github.com/electron-userland/electron-builder/issues/1182#issuecomment-324947139).", + "default": false, + "type": "boolean" + }, + "releaseInfo": { + "description": "The release info. Intended for command line usage:\n\n```\n-c.releaseInfo.releaseNotes=\"new features\"\n```", + "$ref": "#/definitions/ReleaseInfo" + }, + "cscLink": { + "type": [ + "null", + "string" + ] + }, + "cscKeyPassword": { + "type": [ + "null", + "string" + ] + }, + "defaultArch": { + "type": "string" + } + } + }, + "DmgOptions": { + "type": "object", + "properties": { + "background": { + "description": "The path to background image (default: `build/background.tiff` or `build/background.png` if exists). The resolution of this file determines the resolution of the installer window.\nIf background is not specified, use `window.size`. Default locations expected background size to be 540x380.", + "type": [ + "null", + "string" + ] + }, + "backgroundColor": { + "description": "The background color (accepts css colors). Defaults to `#ffffff` (white) if no background image.", + "type": [ + "null", + "string" + ] + }, + "icon": { + "description": "The path to DMG icon (volume icon), which will be shown when mounted, relative to the [build resources](/configuration/configuration#MetadataDirectories-buildResources) or to the project directory.\nDefaults to the application icon (`build/icon.icns`).", + "type": [ + "null", + "string" + ] + }, + "iconSize": { + "description": "The size of all the icons inside the DMG.", + "default": 80, + "type": [ + "null", + "number" + ] + }, + "iconTextSize": { + "description": "The size of all the icon texts inside the DMG.", + "default": 12, + "type": [ + "null", + "number" + ] + }, + "title": { + "description": "The title of the produced DMG, which will be shown when mounted (volume name).\n\nMacro `${productName}`, `${version}` and `${name}` are supported.", + "default": "${productName} ${version}", + "type": [ + "null", + "string" + ] + }, + "contents": { + "description": "The content — to customize icon locations. The x and y coordinates refer to the position of the **center** of the icon (at 1x scale), and do not take the label into account.", + "type": "array", + "items": { + "$ref": "#/definitions/DmgContent" + } + }, + "format": { + "description": "The disk image format. `ULFO` (lzfse-compressed image (OS X 10.11+ only)).", + "default": "UDZO", + "enum": [ + "UDBZ", + "UDCO", + "UDRO", + "UDRW", + "UDZO", + "ULFO" + ], + "type": "string" + }, + "window": { + "description": "The DMG window position and size. With y co-ordinates running from bottom to top.\n\nThe Finder makes sure that the window will be on the user’s display, so if you want your window at the top left of the display you could use `\"x\": 0, \"y\": 100000` as the x, y co-ordinates.\nIt is not to be possible to position the window relative to the [top left](https://github.com/electron-userland/electron-builder/issues/3990#issuecomment-512960957) or relative to the center of the user’s screen.", + "$ref": "#/definitions/DmgWindow" + }, + "internetEnabled": { + "description": "Whether to create internet-enabled disk image (when it is downloaded using a browser it will automatically decompress the image, put the application on the desktop, unmount and remove the disk image file).", + "default": false, + "type": "boolean" + }, + "sign": { + "description": "Whether to sign the DMG or not. Signing is not required and will lead to unwanted errors in combination with notarization requirements.", + "default": false, + "type": "boolean" + }, + "writeUpdateInfo": { + "default": true, + "type": "boolean" + }, + "artifactName": { + "description": "The [artifact file name template](/configuration/configuration#artifact-file-name-template).", + "type": [ + "null", + "string" + ] + }, + "publish": { + "anyOf": [ + { + "$ref": "#/definitions/GithubOptions" + }, + { + "$ref": "#/definitions/S3Options" + }, + { + "$ref": "#/definitions/SpacesOptions" + }, + { + "$ref": "#/definitions/GenericServerOptions" + }, + { + "$ref": "#/definitions/BintrayOptions" + }, + { + "$ref": "#/definitions/CustomPublishOptions" + }, + { + "$ref": "#/definitions/KeygenOptions" + }, + { + "$ref": "#/definitions/SnapStoreOptions" + }, + { + "type": "array", + "items": { + "anyOf": [ + { + "$ref": "#/definitions/GithubOptions" + }, + { + "$ref": "#/definitions/S3Options" + }, + { + "$ref": "#/definitions/SpacesOptions" + }, + { + "$ref": "#/definitions/GenericServerOptions" + }, + { + "$ref": "#/definitions/BintrayOptions" + }, + { + "$ref": "#/definitions/CustomPublishOptions" + }, + { + "$ref": "#/definitions/KeygenOptions" + }, + { + "$ref": "#/definitions/SnapStoreOptions" + }, + { + "type": "string" + } + ] + } + }, + { + "type": [ + "null", + "string" + ] + } + ] + } + } + }, + "DmgContent": { + "type": "object", + "properties": { + "x": { + "description": "The device-independent pixel offset from the left of the window to the **center** of the icon.", + "type": "number" + }, + "y": { + "description": "The device-independent pixel offset from the top of the window to the **center** of the icon.", + "type": "number" + }, + "type": { + "enum": [ + "dir", + "file", + "link" + ], + "type": "string" + }, + "name": { + "description": "The name of the file within the DMG. Defaults to basename of `path`.", + "type": "string" + }, + "path": { + "description": "The path of the file within the DMG.", + "type": "string" + } + }, + "required": [ + "x", + "y" + ] + }, + "DmgWindow": { + "type": "object", + "properties": { + "x": { + "description": "The X position relative to left of the screen.", + "default": 400, + "type": "number" + }, + "y": { + "description": "The Y position relative to bottom of the screen.", + "default": 100, + "type": "number" + }, + "width": { + "description": "The width. Defaults to background image width or 540.", + "type": "number" + }, + "height": { + "description": "The height. Defaults to background image height or 380.", + "type": "number" + } + } + }, + "PkgOptions": { + "description": "macOS product archive options.", + "type": "object", + "properties": { + "scripts": { + "description": "The scripts directory, relative to `build` (build resources directory).\nThe scripts can be in any language so long as the files are marked executable and have the appropriate shebang indicating the path to the interpreter.\nScripts are required to be executable (`chmod +x file`).", + "default": "build/pkg-scripts", + "type": [ + "null", + "string" + ] + }, + "productbuild": { + "description": "should be not documented, only to experiment", + "anyOf": [ + { + "type": "array", + "items": { + "type": "string" + } + }, + { + "type": "null" + } + ] + }, + "installLocation": { + "description": "The install location. [Do not use it](https://stackoverflow.com/questions/12863944/how-do-you-specify-a-default-install-location-to-home-with-pkgbuild) to create per-user package.\nMostly never you will need to change this option. `/Applications` would install it as expected into `/Applications` if the local system domain is chosen, or into `$HOME/Applications` if the home installation is chosen.", + "default": "/Applications", + "type": [ + "null", + "string" + ] + }, + "allowAnywhere": { + "description": "Whether can be installed at the root of any volume, including non-system volumes. Otherwise, it cannot be installed at the root of a volume.\n\nCorresponds to [enable_anywhere](https://developer.apple.com/library/content/documentation/DeveloperTools/Reference/DistributionDefinitionRef/Chapters/Distribution_XML_Ref.html#//apple_ref/doc/uid/TP40005370-CH100-SW70).", + "default": true, + "type": [ + "null", + "boolean" + ] + }, + "allowCurrentUserHome": { + "description": "Whether can be installed into the current user’s home directory.\nA home directory installation is done as the current user (not as root), and it cannot write outside of the home directory.\nIf the product cannot be installed in the user’s home directory and be not completely functional from user’s home directory.\n\nCorresponds to [enable_currentUserHome](https://developer.apple.com/library/content/documentation/DeveloperTools/Reference/DistributionDefinitionRef/Chapters/Distribution_XML_Ref.html#//apple_ref/doc/uid/TP40005370-CH100-SW70).", + "default": true, + "type": [ + "null", + "boolean" + ] + }, + "allowRootDirectory": { + "description": "Whether can be installed into the root directory. Should usually be `true` unless the product can be installed only to the user’s home directory.\n\nCorresponds to [enable_localSystem](https://developer.apple.com/library/content/documentation/DeveloperTools/Reference/DistributionDefinitionRef/Chapters/Distribution_XML_Ref.html#//apple_ref/doc/uid/TP40005370-CH100-SW70).", + "default": true, + "type": [ + "null", + "boolean" + ] + }, + "identity": { + "description": "The name of certificate to use when signing. Consider using environment variables [CSC_LINK or CSC_NAME](/code-signing) instead of specifying this option.", + "type": [ + "null", + "string" + ] + }, + "license": { + "description": "The path to EULA license file. Defaults to `license.txt` or `eula.txt` (or uppercase variants). In addition to `txt, `rtf` and `html` supported (don't forget to use `target=\"_blank\"` for links).", + "type": [ + "null", + "string" + ] + }, + "background": { + "description": "Options for the background image for the installer.", + "anyOf": [ + { + "$ref": "#/definitions/PkgBackgroundOptions" + }, + { + "type": "null" + } + ] + }, + "welcome": { + "description": "The path to the welcome file. This may be used to customize the text on the Introduction page of the installer.", + "type": [ + "null", + "string" + ] + }, + "mustClose": { + "description": "Identifies applications that must be closed before the package is installed.\\n\\nCorresponds to [must-close](https://developer.apple.com/library/archive/documentation/DeveloperTools/Reference/DistributionDefinitionRef/Chapters/Distribution_XML_Ref.html#//apple_ref/doc/uid/TP40005370-CH100-SW77)", + "anyOf": [ + { + "type": "array", + "items": { + "type": "string" + } + }, + { + "type": "null" + } + ] + }, + "conclusion": { + "description": "The path to the conclusion file. This may be used to customize the text on the final \"Summary\" page of the installer.", + "type": [ + "null", + "string" + ] + }, + "isRelocatable": { + "description": "Install bundle over previous version if moved by user?", + "default": true, + "type": [ + "null", + "boolean" + ] + }, + "isVersionChecked": { + "description": "Don't install bundle if newer version on disk?", + "default": true, + "type": [ + "null", + "boolean" + ] + }, + "hasStrictIdentifier": { + "description": "Require identical bundle identifiers at install path?", + "default": true, + "type": [ + "null", + "boolean" + ] + }, + "overwriteAction": { + "description": "Specifies how an existing version of the bundle on disk should be handled when the version in\nthe package is installed.\n\nIf you specify upgrade, the bundle in the package atomi-cally replaces any version on disk;\nthis has the effect of deleting old paths that no longer exist in the new version of\nthe bundle.\n\nIf you specify update, the bundle in the package overwrites the version on disk, and any files\nnot contained in the package will be left intact; this is appropriate when you are delivering\nan update-only package.\n\nAnother effect of update is that the package bundle will not be installed at all if there is\nnot already a version on disk; this allows a package to deliver an update for an app that\nthe user might have deleted.", + "default": "upgrade", + "anyOf": [ + { + "enum": [ + "update", + "upgrade" + ], + "type": "string" + }, + { + "type": "null" + } + ] + }, + "artifactName": { + "description": "The [artifact file name template](/configuration/configuration#artifact-file-name-template).", + "type": [ + "null", + "string" + ] + }, + "publish": { + "anyOf": [ + { + "$ref": "#/definitions/GithubOptions" + }, + { + "$ref": "#/definitions/S3Options" + }, + { + "$ref": "#/definitions/SpacesOptions" + }, + { + "$ref": "#/definitions/GenericServerOptions" + }, + { + "$ref": "#/definitions/BintrayOptions" + }, + { + "$ref": "#/definitions/CustomPublishOptions" + }, + { + "$ref": "#/definitions/KeygenOptions" + }, + { + "$ref": "#/definitions/SnapStoreOptions" + }, + { + "type": "array", + "items": { + "anyOf": [ + { + "$ref": "#/definitions/GithubOptions" + }, + { + "$ref": "#/definitions/S3Options" + }, + { + "$ref": "#/definitions/SpacesOptions" + }, + { + "$ref": "#/definitions/GenericServerOptions" + }, + { + "$ref": "#/definitions/BintrayOptions" + }, + { + "$ref": "#/definitions/CustomPublishOptions" + }, + { + "$ref": "#/definitions/KeygenOptions" + }, + { + "$ref": "#/definitions/SnapStoreOptions" + }, + { + "type": "string" + } + ] + } + }, + { + "type": [ + "null", + "string" + ] + } + ] + } + } + }, + "PkgBackgroundOptions": { + "description": "Options for the background image in a PKG installer", + "type": "object", + "properties": { + "file": { + "description": "Path to the image to use as an installer background.", + "type": "string" + }, + "alignment": { + "description": "Alignment of the background image.\nOptions are: center, left, right, top, bottom, topleft, topright, bottomleft, bottomright", + "default": "center", + "anyOf": [ + { + "enum": [ + "bottom", + "bottomleft", + "bottomright", + "center", + "left", + "right", + "top", + "topleft", + "topright" + ], + "type": "string" + }, + { + "type": "null" + } + ] + }, + "scaling": { + "description": "Scaling of the background image.\nOptions are: tofit, none, proportional", + "default": "tofit", + "anyOf": [ + { + "enum": [ + "none", + "proportional", + "tofit" + ], + "type": "string" + }, + { + "type": "null" + } + ] + } + } + }, + "WindowsConfiguration": { + "type": "object", + "properties": { + "target": { + "description": "The target package type: list of `nsis`, `nsis-web` (Web installer), `portable` ([portable](/configuration/nsis#portable) app without installation), `appx`, `msi`, `squirrel`, `7z`, `zip`, `tar.xz`, `tar.lz`, `tar.gz`, `tar.bz2`, `dir`.\nAppX package can be built only on Windows 10.\n\nTo use Squirrel.Windows please install `electron-builder-squirrel-windows` dependency.", + "default": "nsis", + "anyOf": [ + { + "$ref": "#/definitions/TargetConfiguration" + }, + { + "type": "array", + "items": { + "anyOf": [ + { + "$ref": "#/definitions/TargetConfiguration" + }, + { + "type": "string" + } + ] + } + }, + { + "type": [ + "null", + "string" + ] + } + ] + }, + "icon": { + "description": "The path to application icon.", + "default": "build/icon.ico", + "type": [ + "null", + "string" + ] + }, + "legalTrademarks": { + "description": "The trademarks and registered trademarks.", + "type": [ + "null", + "string" + ] + }, + "signingHashAlgorithms": { + "description": "Array of signing algorithms used. For AppX `sha256` is always used.", + "default": "['sha1', 'sha256']", + "anyOf": [ + { + "type": "array", + "items": { + "enum": [ + "sha1", + "sha256" + ], + "type": "string" + } + }, + { + "type": "null" + } + ] + }, + "sign": { + "description": "The custom function (or path to file or module id) to sign Windows executable.", + "type": [ + "null", + "string", + "object" + ] + }, + "certificateFile": { + "description": "The path to the *.pfx certificate you want to sign with. Please use it only if you cannot use env variable `CSC_LINK` (`WIN_CSC_LINK`) for some reason.\nPlease see [Code Signing](/code-signing).", + "type": [ + "null", + "string" + ] + }, + "certificatePassword": { + "description": "The password to the certificate provided in `certificateFile`. Please use it only if you cannot use env variable `CSC_KEY_PASSWORD` (`WIN_CSC_KEY_PASSWORD`) for some reason.\nPlease see [Code Signing](/code-signing).", + "type": [ + "null", + "string" + ] + }, + "certificateSubjectName": { + "description": "The name of the subject of the signing certificate. Required only for EV Code Signing and works only on Windows (or on macOS if [Parallels Desktop](https://www.parallels.com/products/desktop/) Windows 10 virtual machines exits).", + "type": [ + "null", + "string" + ] + }, + "certificateSha1": { + "description": "The SHA1 hash of the signing certificate. The SHA1 hash is commonly specified when multiple certificates satisfy the criteria specified by the remaining switches. Works only on Windows (or on macOS if [Parallels Desktop](https://www.parallels.com/products/desktop/) Windows 10 virtual machines exits).", + "type": [ + "null", + "string" + ] + }, + "additionalCertificateFile": { + "description": "The path to an additional certificate file you want to add to the signature block.", + "type": [ + "null", + "string" + ] + }, + "rfc3161TimeStampServer": { + "description": "The URL of the RFC 3161 time stamp server.", + "default": "http://timestamp.digicert.com", + "type": [ + "null", + "string" + ] + }, + "timeStampServer": { + "description": "The URL of the time stamp server.", + "default": "http://timestamp.digicert.com", + "type": [ + "null", + "string" + ] + }, + "publisherName": { + "description": "[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.\nDefaults to common name from your code signing certificate.", + "anyOf": [ + { + "type": "array", + "items": { + "type": "string" + } + }, + { + "type": [ + "null", + "string" + ] + } + ] + }, + "verifyUpdateCodeSignature": { + "description": "Whether to verify the signature of an available update before installation.\nThe [publisher name](#publisherName) will be used for the signature verification.", + "default": true, + "type": "boolean" + }, + "requestedExecutionLevel": { + "description": "The [security level](https://msdn.microsoft.com/en-us/library/6ad1fshk.aspx#Anchor_9) at which the application requests to be executed.\nCannot be specified per target, allowed only in the `win`.", + "default": "asInvoker", + "anyOf": [ + { + "enum": [ + "asInvoker", + "highestAvailable", + "requireAdministrator" + ], + "type": "string" + }, + { + "type": "null" + } + ] + }, + "signAndEditExecutable": { + "description": "Whether to sign and add metadata to executable. Advanced option.", + "default": true, + "type": "boolean" + }, + "signDlls": { + "description": "Whether to sign DLL files. Advanced option.", + "default": false, + "type": "boolean" + }, + "appId": { + "description": "The application id. Used as [CFBundleIdentifier](https://developer.apple.com/library/ios/documentation/General/Reference/InfoPlistKeyReference/Articles/CoreFoundationKeys.html#//apple_ref/doc/uid/20001431-102070) for MacOS and as\n[Application User Model ID](https://msdn.microsoft.com/en-us/library/windows/desktop/dd378459(v=vs.85).aspx) for Windows (NSIS target only, Squirrel.Windows not supported). It is strongly recommended that an explicit ID is set.", + "default": "com.electron.${name}", + "type": [ + "null", + "string" + ] + }, + "artifactName": { + "description": "The [artifact file name template](/configuration/configuration#artifact-file-name-template). Defaults to `${productName}-${version}.${ext}` (some target can have other defaults, see corresponding options).", + "type": [ + "null", + "string" + ] + }, + "executableName": { + "description": "The executable name. Defaults to `productName`.", + "type": [ + "null", + "string" + ] + }, + "compression": { + "description": "The compression level. If you want to rapidly test build, `store` can reduce build time significantly. `maximum` doesn't lead to noticeable size difference, but increase build time.", + "default": "normal", + "anyOf": [ + { + "enum": [ + "maximum", + "normal", + "store" + ], + "type": "string" + }, + { + "type": "null" + } + ] + }, + "files": { + "anyOf": [ + { + "$ref": "#/definitions/FileSet" + }, + { + "type": "array", + "items": { + "anyOf": [ + { + "$ref": "#/definitions/FileSet" + }, + { + "type": "string" + } + ] + } + }, + { + "type": [ + "null", + "string" + ] + } + ] + }, + "extraResources": { + "anyOf": [ + { + "$ref": "#/definitions/FileSet" + }, + { + "type": "array", + "items": { + "anyOf": [ + { + "$ref": "#/definitions/FileSet" + }, + { + "type": "string" + } + ] + } + }, + { + "type": [ + "null", + "string" + ] + } + ] + }, + "extraFiles": { + "anyOf": [ + { + "$ref": "#/definitions/FileSet" + }, + { + "type": "array", + "items": { + "anyOf": [ + { + "$ref": "#/definitions/FileSet" + }, + { + "type": "string" + } + ] + } + }, + { + "type": [ + "null", + "string" + ] + } + ] + }, + "asar": { + "description": "Whether to package the application's source code into an archive, using [Electron's archive format](http://electron.atom.io/docs/tutorial/application-packaging/).\n\nNode modules, that must be unpacked, will be detected automatically, you don't need to explicitly set [asarUnpack](#configuration-asarUnpack) - please file an issue if this doesn't work.", + "default": true, + "anyOf": [ + { + "$ref": "#/definitions/AsarOptions" + }, + { + "type": [ + "null", + "boolean" + ] + } + ] + }, + "asarUnpack": { + "description": "A [glob patterns](/file-patterns) relative to the [app directory](#MetadataDirectories-app), which specifies which files to unpack when creating the [asar](http://electron.atom.io/docs/tutorial/application-packaging/) archive.", + "anyOf": [ + { + "type": "array", + "items": { + "type": "string" + } + }, + { + "type": [ + "null", + "string" + ] + } + ] + }, + "fileAssociations": { + "description": "The file associations.", + "anyOf": [ + { + "$ref": "#/definitions/FileAssociation" + }, + { + "type": "array", + "items": { + "$ref": "#/definitions/FileAssociation" + } + } + ] + }, + "protocols": { + "description": "The URL protocol schemes.", + "anyOf": [ + { + "$ref": "#/definitions/Protocol" + }, + { + "type": "array", + "items": { + "$ref": "#/definitions/Protocol" + } + } + ] + }, + "forceCodeSigning": { + "description": "Whether to fail if app will be not code signed.", + "type": "boolean" + }, + "electronUpdaterCompatibility": { + "description": "The [electron-updater compatibility](/auto-update#compatibility) semver range.", + "type": [ + "null", + "string" + ] + }, + "publish": { + "anyOf": [ + { + "$ref": "#/definitions/GithubOptions" + }, + { + "$ref": "#/definitions/S3Options" + }, + { + "$ref": "#/definitions/SpacesOptions" + }, + { + "$ref": "#/definitions/GenericServerOptions" + }, + { + "$ref": "#/definitions/BintrayOptions" + }, + { + "$ref": "#/definitions/CustomPublishOptions" + }, + { + "$ref": "#/definitions/KeygenOptions" + }, + { + "$ref": "#/definitions/SnapStoreOptions" + }, + { + "type": "array", + "items": { + "anyOf": [ + { + "$ref": "#/definitions/GithubOptions" + }, + { + "$ref": "#/definitions/S3Options" + }, + { + "$ref": "#/definitions/SpacesOptions" + }, + { + "$ref": "#/definitions/GenericServerOptions" + }, + { + "$ref": "#/definitions/BintrayOptions" + }, + { + "$ref": "#/definitions/CustomPublishOptions" + }, + { + "$ref": "#/definitions/KeygenOptions" + }, + { + "$ref": "#/definitions/SnapStoreOptions" + }, + { + "type": "string" + } + ] + } + }, + { + "type": [ + "null", + "string" + ] + } + ] + }, + "detectUpdateChannel": { + "description": "Whether to infer update channel from application version pre-release components. e.g. if version `0.12.1-alpha.1`, channel will be set to `alpha`. Otherwise to `latest`.", + "default": true, + "type": "boolean" + }, + "generateUpdatesFilesForAllChannels": { + "description": "Please see [Building and Releasing using Channels](https://github.com/electron-userland/electron-builder/issues/1182#issuecomment-324947139).", + "default": false, + "type": "boolean" + }, + "releaseInfo": { + "description": "The release info. Intended for command line usage:\n\n```\n-c.releaseInfo.releaseNotes=\"new features\"\n```", + "$ref": "#/definitions/ReleaseInfo" + }, + "cscLink": { + "type": [ + "null", + "string" + ] + }, + "cscKeyPassword": { + "type": [ + "null", + "string" + ] + }, + "defaultArch": { + "type": "string" + } + } + }, + "NsisOptions": { + "type": "object", + "properties": { + "oneClick": { + "description": "Whether to create one-click installer or assisted.", + "default": true, + "type": "boolean" + }, + "perMachine": { + "description": "Whether to show install mode installer page (choice per-machine or per-user) for assisted installer. Or whether installation always per all users (per-machine).\n\nIf `oneClick` is `true` (default): Whether to install per all users (per-machine).\n\nIf `oneClick` is `false` and `perMachine` is `true`: no install mode installer page, always install per-machine.\n\nIf `oneClick` is `false` and `perMachine` is `false` (default): install mode installer page.", + "default": false, + "type": "boolean" + }, + "allowElevation": { + "description": "*assisted installer only.* Allow requesting for elevation. If false, user will have to restart installer with elevated permissions.", + "default": true, + "type": "boolean" + }, + "allowToChangeInstallationDirectory": { + "description": "*assisted installer only.* Whether to allow user to change installation directory.", + "default": false, + "type": "boolean" + }, + "installerIcon": { + "description": "The path to installer icon, relative to the [build resources](/configuration/configuration#MetadataDirectories-buildResources) or to the project directory.\nDefaults to `build/installerIcon.ico` or application icon.", + "type": [ + "null", + "string" + ] + }, + "uninstallerIcon": { + "description": "The path to uninstaller icon, relative to the [build resources](/configuration/configuration#MetadataDirectories-buildResources) or to the project directory.\nDefaults to `build/uninstallerIcon.ico` or application icon.", + "type": [ + "null", + "string" + ] + }, + "installerHeader": { + "description": "*assisted installer only.* `MUI_HEADERIMAGE`, relative to the [build resources](/configuration/configuration#MetadataDirectories-buildResources) or to the project directory.", + "default": "build/installerHeader.bmp", + "type": [ + "null", + "string" + ] + }, + "installerHeaderIcon": { + "description": "*one-click installer only.* The path to header icon (above the progress bar), relative to the [build resources](/configuration/configuration#MetadataDirectories-buildResources) or to the project directory.\nDefaults to `build/installerHeaderIcon.ico` or application icon.", + "type": [ + "null", + "string" + ] + }, + "installerSidebar": { + "description": "*assisted installer only.* `MUI_WELCOMEFINISHPAGE_BITMAP`, relative to the [build resources](/configuration/configuration#MetadataDirectories-buildResources) or to the project directory.\nDefaults to `build/installerSidebar.bmp` or `${NSISDIR}\\\\Contrib\\\\Graphics\\\\Wizard\\\\nsis3-metro.bmp`. Image size 164 × 314 pixels.", + "type": [ + "null", + "string" + ] + }, + "uninstallerSidebar": { + "description": "*assisted installer only.* `MUI_UNWELCOMEFINISHPAGE_BITMAP`, relative to the [build resources](/configuration/configuration#MetadataDirectories-buildResources) or to the project directory.\nDefaults to `installerSidebar` option or `build/uninstallerSidebar.bmp` or `build/installerSidebar.bmp` or `${NSISDIR}\\\\Contrib\\\\Graphics\\\\Wizard\\\\nsis3-metro.bmp`", + "type": [ + "null", + "string" + ] + }, + "uninstallDisplayName": { + "description": "The uninstaller display name in the control panel.", + "default": "${productName} ${version}", + "type": "string" + }, + "include": { + "description": "The path to NSIS include script to customize installer. Defaults to `build/installer.nsh`. See [Custom NSIS script](#custom-nsis-script).", + "type": [ + "null", + "string" + ] + }, + "script": { + "description": "The path to NSIS script to customize installer. Defaults to `build/installer.nsi`. See [Custom NSIS script](#custom-nsis-script).", + "type": [ + "null", + "string" + ] + }, + "license": { + "description": "The path to EULA license file. Defaults to `license.txt` or `eula.txt` (or uppercase variants). In addition to `txt, `rtf` and `html` supported (don't forget to use `target=\"_blank\"` for links).\n\nMultiple license files in different languages are supported — use lang postfix (e.g. `_de`, `_ru`)). For example, create files `license_de.txt` and `license_en.txt` in the build resources.\nIf OS language is german, `license_de.txt` will be displayed. See map of [language code to name](https://github.com/meikidd/iso-639-1/blob/master/src/data.js).\n\nAppropriate license file will be selected by user OS language.", + "type": [ + "null", + "string" + ] + }, + "artifactName": { + "description": "The [artifact file name template](/configuration/configuration#artifact-file-name-template). Defaults to `${productName} Setup ${version}.${ext}`.", + "type": [ + "null", + "string" + ] + }, + "deleteAppDataOnUninstall": { + "description": "*one-click installer only.* Whether to delete app data on uninstall.", + "default": false, + "type": "boolean" + }, + "differentialPackage": { + "type": "boolean" + }, + "displayLanguageSelector": { + "description": "Whether to display a language selection dialog. Not recommended (by default will be detected using OS language).", + "default": false, + "type": "boolean" + }, + "installerLanguages": { + "description": "The installer languages (e.g. `en_US`, `de_DE`). Change only if you understand what do you do and for what.", + "anyOf": [ + { + "type": "array", + "items": { + "type": "string" + } + }, + { + "type": [ + "null", + "string" + ] + } + ] + }, + "language": { + "description": "[LCID Dec](https://msdn.microsoft.com/en-au/goglobal/bb964664.aspx), defaults to `1033`(`English - United States`).", + "type": [ + "null", + "string" + ] + }, + "multiLanguageInstaller": { + "description": "Whether to create multi-language installer. Defaults to `unicode` option value.", + "type": "boolean" + }, + "packElevateHelper": { + "description": "Whether to pack the elevate executable (required for electron-updater if per-machine installer used or can be used in the future). Ignored if `perMachine` is set to `true`.", + "default": true, + "type": "boolean" + }, + "preCompressedFileExtensions": { + "description": "The file extension of files that will be not compressed. Applicable only for `extraResources` and `extraFiles` files.", + "default": [ + ".avi", + ".mov", + ".m4v", + ".mp4", + ".m4p", + ".qt", + ".mkv", + ".webm", + ".vmdk" + ], + "anyOf": [ + { + "type": "array", + "items": { + "type": "string" + } + }, + { + "type": [ + "null", + "string" + ] + } + ] + }, + "unicode": { + "description": "Whether to create [Unicode installer](http://nsis.sourceforge.net/Docs/Chapter1.html#intro-unicode).", + "default": true, + "type": "boolean" + }, + "guid": { + "description": "See [GUID vs Application Name](../configuration/nsis#guid-vs-application-name).", + "type": [ + "null", + "string" + ] + }, + "warningsAsErrors": { + "description": "If `warningsAsErrors` is `true` (default): NSIS will treat warnings as errors. If `warningsAsErrors` is `false`: NSIS will allow warnings.", + "default": true, + "type": "boolean" + }, + "useZip": { + "default": false, + "type": "boolean" + }, + "customNsisBinary": { + "anyOf": [ + { + "$ref": "#/definitions/CustomNsisBinary" + }, + { + "type": "null" + } + ] + }, + "debugLogging": { + "description": "Whether or not to enable NSIS logging for debugging.\nNote: Requires a debug-enabled NSIS build.\nelectron-builder's included `makensis` only supports building debug-enabled NSIS installers on Windows currently\nhttps://github.com/electron-userland/electron-builder/issues/5119#issuecomment-811353612", + "type": [ + "null", + "boolean" + ] + }, + "runAfterFinish": { + "description": "Whether to run the installed application after finish. For assisted installer corresponding checkbox will be removed.", + "default": true, + "type": "boolean" + }, + "createDesktopShortcut": { + "description": "Whether to create desktop shortcut. Set to `always` if to recreate also on reinstall (even if removed by user).", + "default": true, + "enum": [ + "always", + false, + true + ] + }, + "createStartMenuShortcut": { + "description": "Whether to create start menu shortcut.", + "default": true, + "type": "boolean" + }, + "menuCategory": { + "description": "Whether to create submenu for start menu shortcut and program files directory. If `true`, company name will be used. Or string value.", + "default": false, + "type": [ + "string", + "boolean" + ] + }, + "shortcutName": { + "description": "The name that will be used for all shortcuts. Defaults to the application name.", + "type": [ + "null", + "string" + ] + }, + "publish": { + "anyOf": [ + { + "$ref": "#/definitions/GithubOptions" + }, + { + "$ref": "#/definitions/S3Options" + }, + { + "$ref": "#/definitions/SpacesOptions" + }, + { + "$ref": "#/definitions/GenericServerOptions" + }, + { + "$ref": "#/definitions/BintrayOptions" + }, + { + "$ref": "#/definitions/CustomPublishOptions" + }, + { + "$ref": "#/definitions/KeygenOptions" + }, + { + "$ref": "#/definitions/SnapStoreOptions" + }, + { + "type": "array", + "items": { + "anyOf": [ + { + "$ref": "#/definitions/GithubOptions" + }, + { + "$ref": "#/definitions/S3Options" + }, + { + "$ref": "#/definitions/SpacesOptions" + }, + { + "$ref": "#/definitions/GenericServerOptions" + }, + { + "$ref": "#/definitions/BintrayOptions" + }, + { + "$ref": "#/definitions/CustomPublishOptions" + }, + { + "$ref": "#/definitions/KeygenOptions" + }, + { + "$ref": "#/definitions/SnapStoreOptions" + }, + { + "type": "string" + } + ] + } + }, + { + "type": [ + "null", + "string" + ] + } + ] + } + } + }, + "CustomNsisBinary": { + "type": "object", + "properties": { + "url": { + "default": "https://github.com/electron-userland/electron-builder-binaries/releases/download", + "type": [ + "null", + "string" + ] + }, + "checksum": { + "default": "o+YZsXHp8LNihhuk7JsCDhdIgx0MKKK+1b3sGD+4zX5djZULe4/4QMcAsfQ+0r+a8FnwBt7BVBHkIkJHjKQ0sg==", + "type": [ + "null", + "string" + ] + }, + "version": { + "default": "3.0.4.2", + "type": [ + "null", + "string" + ] + } + }, + "required": [ + "url" + ] + }, + "NsisWebOptions": { + "description": "Web Installer options.", + "type": "object", + "properties": { + "appPackageUrl": { + "description": "The application package download URL. Optional — by default computed using publish configuration.\n\nURL like `https://example.com/download/latest` allows web installer to be version independent (installer will download latest application package).\nPlease note — it is [full URL](https://github.com/electron-userland/electron-builder/issues/1810#issuecomment-317650878).\n\nCustom `X-Arch` http header is set to `32` or `64`.", + "type": [ + "null", + "string" + ] + }, + "artifactName": { + "description": "The [artifact file name template](/configuration/configuration#artifact-file-name-template). Defaults to `${productName} Web Setup ${version}.${ext}`.", + "type": [ + "null", + "string" + ] + }, + "oneClick": { + "description": "Whether to create one-click installer or assisted.", + "default": true, + "type": "boolean" + }, + "perMachine": { + "description": "Whether to show install mode installer page (choice per-machine or per-user) for assisted installer. Or whether installation always per all users (per-machine).\n\nIf `oneClick` is `true` (default): Whether to install per all users (per-machine).\n\nIf `oneClick` is `false` and `perMachine` is `true`: no install mode installer page, always install per-machine.\n\nIf `oneClick` is `false` and `perMachine` is `false` (default): install mode installer page.", + "default": false, + "type": "boolean" + }, + "allowElevation": { + "description": "*assisted installer only.* Allow requesting for elevation. If false, user will have to restart installer with elevated permissions.", + "default": true, + "type": "boolean" + }, + "allowToChangeInstallationDirectory": { + "description": "*assisted installer only.* Whether to allow user to change installation directory.", + "default": false, + "type": "boolean" + }, + "installerIcon": { + "description": "The path to installer icon, relative to the [build resources](/configuration/configuration#MetadataDirectories-buildResources) or to the project directory.\nDefaults to `build/installerIcon.ico` or application icon.", + "type": [ + "null", + "string" + ] + }, + "uninstallerIcon": { + "description": "The path to uninstaller icon, relative to the [build resources](/configuration/configuration#MetadataDirectories-buildResources) or to the project directory.\nDefaults to `build/uninstallerIcon.ico` or application icon.", + "type": [ + "null", + "string" + ] + }, + "installerHeader": { + "description": "*assisted installer only.* `MUI_HEADERIMAGE`, relative to the [build resources](/configuration/configuration#MetadataDirectories-buildResources) or to the project directory.", + "default": "build/installerHeader.bmp", + "type": [ + "null", + "string" + ] + }, + "installerHeaderIcon": { + "description": "*one-click installer only.* The path to header icon (above the progress bar), relative to the [build resources](/configuration/configuration#MetadataDirectories-buildResources) or to the project directory.\nDefaults to `build/installerHeaderIcon.ico` or application icon.", + "type": [ + "null", + "string" + ] + }, + "installerSidebar": { + "description": "*assisted installer only.* `MUI_WELCOMEFINISHPAGE_BITMAP`, relative to the [build resources](/configuration/configuration#MetadataDirectories-buildResources) or to the project directory.\nDefaults to `build/installerSidebar.bmp` or `${NSISDIR}\\\\Contrib\\\\Graphics\\\\Wizard\\\\nsis3-metro.bmp`. Image size 164 × 314 pixels.", + "type": [ + "null", + "string" + ] + }, + "uninstallerSidebar": { + "description": "*assisted installer only.* `MUI_UNWELCOMEFINISHPAGE_BITMAP`, relative to the [build resources](/configuration/configuration#MetadataDirectories-buildResources) or to the project directory.\nDefaults to `installerSidebar` option or `build/uninstallerSidebar.bmp` or `build/installerSidebar.bmp` or `${NSISDIR}\\\\Contrib\\\\Graphics\\\\Wizard\\\\nsis3-metro.bmp`", + "type": [ + "null", + "string" + ] + }, + "uninstallDisplayName": { + "description": "The uninstaller display name in the control panel.", + "default": "${productName} ${version}", + "type": "string" + }, + "include": { + "description": "The path to NSIS include script to customize installer. Defaults to `build/installer.nsh`. See [Custom NSIS script](#custom-nsis-script).", + "type": [ + "null", + "string" + ] + }, + "script": { + "description": "The path to NSIS script to customize installer. Defaults to `build/installer.nsi`. See [Custom NSIS script](#custom-nsis-script).", + "type": [ + "null", + "string" + ] + }, + "license": { + "description": "The path to EULA license file. Defaults to `license.txt` or `eula.txt` (or uppercase variants). In addition to `txt, `rtf` and `html` supported (don't forget to use `target=\"_blank\"` for links).\n\nMultiple license files in different languages are supported — use lang postfix (e.g. `_de`, `_ru`)). For example, create files `license_de.txt` and `license_en.txt` in the build resources.\nIf OS language is german, `license_de.txt` will be displayed. See map of [language code to name](https://github.com/meikidd/iso-639-1/blob/master/src/data.js).\n\nAppropriate license file will be selected by user OS language.", + "type": [ + "null", + "string" + ] + }, + "deleteAppDataOnUninstall": { + "description": "*one-click installer only.* Whether to delete app data on uninstall.", + "default": false, + "type": "boolean" + }, + "differentialPackage": { + "type": "boolean" + }, + "displayLanguageSelector": { + "description": "Whether to display a language selection dialog. Not recommended (by default will be detected using OS language).", + "default": false, + "type": "boolean" + }, + "installerLanguages": { + "description": "The installer languages (e.g. `en_US`, `de_DE`). Change only if you understand what do you do and for what.", + "anyOf": [ + { + "type": "array", + "items": { + "type": "string" + } + }, + { + "type": [ + "null", + "string" + ] + } + ] + }, + "language": { + "description": "[LCID Dec](https://msdn.microsoft.com/en-au/goglobal/bb964664.aspx), defaults to `1033`(`English - United States`).", + "type": [ + "null", + "string" + ] + }, + "multiLanguageInstaller": { + "description": "Whether to create multi-language installer. Defaults to `unicode` option value.", + "type": "boolean" + }, + "packElevateHelper": { + "description": "Whether to pack the elevate executable (required for electron-updater if per-machine installer used or can be used in the future). Ignored if `perMachine` is set to `true`.", + "default": true, + "type": "boolean" + }, + "preCompressedFileExtensions": { + "description": "The file extension of files that will be not compressed. Applicable only for `extraResources` and `extraFiles` files.", + "default": [ + ".avi", + ".mov", + ".m4v", + ".mp4", + ".m4p", + ".qt", + ".mkv", + ".webm", + ".vmdk" + ], + "anyOf": [ + { + "type": "array", + "items": { + "type": "string" + } + }, + { + "type": [ + "null", + "string" + ] + } + ] + }, + "unicode": { + "description": "Whether to create [Unicode installer](http://nsis.sourceforge.net/Docs/Chapter1.html#intro-unicode).", + "default": true, + "type": "boolean" + }, + "guid": { + "description": "See [GUID vs Application Name](../configuration/nsis#guid-vs-application-name).", + "type": [ + "null", + "string" + ] + }, + "warningsAsErrors": { + "description": "If `warningsAsErrors` is `true` (default): NSIS will treat warnings as errors. If `warningsAsErrors` is `false`: NSIS will allow warnings.", + "default": true, + "type": "boolean" + }, + "useZip": { + "default": false, + "type": "boolean" + }, + "customNsisBinary": { + "anyOf": [ + { + "$ref": "#/definitions/CustomNsisBinary" + }, + { + "type": "null" + } + ] + }, + "debugLogging": { + "description": "Whether or not to enable NSIS logging for debugging.\nNote: Requires a debug-enabled NSIS build.\nelectron-builder's included `makensis` only supports building debug-enabled NSIS installers on Windows currently\nhttps://github.com/electron-userland/electron-builder/issues/5119#issuecomment-811353612", + "type": [ + "null", + "boolean" + ] + }, + "runAfterFinish": { + "description": "Whether to run the installed application after finish. For assisted installer corresponding checkbox will be removed.", + "default": true, + "type": "boolean" + }, + "createDesktopShortcut": { + "description": "Whether to create desktop shortcut. Set to `always` if to recreate also on reinstall (even if removed by user).", + "default": true, + "enum": [ + "always", + false, + true + ] + }, + "createStartMenuShortcut": { + "description": "Whether to create start menu shortcut.", + "default": true, + "type": "boolean" + }, + "menuCategory": { + "description": "Whether to create submenu for start menu shortcut and program files directory. If `true`, company name will be used. Or string value.", + "default": false, + "type": [ + "string", + "boolean" + ] + }, + "shortcutName": { + "description": "The name that will be used for all shortcuts. Defaults to the application name.", + "type": [ + "null", + "string" + ] + }, + "publish": { + "anyOf": [ + { + "$ref": "#/definitions/GithubOptions" + }, + { + "$ref": "#/definitions/S3Options" + }, + { + "$ref": "#/definitions/SpacesOptions" + }, + { + "$ref": "#/definitions/GenericServerOptions" + }, + { + "$ref": "#/definitions/BintrayOptions" + }, + { + "$ref": "#/definitions/CustomPublishOptions" + }, + { + "$ref": "#/definitions/KeygenOptions" + }, + { + "$ref": "#/definitions/SnapStoreOptions" + }, + { + "type": "array", + "items": { + "anyOf": [ + { + "$ref": "#/definitions/GithubOptions" + }, + { + "$ref": "#/definitions/S3Options" + }, + { + "$ref": "#/definitions/SpacesOptions" + }, + { + "$ref": "#/definitions/GenericServerOptions" + }, + { + "$ref": "#/definitions/BintrayOptions" + }, + { + "$ref": "#/definitions/CustomPublishOptions" + }, + { + "$ref": "#/definitions/KeygenOptions" + }, + { + "$ref": "#/definitions/SnapStoreOptions" + }, + { + "type": "string" + } + ] + } + }, + { + "type": [ + "null", + "string" + ] + } + ] + } + } + }, + "PortableOptions": { + "description": "Portable options.", + "type": "object", + "properties": { + "requestExecutionLevel": { + "description": "The [requested execution level](http://nsis.sourceforge.net/Reference/RequestExecutionLevel) for Windows.", + "default": "user", + "enum": [ + "admin", + "highest", + "user" + ], + "type": "string" + }, + "unpackDirName": { + "description": "The unpack directory for the portable app resources.\n\nIf set to a string, it will be the name in [TEMP](https://www.askvg.com/where-does-windows-store-temporary-files-and-how-to-change-temp-folder-location/) directory\nIf set explicitly to `false`, it will use the Windows temp directory ($PLUGINSDIR) that is unique to each launch of the portable application.\n\nDefaults to [uuid](https://github.com/segmentio/ksuid) of build (changed on each build of portable executable).", + "type": [ + "string", + "boolean" + ] + }, + "splashImage": { + "description": "The image to show while the portable executable is extracting. This image must be a bitmap (`.bmp`) image.", + "type": [ + "null", + "string" + ] + }, + "artifactName": { + "description": "The [artifact file name template](/configuration/configuration#artifact-file-name-template).", + "type": [ + "null", + "string" + ] + }, + "publish": { + "anyOf": [ + { + "$ref": "#/definitions/GithubOptions" + }, + { + "$ref": "#/definitions/S3Options" + }, + { + "$ref": "#/definitions/SpacesOptions" + }, + { + "$ref": "#/definitions/GenericServerOptions" + }, + { + "$ref": "#/definitions/BintrayOptions" + }, + { + "$ref": "#/definitions/CustomPublishOptions" + }, + { + "$ref": "#/definitions/KeygenOptions" + }, + { + "$ref": "#/definitions/SnapStoreOptions" + }, + { + "type": "array", + "items": { + "anyOf": [ + { + "$ref": "#/definitions/GithubOptions" + }, + { + "$ref": "#/definitions/S3Options" + }, + { + "$ref": "#/definitions/SpacesOptions" + }, + { + "$ref": "#/definitions/GenericServerOptions" + }, + { + "$ref": "#/definitions/BintrayOptions" + }, + { + "$ref": "#/definitions/CustomPublishOptions" + }, + { + "$ref": "#/definitions/KeygenOptions" + }, + { + "$ref": "#/definitions/SnapStoreOptions" + }, + { + "type": "string" + } + ] + } + }, + { + "type": [ + "null", + "string" + ] + } + ] + }, + "unicode": { + "description": "Whether to create [Unicode installer](http://nsis.sourceforge.net/Docs/Chapter1.html#intro-unicode).", + "default": true, + "type": "boolean" + }, + "guid": { + "description": "See [GUID vs Application Name](../configuration/nsis#guid-vs-application-name).", + "type": [ + "null", + "string" + ] + }, + "warningsAsErrors": { + "description": "If `warningsAsErrors` is `true` (default): NSIS will treat warnings as errors. If `warningsAsErrors` is `false`: NSIS will allow warnings.", + "default": true, + "type": "boolean" + }, + "useZip": { + "default": false, + "type": "boolean" + }, + "customNsisBinary": { + "anyOf": [ + { + "$ref": "#/definitions/CustomNsisBinary" + }, + { + "type": "null" + } + ] + }, + "debugLogging": { + "description": "Whether or not to enable NSIS logging for debugging.\nNote: Requires a debug-enabled NSIS build.\nelectron-builder's included `makensis` only supports building debug-enabled NSIS installers on Windows currently\nhttps://github.com/electron-userland/electron-builder/issues/5119#issuecomment-811353612", + "type": [ + "null", + "boolean" + ] + } + } + }, + "AppXOptions": { + "type": "object", + "properties": { + "applicationId": { + "description": "The application id. Defaults to `identityName`. Can’t start with numbers.", + "type": "string" + }, + "backgroundColor": { + "description": "The background color of the app tile. See [Visual Elements](https://msdn.microsoft.com/en-us/library/windows/apps/br211471.aspx).", + "default": "#464646", + "type": [ + "null", + "string" + ] + }, + "displayName": { + "description": "A friendly name that can be displayed to users. Corresponds to [Properties.DisplayName](https://msdn.microsoft.com/en-us/library/windows/apps/br211432.aspx).\nDefaults to the application product name.", + "type": [ + "null", + "string" + ] + }, + "identityName": { + "description": "The name. Corresponds to [Identity.Name](https://msdn.microsoft.com/en-us/library/windows/apps/br211441.aspx). Defaults to the [application name](/configuration/configuration#Metadata-name).", + "type": [ + "null", + "string" + ] + }, + "publisher": { + "description": "The Windows Store publisher. Not used if AppX is build for testing. See [AppX Package Code Signing](#appx-package-code-signing) below.", + "type": [ + "null", + "string" + ] + }, + "publisherDisplayName": { + "description": "A friendly name for the publisher that can be displayed to users. Corresponds to [Properties.PublisherDisplayName](https://msdn.microsoft.com/en-us/library/windows/apps/br211460.aspx).\nDefaults to company name from the application metadata.", + "type": [ + "null", + "string" + ] + }, + "languages": { + "description": "The list of [supported languages](https://docs.microsoft.com/en-us/windows/uwp/globalizing/manage-language-and-region#specify-the-supported-languages-in-the-apps-manifest) that will be listed in the Windows Store.\nThe first entry (index 0) will be the default language.\nDefaults to en-US if omitted.", + "anyOf": [ + { + "type": "array", + "items": { + "type": "string" + } + }, + { + "type": [ + "null", + "string" + ] + } + ] + }, + "addAutoLaunchExtension": { + "description": "Whether to add auto launch extension. Defaults to `true` if [electron-winstore-auto-launch](https://github.com/felixrieseberg/electron-winstore-auto-launch) in the dependencies.", + "type": "boolean" + }, + "customExtensionsPath": { + "description": "Relative path to custom extensions xml to be included in an `appmanifest.xml`.", + "type": "string" + }, + "showNameOnTiles": { + "description": "Whether to overlay the app's name on top of tile images on the Start screen. Defaults to `false`. (https://docs.microsoft.com/en-us/uwp/schemas/appxpackage/uapmanifestschema/element-uap-shownameontiles) in the dependencies.", + "default": false, + "type": "boolean" + }, + "electronUpdaterAware": { + "default": false, + "type": "boolean" + }, + "setBuildNumber": { + "description": "Whether to set build number. See https://github.com/electron-userland/electron-builder/issues/3875", + "default": false, + "type": "boolean" + }, + "makeappxArgs": { + "anyOf": [ + { + "type": "array", + "items": { + "type": "string" + } + }, + { + "type": "null" + } + ] + }, + "artifactName": { + "description": "The [artifact file name template](/configuration/configuration#artifact-file-name-template).", + "type": [ + "null", + "string" + ] + }, + "publish": { + "anyOf": [ + { + "$ref": "#/definitions/GithubOptions" + }, + { + "$ref": "#/definitions/S3Options" + }, + { + "$ref": "#/definitions/SpacesOptions" + }, + { + "$ref": "#/definitions/GenericServerOptions" + }, + { + "$ref": "#/definitions/BintrayOptions" + }, + { + "$ref": "#/definitions/CustomPublishOptions" + }, + { + "$ref": "#/definitions/KeygenOptions" + }, + { + "$ref": "#/definitions/SnapStoreOptions" + }, + { + "type": "array", + "items": { + "anyOf": [ + { + "$ref": "#/definitions/GithubOptions" + }, + { + "$ref": "#/definitions/S3Options" + }, + { + "$ref": "#/definitions/SpacesOptions" + }, + { + "$ref": "#/definitions/GenericServerOptions" + }, + { + "$ref": "#/definitions/BintrayOptions" + }, + { + "$ref": "#/definitions/CustomPublishOptions" + }, + { + "$ref": "#/definitions/KeygenOptions" + }, + { + "$ref": "#/definitions/SnapStoreOptions" + }, + { + "type": "string" + } + ] + } + }, + { + "type": [ + "null", + "string" + ] + } + ] + } + } + }, + "MsiOptions": { + "type": "object", + "properties": { + "oneClick": { + "description": "One-click installation.", + "default": true, + "type": "boolean" + }, + "upgradeCode": { + "description": "The [upgrade code](https://msdn.microsoft.com/en-us/library/windows/desktop/aa372375(v=vs.85).aspx). Optional, by default generated using app id.", + "type": [ + "null", + "string" + ] + }, + "warningsAsErrors": { + "description": "If `warningsAsErrors` is `true` (default): treat warnings as errors. If `warningsAsErrors` is `false`: allow warnings.", + "default": true, + "type": "boolean" + }, + "additionalWixArgs": { + "description": "Any additional arguments to be passed to the WiX installer compiler, such as `[\"-ext\", \"WixUtilExtension\"]`", + "anyOf": [ + { + "type": "array", + "items": { + "type": "string" + } + }, + { + "type": "null" + } + ] + }, + "perMachine": { + "description": "Whether to install per all users (per-machine).", + "default": false, + "type": "boolean" + }, + "runAfterFinish": { + "description": "Whether to run the installed application after finish. For assisted installer corresponding checkbox will be removed.", + "default": true, + "type": "boolean" + }, + "createDesktopShortcut": { + "description": "Whether to create desktop shortcut. Set to `always` if to recreate also on reinstall (even if removed by user).", + "default": true, + "enum": [ + "always", + false, + true + ] + }, + "createStartMenuShortcut": { + "description": "Whether to create start menu shortcut.", + "default": true, + "type": "boolean" + }, + "menuCategory": { + "description": "Whether to create submenu for start menu shortcut and program files directory. If `true`, company name will be used. Or string value.", + "default": false, + "type": [ + "string", + "boolean" + ] + }, + "shortcutName": { + "description": "The name that will be used for all shortcuts. Defaults to the application name.", + "type": [ + "null", + "string" + ] + }, + "artifactName": { + "description": "The [artifact file name template](/configuration/configuration#artifact-file-name-template).", + "type": [ + "null", + "string" + ] + }, + "publish": { + "anyOf": [ + { + "$ref": "#/definitions/GithubOptions" + }, + { + "$ref": "#/definitions/S3Options" + }, + { + "$ref": "#/definitions/SpacesOptions" + }, + { + "$ref": "#/definitions/GenericServerOptions" + }, + { + "$ref": "#/definitions/BintrayOptions" + }, + { + "$ref": "#/definitions/CustomPublishOptions" + }, + { + "$ref": "#/definitions/KeygenOptions" + }, + { + "$ref": "#/definitions/SnapStoreOptions" + }, + { + "type": "array", + "items": { + "anyOf": [ + { + "$ref": "#/definitions/GithubOptions" + }, + { + "$ref": "#/definitions/S3Options" + }, + { + "$ref": "#/definitions/SpacesOptions" + }, + { + "$ref": "#/definitions/GenericServerOptions" + }, + { + "$ref": "#/definitions/BintrayOptions" + }, + { + "$ref": "#/definitions/CustomPublishOptions" + }, + { + "$ref": "#/definitions/KeygenOptions" + }, + { + "$ref": "#/definitions/SnapStoreOptions" + }, + { + "type": "string" + } + ] + } + }, + { + "type": [ + "null", + "string" + ] + } + ] + } + } + }, + "SquirrelWindowsOptions": { + "type": "object", + "properties": { + "iconUrl": { + "description": "A URL to an ICO file to use as the application icon (displayed in Control Panel > Programs and Features). Defaults to the Electron icon.\n\nPlease note — [local icon file url is not accepted](https://github.com/atom/grunt-electron-installer/issues/73), must be https/http.\n\nIf you don't plan to build windows installer, you can omit it.\nIf your project repository is public on GitHub, it will be `https://github.com/${u}/${p}/blob/master/build/icon.ico?raw=true` by default.", + "type": [ + "null", + "string" + ] + }, + "loadingGif": { + "description": "The path to a .gif file to display during install. `build/install-spinner.gif` will be used if exists (it is a recommended way to set)\n(otherwise [default](https://github.com/electron/windows-installer/blob/master/resources/install-spinner.gif)).", + "type": [ + "null", + "string" + ] + }, + "msi": { + "description": "Whether to create an MSI installer. Defaults to `false` (MSI is not created).", + "type": "boolean" + }, + "remoteReleases": { + "description": "A URL to your existing updates. Or `true` to automatically set to your GitHub repository. If given, these will be downloaded to create delta updates.", + "type": [ + "null", + "string", + "boolean" + ] + }, + "remoteToken": { + "description": "Authentication token for remote updates", + "type": [ + "null", + "string" + ] + }, + "useAppIdAsId": { + "description": "Use `appId` to identify package instead of `name`.", + "type": "boolean" + }, + "name": { + "description": "https://github.com/electron-userland/electron-builder/issues/1743", + "type": "string" + }, + "artifactName": { + "description": "The [artifact file name template](/configuration/configuration#artifact-file-name-template).", + "type": [ + "null", + "string" + ] + }, + "publish": { + "anyOf": [ + { + "$ref": "#/definitions/GithubOptions" + }, + { + "$ref": "#/definitions/S3Options" + }, + { + "$ref": "#/definitions/SpacesOptions" + }, + { + "$ref": "#/definitions/GenericServerOptions" + }, + { + "$ref": "#/definitions/BintrayOptions" + }, + { + "$ref": "#/definitions/CustomPublishOptions" + }, + { + "$ref": "#/definitions/KeygenOptions" + }, + { + "$ref": "#/definitions/SnapStoreOptions" + }, + { + "type": "array", + "items": { + "anyOf": [ + { + "$ref": "#/definitions/GithubOptions" + }, + { + "$ref": "#/definitions/S3Options" + }, + { + "$ref": "#/definitions/SpacesOptions" + }, + { + "$ref": "#/definitions/GenericServerOptions" + }, + { + "$ref": "#/definitions/BintrayOptions" + }, + { + "$ref": "#/definitions/CustomPublishOptions" + }, + { + "$ref": "#/definitions/KeygenOptions" + }, + { + "$ref": "#/definitions/SnapStoreOptions" + }, + { + "type": "string" + } + ] + } + }, + { + "type": [ + "null", + "string" + ] + } + ] + } + } + }, + "LinuxConfiguration": { + "type": "object", + "properties": { + "target": { + "description": "Target package type: list of `AppImage`, `snap`, `deb`, `rpm`, `freebsd`, `pacman`, `p5p`, `apk`, `7z`, `zip`, `tar.xz`, `tar.lz`, `tar.gz`, `tar.bz2`, `dir`.\n\nelectron-builder [docker image](/multi-platform-build#docker) can be used to build Linux targets on any platform.\n\nPlease [do not put an AppImage into another archive](https://github.com/probonopd/AppImageKit/wiki/Creating-AppImages#common-mistake) like a .zip or .tar.gz.", + "default": "AppImage", + "anyOf": [ + { + "$ref": "#/definitions/TargetConfiguration" + }, + { + "type": "array", + "items": { + "anyOf": [ + { + "$ref": "#/definitions/TargetConfiguration" + }, + { + "type": "string" + } + ] + } + }, + { + "type": [ + "null", + "string" + ] + } + ] + }, + "maintainer": { + "description": "The maintainer. Defaults to [author](/configuration/configuration#Metadata-author).", + "type": [ + "null", + "string" + ] + }, + "vendor": { + "description": "The vendor. Defaults to [author](/configuration/configuration#Metadata-author).", + "type": [ + "null", + "string" + ] + }, + "icon": { + "description": "The path to icon set directory or one png file, relative to the [build resources](/configuration/configuration#MetadataDirectories-buildResources) or to the project directory. The icon filename must contain the size (e.g. 32x32.png) of the icon.\nBy default will be generated automatically based on the macOS icns file.", + "type": "string" + }, + "packageCategory": { + "description": "backward compatibility + to allow specify fpm-only category for all possible fpm targets in one place", + "type": [ + "null", + "string" + ] + }, + "synopsis": { + "description": "The [short description](https://www.debian.org/doc/debian-policy/ch-controlfields.html#s-f-Description).", + "type": [ + "null", + "string" + ] + }, + "description": { + "description": "As [description](/configuration/configuration#Metadata-description) from application package.json, but allows you to specify different for Linux.", + "type": [ + "null", + "string" + ] + }, + "category": { + "description": "The [application category](https://specifications.freedesktop.org/menu-spec/latest/apa.html#main-category-registry).", + "type": [ + "null", + "string" + ] + }, + "mimeTypes": { + "description": "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.", + "anyOf": [ + { + "type": "array", + "items": { + "type": "string" + } + }, + { + "type": "null" + } + ] + }, + "desktop": { + "description": "The [Desktop file](https://developer.gnome.org/integration-guide/stable/desktop-files.html.en) entries (name to value)." + }, + "executableArgs": { + "description": "The executable parameters. Pass to executableName", + "anyOf": [ + { + "type": "array", + "items": { + "type": "string" + } + }, + { + "type": "null" + } + ] + }, + "appId": { + "description": "The application id. Used as [CFBundleIdentifier](https://developer.apple.com/library/ios/documentation/General/Reference/InfoPlistKeyReference/Articles/CoreFoundationKeys.html#//apple_ref/doc/uid/20001431-102070) for MacOS and as\n[Application User Model ID](https://msdn.microsoft.com/en-us/library/windows/desktop/dd378459(v=vs.85).aspx) for Windows (NSIS target only, Squirrel.Windows not supported). It is strongly recommended that an explicit ID is set.", + "default": "com.electron.${name}", + "type": [ + "null", + "string" + ] + }, + "artifactName": { + "description": "The [artifact file name template](/configuration/configuration#artifact-file-name-template). Defaults to `${productName}-${version}.${ext}` (some target can have other defaults, see corresponding options).", + "type": [ + "null", + "string" + ] + }, + "executableName": { + "description": "The executable name. Defaults to `productName`.", + "type": [ + "null", + "string" + ] + }, + "compression": { + "description": "The compression level. If you want to rapidly test build, `store` can reduce build time significantly. `maximum` doesn't lead to noticeable size difference, but increase build time.", + "default": "normal", + "anyOf": [ + { + "enum": [ + "maximum", + "normal", + "store" + ], + "type": "string" + }, + { + "type": "null" + } + ] + }, + "files": { + "anyOf": [ + { + "$ref": "#/definitions/FileSet" + }, + { + "type": "array", + "items": { + "anyOf": [ + { + "$ref": "#/definitions/FileSet" + }, + { + "type": "string" + } + ] + } + }, + { + "type": [ + "null", + "string" + ] + } + ] + }, + "extraResources": { + "anyOf": [ + { + "$ref": "#/definitions/FileSet" + }, + { + "type": "array", + "items": { + "anyOf": [ + { + "$ref": "#/definitions/FileSet" + }, + { + "type": "string" + } + ] + } + }, + { + "type": [ + "null", + "string" + ] + } + ] + }, + "extraFiles": { + "anyOf": [ + { + "$ref": "#/definitions/FileSet" + }, + { + "type": "array", + "items": { + "anyOf": [ + { + "$ref": "#/definitions/FileSet" + }, + { + "type": "string" + } + ] + } + }, + { + "type": [ + "null", + "string" + ] + } + ] + }, + "asar": { + "description": "Whether to package the application's source code into an archive, using [Electron's archive format](http://electron.atom.io/docs/tutorial/application-packaging/).\n\nNode modules, that must be unpacked, will be detected automatically, you don't need to explicitly set [asarUnpack](#configuration-asarUnpack) - please file an issue if this doesn't work.", + "default": true, + "anyOf": [ + { + "$ref": "#/definitions/AsarOptions" + }, + { + "type": [ + "null", + "boolean" + ] + } + ] + }, + "asarUnpack": { + "description": "A [glob patterns](/file-patterns) relative to the [app directory](#MetadataDirectories-app), which specifies which files to unpack when creating the [asar](http://electron.atom.io/docs/tutorial/application-packaging/) archive.", + "anyOf": [ + { + "type": "array", + "items": { + "type": "string" + } + }, + { + "type": [ + "null", + "string" + ] + } + ] + }, + "fileAssociations": { + "description": "The file associations.", + "anyOf": [ + { + "$ref": "#/definitions/FileAssociation" + }, + { + "type": "array", + "items": { + "$ref": "#/definitions/FileAssociation" + } + } + ] + }, + "protocols": { + "description": "The URL protocol schemes.", + "anyOf": [ + { + "$ref": "#/definitions/Protocol" + }, + { + "type": "array", + "items": { + "$ref": "#/definitions/Protocol" + } + } + ] + }, + "forceCodeSigning": { + "description": "Whether to fail if app will be not code signed.", + "type": "boolean" + }, + "electronUpdaterCompatibility": { + "description": "The [electron-updater compatibility](/auto-update#compatibility) semver range.", + "type": [ + "null", + "string" + ] + }, + "publish": { + "anyOf": [ + { + "$ref": "#/definitions/GithubOptions" + }, + { + "$ref": "#/definitions/S3Options" + }, + { + "$ref": "#/definitions/SpacesOptions" + }, + { + "$ref": "#/definitions/GenericServerOptions" + }, + { + "$ref": "#/definitions/BintrayOptions" + }, + { + "$ref": "#/definitions/CustomPublishOptions" + }, + { + "$ref": "#/definitions/KeygenOptions" + }, + { + "$ref": "#/definitions/SnapStoreOptions" + }, + { + "type": "array", + "items": { + "anyOf": [ + { + "$ref": "#/definitions/GithubOptions" + }, + { + "$ref": "#/definitions/S3Options" + }, + { + "$ref": "#/definitions/SpacesOptions" + }, + { + "$ref": "#/definitions/GenericServerOptions" + }, + { + "$ref": "#/definitions/BintrayOptions" + }, + { + "$ref": "#/definitions/CustomPublishOptions" + }, + { + "$ref": "#/definitions/KeygenOptions" + }, + { + "$ref": "#/definitions/SnapStoreOptions" + }, + { + "type": "string" + } + ] + } + }, + { + "type": [ + "null", + "string" + ] + } + ] + }, + "detectUpdateChannel": { + "description": "Whether to infer update channel from application version pre-release components. e.g. if version `0.12.1-alpha.1`, channel will be set to `alpha`. Otherwise to `latest`.", + "default": true, + "type": "boolean" + }, + "generateUpdatesFilesForAllChannels": { + "description": "Please see [Building and Releasing using Channels](https://github.com/electron-userland/electron-builder/issues/1182#issuecomment-324947139).", + "default": false, + "type": "boolean" + }, + "releaseInfo": { + "description": "The release info. Intended for command line usage:\n\n```\n-c.releaseInfo.releaseNotes=\"new features\"\n```", + "$ref": "#/definitions/ReleaseInfo" + }, + "cscLink": { + "type": [ + "null", + "string" + ] + }, + "cscKeyPassword": { + "type": [ + "null", + "string" + ] + }, + "defaultArch": { + "type": "string" + } + } + }, + "DebOptions": { + "type": "object", + "properties": { + "depends": { + "description": "Package dependencies. Defaults to `[\"gconf2\", \"gconf-service\", \"libnotify4\", \"libappindicator1\", \"libxtst6\", \"libnss3\"]`.", + "anyOf": [ + { + "type": "array", + "items": { + "type": "string" + } + }, + { + "type": "null" + } + ] + }, + "packageCategory": { + "description": "The [package category](https://www.debian.org/doc/debian-policy/ch-controlfields.html#s-f-Section).", + "type": [ + "null", + "string" + ] + }, + "priority": { + "description": "The [Priority](https://www.debian.org/doc/debian-policy/ch-controlfields.html#s-f-Priority) attribute.", + "type": [ + "null", + "string" + ] + }, + "compression": { + "description": "The compression type.", + "default": "xz", + "anyOf": [ + { + "enum": [ + "bzip2", + "gz", + "xz" + ], + "type": "string" + }, + { + "type": "null" + } + ] + }, + "icon": { + "type": "string" + }, + "packageName": { + "description": "The name of the package.", + "type": [ + "null", + "string" + ] + }, + "vendor": { + "type": [ + "null", + "string" + ] + }, + "maintainer": { + "type": [ + "null", + "string" + ] + }, + "afterInstall": { + "type": [ + "null", + "string" + ] + }, + "afterRemove": { + "type": [ + "null", + "string" + ] + }, + "fpm": { + "description": "*Advanced only* The [fpm](https://github.com/jordansissel/fpm/wiki#usage) options.\n\nExample: `[\"--before-install=build/deb-preinstall.sh\", \"--after-upgrade=build/deb-postinstall.sh\"]`", + "anyOf": [ + { + "type": "array", + "items": { + "type": "string" + } + }, + { + "type": "null" + } + ] + }, + "synopsis": { + "description": "The [short description](https://www.debian.org/doc/debian-policy/ch-controlfields.html#s-f-Description).", + "type": [ + "null", + "string" + ] + }, + "description": { + "description": "As [description](/configuration/configuration#Metadata-description) from application package.json, but allows you to specify different for Linux.", + "type": [ + "null", + "string" + ] + }, + "category": { + "description": "The [application category](https://specifications.freedesktop.org/menu-spec/latest/apa.html#main-category-registry).", + "type": [ + "null", + "string" + ] + }, + "mimeTypes": { + "description": "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.", + "anyOf": [ + { + "type": "array", + "items": { + "type": "string" + } + }, + { + "type": "null" + } + ] + }, + "desktop": { + "description": "The [Desktop file](https://developer.gnome.org/integration-guide/stable/desktop-files.html.en) entries (name to value)." + }, + "executableArgs": { + "description": "The executable parameters. Pass to executableName", + "anyOf": [ + { + "type": "array", + "items": { + "type": "string" + } + }, + { + "type": "null" + } + ] + }, + "artifactName": { + "description": "The [artifact file name template](/configuration/configuration#artifact-file-name-template).", + "type": [ + "null", + "string" + ] + }, + "publish": { + "anyOf": [ + { + "$ref": "#/definitions/GithubOptions" + }, + { + "$ref": "#/definitions/S3Options" + }, + { + "$ref": "#/definitions/SpacesOptions" + }, + { + "$ref": "#/definitions/GenericServerOptions" + }, + { + "$ref": "#/definitions/BintrayOptions" + }, + { + "$ref": "#/definitions/CustomPublishOptions" + }, + { + "$ref": "#/definitions/KeygenOptions" + }, + { + "$ref": "#/definitions/SnapStoreOptions" + }, + { + "type": "array", + "items": { + "anyOf": [ + { + "$ref": "#/definitions/GithubOptions" + }, + { + "$ref": "#/definitions/S3Options" + }, + { + "$ref": "#/definitions/SpacesOptions" + }, + { + "$ref": "#/definitions/GenericServerOptions" + }, + { + "$ref": "#/definitions/BintrayOptions" + }, + { + "$ref": "#/definitions/CustomPublishOptions" + }, + { + "$ref": "#/definitions/KeygenOptions" + }, + { + "$ref": "#/definitions/SnapStoreOptions" + }, + { + "type": "string" + } + ] + } + }, + { + "type": [ + "null", + "string" + ] + } + ] + } + } + }, + "SnapOptions": { + "type": "object", + "properties": { + "confinement": { + "description": "The type of [confinement](https://snapcraft.io/docs/reference/confinement) supported by the snap.", + "default": "strict", + "anyOf": [ + { + "enum": [ + "classic", + "devmode", + "strict" + ], + "type": "string" + }, + { + "type": "null" + } + ] + }, + "environment": { + "description": "The custom environment. Defaults to `{\"TMPDIR: \"$XDG_RUNTIME_DIR\"}`. If you set custom, it will be merged with default.", + "anyOf": [ + { + "type": "object", + "additionalProperties": { + "type": "string" + } + }, + { + "type": "null" + } + ] + }, + "summary": { + "description": "The 78 character long summary. Defaults to [productName](/configuration/configuration#Configuration-productName).", + "type": [ + "null", + "string" + ] + }, + "grade": { + "description": "The quality grade of the snap. It can be either `devel` (i.e. a development version of the snap, so not to be published to the “stable” or “candidate” channels) or “stable” (i.e. a stable release or release candidate, which can be released to all channels).", + "default": "stable", + "anyOf": [ + { + "enum": [ + "devel", + "stable" + ], + "type": "string" + }, + { + "type": "null" + } + ] + }, + "assumes": { + "description": "The list of features that must be supported by the core in order for this snap to install.", + "anyOf": [ + { + "type": "array", + "items": { + "type": "string" + } + }, + { + "type": [ + "null", + "string" + ] + } + ] + }, + "buildPackages": { + "description": "The list of debian packages needs to be installed for building this snap.", + "anyOf": [ + { + "type": "array", + "items": { + "type": "string" + } + }, + { + "type": "null" + } + ] + }, + "stagePackages": { + "description": "The list of Ubuntu packages to use that are needed to support the `app` part creation. Like `depends` for `deb`.\nDefaults to `[\"libnspr4\", \"libnss3\", \"libxss1\", \"libappindicator3-1\", \"libsecret-1-0\"]`.\n\nIf list contains `default`, it will be replaced to default list, so, `[\"default\", \"foo\"]` can be used to add custom package `foo` in addition to defaults.", + "anyOf": [ + { + "type": "array", + "items": { + "type": "string" + } + }, + { + "type": "null" + } + ] + }, + "hooks": { + "description": "The [hooks](https://docs.snapcraft.io/build-snaps/hooks) directory, relative to `build` (build resources directory).", + "default": "build/snap-hooks", + "type": [ + "null", + "string" + ] + }, + "plugs": { + "description": "The list of [plugs](https://snapcraft.io/docs/reference/interfaces).\nDefaults to `[\"desktop\", \"desktop-legacy\", \"home\", \"x11\", \"unity7\", \"browser-support\", \"network\", \"gsettings\", \"audio-playback\", \"pulseaudio\", \"opengl\"]`.\n\nIf list contains `default`, it will be replaced to default list, so, `[\"default\", \"foo\"]` can be used to add custom plug `foo` in addition to defaults.\n\nAdditional attributes can be specified using object instead of just name of plug:\n```\n[\n {\n \"browser-sandbox\": {\n \"interface\": \"browser-support\",\n \"allow-sandbox\": true\n },\n },\n \"another-simple-plug-name\"\n]\n```", + "anyOf": [ + { + "$ref": "#/definitions/PlugDescriptor" + }, + { + "type": "array", + "items": { + "anyOf": [ + { + "$ref": "#/definitions/PlugDescriptor" + }, + { + "type": "string" + } + ] + } + }, + { + "type": "null" + } + ] + }, + "slots": { + "description": "The list of [slots](https://snapcraft.io/docs/reference/interfaces).\n\nAdditional attributes can be specified using object instead of just name of slot:\n```\n[\n {\n \"mpris\": {\n \"name\": \"chromium\"\n },\n }\n]\n\nIn case you want your application to be a compliant MPris player, you will need to definie\nThe mpris slot with \"chromium\" name.\nThis electron has it [hardcoded](https://source.chromium.org/chromium/chromium/src/+/master:components/system_media_controls/linux/system_media_controls_linux.cc;l=51;bpv=0;bpt=1),\nand we need to pass this name so snap [will allow it](https://forum.snapcraft.io/t/unable-to-use-mpris-interface/15360/7) in strict confinement.", + "anyOf": [ + { + "$ref": "#/definitions/PlugDescriptor" + }, + { + "type": "array", + "items": { + "anyOf": [ + { + "$ref": "#/definitions/SlotDescriptor" + }, + { + "type": "string" + } + ] + } + }, + { + "type": "null" + } + ] + }, + "after": { + "description": "Specifies any [parts](https://snapcraft.io/docs/reference/parts) that should be built before this part.\nDefaults to `[\"desktop-gtk2\"\"]`.\n\nIf list contains `default`, it will be replaced to default list, so, `[\"default\", \"foo\"]` can be used to add custom parts `foo` in addition to defaults.", + "anyOf": [ + { + "type": "array", + "items": { + "type": "string" + } + }, + { + "type": "null" + } + ] + }, + "useTemplateApp": { + "description": "Whether to use template snap. Defaults to `true` if `stagePackages` not specified.", + "type": "boolean" + }, + "autoStart": { + "description": "Whether or not the snap should automatically start on login.", + "default": false, + "type": "boolean" + }, + "layout": { + "description": "Specifies any files to make accessible from locations such as `/usr`, `/var`, and `/etc`. See [snap layouts](https://snapcraft.io/docs/snap-layouts) to learn more.", + "anyOf": [ + { + "type": "object", + "additionalProperties": { + "type": "object", + "additionalProperties": { + "type": "string" + } + } + }, + { + "type": "null" + } + ] + }, + "appPartStage": { + "description": "Specifies which files from the app part to stage and which to exclude. Individual files, directories, wildcards, globstars, and exclusions are accepted. See [Snapcraft filesets](https://snapcraft.io/docs/snapcraft-filesets) to learn more about the format.\n\nThe defaults can be found in [snap.ts](https://github.com/electron-userland/electron-builder/blob/master/packages/app-builder-lib/templates/snap/snapcraft.yaml#L29).", + "anyOf": [ + { + "type": "array", + "items": { + "type": "string" + } + }, + { + "type": "null" + } + ] + }, + "title": { + "description": "An optional title for the snap, may contain uppercase letters and spaces. Defaults to `productName`. See [snap format documentation](https://snapcraft.io/docs/snap-format).", + "type": [ + "null", + "string" + ] + }, + "synopsis": { + "description": "The [short description](https://www.debian.org/doc/debian-policy/ch-controlfields.html#s-f-Description).", + "type": [ + "null", + "string" + ] + }, + "description": { + "description": "As [description](/configuration/configuration#Metadata-description) from application package.json, but allows you to specify different for Linux.", + "type": [ + "null", + "string" + ] + }, + "category": { + "description": "The [application category](https://specifications.freedesktop.org/menu-spec/latest/apa.html#main-category-registry).", + "type": [ + "null", + "string" + ] + }, + "mimeTypes": { + "description": "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.", + "anyOf": [ + { + "type": "array", + "items": { + "type": "string" + } + }, + { + "type": "null" + } + ] + }, + "desktop": { + "description": "The [Desktop file](https://developer.gnome.org/integration-guide/stable/desktop-files.html.en) entries (name to value)." + }, + "executableArgs": { + "description": "The executable parameters. Pass to executableName", + "anyOf": [ + { + "type": "array", + "items": { + "type": "string" + } + }, + { + "type": "null" + } + ] + }, + "artifactName": { + "description": "The [artifact file name template](/configuration/configuration#artifact-file-name-template).", + "type": [ + "null", + "string" + ] + }, + "publish": { + "anyOf": [ + { + "$ref": "#/definitions/GithubOptions" + }, + { + "$ref": "#/definitions/S3Options" + }, + { + "$ref": "#/definitions/SpacesOptions" + }, + { + "$ref": "#/definitions/GenericServerOptions" + }, + { + "$ref": "#/definitions/BintrayOptions" + }, + { + "$ref": "#/definitions/CustomPublishOptions" + }, + { + "$ref": "#/definitions/KeygenOptions" + }, + { + "$ref": "#/definitions/SnapStoreOptions" + }, + { + "type": "array", + "items": { + "anyOf": [ + { + "$ref": "#/definitions/GithubOptions" + }, + { + "$ref": "#/definitions/S3Options" + }, + { + "$ref": "#/definitions/SpacesOptions" + }, + { + "$ref": "#/definitions/GenericServerOptions" + }, + { + "$ref": "#/definitions/BintrayOptions" + }, + { + "$ref": "#/definitions/CustomPublishOptions" + }, + { + "$ref": "#/definitions/KeygenOptions" + }, + { + "$ref": "#/definitions/SnapStoreOptions" + }, + { + "type": "string" + } + ] + } + }, + { + "type": [ + "null", + "string" + ] + } + ] + } + } + }, + "PlugDescriptor": { + "type": "object", + "additionalProperties": { + "anyOf": [ + { + "type": "object", + "additionalProperties": {} + }, + { + "type": "null" + } + ] + } + }, + "SlotDescriptor": { + "type": "object", + "additionalProperties": { + "anyOf": [ + { + "type": "object", + "additionalProperties": {} + }, + { + "type": "null" + } + ] + } + }, + "AppImageOptions": { + "type": "object", + "properties": { + "license": { + "description": "The path to EULA license file. Defaults to `license.txt` or `eula.txt` (or uppercase variants). Only plain text is supported.", + "type": [ + "null", + "string" + ] + }, + "synopsis": { + "description": "The [short description](https://www.debian.org/doc/debian-policy/ch-controlfields.html#s-f-Description).", + "type": [ + "null", + "string" + ] + }, + "description": { + "description": "As [description](/configuration/configuration#Metadata-description) from application package.json, but allows you to specify different for Linux.", + "type": [ + "null", + "string" + ] + }, + "category": { + "description": "The [application category](https://specifications.freedesktop.org/menu-spec/latest/apa.html#main-category-registry).", + "type": [ + "null", + "string" + ] + }, + "mimeTypes": { + "description": "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.", + "anyOf": [ + { + "type": "array", + "items": { + "type": "string" + } + }, + { + "type": "null" + } + ] + }, + "desktop": { + "description": "The [Desktop file](https://developer.gnome.org/integration-guide/stable/desktop-files.html.en) entries (name to value)." + }, + "executableArgs": { + "description": "The executable parameters. Pass to executableName", + "anyOf": [ + { + "type": "array", + "items": { + "type": "string" + } + }, + { + "type": "null" + } + ] + }, + "artifactName": { + "description": "The [artifact file name template](/configuration/configuration#artifact-file-name-template).", + "type": [ + "null", + "string" + ] + }, + "publish": { + "anyOf": [ + { + "$ref": "#/definitions/GithubOptions" + }, + { + "$ref": "#/definitions/S3Options" + }, + { + "$ref": "#/definitions/SpacesOptions" + }, + { + "$ref": "#/definitions/GenericServerOptions" + }, + { + "$ref": "#/definitions/BintrayOptions" + }, + { + "$ref": "#/definitions/CustomPublishOptions" + }, + { + "$ref": "#/definitions/KeygenOptions" + }, + { + "$ref": "#/definitions/SnapStoreOptions" + }, + { + "type": "array", + "items": { + "anyOf": [ + { + "$ref": "#/definitions/GithubOptions" + }, + { + "$ref": "#/definitions/S3Options" + }, + { + "$ref": "#/definitions/SpacesOptions" + }, + { + "$ref": "#/definitions/GenericServerOptions" + }, + { + "$ref": "#/definitions/BintrayOptions" + }, + { + "$ref": "#/definitions/CustomPublishOptions" + }, + { + "$ref": "#/definitions/KeygenOptions" + }, + { + "$ref": "#/definitions/SnapStoreOptions" + }, + { + "type": "string" + } + ] + } + }, + { + "type": [ + "null", + "string" + ] + } + ] + } + } + }, + "FlatpakOptions": { + "type": "object", + "properties": { + "license": { + "description": "The path to EULA license file. Defaults to `license.txt` or `eula.txt` (or uppercase variants). Only plain text is supported.", + "type": [ + "null", + "string" + ] + }, + "runtime": { + "description": "The name of the runtime that the application uses. Defaults to `org.freedesktop.Platform`.\n\nSee [flatpak manifest documentation](https://docs.flatpak.org/en/latest/flatpak-builder-command-reference.html#flatpak-manifest).", + "type": "string" + }, + "runtimeVersion": { + "description": "The version of the runtime that the application uses. Defaults to `20.08`.\n\nSee [flatpak manifest documentation](https://docs.flatpak.org/en/latest/flatpak-builder-command-reference.html#flatpak-manifest).", + "type": "string" + }, + "sdk": { + "description": "The name of the development runtime that the application builds with. Defaults to `org.freedesktop.Sdk`.\n\nSee [flatpak manifest documentation](https://docs.flatpak.org/en/latest/flatpak-builder-command-reference.html#flatpak-manifest).", + "type": "string" + }, + "base": { + "description": "Start with the files from the specified application. This can be used to create applications that extend another application.\nDefaults to [org.electronjs.Electron2.BaseApp](https://github.com/flathub/org.electronjs.Electron2.BaseApp).\n\nSee [flatpak manifest documentation](https://docs.flatpak.org/en/latest/flatpak-builder-command-reference.html#flatpak-manifest).", + "type": "string" + }, + "baseVersion": { + "description": "Use this specific version of the application specified in base. Defaults to `20.08`.\n\nSee [flatpak manifest documentation](https://docs.flatpak.org/en/latest/flatpak-builder-command-reference.html#flatpak-manifest).", + "type": "string" + }, + "branch": { + "description": "The branch to use when exporting the application. Defaults to `master`.\n\nSee [flatpak manifest documentation](https://docs.flatpak.org/en/latest/flatpak-builder-command-reference.html#flatpak-manifest).", + "type": "string" + }, + "finishArgs": { + "description": "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\nSee [flatpak manifest documentation](https://docs.flatpak.org/en/latest/flatpak-builder-command-reference.html#flatpak-manifest).", + "type": "array", + "items": { + "type": "string" + } + }, + "modules": { + "description": "An array of objects specifying the modules to be built in order.\n\nSee [flatpak manifest documentation](https://docs.flatpak.org/en/latest/flatpak-builder-command-reference.html#flatpak-manifest).", + "type": "array", + "items": {} + }, + "files": { + "description": "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\nSee [@malept/flatpak-bundler documentation](https://github.com/malept/flatpak-bundler#build-options).", + "type": "array", + "items": { + "type": "array", + "items": [ + { + "type": "string" + }, + { + "type": "string" + } + ], + "minItems": 2, + "maxItems": 2 + } + }, + "symlinks": { + "description": "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\nSee [@malept/flatpak-bundler documentation](https://github.com/malept/flatpak-bundler#build-options).", + "type": "array", + "items": { + "type": "array", + "items": [ + { + "type": "string" + }, + { + "type": "string" + } + ], + "minItems": 2, + "maxItems": 2 + } + }, + "useWaylandFlags": { + "description": "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`.", + "type": "boolean" + }, + "synopsis": { + "description": "The [short description](https://www.debian.org/doc/debian-policy/ch-controlfields.html#s-f-Description).", + "type": [ + "null", + "string" + ] + }, + "description": { + "description": "As [description](/configuration/configuration#Metadata-description) from application package.json, but allows you to specify different for Linux.", + "type": [ + "null", + "string" + ] + }, + "category": { + "description": "The [application category](https://specifications.freedesktop.org/menu-spec/latest/apa.html#main-category-registry).", + "type": [ + "null", + "string" + ] + }, + "mimeTypes": { + "description": "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.", + "anyOf": [ + { + "type": "array", + "items": { + "type": "string" + } + }, + { + "type": "null" + } + ] + }, + "desktop": { + "description": "The [Desktop file](https://developer.gnome.org/integration-guide/stable/desktop-files.html.en) entries (name to value)." + }, + "executableArgs": { + "description": "The executable parameters. Pass to executableName", + "anyOf": [ + { + "type": "array", + "items": { + "type": "string" + } + }, + { + "type": "null" + } + ] + }, + "artifactName": { + "description": "The [artifact file name template](/configuration/configuration#artifact-file-name-template).", + "type": [ + "null", + "string" + ] + }, + "publish": { + "anyOf": [ + { + "$ref": "#/definitions/GithubOptions" + }, + { + "$ref": "#/definitions/S3Options" + }, + { + "$ref": "#/definitions/SpacesOptions" + }, + { + "$ref": "#/definitions/GenericServerOptions" + }, + { + "$ref": "#/definitions/BintrayOptions" + }, + { + "$ref": "#/definitions/CustomPublishOptions" + }, + { + "$ref": "#/definitions/KeygenOptions" + }, + { + "$ref": "#/definitions/SnapStoreOptions" + }, + { + "type": "array", + "items": { + "anyOf": [ + { + "$ref": "#/definitions/GithubOptions" + }, + { + "$ref": "#/definitions/S3Options" + }, + { + "$ref": "#/definitions/SpacesOptions" + }, + { + "$ref": "#/definitions/GenericServerOptions" + }, + { + "$ref": "#/definitions/BintrayOptions" + }, + { + "$ref": "#/definitions/CustomPublishOptions" + }, + { + "$ref": "#/definitions/KeygenOptions" + }, + { + "$ref": "#/definitions/SnapStoreOptions" + }, + { + "type": "string" + } + ] + } + }, + { + "type": [ + "null", + "string" + ] + } + ] + } + } + }, + "LinuxTargetSpecificOptions": { + "type": "object", + "properties": { + "depends": { + "description": "Package dependencies.", + "anyOf": [ + { + "type": "array", + "items": { + "type": "string" + } + }, + { + "type": "null" + } + ] + }, + "compression": { + "description": "The compression type.", + "default": "xz", + "anyOf": [ + { + "enum": [ + "bzip2", + "gz", + "xz" + ], + "type": "string" + }, + { + "type": "null" + } + ] + }, + "icon": { + "type": "string" + }, + "packageCategory": { + "description": "The package category.", + "type": [ + "null", + "string" + ] + }, + "packageName": { + "description": "The name of the package.", + "type": [ + "null", + "string" + ] + }, + "vendor": { + "type": [ + "null", + "string" + ] + }, + "maintainer": { + "type": [ + "null", + "string" + ] + }, + "afterInstall": { + "type": [ + "null", + "string" + ] + }, + "afterRemove": { + "type": [ + "null", + "string" + ] + }, + "fpm": { + "description": "*Advanced only* The [fpm](https://github.com/jordansissel/fpm/wiki#usage) options.\n\nExample: `[\"--before-install=build/deb-preinstall.sh\", \"--after-upgrade=build/deb-postinstall.sh\"]`", + "anyOf": [ + { + "type": "array", + "items": { + "type": "string" + } + }, + { + "type": "null" + } + ] + }, + "synopsis": { + "description": "The [short description](https://www.debian.org/doc/debian-policy/ch-controlfields.html#s-f-Description).", + "type": [ + "null", + "string" + ] + }, + "description": { + "description": "As [description](/configuration/configuration#Metadata-description) from application package.json, but allows you to specify different for Linux.", + "type": [ + "null", + "string" + ] + }, + "category": { + "description": "The [application category](https://specifications.freedesktop.org/menu-spec/latest/apa.html#main-category-registry).", + "type": [ + "null", + "string" + ] + }, + "mimeTypes": { + "description": "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.", + "anyOf": [ + { + "type": "array", + "items": { + "type": "string" + } + }, + { + "type": "null" + } + ] + }, + "desktop": { + "description": "The [Desktop file](https://developer.gnome.org/integration-guide/stable/desktop-files.html.en) entries (name to value)." + }, + "executableArgs": { + "description": "The executable parameters. Pass to executableName", + "anyOf": [ + { + "type": "array", + "items": { + "type": "string" + } + }, + { + "type": "null" + } + ] + }, + "artifactName": { + "description": "The [artifact file name template](/configuration/configuration#artifact-file-name-template).", + "type": [ + "null", + "string" + ] + }, + "publish": { + "anyOf": [ + { + "$ref": "#/definitions/GithubOptions" + }, + { + "$ref": "#/definitions/S3Options" + }, + { + "$ref": "#/definitions/SpacesOptions" + }, + { + "$ref": "#/definitions/GenericServerOptions" + }, + { + "$ref": "#/definitions/BintrayOptions" + }, + { + "$ref": "#/definitions/CustomPublishOptions" + }, + { + "$ref": "#/definitions/KeygenOptions" + }, + { + "$ref": "#/definitions/SnapStoreOptions" + }, + { + "type": "array", + "items": { + "anyOf": [ + { + "$ref": "#/definitions/GithubOptions" + }, + { + "$ref": "#/definitions/S3Options" + }, + { + "$ref": "#/definitions/SpacesOptions" + }, + { + "$ref": "#/definitions/GenericServerOptions" + }, + { + "$ref": "#/definitions/BintrayOptions" + }, + { + "$ref": "#/definitions/CustomPublishOptions" + }, + { + "$ref": "#/definitions/KeygenOptions" + }, + { + "$ref": "#/definitions/SnapStoreOptions" + }, + { + "type": "string" + } + ] + } + }, + { + "type": [ + "null", + "string" + ] + } + ] + } + } + }, + "ElectronDownloadOptions": { + "type": "object", + "properties": { + "version": { + "type": "string" + }, + "cache": { + "description": "The [cache location](https://github.com/electron-userland/electron-download#cache-location).", + "type": [ + "null", + "string" + ] + }, + "mirror": { + "description": "The mirror.", + "type": [ + "null", + "string" + ] + }, + "customDir": { + "type": [ + "null", + "string" + ] + }, + "customFilename": { + "type": [ + "null", + "string" + ] + }, + "strictSSL": { + "type": "boolean" + }, + "isVerifyChecksum": { + "type": "boolean" + }, + "platform": { + "enum": [ + "darwin", + "linux", + "mas", + "win32" + ], + "type": "string" + }, + "arch": { + "type": "string" + } + } + }, + "ElectronBrandingOptions": { + "description": "Electron distributables branding options.", + "type": "object", + "properties": { + "projectName": { + "type": "string" + }, + "productName": { + "type": "string" + } + } + }, + "PlatformPackager": { + "type": "object", + "properties": { + "packagerOptions": { + "$ref": "#/definitions/PackagerOptions" + }, + "buildResourcesDir": { + "type": "string" + }, + "projectDir": { + "type": "string" + }, + "config": { + "$ref": "#/definitions/Configuration" + }, + "platformSpecificBuildOptions": {}, + "resourceList": { + "$ref": "#/definitions/Promise" + }, + "_resourceList": { + "$ref": "#/definitions/Lazy" + }, + "appInfo": { + "$ref": "#/definitions/AppInfo" + }, + "info": { + "$ref": "#/definitions/Packager" + }, + "platform": { + "$ref": "#/definitions/Platform" + }, + "compression": { + "$ref": "#/definitions/CompressionLevel" + }, + "debugLogger": { + "$ref": "#/definitions/DebugLogger" + }, + "defaultTarget": { + "type": "array", + "items": { + "type": "string" + } + }, + "fileAssociations": { + "type": "array", + "items": { + "$ref": "#/definitions/FileAssociation" + } + }, + "forceCodeSigning": { + "type": "boolean" + } + }, + "required": [ + "_resourceList", + "appInfo", + "buildResourcesDir", + "compression", + "config", + "debugLogger", + "defaultTarget", + "fileAssociations", + "forceCodeSigning", + "info", + "packagerOptions", + "platform", + "platformSpecificBuildOptions", + "projectDir", + "resourceList" + ] + }, + "PackagerOptions": { + "type": "object", + "properties": { + "targets": { + "$ref": "#/definitions/Map>" + }, + "mac": { + "type": "array", + "items": { + "type": "string" + } + }, + "linux": { + "type": "array", + "items": { + "type": "string" + } + }, + "win": { + "type": "array", + "items": { + "type": "string" + } + }, + "projectDir": { + "type": [ + "null", + "string" + ] + }, + "platformPackagerFactory": { + "type": [ + "null", + "object" + ] + }, + "config": { + "anyOf": [ + { + "$ref": "#/definitions/Configuration" + }, + { + "type": [ + "null", + "string" + ] + } + ] + }, + "effectiveOptionComputed": { + "type": "object" + }, + "prepackaged": { + "type": [ + "null", + "string" + ] + } + } + }, + "Map>": { + "type": "object", + "properties": { + "size": { + "type": "number" + }, + "__@toStringTag": { + "type": "string" + } + }, + "required": [ + "__@toStringTag", + "size" + ] + }, + "Configuration": { + "description": "Configuration Options", + "type": "object", + "properties": { + "appId": { + "description": "The application id. Used as [CFBundleIdentifier](https://developer.apple.com/library/ios/documentation/General/Reference/InfoPlistKeyReference/Articles/CoreFoundationKeys.html#//apple_ref/doc/uid/20001431-102070) for MacOS and as\n[Application User Model ID](https://msdn.microsoft.com/en-us/library/windows/desktop/dd378459(v=vs.85).aspx) for Windows (NSIS target only, Squirrel.Windows not supported). It is strongly recommended that an explicit ID is set.", + "default": "com.electron.${name}", + "type": [ + "null", + "string" + ] + }, + "productName": { + "description": "As [name](#Metadata-name), but allows you to specify a product name for your executable which contains spaces and other special characters not allowed in the [name property](https://docs.npmjs.com/files/package.json#name).", + "type": [ + "null", + "string" + ] + }, + "copyright": { + "description": "The human-readable copyright line for the app.", + "default": "Copyright © year ${author}", + "type": [ + "null", + "string" + ] + }, + "directories": { + "anyOf": [ + { + "$ref": "#/definitions/MetadataDirectories" + }, + { + "type": "null" + } + ] + }, + "mac": { + "description": "Options related to how build macOS targets.", + "anyOf": [ + { + "$ref": "#/definitions/MacConfiguration" + }, + { + "type": "null" + } + ] + }, + "mas": { + "description": "MAS (Mac Application Store) options.", + "anyOf": [ + { + "$ref": "#/definitions/MasConfiguration" + }, + { + "type": "null" + } + ] + }, + "masDev": { + "description": "MAS (Mac Application Store) development options (`mas-dev` target).", + "anyOf": [ + { + "$ref": "#/definitions/MasConfiguration" + }, + { + "type": "null" + } + ] + }, + "dmg": { + "description": "macOS DMG options.", + "anyOf": [ + { + "$ref": "#/definitions/DmgOptions" + }, + { + "type": "null" + } + ] + }, + "pkg": { + "description": "macOS PKG options.", + "anyOf": [ + { + "$ref": "#/definitions/PkgOptions" + }, + { + "type": "null" + } + ] + }, + "win": { + "description": "Options related to how build Windows targets.", + "anyOf": [ + { + "$ref": "#/definitions/WindowsConfiguration" + }, + { + "type": "null" + } + ] + }, + "nsis": { + "anyOf": [ + { + "$ref": "#/definitions/NsisOptions" + }, + { + "type": "null" + } + ] + }, + "nsisWeb": { + "anyOf": [ + { + "$ref": "#/definitions/NsisWebOptions" + }, + { + "type": "null" + } + ] + }, + "portable": { + "anyOf": [ + { + "$ref": "#/definitions/PortableOptions" + }, + { + "type": "null" + } + ] + }, + "appx": { + "anyOf": [ + { + "$ref": "#/definitions/AppXOptions" + }, + { + "type": "null" + } + ] + }, + "msi": { + "anyOf": [ + { + "$ref": "#/definitions/MsiOptions" + }, + { + "type": "null" + } + ] + }, + "squirrelWindows": { + "anyOf": [ + { + "$ref": "#/definitions/SquirrelWindowsOptions" + }, + { + "type": "null" + } + ] + }, + "linux": { + "description": "Options related to how build Linux targets.", + "anyOf": [ + { + "$ref": "#/definitions/LinuxConfiguration" + }, + { + "type": "null" + } + ] + }, + "deb": { + "description": "Debian package options.", + "anyOf": [ + { + "$ref": "#/definitions/DebOptions" + }, + { + "type": "null" + } + ] + }, + "snap": { + "description": "Snap options.", + "anyOf": [ + { + "$ref": "#/definitions/SnapOptions" + }, + { + "type": "null" + } + ] + }, + "appImage": { + "description": "AppImage options.", + "anyOf": [ + { + "$ref": "#/definitions/AppImageOptions" + }, + { + "type": "null" + } + ] + }, + "flatpak": { + "description": "Flatpak options.", + "anyOf": [ + { + "$ref": "#/definitions/FlatpakOptions" + }, + { + "type": "null" + } + ] + }, + "pacman": { + "anyOf": [ + { + "$ref": "#/definitions/LinuxTargetSpecificOptions" + }, + { + "type": "null" + } + ] + }, + "rpm": { + "anyOf": [ + { + "$ref": "#/definitions/LinuxTargetSpecificOptions" + }, + { + "type": "null" + } + ] + }, + "freebsd": { + "anyOf": [ + { + "$ref": "#/definitions/LinuxTargetSpecificOptions" + }, + { + "type": "null" + } + ] + }, + "p5p": { + "anyOf": [ + { + "$ref": "#/definitions/LinuxTargetSpecificOptions" + }, + { + "type": "null" + } + ] + }, + "apk": { + "anyOf": [ + { + "$ref": "#/definitions/LinuxTargetSpecificOptions" + }, + { + "type": "null" + } + ] + }, + "includeSubNodeModules": { + "description": "Whether to include *all* of the submodules node_modules directories", + "default": false, + "type": "boolean" + }, + "buildDependenciesFromSource": { + "description": "Whether to build the application native dependencies from source.", + "default": false, + "type": "boolean" + }, + "nodeGypRebuild": { + "description": "Whether to execute `node-gyp rebuild` before starting to package the app.\n\nDon't [use](https://github.com/electron-userland/electron-builder/issues/683#issuecomment-241214075) [npm](http://electron.atom.io/docs/tutorial/using-native-node-modules/#using-npm) (neither `.npmrc`) for configuring electron headers. Use `electron-builder node-gyp-rebuild` instead.", + "default": false, + "type": "boolean" + }, + "npmArgs": { + "description": "Additional command line arguments to use when installing app native deps.", + "anyOf": [ + { + "type": "array", + "items": { + "type": "string" + } + }, + { + "type": [ + "null", + "string" + ] + } + ] + }, + "npmRebuild": { + "description": "Whether to [rebuild](https://docs.npmjs.com/cli/rebuild) native dependencies before starting to package the app.", + "default": true, + "type": "boolean" + }, + "buildVersion": { + "description": "The build version. Maps to the `CFBundleVersion` on macOS, and `FileVersion` metadata property on Windows. Defaults to the `version`.\nIf `TRAVIS_BUILD_NUMBER` or `APPVEYOR_BUILD_NUMBER` or `CIRCLE_BUILD_NUM` or `BUILD_NUMBER` or `bamboo.buildNumber` or `CI_PIPELINE_IID` env defined, it will be used as a build version (`version.build_number`).", + "type": [ + "null", + "string" + ] + }, + "electronCompile": { + "description": "Whether to use [electron-compile](http://github.com/electron/electron-compile) to compile app. Defaults to `true` if `electron-compile` in the dependencies. And `false` if in the `devDependencies` or doesn't specified.", + "type": "boolean" + }, + "electronDist": { + "description": "Returns the path to custom Electron build (e.g. `~/electron/out/R`). Zip files must follow the pattern `electron-v${version}-${platformName}-${arch}.zip`, otherwise it will be assumed to be an unpacked Electron app directory", + "type": [ + "string", + "object" + ] + }, + "electronDownload": { + "description": "The [electron-download](https://github.com/electron-userland/electron-download#usage) options.", + "$ref": "#/definitions/ElectronDownloadOptions" + }, + "electronBranding": { + "description": "The branding used by Electron's distributables. This is needed if a fork has modified Electron's BRANDING.json file.", + "$ref": "#/definitions/ElectronBrandingOptions" + }, + "electronVersion": { + "description": "The version of electron you are packaging for. Defaults to version of `electron`, `electron-prebuilt` or `electron-prebuilt-compile` dependency.", + "type": [ + "null", + "string" + ] + }, + "extends": { + "description": "The name of a built-in configuration preset (currently, only `react-cra` is supported) or any number of paths to config files (relative to project dir).\n\nThe latter allows to mixin a config from multiple other configs, as if you `Object.assign` them, but properly combine `files` glob patterns.\n\nIf `react-scripts` in the app dependencies, `react-cra` will be set automatically. Set to `null` to disable automatic detection.", + "anyOf": [ + { + "type": "array", + "items": { + "type": "string" + } + }, + { + "type": [ + "null", + "string" + ] + } + ] + }, + "extraMetadata": { + "description": "Inject properties to `package.json`." + }, + "forceCodeSigning": { + "description": "Whether to fail if the application is not signed (to prevent unsigned app if code signing configuration is not correct).", + "default": false, + "type": "boolean" + }, + "nodeVersion": { + "description": "*libui-based frameworks only* The version of NodeJS you are packaging for.\nYou can set it to `current` to set the Node.js version that you use to run.", + "type": [ + "null", + "string" + ] + }, + "launchUiVersion": { + "description": "*libui-based frameworks only* The version of LaunchUI you are packaging for. Applicable for Windows only. Defaults to version suitable for used framework version.", + "type": [ + "null", + "string", + "boolean" + ] + }, + "framework": { + "description": "The framework name. One of `electron`, `proton`, `libui`. Defaults to `electron`.", + "type": [ + "null", + "string" + ] + }, + "afterPack": { + "description": "The function (or path to file or module id) to be [run after pack](#afterpack) (but before pack into distributable format and sign).", + "type": [ + "null", + "string", + "object" + ] + }, + "afterSign": { + "description": "The function (or path to file or module id) to be [run after pack and sign](#aftersign) (but before pack into distributable format).", + "type": [ + "null", + "string", + "object" + ] + }, + "artifactBuildStarted": { + "description": "The function (or path to file or module id) to be run on artifact build start.", + "type": [ + "null", + "string", + "object" + ] + }, + "artifactBuildCompleted": { + "description": "The function (or path to file or module id) to be run on artifact build completed.", + "type": [ + "null", + "string", + "object" + ] + }, + "afterAllArtifactBuild": { + "description": "The function (or path to file or module id) to be [run after all artifacts are build](#afterAllArtifactBuild).", + "type": [ + "null", + "string", + "object" + ] + }, + "msiProjectCreated": { + "description": "MSI project created on disk - not packed into .msi package yet.", + "type": [ + "null", + "string", + "object" + ] + }, + "appxManifestCreated": { + "description": "Appx manifest created on disk - not packed into .appx package yet.", + "type": [ + "null", + "string", + "object" + ] + }, + "onNodeModuleFile": { + "description": "The function (or path to file or module id) to be [run on each node module](#onnodemodulefile) file.", + "type": [ + "null", + "string", + "object" + ] + }, + "beforeBuild": { + "description": "The function (or path to file or module id) to be run before dependencies are installed or rebuilt. Works when `npmRebuild` is set to `true`. Resolving to `false` will skip dependencies install or rebuild.\n\nIf provided and `node_modules` are missing, it will not invoke production dependencies check.", + "type": [ + "null", + "string", + "object" + ] + }, + "remoteBuild": { + "description": "Whether to build using Electron Build Service if target not supported on current OS.", + "default": true, + "type": "boolean" + }, + "includePdb": { + "description": "Whether to include PDB files.", + "default": false, + "type": "boolean" + }, + "removePackageScripts": { + "description": "Whether to remove `scripts` field from `package.json` files.", + "default": true, + "type": "boolean" + }, + "removePackageKeywords": { + "description": "Whether to remove `keywords` field from `package.json` files.", + "default": true, + "type": "boolean" + }, + "artifactName": { + "description": "The [artifact file name template](/configuration/configuration#artifact-file-name-template). Defaults to `${productName}-${version}.${ext}` (some target can have other defaults, see corresponding options).", + "type": [ + "null", + "string" + ] + }, + "executableName": { + "description": "The executable name. Defaults to `productName`.", + "type": [ + "null", + "string" + ] + }, + "compression": { + "description": "The compression level. If you want to rapidly test build, `store` can reduce build time significantly. `maximum` doesn't lead to noticeable size difference, but increase build time.", + "default": "normal", + "anyOf": [ + { + "enum": [ + "maximum", + "normal", + "store" + ], + "type": "string" + }, + { + "type": "null" + } + ] + }, + "files": { + "anyOf": [ + { + "$ref": "#/definitions/FileSet" + }, + { + "type": "array", + "items": { + "anyOf": [ + { + "$ref": "#/definitions/FileSet" + }, + { + "type": "string" + } + ] + } + }, + { + "type": [ + "null", + "string" + ] + } + ] + }, + "extraResources": { + "anyOf": [ + { + "$ref": "#/definitions/FileSet" + }, + { + "type": "array", + "items": { + "anyOf": [ + { + "$ref": "#/definitions/FileSet" + }, + { + "type": "string" + } + ] + } + }, + { + "type": [ + "null", + "string" + ] + } + ] + }, + "extraFiles": { + "anyOf": [ + { + "$ref": "#/definitions/FileSet" + }, + { + "type": "array", + "items": { + "anyOf": [ + { + "$ref": "#/definitions/FileSet" + }, + { + "type": "string" + } + ] + } + }, + { + "type": [ + "null", + "string" + ] + } + ] + }, + "asar": { + "description": "Whether to package the application's source code into an archive, using [Electron's archive format](http://electron.atom.io/docs/tutorial/application-packaging/).\n\nNode modules, that must be unpacked, will be detected automatically, you don't need to explicitly set [asarUnpack](#configuration-asarUnpack) - please file an issue if this doesn't work.", + "default": true, + "anyOf": [ + { + "$ref": "#/definitions/AsarOptions" + }, + { + "type": [ + "null", + "boolean" + ] + } + ] + }, + "asarUnpack": { + "description": "A [glob patterns](/file-patterns) relative to the [app directory](#MetadataDirectories-app), which specifies which files to unpack when creating the [asar](http://electron.atom.io/docs/tutorial/application-packaging/) archive.", + "anyOf": [ + { + "type": "array", + "items": { + "type": "string" + } + }, + { + "type": [ + "null", + "string" + ] + } + ] + }, + "icon": { + "type": [ + "null", + "string" + ] + }, + "fileAssociations": { + "description": "The file associations.", + "anyOf": [ + { + "$ref": "#/definitions/FileAssociation" + }, + { + "type": "array", + "items": { + "$ref": "#/definitions/FileAssociation" + } + } + ] + }, + "protocols": { + "description": "The URL protocol schemes.", + "anyOf": [ + { + "$ref": "#/definitions/Protocol" + }, + { + "type": "array", + "items": { + "$ref": "#/definitions/Protocol" + } + } + ] + }, + "electronUpdaterCompatibility": { + "description": "The [electron-updater compatibility](/auto-update#compatibility) semver range.", + "type": [ + "null", + "string" + ] + }, + "publish": { + "anyOf": [ + { + "$ref": "#/definitions/GithubOptions" + }, + { + "$ref": "#/definitions/S3Options" + }, + { + "$ref": "#/definitions/SpacesOptions" + }, + { + "$ref": "#/definitions/GenericServerOptions" + }, + { + "$ref": "#/definitions/BintrayOptions" + }, + { + "$ref": "#/definitions/CustomPublishOptions" + }, + { + "$ref": "#/definitions/KeygenOptions" + }, + { + "$ref": "#/definitions/SnapStoreOptions" + }, + { + "type": "array", + "items": { + "anyOf": [ + { + "$ref": "#/definitions/GithubOptions" + }, + { + "$ref": "#/definitions/S3Options" + }, + { + "$ref": "#/definitions/SpacesOptions" + }, + { + "$ref": "#/definitions/GenericServerOptions" + }, + { + "$ref": "#/definitions/BintrayOptions" + }, + { + "$ref": "#/definitions/CustomPublishOptions" + }, + { + "$ref": "#/definitions/KeygenOptions" + }, + { + "$ref": "#/definitions/SnapStoreOptions" + }, + { + "type": "string" + } + ] + } + }, + { + "type": [ + "null", + "string" + ] + } + ] + }, + "detectUpdateChannel": { + "description": "Whether to infer update channel from application version pre-release components. e.g. if version `0.12.1-alpha.1`, channel will be set to `alpha`. Otherwise to `latest`.", + "default": true, + "type": "boolean" + }, + "generateUpdatesFilesForAllChannels": { + "description": "Please see [Building and Releasing using Channels](https://github.com/electron-userland/electron-builder/issues/1182#issuecomment-324947139).", + "default": false, + "type": "boolean" + }, + "releaseInfo": { + "description": "The release info. Intended for command line usage:\n\n```\n-c.releaseInfo.releaseNotes=\"new features\"\n```", + "$ref": "#/definitions/ReleaseInfo" + }, + "target": { + "anyOf": [ + { + "$ref": "#/definitions/TargetConfiguration" + }, + { + "type": "array", + "items": { + "anyOf": [ + { + "$ref": "#/definitions/TargetConfiguration" + }, + { + "type": "string" + } + ] + } + }, + { + "type": [ + "null", + "string" + ] + } + ] + }, + "cscLink": { + "type": [ + "null", + "string" + ] + }, + "cscKeyPassword": { + "type": [ + "null", + "string" + ] + }, + "defaultArch": { + "type": "string" + } + } + }, + "Promise": { + "type": "object", + "properties": { + "__@toStringTag": { + "type": "string" + } + }, + "required": [ + "__@toStringTag" + ] + }, + "Lazy": { + "type": "object", + "properties": { + "_value": {}, + "creator": {}, + "hasValue": { + "type": "boolean" + }, + "value": { + "$ref": "#/definitions/Promise" + } + }, + "required": [ + "_value", + "creator", + "hasValue", + "value" + ] + }, + "AppInfo": { + "type": "object", + "properties": { + "description": { + "type": "string" + }, + "version": { + "type": "string" + }, + "shortVersion": { + "type": "string" + }, + "shortVersionWindows": { + "type": "string" + }, + "buildNumber": { + "type": "string" + }, + "buildVersion": { + "type": "string" + }, + "productName": { + "type": "string" + }, + "sanitizedProductName": { + "type": "string" + }, + "productFilename": { + "type": "string" + }, + "info": { + "$ref": "#/definitions/Packager" + }, + "platformSpecificOptions": { + "anyOf": [ + { + "$ref": "#/definitions/PlatformSpecificBuildOptions" + }, + { + "type": "null" + } + ], + "default": null + }, + "channel": { + "type": [ + "null", + "string" + ] + }, + "notNullDevMetadata": { + "$ref": "#/definitions/Metadata" + }, + "companyName": { + "type": [ + "null", + "string" + ] + }, + "id": { + "type": "string" + }, + "macBundleIdentifier": { + "type": "string" + }, + "name": { + "type": "string" + }, + "linuxPackageName": { + "type": "string" + }, + "sanitizedName": { + "type": "string" + }, + "updaterCacheDirName": { + "type": "string" + }, + "copyright": { + "type": "string" + } + }, + "required": [ + "buildVersion", + "channel", + "companyName", + "copyright", + "description", + "id", + "info", + "linuxPackageName", + "macBundleIdentifier", + "name", + "notNullDevMetadata", + "platformSpecificOptions", + "productFilename", + "productName", + "sanitizedName", + "sanitizedProductName", + "updaterCacheDirName", + "version" + ] + }, + "Packager": { + "type": "object", + "properties": { + "projectDir": { + "type": "string" + }, + "_appDir": { + "type": "string" + }, + "appDir": { + "type": "string" + }, + "_metadata": { + "anyOf": [ + { + "$ref": "#/definitions/Metadata" + }, + { + "type": "null" + } + ], + "default": null + }, + "metadata": { + "$ref": "#/definitions/Metadata" + }, + "_nodeModulesHandledExternally": { + "type": "boolean", + "default": false + }, + "areNodeModulesHandledExternally": { + "type": "boolean" + }, + "_isPrepackedAppAsar": { + "type": "boolean", + "default": false + }, + "isPrepackedAppAsar": { + "type": "boolean" + }, + "_devMetadata": { + "anyOf": [ + { + "$ref": "#/definitions/Metadata" + }, + { + "type": "null" + } + ], + "default": null + }, + "devMetadata": { + "anyOf": [ + { + "$ref": "#/definitions/Metadata" + }, + { + "type": "null" + } + ] + }, + "_configuration": { + "anyOf": [ + { + "$ref": "#/definitions/Configuration" + }, + { + "type": "null" + } + ], + "default": null + }, + "config": { + "$ref": "#/definitions/Configuration" + }, + "isTwoPackageJsonProjectLayoutUsed": { + "type": "boolean", + "default": false + }, + "eventEmitter": { + "$ref": "#/definitions/EventEmitter" + }, + "_appInfo": { + "anyOf": [ + { + "$ref": "#/definitions/AppInfo" + }, + { + "type": "null" + } + ], + "default": null + }, + "appInfo": { + "$ref": "#/definitions/AppInfo" + }, + "tempDirManager": { + "$ref": "#/definitions/TmpDir" + }, + "_repositoryInfo": { + "$ref": "#/definitions/Lazy" + }, + "afterPackHandlers": { + "type": "array", + "items": { + "type": "object" + }, + "default": [] + }, + "options": { + "$ref": "#/definitions/PackagerOptions" + }, + "debugLogger": { + "$ref": "#/definitions/DebugLogger" + }, + "repositoryInfo": { + "$ref": "#/definitions/Promise" + }, + "nodeDependencyInfo": { + "$ref": "#/definitions/Map>" + }, + "stageDirPathCustomizer": { + "type": "object" + }, + "_buildResourcesDir": { + "type": [ + "null", + "string" + ], + "default": null + }, + "buildResourcesDir": { + "type": "string" + }, + "relativeBuildResourcesDirname": { + "type": "string" + }, + "_framework": { + "anyOf": [ + { + "$ref": "#/definitions/Framework" + }, + { + "type": "null" + } + ], + "default": null + }, + "framework": { + "$ref": "#/definitions/Framework" + }, + "toDispose": { + "type": "array", + "items": { + "type": "object" + }, + "default": [] + }, + "cancellationToken": { + "$ref": "#/definitions/CancellationToken" + } + }, + "required": [ + "_appDir", + "_appInfo", + "_buildResourcesDir", + "_configuration", + "_devMetadata", + "_framework", + "_isPrepackedAppAsar", + "_metadata", + "_nodeModulesHandledExternally", + "_repositoryInfo", + "afterPackHandlers", + "appDir", + "appInfo", + "areNodeModulesHandledExternally", + "buildResourcesDir", + "cancellationToken", + "config", + "debugLogger", + "devMetadata", + "eventEmitter", + "framework", + "isPrepackedAppAsar", + "isTwoPackageJsonProjectLayoutUsed", + "metadata", + "nodeDependencyInfo", + "options", + "projectDir", + "relativeBuildResourcesDirname", + "repositoryInfo", + "stageDirPathCustomizer", + "tempDirManager", + "toDispose" + ] + }, + "Metadata": { + "type": "object", + "properties": { + "name": { + "description": "The application name.", + "type": "string" + }, + "description": { + "description": "The application description.", + "type": "string" + }, + "homepage": { + "description": "The url to the project [homepage](https://docs.npmjs.com/files/package.json#homepage) (NuGet Package `projectUrl` (optional) or Linux Package URL (required)).\n\nIf not specified and your project repository is public on GitHub, it will be `https://github.com/${user}/${project}` by default.", + "type": [ + "null", + "string" + ] + }, + "license": { + "description": "*linux-only.* The [license](https://docs.npmjs.com/files/package.json#license) name.", + "type": [ + "null", + "string" + ] + }, + "author": { + "anyOf": [ + { + "$ref": "#/definitions/AuthorMetadata" + }, + { + "type": "null" + } + ] + }, + "repository": { + "description": "The [repository](https://docs.npmjs.com/files/package.json#repository).", + "anyOf": [ + { + "$ref": "#/definitions/RepositoryInfo" + }, + { + "type": [ + "null", + "string" + ] + } + ] + }, + "build": { + "description": "The electron-builder configuration.", + "$ref": "#/definitions/Configuration" + }, + "dependencies": { + "type": "object", + "additionalProperties": { + "type": "string" + } + }, + "version": { + "type": "string" + }, + "shortVersion": { + "type": [ + "null", + "string" + ] + }, + "shortVersionWindows": { + "type": [ + "null", + "string" + ] + }, + "productName": { + "type": [ + "null", + "string" + ] + }, + "main": { + "type": [ + "null", + "string" + ] + } + } + }, + "AuthorMetadata": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "email": { + "type": "string" + } + }, + "required": [ + "name" + ] + }, + "RepositoryInfo": { + "type": "object", + "properties": { + "url": { + "type": "string" + } + }, + "required": [ + "url" + ] + }, + "EventEmitter": { + "description": "The `EventEmitter` class is defined and exposed by the `events` module:\n\n```js\nconst EventEmitter = require('events');\n```\n\nAll `EventEmitter`s emit the event `'newListener'` when new listeners are\nadded and `'removeListener'` when existing listeners are removed.\n\nIt supports the following option:", + "type": "object" + }, + "TmpDir": { + "type": "object", + "properties": { + "debugName": {}, + "tempFiles": {}, + "registered": {}, + "rootTempDir": { + "$ref": "#/definitions/Promise" + } + }, + "required": [ + "debugName", + "registered", + "rootTempDir", + "tempFiles" + ] + }, + "Promise": { + "type": "object", + "properties": { + "__@toStringTag": { + "type": "string" + } + }, + "required": [ + "__@toStringTag" + ] + }, + "Lazy": { + "type": "object", + "properties": { + "_value": {}, + "creator": {}, + "hasValue": { + "type": "boolean" + }, + "value": { + "$ref": "#/definitions/Promise" + } + }, + "required": [ + "_value", + "creator", + "hasValue", + "value" + ] + }, + "Promise": { + "type": "object", + "properties": { + "__@toStringTag": { + "type": "string" + } + }, + "required": [ + "__@toStringTag" + ] + }, + "DebugLogger": { + "type": "object", + "properties": { + "isEnabled": { + "type": "boolean" + }, + "data": {} + }, + "required": [ + "data", + "isEnabled" + ] + }, + "Map>": { + "type": "object", + "properties": { + "size": { + "type": "number" + }, + "__@toStringTag": { + "type": "string" + } + }, + "required": [ + "__@toStringTag", + "size" + ] + }, + "Framework": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "version": { + "type": "string" + }, + "distMacOsAppName": { + "type": "string" + }, + "macOsDefaultTargets": { + "type": "array", + "items": { + "type": "string" + } + }, + "defaultAppIdPrefix": { + "type": "string" + }, + "isNpmRebuildRequired": { + "type": "boolean" + }, + "isCopyElevateHelper": { + "type": "boolean" + } + }, + "required": [ + "defaultAppIdPrefix", + "distMacOsAppName", + "isCopyElevateHelper", + "isNpmRebuildRequired", + "macOsDefaultTargets", + "name", + "version" + ] + }, + "CancellationToken": { + "type": "object", + "properties": { + "parentCancelHandler": {}, + "_cancelled": {}, + "cancelled": { + "type": "boolean" + }, + "_parent": {}, + "parent": { + "$ref": "#/definitions/CancellationToken" + }, + "onCancel": {}, + "removeParentCancelHandler": {} + }, + "required": [ + "_cancelled", + "_parent", + "cancelled", + "onCancel", + "parent", + "parentCancelHandler", + "removeParentCancelHandler" + ] + }, + "PlatformSpecificBuildOptions": { + "type": "object", + "properties": { + "appId": { + "description": "The application id. Used as [CFBundleIdentifier](https://developer.apple.com/library/ios/documentation/General/Reference/InfoPlistKeyReference/Articles/CoreFoundationKeys.html#//apple_ref/doc/uid/20001431-102070) for MacOS and as\n[Application User Model ID](https://msdn.microsoft.com/en-us/library/windows/desktop/dd378459(v=vs.85).aspx) for Windows (NSIS target only, Squirrel.Windows not supported). It is strongly recommended that an explicit ID is set.", + "default": "com.electron.${name}", + "type": [ + "null", + "string" + ] + }, + "artifactName": { + "description": "The [artifact file name template](/configuration/configuration#artifact-file-name-template). Defaults to `${productName}-${version}.${ext}` (some target can have other defaults, see corresponding options).", + "type": [ + "null", + "string" + ] + }, + "executableName": { + "description": "The executable name. Defaults to `productName`.", + "type": [ + "null", + "string" + ] + }, + "compression": { + "description": "The compression level. If you want to rapidly test build, `store` can reduce build time significantly. `maximum` doesn't lead to noticeable size difference, but increase build time.", + "default": "normal", + "anyOf": [ + { + "enum": [ + "maximum", + "normal", + "store" + ], + "type": "string" + }, + { + "type": "null" + } + ] + }, + "files": { + "anyOf": [ + { + "$ref": "#/definitions/FileSet" + }, + { + "type": "array", + "items": { + "anyOf": [ + { + "$ref": "#/definitions/FileSet" + }, + { + "type": "string" + } + ] + } + }, + { + "type": [ + "null", + "string" + ] + } + ] + }, + "extraResources": { + "anyOf": [ + { + "$ref": "#/definitions/FileSet" + }, + { + "type": "array", + "items": { + "anyOf": [ + { + "$ref": "#/definitions/FileSet" + }, + { + "type": "string" + } + ] + } + }, + { + "type": [ + "null", + "string" + ] + } + ] + }, + "extraFiles": { + "anyOf": [ + { + "$ref": "#/definitions/FileSet" + }, + { + "type": "array", + "items": { + "anyOf": [ + { + "$ref": "#/definitions/FileSet" + }, + { + "type": "string" + } + ] + } + }, + { + "type": [ + "null", + "string" + ] + } + ] + }, + "asar": { + "description": "Whether to package the application's source code into an archive, using [Electron's archive format](http://electron.atom.io/docs/tutorial/application-packaging/).\n\nNode modules, that must be unpacked, will be detected automatically, you don't need to explicitly set [asarUnpack](#configuration-asarUnpack) - please file an issue if this doesn't work.", + "default": true, + "anyOf": [ + { + "$ref": "#/definitions/AsarOptions" + }, + { + "type": [ + "null", + "boolean" + ] + } + ] + }, + "asarUnpack": { + "description": "A [glob patterns](/file-patterns) relative to the [app directory](#MetadataDirectories-app), which specifies which files to unpack when creating the [asar](http://electron.atom.io/docs/tutorial/application-packaging/) archive.", + "anyOf": [ + { + "type": "array", + "items": { + "type": "string" + } + }, + { + "type": [ + "null", + "string" + ] + } + ] + }, + "icon": { + "type": [ + "null", + "string" + ] + }, + "fileAssociations": { + "description": "The file associations.", + "anyOf": [ + { + "$ref": "#/definitions/FileAssociation" + }, + { + "type": "array", + "items": { + "$ref": "#/definitions/FileAssociation" + } + } + ] + }, + "protocols": { + "description": "The URL protocol schemes.", + "anyOf": [ + { + "$ref": "#/definitions/Protocol" + }, + { + "type": "array", + "items": { + "$ref": "#/definitions/Protocol" + } + } + ] + }, + "forceCodeSigning": { + "description": "Whether to fail if app will be not code signed.", + "type": "boolean" + }, + "electronUpdaterCompatibility": { + "description": "The [electron-updater compatibility](/auto-update#compatibility) semver range.", + "type": [ + "null", + "string" + ] + }, + "publish": { + "anyOf": [ + { + "$ref": "#/definitions/GithubOptions" + }, + { + "$ref": "#/definitions/S3Options" + }, + { + "$ref": "#/definitions/SpacesOptions" + }, + { + "$ref": "#/definitions/GenericServerOptions" + }, + { + "$ref": "#/definitions/BintrayOptions" + }, + { + "$ref": "#/definitions/CustomPublishOptions" + }, + { + "$ref": "#/definitions/KeygenOptions" + }, + { + "$ref": "#/definitions/SnapStoreOptions" + }, + { + "type": "array", + "items": { + "anyOf": [ + { + "$ref": "#/definitions/GithubOptions" + }, + { + "$ref": "#/definitions/S3Options" + }, + { + "$ref": "#/definitions/SpacesOptions" + }, + { + "$ref": "#/definitions/GenericServerOptions" + }, + { + "$ref": "#/definitions/BintrayOptions" + }, + { + "$ref": "#/definitions/CustomPublishOptions" + }, + { + "$ref": "#/definitions/KeygenOptions" + }, + { + "$ref": "#/definitions/SnapStoreOptions" + }, + { + "type": "string" + } + ] + } + }, + { + "type": [ + "null", + "string" + ] + } + ] + }, + "detectUpdateChannel": { + "description": "Whether to infer update channel from application version pre-release components. e.g. if version `0.12.1-alpha.1`, channel will be set to `alpha`. Otherwise to `latest`.", + "default": true, + "type": "boolean" + }, + "generateUpdatesFilesForAllChannels": { + "description": "Please see [Building and Releasing using Channels](https://github.com/electron-userland/electron-builder/issues/1182#issuecomment-324947139).", + "default": false, + "type": "boolean" + }, + "releaseInfo": { + "description": "The release info. Intended for command line usage:\n\n```\n-c.releaseInfo.releaseNotes=\"new features\"\n```", + "$ref": "#/definitions/ReleaseInfo" + }, + "target": { + "anyOf": [ + { + "$ref": "#/definitions/TargetConfiguration" + }, + { + "type": "array", + "items": { + "anyOf": [ + { + "$ref": "#/definitions/TargetConfiguration" + }, + { + "type": "string" + } + ] + } + }, + { + "type": [ + "null", + "string" + ] + } + ] + }, + "cscLink": { + "type": [ + "null", + "string" + ] + }, + "cscKeyPassword": { + "type": [ + "null", + "string" + ] + }, + "defaultArch": { + "type": "string" + } + } + }, + "Platform": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "buildConfigurationKey": { + "type": "string" + }, + "nodeName": { + "$ref": "#/definitions/global.NodeJS.Platform" + } + }, + "required": [ + "buildConfigurationKey", + "name", + "nodeName" + ] + }, + "global.NodeJS.Platform": { + "enum": [ + "aix", + "android", + "cygwin", + "darwin", + "freebsd", + "haiku", + "linux", + "netbsd", + "openbsd", + "sunos", + "win32" + ], + "type": "string" + }, + "CompressionLevel": { + "enum": [ + "maximum", + "normal", + "store" + ], + "type": "string" + }, + "Arch": { + "enum": [ + 0, + 1, + 2, + 3, + 4 + ], + "type": "number" + }, + "Target": { + "oneOf": [ + { + "$ref": "#/definitions/FakeTarget" + }, + { + "$ref": "#/definitions/default" + }, + { + "$ref": "#/definitions/NsisTarget" + }, + { + "$ref": "#/definitions/ArchiveTarget" + }, + { + "$ref": "#/definitions/NoOpTarget" + }, + { + "$ref": "#/definitions/default_1" + }, + { + "$ref": "#/definitions/default_2" + }, + { + "$ref": "#/definitions/default_3" + }, + { + "$ref": "#/definitions/default_4" + }, + { + "$ref": "#/definitions/RemoteTarget" + }, + { + "$ref": "#/definitions/PkgTarget" + } + ] + }, + "FakeTarget": { + "type": "object", + "properties": { + "outDir": { + "type": "string" + }, + "options": { + "anyOf": [ + { + "$ref": "#/definitions/TargetSpecificOptions" + }, + { + "type": "null" + } + ] + }, + "name": { + "type": "string" + }, + "isAsyncSupported": { + "type": "boolean", + "default": true + } + }, + "required": [ + "isAsyncSupported", + "name", + "outDir" + ] + }, + "TargetSpecificOptions": { + "type": "object", + "properties": { + "artifactName": { + "description": "The [artifact file name template](/configuration/configuration#artifact-file-name-template).", + "type": [ + "null", + "string" + ] + }, + "publish": { + "anyOf": [ + { + "$ref": "#/definitions/GithubOptions" + }, + { + "$ref": "#/definitions/S3Options" + }, + { + "$ref": "#/definitions/SpacesOptions" + }, + { + "$ref": "#/definitions/GenericServerOptions" + }, + { + "$ref": "#/definitions/BintrayOptions" + }, + { + "$ref": "#/definitions/CustomPublishOptions" + }, + { + "$ref": "#/definitions/KeygenOptions" + }, + { + "$ref": "#/definitions/SnapStoreOptions" + }, + { + "type": "array", + "items": { + "anyOf": [ + { + "$ref": "#/definitions/GithubOptions" + }, + { + "$ref": "#/definitions/S3Options" + }, + { + "$ref": "#/definitions/SpacesOptions" + }, + { + "$ref": "#/definitions/GenericServerOptions" + }, + { + "$ref": "#/definitions/BintrayOptions" + }, + { + "$ref": "#/definitions/CustomPublishOptions" + }, + { + "$ref": "#/definitions/KeygenOptions" + }, + { + "$ref": "#/definitions/SnapStoreOptions" + }, + { + "type": "string" + } + ] + } + }, + { + "type": [ + "null", + "string" + ] + } + ] + } + } + }, + "default": { + "type": "object", + "properties": { + "options": { + "$ref": "#/definitions/AppXOptions" + }, + "packager": { + "$ref": "#/definitions/WinPackager" + }, + "outDir": { + "type": "string" + }, + "name": { + "type": "string" + }, + "isAsyncSupported": { + "type": "boolean", + "default": true + } + }, + "required": [ + "isAsyncSupported", + "name", + "options", + "outDir", + "packager" + ] + }, + "WinPackager": { + "type": "object", + "properties": { + "cscInfo": { + "$ref": "#/definitions/Lazy" + }, + "_iconPath": { + "$ref": "#/definitions/Lazy" + }, + "vm": { + "$ref": "#/definitions/Lazy" + }, + "computedPublisherName": { + "$ref": "#/definitions/Lazy" + }, + "lazyCertInfo": { + "$ref": "#/definitions/Lazy" + }, + "isForceCodeSigningVerification": { + "type": "boolean" + }, + "defaultTarget": { + "type": "array", + "items": { + "type": "string" + } + }, + "packagerOptions": { + "$ref": "#/definitions/PackagerOptions" + }, + "buildResourcesDir": { + "type": "string" + }, + "projectDir": { + "type": "string" + }, + "config": { + "$ref": "#/definitions/Configuration" + }, + "platformSpecificBuildOptions": { + "$ref": "#/definitions/WindowsConfiguration" + }, + "resourceList": { + "$ref": "#/definitions/Promise" + }, + "_resourceList": { + "$ref": "#/definitions/Lazy" + }, + "appInfo": { + "$ref": "#/definitions/AppInfo" + }, + "info": { + "$ref": "#/definitions/Packager" + }, + "platform": { + "$ref": "#/definitions/Platform" + }, + "compression": { + "$ref": "#/definitions/CompressionLevel" + }, + "debugLogger": { + "$ref": "#/definitions/DebugLogger" + }, + "fileAssociations": { + "type": "array", + "items": { + "$ref": "#/definitions/FileAssociation" + } + }, + "forceCodeSigning": { + "type": "boolean" + } + }, + "required": [ + "_iconPath", + "_resourceList", + "appInfo", + "buildResourcesDir", + "compression", + "computedPublisherName", + "config", + "cscInfo", + "debugLogger", + "defaultTarget", + "fileAssociations", + "forceCodeSigning", + "info", + "isForceCodeSigningVerification", + "lazyCertInfo", + "packagerOptions", + "platform", + "platformSpecificBuildOptions", + "projectDir", + "resourceList", + "vm" + ] + }, + "Lazy": { + "type": "object", + "properties": { + "_value": {}, + "creator": {}, + "hasValue": { + "type": "boolean" + }, + "value": { + "$ref": "#/definitions/Promise" + } + }, + "required": [ + "_value", + "creator", + "hasValue", + "value" + ] + }, + "Promise": { + "type": "object", + "properties": { + "__@toStringTag": { + "type": "string" + } + }, + "required": [ + "__@toStringTag" + ] + }, + "Lazy": { + "type": "object", + "properties": { + "_value": {}, + "creator": {}, + "hasValue": { + "type": "boolean" + }, + "value": { + "$ref": "#/definitions/Promise" + } + }, + "required": [ + "_value", + "creator", + "hasValue", + "value" + ] + }, + "Promise": { + "type": "object", + "properties": { + "__@toStringTag": { + "type": "string" + } + }, + "required": [ + "__@toStringTag" + ] + }, + "Lazy": { + "type": "object", + "properties": { + "_value": {}, + "creator": {}, + "hasValue": { + "type": "boolean" + }, + "value": { + "$ref": "#/definitions/Promise" + } + }, + "required": [ + "_value", + "creator", + "hasValue", + "value" + ] + }, + "Promise": { + "type": "object", + "properties": { + "__@toStringTag": { + "type": "string" + } + }, + "required": [ + "__@toStringTag" + ] + }, + "Lazy": { + "type": "object", + "properties": { + "_value": {}, + "creator": {}, + "hasValue": { + "type": "boolean" + }, + "value": { + "$ref": "#/definitions/Promise" + } + }, + "required": [ + "_value", + "creator", + "hasValue", + "value" + ] + }, + "Promise": { + "type": "object", + "properties": { + "__@toStringTag": { + "type": "string" + } + }, + "required": [ + "__@toStringTag" + ] + }, + "Lazy": { + "type": "object", + "properties": { + "_value": {}, + "creator": {}, + "hasValue": { + "type": "boolean" + }, + "value": { + "$ref": "#/definitions/Promise" + } + }, + "required": [ + "_value", + "creator", + "hasValue", + "value" + ] + }, + "Promise": { + "type": "object", + "properties": { + "__@toStringTag": { + "type": "string" + } + }, + "required": [ + "__@toStringTag" + ] + }, + "NsisTarget": { + "type": "object", + "properties": { + "options": { + "$ref": "#/definitions/NsisOptions" + }, + "archs": { + "$ref": "#/definitions/Map" + }, + "packager": { + "$ref": "#/definitions/WinPackager" + }, + "outDir": { + "type": "string" + }, + "packageHelper": { + "$ref": "#/definitions/AppPackageHelper" + }, + "isBuildDifferentialAware": { + "type": "boolean" + }, + "installerFilenamePattern": { + "type": "string" + }, + "isPortable": { + "type": "boolean" + }, + "isUnicodeEnabled": { + "type": "boolean" + }, + "isWebInstaller": { + "type": "boolean" + }, + "name": { + "type": "string" + }, + "isAsyncSupported": { + "type": "boolean", + "default": true + } + }, + "required": [ + "archs", + "installerFilenamePattern", + "isAsyncSupported", + "isBuildDifferentialAware", + "isPortable", + "isUnicodeEnabled", + "isWebInstaller", + "name", + "options", + "outDir", + "packageHelper", + "packager" + ] + }, + "Map": { + "type": "object", + "properties": { + "size": { + "type": "number" + }, + "__@toStringTag": { + "type": "string" + } + }, + "required": [ + "__@toStringTag", + "size" + ] + }, + "AppPackageHelper": { + "type": "object", + "properties": { + "archToFileInfo": { + "$ref": "#/definitions/Map>" + }, + "infoToIsDelete": { + "$ref": "#/definitions/Map" + }, + "refCount": { + "type": "number", + "default": 0 + }, + "elevateHelper": { + "$ref": "#/definitions/CopyElevateHelper" + } + }, + "required": [ + "archToFileInfo", + "elevateHelper", + "infoToIsDelete", + "refCount" + ] + }, + "Map>": { + "type": "object", + "properties": { + "size": { + "type": "number" + }, + "__@toStringTag": { + "type": "string" + } + }, + "required": [ + "__@toStringTag", + "size" + ] + }, + "Map": { + "type": "object", + "properties": { + "size": { + "type": "number" + }, + "__@toStringTag": { + "type": "string" + } + }, + "required": [ + "__@toStringTag", + "size" + ] + }, + "CopyElevateHelper": { + "type": "object", + "properties": { + "copied": { + "$ref": "#/definitions/Map>" + } + }, + "required": [ + "copied" + ] + }, + "Map>": { + "type": "object", + "properties": { + "size": { + "type": "number" + }, + "__@toStringTag": { + "type": "string" + } + }, + "required": [ + "__@toStringTag", + "size" + ] + }, + "ArchiveTarget": { + "type": "object", + "properties": { + "options": { + "$ref": "#/definitions/TargetSpecificOptions" + }, + "outDir": { + "type": "string" + }, + "packager": { + "$ref": "#/definitions/PlatformPackager" + }, + "isWriteUpdateInfo": { + "type": "boolean", + "default": false + }, + "name": { + "type": "string" + }, + "isAsyncSupported": { + "type": "boolean", + "default": true + } + }, + "required": [ + "isAsyncSupported", + "isWriteUpdateInfo", + "name", + "options", + "outDir", + "packager" + ] + }, + "NoOpTarget": { + "type": "object", + "properties": { + "options": { + "type": "null", + "default": null + }, + "outDir": { + "type": "string" + }, + "name": { + "type": "string" + }, + "isAsyncSupported": { + "type": "boolean", + "default": true + } + }, + "required": [ + "isAsyncSupported", + "name", + "options", + "outDir" + ] + }, + "default_1": { + "type": "object", + "properties": { + "options": { + "$ref": "#/definitions/AppImageOptions" + }, + "desktopEntry": { + "$ref": "#/definitions/Lazy" + }, + "packager": { + "$ref": "#/definitions/LinuxPackager" + }, + "helper": { + "$ref": "#/definitions/LinuxTargetHelper" + }, + "outDir": { + "type": "string" + }, + "name": { + "type": "string" + }, + "isAsyncSupported": { + "type": "boolean", + "default": true + } + }, + "required": [ + "desktopEntry", + "helper", + "isAsyncSupported", + "name", + "options", + "outDir", + "packager" + ] + }, + "Lazy": { + "type": "object", + "properties": { + "_value": {}, + "creator": {}, + "hasValue": { + "type": "boolean" + }, + "value": { + "$ref": "#/definitions/Promise" + } + }, + "required": [ + "_value", + "creator", + "hasValue", + "value" + ] + }, + "LinuxPackager": { + "type": "object", + "properties": { + "executableName": { + "type": "string" + }, + "defaultTarget": { + "type": "array", + "items": { + "type": "string" + } + }, + "packagerOptions": { + "$ref": "#/definitions/PackagerOptions" + }, + "buildResourcesDir": { + "type": "string" + }, + "projectDir": { + "type": "string" + }, + "config": { + "$ref": "#/definitions/Configuration" + }, + "platformSpecificBuildOptions": { + "$ref": "#/definitions/LinuxConfiguration" + }, + "resourceList": { + "$ref": "#/definitions/Promise" + }, + "_resourceList": { + "$ref": "#/definitions/Lazy" + }, + "appInfo": { + "$ref": "#/definitions/AppInfo" + }, + "info": { + "$ref": "#/definitions/Packager" + }, + "platform": { + "$ref": "#/definitions/Platform" + }, + "compression": { + "$ref": "#/definitions/CompressionLevel" + }, + "debugLogger": { + "$ref": "#/definitions/DebugLogger" + }, + "fileAssociations": { + "type": "array", + "items": { + "$ref": "#/definitions/FileAssociation" + } + }, + "forceCodeSigning": { + "type": "boolean" + } + }, + "required": [ + "_resourceList", + "appInfo", + "buildResourcesDir", + "compression", + "config", + "debugLogger", + "defaultTarget", + "executableName", + "fileAssociations", + "forceCodeSigning", + "info", + "packagerOptions", + "platform", + "platformSpecificBuildOptions", + "projectDir", + "resourceList" + ] + }, + "LinuxTargetHelper": { + "type": "object", + "properties": { + "iconPromise": { + "$ref": "#/definitions/Lazy" + }, + "mimeTypeFilesPromise": { + "$ref": "#/definitions/Lazy" + }, + "maxIconPath": { + "type": [ + "null", + "string" + ], + "default": null + }, + "packager": { + "$ref": "#/definitions/LinuxPackager" + }, + "icons": { + "$ref": "#/definitions/Promise" + }, + "mimeTypeFiles": { + "$ref": "#/definitions/Promise" + } + }, + "required": [ + "iconPromise", + "icons", + "maxIconPath", + "mimeTypeFiles", + "mimeTypeFilesPromise", + "packager" + ] + }, + "Lazy": { + "type": "object", + "properties": { + "_value": {}, + "creator": {}, + "hasValue": { + "type": "boolean" + }, + "value": { + "$ref": "#/definitions/Promise" + } + }, + "required": [ + "_value", + "creator", + "hasValue", + "value" + ] + }, + "Promise": { + "type": "object", + "properties": { + "__@toStringTag": { + "type": "string" + } + }, + "required": [ + "__@toStringTag" + ] + }, + "default_2": { + "type": "object", + "properties": { + "options": { + "$ref": "#/definitions/FlatpakOptions" + }, + "packager": { + "$ref": "#/definitions/LinuxPackager" + }, + "helper": { + "$ref": "#/definitions/LinuxTargetHelper" + }, + "outDir": { + "type": "string" + }, + "appId": { + "type": "string" + }, + "name": { + "type": "string" + }, + "isAsyncSupported": { + "type": "boolean", + "default": true + } + }, + "required": [ + "appId", + "helper", + "isAsyncSupported", + "name", + "options", + "outDir", + "packager" + ] + }, + "default_3": { + "type": "object", + "properties": { + "options": { + "$ref": "#/definitions/LinuxTargetSpecificOptions" + }, + "scriptFiles": { + "$ref": "#/definitions/Promise" + }, + "packager": { + "$ref": "#/definitions/LinuxPackager" + }, + "helper": { + "$ref": "#/definitions/LinuxTargetHelper" + }, + "outDir": { + "type": "string" + }, + "name": { + "type": "string" + }, + "isAsyncSupported": { + "type": "boolean", + "default": true + } + }, + "required": [ + "helper", + "isAsyncSupported", + "name", + "options", + "outDir", + "packager", + "scriptFiles" + ] + }, + "default_4": { + "type": "object", + "properties": { + "options": { + "$ref": "#/definitions/SnapOptions" + }, + "isUseTemplateApp": { + "type": "boolean", + "default": false + }, + "packager": { + "$ref": "#/definitions/LinuxPackager" + }, + "helper": { + "$ref": "#/definitions/LinuxTargetHelper" + }, + "outDir": { + "type": "string" + }, + "name": { + "type": "string" + }, + "isAsyncSupported": { + "type": "boolean", + "default": true + } + }, + "required": [ + "helper", + "isAsyncSupported", + "isUseTemplateApp", + "name", + "options", + "outDir", + "packager" + ] + }, + "RemoteTarget": { + "type": "object", + "properties": { + "buildTaskManager": { + "$ref": "#/definitions/AsyncTaskManager" + }, + "options": { + "anyOf": [ + { + "$ref": "#/definitions/TargetSpecificOptions" + }, + { + "type": "null" + } + ] + }, + "outDir": { + "type": "string" + }, + "target": { + "$ref": "#/definitions/Target" + }, + "remoteBuilder": { + "$ref": "#/definitions/RemoteBuilder" + }, + "name": { + "type": "string" + }, + "isAsyncSupported": { + "type": "boolean", + "default": true + } + }, + "required": [ + "buildTaskManager", + "isAsyncSupported", + "name", + "outDir", + "remoteBuilder", + "target" + ] + }, + "AsyncTaskManager": { + "type": "object", + "properties": { + "cancellationToken": {}, + "tasks": { + "type": "array", + "items": { + "$ref": "#/definitions/Promise" + } + }, + "errors": {} + }, + "required": [ + "cancellationToken", + "errors", + "tasks" + ] + }, + "Promise": { + "type": "object", + "properties": { + "__@toStringTag": { + "type": "string" + } + }, + "required": [ + "__@toStringTag" + ] + }, + "RemoteBuilder": { + "type": "object", + "properties": { + "toBuild": { + "$ref": "#/definitions/Map" + }, + "buildStarted": { + "type": "boolean", + "default": false + }, + "packager": { + "$ref": "#/definitions/PlatformPackager" + } + }, + "required": [ + "buildStarted", + "packager", + "toBuild" + ] + }, + "Map": { + "type": "object", + "properties": { + "size": { + "type": "number" + }, + "__@toStringTag": { + "type": "string" + } + }, + "required": [ + "__@toStringTag", + "size" + ] + }, + "PkgTarget": { + "type": "object", + "properties": { + "options": { + "$ref": "#/definitions/PkgOptions" + }, + "packager": { + "$ref": "#/definitions/default_5" + }, + "outDir": { + "type": "string" + }, + "name": { + "type": "string" + }, + "isAsyncSupported": { + "type": "boolean", + "default": true + } + }, + "required": [ + "isAsyncSupported", + "name", + "options", + "outDir", + "packager" + ] + }, + "default_5": { + "type": "object", + "properties": { + "codeSigningInfo": { + "$ref": "#/definitions/Lazy" + }, + "_iconPath": { + "$ref": "#/definitions/Lazy" + }, + "defaultTarget": { + "type": "array", + "items": { + "type": "string" + } + }, + "packagerOptions": { + "$ref": "#/definitions/PackagerOptions" + }, + "buildResourcesDir": { + "type": "string" + }, + "projectDir": { + "type": "string" + }, + "config": { + "$ref": "#/definitions/Configuration" + }, + "platformSpecificBuildOptions": { + "$ref": "#/definitions/MacConfiguration" + }, + "resourceList": { + "$ref": "#/definitions/Promise" + }, + "_resourceList": { + "$ref": "#/definitions/Lazy" + }, + "appInfo": { + "$ref": "#/definitions/AppInfo" + }, + "info": { + "$ref": "#/definitions/Packager" + }, + "platform": { + "$ref": "#/definitions/Platform" + }, + "compression": { + "$ref": "#/definitions/CompressionLevel" + }, + "debugLogger": { + "$ref": "#/definitions/DebugLogger" + }, + "fileAssociations": { + "type": "array", + "items": { + "$ref": "#/definitions/FileAssociation" + } + }, + "forceCodeSigning": { + "type": "boolean" + } + }, + "required": [ + "_iconPath", + "_resourceList", + "appInfo", + "buildResourcesDir", + "codeSigningInfo", + "compression", + "config", + "debugLogger", + "defaultTarget", + "fileAssociations", + "forceCodeSigning", + "info", + "packagerOptions", + "platform", + "platformSpecificBuildOptions", + "projectDir", + "resourceList" + ] + }, + "Lazy": { + "type": "object", + "properties": { + "_value": {}, + "creator": {}, + "hasValue": { + "type": "boolean" + }, + "value": { + "$ref": "#/definitions/Promise" + } + }, + "required": [ + "_value", + "creator", + "hasValue", + "value" + ] + }, + "Promise": { + "type": "object", + "properties": { + "__@toStringTag": { + "type": "string" + } + }, + "required": [ + "__@toStringTag" + ] + } + }, + "$schema": "http://json-schema.org/draft-07/schema#" +} \ No newline at end of file diff --git a/packages/app-builder-lib/src/util/config.ts b/packages/app-builder-lib/src/util/config.ts index d9abaabc466..f2638939a13 100644 --- a/packages/app-builder-lib/src/util/config.ts +++ b/packages/app-builder-lib/src/util/config.ts @@ -11,6 +11,8 @@ import { PACKAGE_VERSION } from "../version" // eslint-disable-next-line @typescript-eslint/no-var-requires const validateSchema = require("@develar/schema-utils") +import * as schema from "../schema/configuration.jsc" + // https://github.com/electron-userland/electron-builder/issues/1847 function mergePublish(config: Configuration, configFromOptions: Configuration) { // if config from disk doesn't have publish (or object), no need to handle, it will be simply merged by deepAssign @@ -215,8 +217,6 @@ function getDefaultConfig(): Configuration { } } -const schemeDataPromise = new Lazy(() => readJson(path.join(__dirname, "..", "..", "scheme.json"))) - export async function validateConfig(config: Configuration, debugLogger: DebugLogger) { const extraMetadata = config.extraMetadata if (extraMetadata != null) { @@ -237,7 +237,7 @@ export async function validateConfig(config: Configuration, debugLogger: DebugLo } // noinspection JSUnusedGlobalSymbols - validateSchema(await schemeDataPromise.value, config, { + validateSchema(schema, config, { name: `electron-builder ${PACKAGE_VERSION}`, postFormatter: (formattedError: string, error: any): string => { if (debugLogger.isEnabled) { diff --git a/packages/builder-util-runtime/src/httpExecutor.ts b/packages/builder-util-runtime/src/httpExecutor.ts index fec3da81367..80ef066408f 100644 --- a/packages/builder-util-runtime/src/httpExecutor.ts +++ b/packages/builder-util-runtime/src/httpExecutor.ts @@ -66,16 +66,29 @@ export function parseJson(result: Promise) { return result.then(it => (it == null || it.length === 0 ? null : JSON.parse(it))) } -export abstract class HttpExecutor { +interface Request { + abort: () => void + end: () => void +} +export abstract class HttpExecutor { protected readonly maxRedirects = 10 request(options: RequestOptions, cancellationToken: CancellationToken = new CancellationToken(), data?: { [name: string]: any } | null): Promise { configureRequestOptions(options) - const encodedData = data == null ? undefined : Buffer.from(JSON.stringify(data)) + const json = data == null ? undefined : JSON.stringify(data) + const encodedData = json ? Buffer.from(json) : undefined if (encodedData != null) { - options.method = "post" - options.headers!["Content-Type"] = "application/json" - options.headers!["Content-Length"] = encodedData.length + debug(json!) + const { headers, ...opts } = options + options = { + method: "post", + headers: { + "Content-Type": "application/json", + "Content-Length": encodedData.length, + ...headers, + }, + ...opts, + } } return this.doApiRequest(options, cancellationToken, it => { ;(it as any).end(encodedData) @@ -85,7 +98,7 @@ export abstract class HttpExecutor { doApiRequest( options: RequestOptions, cancellationToken: CancellationToken, - requestProcessor: (request: REQUEST, reject: (error: Error) => void) => void, + requestProcessor: (request: T, reject: (error: Error) => void) => void, redirectCount = 0 ): Promise { if (debug.enabled) { @@ -130,7 +143,7 @@ export abstract class HttpExecutor { resolve: (data?: any) => void, reject: (error: Error) => void, redirectCount: number, - requestProcessor: (request: REQUEST, reject: (error: Error) => void) => void + requestProcessor: (request: T, reject: (error: Error) => void) => void ) { if (debug.enabled) { debug(`Response: ${response.statusCode} ${response.statusMessage}, request options: ${safeStringifyJson(options)}`) @@ -144,7 +157,7 @@ export abstract class HttpExecutor { response, `method: ${options.method || "GET"} url: ${options.protocol || "https:"}//${options.hostname}${options.port ? `:${options.port}` : ""}${options.path} -Please double check that your authentication token is correct. Due to security reasons actual status maybe not reported, but 404. +Please double check that your authentication token is correct. Due to security reasons, actual status maybe not reported, but 404. ` ) ) @@ -176,7 +189,16 @@ Please double check that your authentication token is correct. Due to security r if (response.statusCode != null && response.statusCode >= 400) { const contentType = safeGetHeader(response, "content-type") const isJson = contentType != null && (Array.isArray(contentType) ? contentType.find(it => it.includes("json")) != null : contentType.includes("json")) - reject(createHttpError(response, isJson ? JSON.parse(data) : data)) + reject( + createHttpError( + response, + `method: ${options.method || "GET"} url: ${options.protocol || "https:"}//${options.hostname}${options.port ? `:${options.port}` : ""}${options.path} + + Data: + ${isJson ? JSON.stringify(JSON.parse(data)) : data} + ` + ) + ) } else { resolve(data.length === 0 ? null : data) } @@ -187,7 +209,7 @@ Please double check that your authentication token is correct. Due to security r } // noinspection JSUnusedLocalSymbols - abstract createRequest(options: any, callback: (response: any) => void): any + abstract createRequest(options: any, callback: (response: any) => void): T async downloadToBuffer(url: URL, options: DownloadOptions): Promise { return await options.cancellationToken.createPromise((resolve, reject, onCancel) => { @@ -255,7 +277,7 @@ Please double check that your authentication token is correct. Due to security r }) } - protected doDownload(requestOptions: any, options: DownloadCallOptions, redirectCount: number) { + protected doDownload(requestOptions: RequestOptions, options: DownloadCallOptions, redirectCount: number) { const request = this.createRequest(requestOptions, (response: IncomingMessage) => { if (response.statusCode! >= 400) { options.callback( @@ -310,7 +332,7 @@ Please double check that your authentication token is correct. Due to security r static prepareRedirectUrlOptions(redirectUrl: string, options: RequestOptions): RequestOptions { const newOptions = configureRequestOptionsFromUrl(redirectUrl, { ...options }) const headers = newOptions.headers - if (headers != null && headers.authorization != null && (headers.authorization as string).startsWith("token")) { + if (headers?.authorization) { const parsedNewUrl = new URL(redirectUrl) if (parsedNewUrl.hostname.endsWith(".amazonaws.com") || parsedNewUrl.searchParams.has("X-Amz-Credential")) { delete headers.authorization @@ -467,7 +489,7 @@ export function configureRequestOptions(options: RequestOptions, token?: string const headers = options.headers if (token != null) { - ;(headers as any).authorization = token.startsWith("Basic") ? token : `token ${token}` + ;(headers as any).authorization = token.startsWith("Basic") || token.startsWith("Bearer") ? token : `token ${token}` } if (headers["User-Agent"] == null) { headers["User-Agent"] = "electron-builder" @@ -489,6 +511,7 @@ export function safeStringifyJson(data: any, skippedNames?: Set) { data, (name, value) => { if ( + name.endsWith("Authorization") || name.endsWith("authorization") || name.endsWith("Password") || name.endsWith("PASSWORD") || diff --git a/packages/builder-util-runtime/src/index.ts b/packages/builder-util-runtime/src/index.ts index fba05904f24..17b8007e551 100644 --- a/packages/builder-util-runtime/src/index.ts +++ b/packages/builder-util-runtime/src/index.ts @@ -18,6 +18,7 @@ export { CustomPublishOptions, GenericServerOptions, GithubOptions, + KeygenOptions, PublishConfiguration, S3Options, SpacesOptions, diff --git a/packages/builder-util-runtime/src/publishOptions.ts b/packages/builder-util-runtime/src/publishOptions.ts index dce18a5c77f..f1444f96446 100644 --- a/packages/builder-util-runtime/src/publishOptions.ts +++ b/packages/builder-util-runtime/src/publishOptions.ts @@ -1,9 +1,9 @@ import { OutgoingHttpHeaders } from "http" -export type PublishProvider = "github" | "bintray" | "s3" | "spaces" | "generic" | "custom" | "snapStore" +export type PublishProvider = "github" | "bintray" | "s3" | "spaces" | "generic" | "custom" | "snapStore" | "keygen" // typescript-json-schema generates only PublishConfiguration if it is specified in the list, so, it is not added here -export type AllPublishOptions = string | GithubOptions | S3Options | SpacesOptions | GenericServerOptions | BintrayOptions | CustomPublishOptions +export type AllPublishOptions = string | GithubOptions | S3Options | SpacesOptions | GenericServerOptions | BintrayOptions | CustomPublishOptions | KeygenOptions export interface PublishConfiguration { /** @@ -146,6 +146,39 @@ export interface GenericServerOptions extends PublishConfiguration { readonly useMultipleRangeRequest?: boolean } +/** + * Keygen options. + * https://keygen.sh/ + * Define `KEYGEN_TOKEN` environment variable. + */ +export interface KeygenOptions extends PublishConfiguration { + /** + * The provider. Must be `keygen`. + */ + readonly provider: "keygen" + + /** + * Keygen account's UUID + */ + readonly account: string + + /** + * Keygen product's UUID + */ + readonly product: string + + /** + * The channel. + * @default stable + */ + readonly channel?: string | null + + /** + * The target Platform. Is set programmatically explicitly for publishing. + */ + readonly platform?: string | null +} + export interface BaseS3Options extends PublishConfiguration { /** * The update channel. diff --git a/packages/builder-util/src/nodeHttpExecutor.ts b/packages/builder-util/src/nodeHttpExecutor.ts index 9222d6e202d..616e729d96a 100644 --- a/packages/builder-util/src/nodeHttpExecutor.ts +++ b/packages/builder-util/src/nodeHttpExecutor.ts @@ -5,7 +5,7 @@ import * as https from "https" export class NodeHttpExecutor extends HttpExecutor { // noinspection JSMethodCanBeStatic // noinspection JSUnusedGlobalSymbols - createRequest(options: any, callback: (response: any) => void): any { + createRequest(options: any, callback: (response: any) => void): ClientRequest { return (options.protocol === "http:" ? httpRequest : https.request)(options, callback) } } diff --git a/packages/electron-publish/src/publisher.ts b/packages/electron-publish/src/publisher.ts index f4732f61da9..4dc73a967bf 100644 --- a/packages/electron-publish/src/publisher.ts +++ b/packages/electron-publish/src/publisher.ts @@ -84,7 +84,7 @@ export abstract class HttpPublisher extends Publisher { const fileStat = await stat(task.file) const progressBar = this.createProgressBar(fileName, fileStat.size) - await this.doUpload( + return this.doUpload( fileName, task.arch || Arch.x64, fileStat.size, diff --git a/packages/electron-updater/src/AppUpdater.ts b/packages/electron-updater/src/AppUpdater.ts index 9e0b6d58878..46c80ce3476 100644 --- a/packages/electron-updater/src/AppUpdater.ts +++ b/packages/electron-updater/src/AppUpdater.ts @@ -91,6 +91,15 @@ export abstract class AppUpdater extends EventEmitter { */ requestHeaders: OutgoingHttpHeaders | null = null + /** + * Shortcut for explicitly adding auth tokens to request headers + */ + addAuthHeader(token: string) { + this.requestHeaders = Object.assign({}, this.requestHeaders, { + authorization: token, + }) + } + protected _logger: Logger = console // noinspection JSMethodCanBeStatic,JSUnusedGlobalSymbols diff --git a/packages/electron-updater/src/electronHttpExecutor.ts b/packages/electron-updater/src/electronHttpExecutor.ts index c8e963fd024..037d466723c 100644 --- a/packages/electron-updater/src/electronHttpExecutor.ts +++ b/packages/electron-updater/src/electronHttpExecutor.ts @@ -47,7 +47,7 @@ export class ElectronHttpExecutor extends HttpExecutor { }) } - createRequest(options: any, callback: (response: any) => void): any { + createRequest(options: any, callback: (response: any) => void): Electron.ClientRequest { // fix (node 7+) for making electron updater work when using AWS private buckets, check if headers contain Host property if (options.headers && options.headers.Host) { // set host value from headers.Host @@ -64,7 +64,7 @@ export class ElectronHttpExecutor extends HttpExecutor { const request = require("electron").net.request({ ...options, session: this.cachedSession, - }) + }) as Electron.ClientRequest request.on("response", callback) if (this.proxyLoginCallback != null) { request.on("login", this.proxyLoginCallback) diff --git a/packages/electron-updater/src/providerFactory.ts b/packages/electron-updater/src/providerFactory.ts index 4bebe354055..fac0918b73d 100644 --- a/packages/electron-updater/src/providerFactory.ts +++ b/packages/electron-updater/src/providerFactory.ts @@ -6,6 +6,7 @@ import { GenericServerOptions, getS3LikeProviderBaseUrl, GithubOptions, + KeygenOptions, newError, PublishConfiguration, } from "builder-util-runtime" @@ -13,6 +14,7 @@ import { AppUpdater } from "./AppUpdater" import { BintrayProvider } from "./providers/BintrayProvider" import { GenericProvider } from "./providers/GenericProvider" import { GitHubProvider } from "./providers/GitHubProvider" +import { KeygenProvider } from "./providers/KeygenProvider" import { PrivateGitHubProvider } from "./providers/PrivateGitHubProvider" import { Provider, ProviderRuntimeOptions } from "./providers/Provider" @@ -38,6 +40,9 @@ export function createClient(data: PublishConfiguration | AllPublishOptions, upd } } + case "keygen": + return new KeygenProvider(data as KeygenOptions, updater, runtimeOptions) + case "s3": case "spaces": return new GenericProvider( diff --git a/packages/electron-updater/src/providers/KeygenProvider.ts b/packages/electron-updater/src/providers/KeygenProvider.ts new file mode 100644 index 00000000000..970ffee0855 --- /dev/null +++ b/packages/electron-updater/src/providers/KeygenProvider.ts @@ -0,0 +1,53 @@ +import { CancellationToken, KeygenOptions, newError, UpdateInfo } from "builder-util-runtime" +import { AppUpdater } from "../AppUpdater" +import { ResolvedUpdateFileInfo } from "../main" +import { getChannelFilename, newBaseUrl, newUrlFromBase } from "../util" +import { parseUpdateInfo, Provider, ProviderRuntimeOptions, resolveFiles } from "./Provider" + +export class KeygenProvider extends Provider { + private readonly baseUrl: URL + + constructor(private readonly configuration: KeygenOptions, private readonly updater: AppUpdater, runtimeOptions: ProviderRuntimeOptions) { + super({ + ...runtimeOptions, + isUseMultipleRangeRequest: false, + }) + this.baseUrl = newBaseUrl(`https://api.keygen.sh/v1/accounts/${this.configuration.account}/artifacts`) + } + + protected getDefaultChannelName() { + return this.getCustomChannelName("stable") + } + + private get channel(): string { + const result = this.updater.channel || this.configuration.channel + return result == null ? this.getDefaultChannelName() : this.getCustomChannelName(result) + } + + async getLatestVersion(): Promise { + const cancellationToken = new CancellationToken() + const channelFile = getChannelFilename(this.channel) + const channelUrl = newUrlFromBase(channelFile, this.baseUrl, this.updater.isAddNoCacheQuery) + try { + const updateInfo = await this.httpRequest( + channelUrl, + { + Accept: "application/vnd.api+json", + }, + cancellationToken + ) + return parseUpdateInfo(updateInfo, channelFile, channelUrl) + } catch (e) { + throw newError(`Unable to find latest version on ${this.toString()}, please ensure release exists: ${e.stack || e.message}`, "ERR_UPDATER_LATEST_VERSION_NOT_FOUND") + } + } + + resolveFiles(updateInfo: UpdateInfo): Array { + return resolveFiles(updateInfo, this.baseUrl) + } + + toString() { + const { account, product, platform } = this.configuration + return `Keygen (account: ${account}, product: ${product}, platform: ${platform}, channel: ${this.channel})` + } +} diff --git a/packages/electron-updater/src/providers/Provider.ts b/packages/electron-updater/src/providers/Provider.ts index f8f9ee09752..034830d04b9 100644 --- a/packages/electron-updater/src/providers/Provider.ts +++ b/packages/electron-updater/src/providers/Provider.ts @@ -1,7 +1,8 @@ -import { CancellationToken, HttpExecutor, newError, safeStringifyJson, UpdateFileInfo, UpdateInfo, WindowsUpdateInfo, configureRequestUrl } from "builder-util-runtime" +import { CancellationToken, configureRequestUrl, newError, safeStringifyJson, UpdateFileInfo, UpdateInfo, WindowsUpdateInfo } from "builder-util-runtime" import { OutgoingHttpHeaders, RequestOptions } from "http" import { load } from "js-yaml" import { URL } from "url" +import { ElectronHttpExecutor } from "../electronHttpExecutor" import { ResolvedUpdateFileInfo } from "../main" import { newUrlFromBase } from "../util" @@ -11,12 +12,12 @@ export interface ProviderRuntimeOptions { isUseMultipleRangeRequest: boolean platform: ProviderPlatform - executor: HttpExecutor + executor: ElectronHttpExecutor } export abstract class Provider { private requestHeaders: OutgoingHttpHeaders | null = null - protected readonly executor: HttpExecutor + protected readonly executor: ElectronHttpExecutor protected constructor(private readonly runtimeOptions: ProviderRuntimeOptions) { this.executor = runtimeOptions.executor diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 27b90302684..52715cef4ea 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -4,6 +4,7 @@ importers: .: specifiers: + '@babel/core': ^7 '@babel/plugin-transform-modules-commonjs': 7.14.5 '@changesets/changelog-git': 0.1.7 '@changesets/cli': 2.16.0 @@ -23,14 +24,15 @@ importers: path-sort: 0.1.0 prettier: 2.3.2 source-map-support: 0.5.19 + ts-generate-schema: ^2.0.0 ts-jsdoc: 3.2.2 typescript: 4.3.5 - typescript-json-schema: 0.50.1 v8-compile-cache: 2.3.0 dependencies: dmg-license: 1.0.9 devDependencies: - '@babel/plugin-transform-modules-commonjs': 7.14.5 + '@babel/core': 7.15.0 + '@babel/plugin-transform-modules-commonjs': 7.14.5_@babel+core@7.15.0 '@changesets/changelog-git': 0.1.7 '@changesets/cli': 2.16.0 '@typescript-eslint/eslint-plugin': 4.28.5_fb136327aebe99aff77fb6e94f9d56f0 @@ -48,9 +50,9 @@ importers: path-sort: 0.1.0 prettier: 2.3.2 source-map-support: 0.5.19 + ts-generate-schema: 2.0.0 ts-jsdoc: 3.2.2_typescript@4.3.5 typescript: 4.3.5 - typescript-json-schema: 0.50.1 v8-compile-cache: 2.3.0 packages/app-builder-lib: @@ -456,6 +458,11 @@ packages: resolution: {integrity: sha512-p3QjZmMGHDGdpcwEYYWu7i7oJShJvtgMjJeb0W95PPhSm++3lm8YXYOh45Y6iCN9PkZLTZ7CIX5nFrp7pw7TXw==} engines: {node: '>=6.9.0'} + /@babel/compat-data/7.15.0: + resolution: {integrity: sha512-0NqAC1IJE0S0+lL1SWFMxMkz1pKCNCjI4tr2Zx4LJSXxCLAdr6KyArnY+sno5m3yH9g737ygOyPABDsnXkpxiA==} + engines: {node: '>=6.9.0'} + dev: true + /@babel/core/7.14.8: resolution: {integrity: sha512-/AtaeEhT6ErpDhInbXmjHcUQXH0L0TEgscfcxk1qbOvLuKCa5aZT0SOOtDKFY96/CLROwbLSKyFor6idgNaU4Q==} engines: {node: '>=6.9.0'} @@ -478,6 +485,29 @@ packages: transitivePeerDependencies: - supports-color + /@babel/core/7.15.0: + resolution: {integrity: sha512-tXtmTminrze5HEUPn/a0JtOzzfp0nk+UEXQ/tqIJo3WDGypl/2OFQEMll/zSFU8f/lfmfLXvTaORHF3cfXIQMw==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/code-frame': 7.14.5 + '@babel/generator': 7.15.0 + '@babel/helper-compilation-targets': 7.15.0_@babel+core@7.15.0 + '@babel/helper-module-transforms': 7.15.0 + '@babel/helpers': 7.15.3 + '@babel/parser': 7.15.3 + '@babel/template': 7.14.5 + '@babel/traverse': 7.15.0 + '@babel/types': 7.15.0 + convert-source-map: 1.8.0 + debug: 4.3.2 + gensync: 1.0.0-beta.2 + json5: 2.2.0 + semver: 6.3.0 + source-map: 0.5.7 + transitivePeerDependencies: + - supports-color + dev: true + /@babel/generator/7.14.9: resolution: {integrity: sha512-4yoHbhDYzFa0GLfCzLp5GxH7vPPMAHdZjyE7M/OajM9037zhx0rf+iNsJwp4PT0MSFpwjG7BsHEbPkBQpZ6cYA==} engines: {node: '>=6.9.0'} @@ -486,6 +516,15 @@ packages: jsesc: 2.5.2 source-map: 0.5.7 + /@babel/generator/7.15.0: + resolution: {integrity: sha512-eKl4XdMrbpYvuB505KTta4AV9g+wWzmVBW69tX0H2NwKVKd2YJbKgyK6M8j/rgLbmHOYJn6rUklV677nOyJrEQ==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/types': 7.15.0 + jsesc: 2.5.2 + source-map: 0.5.7 + dev: true + /@babel/helper-annotate-as-pure/7.14.5: resolution: {integrity: sha512-EivH9EgBIb+G8ij1B2jAwSH36WnGvkQSEC6CkX/6v6ZFlw5fVOHvsgGF4uiEHO2GzMvunZb6tDLQEQSdrdocrA==} engines: {node: '>=6.9.0'} @@ -513,6 +552,19 @@ packages: browserslist: 4.16.6 semver: 6.3.0 + /@babel/helper-compilation-targets/7.15.0_@babel+core@7.15.0: + resolution: {integrity: sha512-h+/9t0ncd4jfZ8wsdAsoIxSa61qhBYlycXiHWqJaQBCXAhDCMbPRSMTGnZIkkmt1u4ag+UQmuqcILwqKzZ4N2A==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + dependencies: + '@babel/compat-data': 7.15.0 + '@babel/core': 7.15.0 + '@babel/helper-validator-option': 7.14.5 + browserslist: 4.16.7 + semver: 6.3.0 + dev: true + /@babel/helper-create-class-features-plugin/7.14.8_@babel+core@7.14.8: resolution: {integrity: sha512-bpYvH8zJBWzeqi1o+co8qOrw+EXzQ/0c74gVmY205AWXy9nifHrOg77y+1zwxX5lXE7Icq4sPlSQ4O2kWBrteQ==} engines: {node: '>=6.9.0'} @@ -572,19 +624,19 @@ packages: dependencies: '@babel/helper-get-function-arity': 7.14.5 '@babel/template': 7.14.5 - '@babel/types': 7.14.9 + '@babel/types': 7.15.0 /@babel/helper-get-function-arity/7.14.5: resolution: {integrity: sha512-I1Db4Shst5lewOM4V+ZKJzQ0JGGaZ6VY1jYvMghRjqs6DWgxLCIyFt30GlnKkfUeFLpJt2vzbMVEXVSXlIFYUg==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.14.9 + '@babel/types': 7.15.0 /@babel/helper-hoist-variables/7.14.5: resolution: {integrity: sha512-R1PXiz31Uc0Vxy4OEOm07x0oSjKAdPPCh3tPivn/Eo8cvz6gveAeuyUUPB21Hoiif0uoPQSSdhIPS3352nvdyQ==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.14.9 + '@babel/types': 7.15.0 /@babel/helper-member-expression-to-functions/7.14.7: resolution: {integrity: sha512-TMUt4xKxJn6ccjcOW7c4hlwyJArizskAhoSTOCkA0uZ+KghIaci0Qg9R043kUMWI9mtQfgny+NQ5QATnZ+paaA==} @@ -592,11 +644,18 @@ packages: dependencies: '@babel/types': 7.14.9 + /@babel/helper-member-expression-to-functions/7.15.0: + resolution: {integrity: sha512-Jq8H8U2kYiafuj2xMTPQwkTBnEEdGKpT35lJEQsRRjnG0LW3neucsaMWLgKcwu3OHKNeYugfw+Z20BXBSEs2Lg==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/types': 7.15.0 + dev: true + /@babel/helper-module-imports/7.14.5: resolution: {integrity: sha512-SwrNHu5QWS84XlHwGYPDtCxcA0hrSlL2yhWYLgeOc0w7ccOl2qv4s/nARI0aYZW+bSwAL5CukeXA47B/1NKcnQ==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.14.9 + '@babel/types': 7.15.0 /@babel/helper-module-transforms/7.14.8: resolution: {integrity: sha512-RyE+NFOjXn5A9YU1dkpeBaduagTlZ0+fccnIcAGbv1KGUlReBj7utF7oEth8IdIBQPcux0DDgW5MFBH2xu9KcA==} @@ -613,11 +672,27 @@ packages: transitivePeerDependencies: - supports-color + /@babel/helper-module-transforms/7.15.0: + resolution: {integrity: sha512-RkGiW5Rer7fpXv9m1B3iHIFDZdItnO2/BLfWVW/9q7+KqQSDY5kUfQEbzdXM1MVhJGcugKV7kRrNVzNxmk7NBg==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/helper-module-imports': 7.14.5 + '@babel/helper-replace-supers': 7.15.0 + '@babel/helper-simple-access': 7.14.8 + '@babel/helper-split-export-declaration': 7.14.5 + '@babel/helper-validator-identifier': 7.14.9 + '@babel/template': 7.14.5 + '@babel/traverse': 7.15.0 + '@babel/types': 7.15.0 + transitivePeerDependencies: + - supports-color + dev: true + /@babel/helper-optimise-call-expression/7.14.5: resolution: {integrity: sha512-IqiLIrODUOdnPU9/F8ib1Fx2ohlgDhxnIDU7OEVi+kAbEZcyiF7BLU8W6PfvPi9LzztjS7kcbzbmL7oG8kD6VA==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.14.9 + '@babel/types': 7.15.0 /@babel/helper-plugin-utils/7.14.5: resolution: {integrity: sha512-/37qQCE3K0vvZKwoK4XU/irIJQdIfCJuhU5eKnNxpFDsOkgFaUAwbv+RYw6eYgsC0E4hS7r5KqGULUogqui0fQ==} @@ -645,6 +720,18 @@ packages: transitivePeerDependencies: - supports-color + /@babel/helper-replace-supers/7.15.0: + resolution: {integrity: sha512-6O+eWrhx+HEra/uJnifCwhwMd6Bp5+ZfZeJwbqUTuqkhIT6YcRhiZCOOFChRypOIe0cV46kFrRBlm+t5vHCEaA==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/helper-member-expression-to-functions': 7.15.0 + '@babel/helper-optimise-call-expression': 7.14.5 + '@babel/traverse': 7.15.0 + '@babel/types': 7.15.0 + transitivePeerDependencies: + - supports-color + dev: true + /@babel/helper-simple-access/7.14.8: resolution: {integrity: sha512-TrFN4RHh9gnWEU+s7JloIho2T76GPwRHhdzOWLqTrMnlas8T9O7ec+oEDNsRXndOmru9ymH9DFrEOxpzPoSbdg==} engines: {node: '>=6.9.0'} @@ -662,7 +749,7 @@ packages: resolution: {integrity: sha512-hprxVPu6e5Kdp2puZUmvOGjaLv9TCe58E/Fl6hRq4YiVQxIcNvuq6uTM2r1mT/oPskuS9CgR+I94sqAYv0NGKA==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.14.9 + '@babel/types': 7.15.0 /@babel/helper-validator-identifier/7.14.9: resolution: {integrity: sha512-pQYxPY0UP6IHISRitNe8bsijHex4TWZXi2HwKVsjPiltzlhse2znVcm9Ace510VT1kxIHjGJCZZQBX2gJDbo0g==} @@ -694,6 +781,17 @@ packages: transitivePeerDependencies: - supports-color + /@babel/helpers/7.15.3: + resolution: {integrity: sha512-HwJiz52XaS96lX+28Tnbu31VeFSQJGOeKHJeaEPQlTl7PnlhFElWPj8tUXtqFIzeN86XxXoBr+WFAyK2PPVz6g==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/template': 7.14.5 + '@babel/traverse': 7.15.0 + '@babel/types': 7.15.0 + transitivePeerDependencies: + - supports-color + dev: true + /@babel/highlight/7.14.5: resolution: {integrity: sha512-qf9u2WFWVV0MppaL877j2dBtQIDgmidgjGk5VIMw3OadXvYaXn66U1BFlH2t4+t3i+8PhedppRv+i40ABzd+gg==} engines: {node: '>=6.9.0'} @@ -707,6 +805,11 @@ packages: engines: {node: '>=6.0.0'} hasBin: true + /@babel/parser/7.15.3: + resolution: {integrity: sha512-O0L6v/HvqbdJawj0iBEfVQMc3/6WP+AeOsovsIgBFyJaG+W2w7eqvZB7puddATmWuARlm1SX7DwxJ/JJUnDpEA==} + engines: {node: '>=6.0.0'} + hasBin: true + /@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/7.14.5_@babel+core@7.14.8: resolution: {integrity: sha512-ZoJS2XCKPBfTmL122iP6NM9dOg+d4lc9fFk3zxc8iDjvt8Pk4+TlsHSKhIPf6X+L5ORCdBzqMZDjL/WHj7WknQ==} engines: {node: '>=6.9.0'} @@ -1378,12 +1481,13 @@ packages: - supports-color dev: true - /@babel/plugin-transform-modules-commonjs/7.14.5: + /@babel/plugin-transform-modules-commonjs/7.14.5_@babel+core@7.14.8: resolution: {integrity: sha512-en8GfBtgnydoao2PS+87mKyw62k02k7kJ9ltbKe0fXTHrQmG6QZZflYuGI1VVG7sVpx4E1n7KBpNlPb8m78J+A==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: + '@babel/core': 7.14.8 '@babel/helper-module-transforms': 7.14.8 '@babel/helper-plugin-utils': 7.14.5 '@babel/helper-simple-access': 7.14.8 @@ -1392,13 +1496,13 @@ packages: - supports-color dev: true - /@babel/plugin-transform-modules-commonjs/7.14.5_@babel+core@7.14.8: + /@babel/plugin-transform-modules-commonjs/7.14.5_@babel+core@7.15.0: resolution: {integrity: sha512-en8GfBtgnydoao2PS+87mKyw62k02k7kJ9ltbKe0fXTHrQmG6QZZflYuGI1VVG7sVpx4E1n7KBpNlPb8m78J+A==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.14.8 + '@babel/core': 7.15.0 '@babel/helper-module-transforms': 7.14.8 '@babel/helper-plugin-utils': 7.14.5 '@babel/helper-simple-access': 7.14.8 @@ -1750,8 +1854,8 @@ packages: engines: {node: '>=6.9.0'} dependencies: '@babel/code-frame': 7.14.5 - '@babel/parser': 7.14.9 - '@babel/types': 7.14.9 + '@babel/parser': 7.15.3 + '@babel/types': 7.15.0 /@babel/traverse/7.14.9: resolution: {integrity: sha512-bldh6dtB49L8q9bUyB7bC20UKgU+EFDwKJylwl234Kv+ySZeMD31Xeht6URyueQ6LrRRpF2tmkfcZooZR9/e8g==} @@ -1769,6 +1873,23 @@ packages: transitivePeerDependencies: - supports-color + /@babel/traverse/7.15.0: + resolution: {integrity: sha512-392d8BN0C9eVxVWd8H6x9WfipgVH5IaIoLp23334Sc1vbKKWINnvwRpb4us0xtPaCumlwbTtIYNA0Dv/32sVFw==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/code-frame': 7.14.5 + '@babel/generator': 7.15.0 + '@babel/helper-function-name': 7.14.5 + '@babel/helper-hoist-variables': 7.14.5 + '@babel/helper-split-export-declaration': 7.14.5 + '@babel/parser': 7.15.3 + '@babel/types': 7.15.0 + debug: 4.3.2 + globals: 11.12.0 + transitivePeerDependencies: + - supports-color + dev: true + /@babel/types/7.14.9: resolution: {integrity: sha512-u0bLTnv3DFHeaQLYzb7oRJ1JHr1sv/SYDM7JSqHFFLwXG1wTZRughxFI5NCP8qBEo1rVVsn7Yg2Lvw49nne/Ow==} engines: {node: '>=6.9.0'} @@ -1776,6 +1897,13 @@ packages: '@babel/helper-validator-identifier': 7.14.9 to-fast-properties: 2.0.0 + /@babel/types/7.15.0: + resolution: {integrity: sha512-OBvfqnllOIdX4ojTHpwZbpvz4j3EWyjkZEdmjH0/cgsd6QOdSgU8rLSk6ard/pcW7rlmjdVSX/AWOaORR1uNOQ==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/helper-validator-identifier': 7.14.9 + to-fast-properties: 2.0.0 + /@bcoe/v8-coverage/0.2.3: resolution: {integrity: sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==} @@ -3339,6 +3467,18 @@ packages: escalade: 3.1.1 node-releases: 1.1.73 + /browserslist/4.16.7: + resolution: {integrity: sha512-7I4qVwqZltJ7j37wObBe3SoTz+nS8APaNcrBOlgoirb6/HbEU2XxW/LpUDTCngM6iauwFqmRTuOMfyKnFGY5JA==} + engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} + hasBin: true + dependencies: + caniuse-lite: 1.0.30001251 + colorette: 1.3.0 + electron-to-chromium: 1.3.806 + escalade: 3.1.1 + node-releases: 1.1.74 + dev: true + /bser/2.1.1: resolution: {integrity: sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ==} dependencies: @@ -3431,6 +3571,13 @@ packages: resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==} engines: {node: '>=6'} + /camel-case/4.1.2: + resolution: {integrity: sha512-gxGWBrTT1JuMx6R+o5PTXMmUnhnVzLQ9SNutD4YqKtI6ap897t3tKECYla6gCWEkplXnlNybEkZg9GEGxKFCgw==} + dependencies: + pascal-case: 3.1.2 + tslib: 2.3.1 + dev: true + /camelcase-keys/6.2.2: resolution: {integrity: sha512-YrwaA0vEKazPBkn0ipTiMpSajYDSe+KjQfrjhcBMxJt/znbvlHd8Pw/Vamaz5EB4Wfhs3SUR3Z9mwRu/P3s3Yg==} engines: {node: '>=8'} @@ -3456,6 +3603,10 @@ packages: /caniuse-lite/1.0.30001248: resolution: {integrity: sha512-NwlQbJkxUFJ8nMErnGtT0QTM2TJ33xgz4KXJSMIrjXIbDVdaYueGyjOrLKRtJC+rTiWfi6j5cnZN1NBiSBJGNw==} + /caniuse-lite/1.0.30001251: + resolution: {integrity: sha512-HOe1r+9VkU4TFmnU70z+r7OLmtR+/chB1rdcJUeQlAinjEeb0cKL20tlAtOagNZhbrtLnCvV19B4FmF1rgzl6A==} + dev: true + /capture-exit/2.0.0: resolution: {integrity: sha512-PiT/hQmTonHhl/HFGN+Lx3JJUznrVYJ3+AQsnthneZbvW7x+f08Tk7yLJTLEOUvBTbduLeeBkxEaYXUOUrRq6g==} engines: {node: 6.* || 8.* || >= 10.*} @@ -3651,6 +3802,10 @@ packages: /colorette/1.2.2: resolution: {integrity: sha512-MKGMzyfeuutC/ZJ1cba9NqcNpfeqMUcYmyF1ZFY6/Cn7CNSAKx6a+s48sqLqyAiZuaP2TcqMhoo+dlwFnVxT9w==} + /colorette/1.3.0: + resolution: {integrity: sha512-ecORCqbSFP7Wm8Y6lyqMJjexBQqXSF7SSeaTyGGphogUjBlFP9m9o08wy86HL2uB7fMTxtOUzLMk7ogKcxMg1w==} + dev: true + /colors/1.0.3: resolution: {integrity: sha1-BDP0TYCWgP3rYO0mDxsMJi6CpAs=} engines: {node: '>=0.1.90'} @@ -4357,6 +4512,10 @@ packages: /electron-to-chromium/1.3.792: resolution: {integrity: sha512-RM2O2xrNarM7Cs+XF/OE2qX/aBROyOZqqgP+8FXMXSuWuUqCfUUzg7NytQrzZU3aSqk1Qq6zqnVkJsbfMkIatg==} + /electron-to-chromium/1.3.806: + resolution: {integrity: sha512-AH/otJLAAecgyrYp0XK1DPiGVWcOgwPeJBOLeuFQ5l//vhQhwC9u6d+GijClqJAmsHG4XDue81ndSQPohUu0xA==} + dev: true + /emittery/0.8.1: resolution: {integrity: sha512-uDfvUjVrfGJJhymx/kz6prltenw1u7WrCg1oa94zYY8xxVpLLUu045LAT0dhDZdXG58/EpPL/5kA180fQ/qudg==} engines: {node: '>=10'} @@ -6355,6 +6514,10 @@ packages: engines: {'0': node >= 0.2.0} dev: true + /kebab-case/1.0.1: + resolution: {integrity: sha512-txPHx6nVLhv8PHGXIlAk0nYoh894SpAqGPXNvbg2hh8spvHXIah3+vT87DLoa59nKgC6scD3u3xAuRIgiMqbfQ==} + dev: true + /keyv/3.1.0: resolution: {integrity: sha512-9ykJ/46SN/9KPM/sichzQ7OvXyGDYKGTaDlKMGCAlg2UK8KRy4jb0d8sFc+0Tt0YYnThq8X2RZgCg74RPxgcVA==} dependencies: @@ -6625,6 +6788,12 @@ packages: js-tokens: 4.0.0 dev: false + /lower-case/2.0.2: + resolution: {integrity: sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg==} + dependencies: + tslib: 2.3.1 + dev: true + /lowercase-keys/1.0.1: resolution: {integrity: sha512-G2Lj61tXDnVFFOi8VZds+SoQjtQC3dgokKdDG2mTm1tx4m50NUHBOZSBwQQHyy0V12A0JTG4icfZQH+xPyh8VA==} engines: {node: '>=0.10.0'} @@ -6946,6 +7115,13 @@ packages: resolution: {integrity: sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==} dev: true + /no-case/3.0.4: + resolution: {integrity: sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg==} + dependencies: + lower-case: 2.0.2 + tslib: 2.3.1 + dev: true + /node-addon-api/1.7.2: resolution: {integrity: sha512-ibPK3iA+vaY1eEjESkQkM0BbCqFOaZMiXRTtdB0u7b4djtY6JnsjvPdUHVMg6xQt3B8fpTTWHI9A+ADjM9frzg==} dev: false @@ -6960,6 +7136,10 @@ packages: /node-releases/1.1.73: resolution: {integrity: sha512-uW7fodD6pyW2FZNZnp/Z3hvWKeEW1Y8R1+1CnErE8cXFXzl5blBOoVB41CvMer6P6Q0S5FXDwcHgFd1Wj0U9zg==} + /node-releases/1.1.74: + resolution: {integrity: sha512-caJBVempXZPepZoZAPCWRTNxYQ+xtG/KAi4ozTA5A+nJ7IU+kLQCbqaUjb5Rwy14M9upBWiQ4NutcmW04LJSRw==} + dev: true + /nopt/1.0.10: resolution: {integrity: sha1-bd0hvSoxQXuScn3Vhfim83YI6+4=} hasBin: true @@ -7233,6 +7413,13 @@ packages: /parse5/6.0.1: resolution: {integrity: sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==} + /pascal-case/3.1.2: + resolution: {integrity: sha512-uWlGT3YSnK9x3BQJaOdcZwrnV6hPpd8jFH1/ucpiLRPh/2zCVJKS19E4GvYHvaCcACn3foXZ0cLB9Wrx1KGe5g==} + dependencies: + no-case: 3.0.4 + tslib: 2.3.1 + dev: true + /pascalcase/0.1.1: resolution: {integrity: sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ=} engines: {node: '>=0.10.0'} @@ -8597,6 +8784,18 @@ packages: utf8-byte-length: 1.0.4 dev: false + /ts-generate-schema/2.0.0: + resolution: {integrity: sha512-VQ+XhJqY63cQVxcjQFb96QTzBNyIffE9dhnWIzFgG6o6zmZkcHeBquOmtE2Oneipq0CoVLT02+t/WArCLikRJQ==} + engines: {node: '>=10'} + hasBin: true + dependencies: + camel-case: 4.1.2 + glob: 7.1.7 + kebab-case: 1.0.1 + typescript-json-schema: 0.50.1 + yargs: 17.1.1 + dev: true + /ts-jsdoc/3.2.2_typescript@4.3.5: resolution: {integrity: sha512-+Bj4ROKDrk3pOdel5u+gz8pqyuPak9D/dgNFfrpEGTZarRnxPGYB3DXkpu4qkFCfPjqBBiZEj6hf3wmfvJqbgA==} engines: {node: '>=12.0.0'} @@ -8632,6 +8831,10 @@ packages: resolution: {integrity: sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==} dev: true + /tslib/2.3.1: + resolution: {integrity: sha512-77EbyPPpMz+FRFRuAFlWMtmgUWGe9UOG2Z25NqCwiIjRhOf5iKGuzSe5P2w1laq+FkRy4p+PCuVkJSGkzTEKVw==} + dev: true + /tsutils/3.21.0_typescript@4.3.5: resolution: {integrity: sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==} engines: {node: '>= 6'} @@ -9170,6 +9373,19 @@ packages: yargs-parser: 20.2.9 dev: false + /yargs/17.1.1: + resolution: {integrity: sha512-c2k48R0PwKIqKhPMWjeiF6y2xY/gPMUlro0sgxqXpbOIohWiLNXWslsootttv7E1e73QPAMQSg5FeySbVcpsPQ==} + engines: {node: '>=12'} + dependencies: + cliui: 7.0.4 + escalade: 3.1.1 + get-caller-file: 2.0.5 + require-directory: 2.1.1 + string-width: 4.2.2 + y18n: 5.0.8 + yargs-parser: 20.2.9 + dev: true + /yn/3.1.1: resolution: {integrity: sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==} engines: {node: '>=6'} diff --git a/scripts/fix-schema.js b/scripts/fix-schema.js deleted file mode 100644 index a872db7e28f..00000000000 --- a/scripts/fix-schema.js +++ /dev/null @@ -1,21 +0,0 @@ -const fs = require("fs") -const path = require("path") - -const schemaFile = path.join(__dirname, "../packages/app-builder-lib/scheme.json") -const schema = JSON.parse(fs.readFileSync(schemaFile, "utf-8")) - -let o = schema.definitions.PlugDescriptor.additionalProperties.anyOf[0] -delete o.typeof -o.type = "object" - -o = schema.definitions.SnapOptions.properties.environment.anyOf[0] = { - additionalProperties: {type: "string"}, - type: "object", -} - -o = schema.properties["$schema"] = { - "description": "JSON Schema for this document.", - "type": ["null", "string"], -} - -fs.writeFileSync(schemaFile, JSON.stringify(schema, null, 2)) \ No newline at end of file diff --git a/scripts/update-package-version-export.js b/scripts/update-package-version-export.js index 31bd09b22f9..46320bc3031 100755 --- a/scripts/update-package-version-export.js +++ b/scripts/update-package-version-export.js @@ -4,4 +4,6 @@ const version = require(path.join(__dirname, "../packages/app-builder-lib/packag const destFile = path.join(__dirname, '../packages/app-builder-lib/src/version.ts') const { writeFileSync } = require("fs") -writeFileSync(destFile, `export const PACKAGE_VERSION = "${version}"`) \ No newline at end of file +writeFileSync(destFile, ` +export const PACKAGE_VERSION = "${version}" +`) \ No newline at end of file diff --git a/test/snapshots/PublishManagerTest.js.snap b/test/snapshots/PublishManagerTest.js.snap index 4cceda89362..2196156e691 100644 --- a/test/snapshots/PublishManagerTest.js.snap +++ b/test/snapshots/PublishManagerTest.js.snap @@ -30,7 +30,6 @@ Object { "fileContent": Object { "files": Array [ Object { - "blockMapSize": "@blockMapSize", "sha512": "@sha512", "size": "@size", "url": "TestApp-1.1.0-mac.zip", @@ -47,7 +46,6 @@ Object { "fileContent": Object { "files": Array [ Object { - "blockMapSize": "@blockMapSize", "sha512": "@sha512", "size": "@size", "url": "TestApp-1.1.0-mac.zip", @@ -64,7 +62,6 @@ Object { "fileContent": Object { "files": Array [ Object { - "blockMapSize": "@blockMapSize", "sha512": "@sha512", "size": "@size", "url": "TestApp-1.1.0-mac.zip", @@ -81,7 +78,6 @@ Object { "fileContent": Object { "files": Array [ Object { - "blockMapSize": "@blockMapSize", "sha512": "@sha512", "size": "@size", "url": "TestApp-1.1.0-mac.zip", @@ -98,7 +94,6 @@ Object { "fileContent": Object { "files": Array [ Object { - "blockMapSize": "@blockMapSize", "sha512": "@sha512", "size": "@size", "url": "TestApp-1.1.0-mac.zip", @@ -115,7 +110,6 @@ Object { "fileContent": Object { "files": Array [ Object { - "blockMapSize": "@blockMapSize", "sha512": "@sha512", "size": "@size", "url": "TestApp-1.1.0-mac.zip", @@ -132,7 +126,6 @@ Object { "fileContent": Object { "files": Array [ Object { - "blockMapSize": "@blockMapSize", "sha512": "@sha512", "size": "@size", "url": "TestApp-1.1.0-mac.zip", @@ -149,7 +142,14 @@ Object { "file": "Test App ßW-1.1.0-mac.zip", "safeArtifactName": "TestApp-1.1.0-mac.zip", "updateInfo": Object { - "blockMapSize": "@blockMapSize", + "sha512": "@sha512", + "size": "@size", + }, + }, + Object { + "file": "Test App ßW-1.1.0-mac.zip.blockmap", + "safeArtifactName": "Test App ßW-1.1.0-mac.zip.blockmap", + "updateInfo": Object { "sha512": "@sha512", "size": "@size", }, @@ -237,7 +237,22 @@ Object { "fileContent": Object { "files": Array [ Object { - "blockMapSize": "@blockMapSize", + "sha512": "@sha512", + "size": "@size", + "url": "Test App ßW_1.1.0_mac.zip", + }, + ], + "path": "Test App ßW_1.1.0_mac.zip", + "releaseDate": "@releaseDate", + "sha512": "@sha512", + "version": "1.1.0", + }, + }, + Object { + "file": "latest-mac.yml", + "fileContent": Object { + "files": Array [ + Object { "sha512": "@sha512", "size": "@size", "url": "Test App ßW_1.1.0_mac.zip", @@ -254,7 +269,14 @@ Object { "file": "Test App ßW_1.1.0_mac.zip", "safeArtifactName": "TestApp-1.1.0-mac.zip", "updateInfo": Object { - "blockMapSize": "@blockMapSize", + "sha512": "@sha512", + "size": "@size", + }, + }, + Object { + "file": "Test App ßW_1.1.0_mac.zip.blockmap", + "safeArtifactName": "Test App ßW_1.1.0_mac.zip.blockmap", + "updateInfo": Object { "sha512": "@sha512", "size": "@size", }, diff --git a/test/snapshots/updater/nsisUpdaterTest.js.snap b/test/snapshots/updater/nsisUpdaterTest.js.snap index 97a7b10dc5a..b92cbe5e3b7 100644 --- a/test/snapshots/updater/nsisUpdaterTest.js.snap +++ b/test/snapshots/updater/nsisUpdaterTest.js.snap @@ -353,6 +353,30 @@ Array [ ] `; +exports[`file url keygen 1`] = ` +Object { + "files": Array [ + Object { + "sha512": "r0NdvVubzJWAN56nqjTdLkBWV/dq0HQOKz9A6QFplUozu3uSVXA2t731miy/S29mY4MD18iLxKD6GXnPfNNbNw==", + "size": 59865147, + "url": "electron-quick-start-typescript-1.0.0-x64.exe", + }, + ], + "path": "electron-quick-start-typescript-1.0.0-x64.exe", + "releaseDate": "2021-08-19T04:34:01.089Z", + "sha512": "r0NdvVubzJWAN56nqjTdLkBWV/dq0HQOKz9A6QFplUozu3uSVXA2t731miy/S29mY4MD18iLxKD6GXnPfNNbNw==", + "version": "1.0.0", +} +`; + +exports[`file url keygen 2`] = ` +Array [ + "checking-for-update", + "update-available", + "update-downloaded", +] +`; + exports[`invalid signature 1`] = `"ERR_UPDATER_INVALID_SIGNATURE"`; exports[`invalid signature 2`] = ` diff --git a/test/src/ArtifactPublisherTest.ts b/test/src/ArtifactPublisherTest.ts index c63c7b0fc4f..53795e1b5ef 100644 --- a/test/src/ArtifactPublisherTest.ts +++ b/test/src/ArtifactPublisherTest.ts @@ -1,10 +1,12 @@ import { Arch } from "builder-util" -import { CancellationToken, HttpError, S3Options, SpacesOptions } from "builder-util-runtime" -import { createPublisher } from "app-builder-lib/out/publish/PublishManager" +import { CancellationToken, HttpError, KeygenOptions, S3Options, SpacesOptions } from "builder-util-runtime" import { PublishContext } from "electron-publish" import { GitHubPublisher } from "electron-publish/out/gitHubPublisher" import { isCI as isCi } from "ci-info" import * as path from "path" +import { KeygenPublisher } from "app-builder-lib/out/publish/KeygenPublisher" +import { Platform } from "app-builder-lib" +import { createPublisher } from "app-builder-lib/out/publish/PublishManager" if (isCi && process.platform === "win32") { fit("Skip ArtifactPublisherTest suite on Windows CI", () => { @@ -126,3 +128,21 @@ testAndIgnoreApiRate("GitHub upload org", async () => { await publisher.deleteRelease() } }) + +if (process.env.KEYGEN_TOKEN != null) { + test("Keygen upload", async () => { + const publisher = new KeygenPublisher( + publishContext, + { + provider: "keygen", + // electron-builder-test + product: "43981278-96e7-47de-b8c2-98d59987206b", + account: "cdecda36-3ef0-483e-ad88-97e7970f3149", + platform: Platform.MAC.name, + } as KeygenOptions, + versionNumber() + ) + const releaseId = await publisher.upload({ file: iconPath, arch: Arch.x64 }) + await publisher.deleteRelease(releaseId) + }) +} diff --git a/test/src/PublishManagerTest.ts b/test/src/PublishManagerTest.ts index 1c56a7df165..557631399fb 100644 --- a/test/src/PublishManagerTest.ts +++ b/test/src/PublishManagerTest.ts @@ -1,25 +1,11 @@ import { createTargets, Platform } from "electron-builder" import { outputFile } from "fs-extra" import * as path from "path" -import { GithubOptions, GenericServerOptions, SpacesOptions } from "builder-util-runtime" +import { GithubOptions, GenericServerOptions, SpacesOptions, KeygenOptions } from "builder-util-runtime" import { assertThat } from "./helpers/fileAssert" import { app, checkDirContents } from "./helpers/packTester" -test.ifNotWindows.ifDevOrLinuxCi( - "generic, github and spaces", - app({ - targets: Platform.MAC.createTarget("zip"), - config: { - generateUpdatesFilesForAllChannels: true, - mac: { - electronUpdaterCompatibility: ">=2.16", - }, - publish: [genericPublisher("https://example.com/downloads"), githubPublisher("foo/foo"), spacesPublisher()], - }, - }) -) - -function spacesPublisher(publishAutoUpdate: boolean = true): SpacesOptions { +function spacesPublisher(publishAutoUpdate = true): SpacesOptions { return { provider: "spaces", name: "mySpaceName", @@ -42,6 +28,28 @@ function genericPublisher(url: string): GenericServerOptions { } } +function keygenPublisher(): KeygenOptions { + return { + provider: "keygen", + product: "43981278-96e7-47de-b8c2-98d59987206b", + account: "cdecda36-3ef0-483e-ad88-97e7970f3149", + } +} + +test.ifNotWindows.ifDevOrLinuxCi( + "generic, github and spaces", + app({ + targets: Platform.MAC.createTarget("zip"), + config: { + generateUpdatesFilesForAllChannels: true, + mac: { + electronUpdaterCompatibility: ">=2.16", + }, + publish: [genericPublisher("https://example.com/downloads"), githubPublisher("foo/foo"), spacesPublisher()], + }, + }) +) + test.ifNotWindows.ifDevOrLinuxCi( "github and spaces (publishAutoUpdate)", app({ @@ -66,7 +74,7 @@ test.ifMac( mac: { electronUpdaterCompatibility: ">=2.16", }, - publish: [spacesPublisher()], + publish: [spacesPublisher(), keygenPublisher()], }, }, { diff --git a/test/src/helpers/updaterTestUtil.ts b/test/src/helpers/updaterTestUtil.ts index 98f879f9636..6d38dcaf4c2 100644 --- a/test/src/helpers/updaterTestUtil.ts +++ b/test/src/helpers/updaterTestUtil.ts @@ -1,8 +1,8 @@ -import { serializeToYaml, TmpDir, executeAppBuilder } from "builder-util" -import { BintrayOptions, GenericServerOptions, GithubOptions, S3Options, SpacesOptions, DownloadOptions } from "builder-util-runtime" +import { serializeToYaml, TmpDir } from "builder-util" +import { BintrayOptions, GenericServerOptions, GithubOptions, S3Options, SpacesOptions, DownloadOptions, KeygenOptions } from "builder-util-runtime" import { AppUpdater, NoOpLogger } from "electron-updater" import { MacUpdater } from "electron-updater/out/MacUpdater" -import { outputFile } from "fs-extra" +import { outputFile, writeFile } from "fs-extra" import * as path from "path" import { TestOnlyUpdaterOptions } from "electron-updater/out/AppUpdater" import { NsisUpdater } from "electron-updater/out/NsisUpdater" @@ -24,7 +24,7 @@ export async function createNsisUpdater(version: string = "0.0.1") { } // to reduce difference in test mode, setFeedURL is not used to set (NsisUpdater also read configOnDisk to load original publisherName) -export async function writeUpdateConfig(data: T): Promise { +export async function writeUpdateConfig(data: T): Promise { const updateConfigPath = path.join(await tmpDir.getTempDir({ prefix: "test-update-config" }), "app-update.yml") await outputFile(updateConfigPath, serializeToYaml(data)) return updateConfigPath @@ -61,12 +61,11 @@ export async function validateDownload(updater: AppUpdater, expectDownloadPromis } export class TestNodeHttpExecutor extends NodeHttpExecutor { - download(url: string, destination: string, options: DownloadOptions): Promise { - const args = ["download", "--url", url, "--output", destination] - if (options != null && options.sha512) { - args.push("--sha512", options.sha512) - } - return executeAppBuilder(args).then(() => destination) + async download(url: string, destination: string, options: DownloadOptions): Promise { + const obj = new URL(url) + const buffer = await this.downloadToBuffer(obj, options) + await writeFile(destination, buffer) + return buffer.toString() } } diff --git a/test/src/updater/nsisUpdaterTest.ts b/test/src/updater/nsisUpdaterTest.ts index 643389f5bff..fe2aae85069 100644 --- a/test/src/updater/nsisUpdaterTest.ts +++ b/test/src/updater/nsisUpdaterTest.ts @@ -1,4 +1,4 @@ -import { GenericServerOptions, GithubOptions, S3Options, SpacesOptions } from "builder-util-runtime" +import { GenericServerOptions, GithubOptions, KeygenOptions, S3Options, SpacesOptions } from "builder-util-runtime" import { UpdateCheckResult } from "electron-updater" import { outputFile } from "fs-extra" import { tmpdir } from "os" @@ -46,6 +46,19 @@ test("file url generic", async () => { await validateDownload(updater) }) +if (process.env.KEYGEN_TOKEN) { + test("file url keygen", async () => { + const updater = await createNsisUpdater() + updater.addAuthHeader(`Bearer ${process.env.KEYGEN_TOKEN}`) + updater.updateConfigPath = await writeUpdateConfig({ + provider: "keygen", + product: "43981278-96e7-47de-b8c2-98d59987206b", + account: "cdecda36-3ef0-483e-ad88-97e7970f3149", + }) + await validateDownload(updater) + }) +} + test.skip("DigitalOcean Spaces", async () => { const updater = await createNsisUpdater() updater.updateConfigPath = await writeUpdateConfig({