app-builder-lib 21.1.3 → 21.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -145,16 +145,17 @@ async function sign(options, packager) {
145
145
 
146
146
  async function getCertInfo(file, password) {
147
147
  let result = null;
148
+ const errorMessagePrefix = "Cannot extract publisher name from code signing certificate. As workaround, set win.publisherName. Error: ";
148
149
 
149
150
  try {
150
151
  result = await (0, _appBuilder().executeAppBuilderAsJson)(["certificate-info", "--input", file, "--password", password]);
151
152
  } catch (e) {
152
- throw new Error(`Cannot extract publisher name from code signing certificate, please file issue. As workaround, set win.publisherName: ${e.stack || e}`);
153
+ throw new Error(`${errorMessagePrefix}${e.stack || e}`);
153
154
  }
154
155
 
155
156
  if (result.error != null) {
156
157
  // noinspection ExceptionCaughtLocallyJS
157
- throw new (_util().InvalidConfigurationError)(`Cannot extract publisher name from code signing certificate: ${result.error}`);
158
+ throw new (_util().InvalidConfigurationError)(`${errorMessagePrefix}${result.error}`);
158
159
  }
159
160
 
160
161
  return result;
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/codeSign/windowsCodeSign.ts"],"names":[],"mappings":"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","sourcesContent":["import { InvalidConfigurationError, asArray, log } from \"builder-util/out/util\"\nimport { getBin } from \"../binDownload\"\nimport { executeAppBuilderAsJson } from \"../util/appBuilder\"\nimport { computeToolEnv, ToolInfo } from \"../util/bundledTool\"\nimport { rename } from \"fs-extra\"\nimport * as os from \"os\"\nimport * as path from \"path\"\nimport { WindowsConfiguration } from \"..\"\nimport { resolveFunction } from \"../platformPackager\"\nimport { isUseSystemSigncode } from \"../util/flags\"\nimport { VmManager } from \"../vm/vm\"\nimport { WinPackager } from \"../winPackager\"\n\nexport function getSignVendorPath() {\n return getBin(\"winCodeSign\")\n}\n\nexport type CustomWindowsSign = (configuration: CustomWindowsSignTaskConfiguration) => Promise<any>\n\nexport interface WindowsSignOptions {\n readonly path: string\n\n readonly name?: string | null\n readonly cscInfo?: FileCodeSigningInfo | CertificateFromStoreInfo | null\n readonly site?: string | null\n\n readonly options: WindowsConfiguration\n}\n\nexport interface WindowsSignTaskConfiguration extends WindowsSignOptions {\n // set if output path differs from input (e.g. osslsigncode cannot sign file in-place)\n resultOutputPath?: string\n\n hash: string\n isNest: boolean\n}\n\nexport interface CustomWindowsSignTaskConfiguration extends WindowsSignTaskConfiguration {\n computeSignToolArgs(isWin: boolean): Array<string>\n}\n\nexport async function sign(options: WindowsSignOptions, packager: WinPackager) {\n let hashes = options.options.signingHashAlgorithms\n // msi does not support dual-signing\n if (options.path.endsWith(\".msi\")) {\n hashes = [hashes != null && !hashes.includes(\"sha1\") ? \"sha256\" : \"sha1\"]\n }\n else if (options.path.endsWith(\".appx\")) {\n hashes = [\"sha256\"]\n }\n else if (hashes == null) {\n hashes = [\"sha1\", \"sha256\"]\n }\n else {\n hashes = Array.isArray(hashes) ? hashes : [hashes]\n }\n\n function defaultExecutor(configuration: CustomWindowsSignTaskConfiguration) {\n return doSign(configuration, packager)\n }\n\n const executor = resolveFunction(options.options.sign, \"sign\") || defaultExecutor\n let isNest = false\n for (const hash of hashes) {\n const taskConfiguration: WindowsSignTaskConfiguration = {...options, hash, isNest}\n await executor({\n ...taskConfiguration,\n computeSignToolArgs: isWin => computeSignToolArgs(taskConfiguration, isWin)\n })\n isNest = true\n if (taskConfiguration.resultOutputPath != null) {\n await rename(taskConfiguration.resultOutputPath, options.path)\n }\n }\n}\n\nexport interface FileCodeSigningInfo {\n readonly file: string\n readonly password: string | null\n}\n\nexport async function getCertInfo(file: string, password: string): Promise<CertificateInfo> {\n let result: any = null\n try {\n result = await executeAppBuilderAsJson<any>([\"certificate-info\", \"--input\", file, \"--password\", password])\n }\n catch (e) {\n throw new Error(`Cannot extract publisher name from code signing certificate, please file issue. As workaround, set win.publisherName: ${e.stack || e}`)\n }\n\n if (result.error != null) {\n // noinspection ExceptionCaughtLocallyJS\n throw new InvalidConfigurationError(`Cannot extract publisher name from code signing certificate: ${result.error}`)\n }\n return result\n}\n\nexport interface CertificateInfo {\n readonly commonName: string\n readonly bloodyMicrosoftSubjectDn: string\n}\n\nexport interface CertificateFromStoreInfo {\n thumbprint: string\n subject: string\n store: string\n isLocalMachineStore: boolean\n}\n\nexport async function getCertificateFromStoreInfo(options: WindowsConfiguration, vm: VmManager): Promise<CertificateFromStoreInfo> {\n const certificateSubjectName = options.certificateSubjectName\n const certificateSha1 = options.certificateSha1\n // ExcludeProperty doesn't work, so, we cannot exclude RawData, it is ok\n // powershell can return object if the only item\n const rawResult = await vm.exec(\"powershell.exe\", [\"Get-ChildItem -Recurse Cert: -CodeSigningCert | Select-Object -Property Subject,PSParentPath,Thumbprint | ConvertTo-Json -Compress\"])\n const certList = rawResult.length === 0 ? [] : asArray<CertInfo>(JSON.parse(rawResult))\n for (const certInfo of certList) {\n if (certificateSubjectName != null) {\n if (!certInfo.Subject.includes(certificateSubjectName)) {\n continue\n }\n }\n else if (certInfo.Thumbprint !== certificateSha1) {\n continue\n }\n\n const parentPath = certInfo.PSParentPath\n const store = parentPath.substring(parentPath.lastIndexOf(\"\\\\\") + 1)\n log.debug({store, PSParentPath: parentPath}, \"auto-detect certificate store\")\n // https://github.com/electron-userland/electron-builder/issues/1717\n const isLocalMachineStore = (parentPath.includes(\"Certificate::LocalMachine\"))\n log.debug(null, \"auto-detect using of LocalMachine store\")\n return {\n thumbprint: certInfo.Thumbprint,\n subject: certInfo.Subject,\n store,\n isLocalMachineStore\n }\n }\n\n throw new Error(`Cannot find certificate ${certificateSubjectName || certificateSha1}, all certs: ${rawResult}`)\n}\n\nasync function doSign(configuration: CustomWindowsSignTaskConfiguration, packager: WinPackager) {\n // https://github.com/electron-userland/electron-builder/pull/1944\n const timeout = parseInt(process.env.SIGNTOOL_TIMEOUT as any, 10) || 10 * 60 * 1000\n\n let tool: string\n let args: Array<string>\n let env = process.env\n let vm: VmManager\n if (configuration.path.endsWith(\".appx\") || !(\"file\" in configuration.cscInfo!!) /* certificateSubjectName and other such options */) {\n vm = await packager.vm.value\n tool = getWinSignTool(await getSignVendorPath())\n args = computeSignToolArgs(configuration, true, vm)\n }\n else {\n vm = new VmManager()\n const toolInfo = await getToolPath()\n tool = toolInfo.path\n args = configuration.computeSignToolArgs(process.platform === \"win32\")\n if (toolInfo.env != null) {\n env = toolInfo.env\n }\n }\n\n try {\n await vm.exec(tool, args, {timeout, env})\n }\n catch (e) {\n if (e.message.includes(\"The file is being used by another process\") || e.message.includes(\"The specified timestamp server either could not be reached\")) {\n log.warn(`First attempt to code sign failed, another attempt will be made in 2 seconds: ${e.message}`)\n await new Promise((resolve, reject) => {\n setTimeout(() => {\n vm.exec(tool, args, {timeout, env})\n .then(resolve)\n .catch(reject)\n }, 2000)\n })\n }\n throw e\n }\n}\n\ninterface CertInfo {\n Subject: string\n Thumbprint: string\n PSParentPath: string\n}\n\n// on windows be aware of http://stackoverflow.com/a/32640183/1910191\nfunction computeSignToolArgs(options: WindowsSignTaskConfiguration, isWin: boolean, vm: VmManager = new VmManager()): Array<string> {\n const inputFile = vm.toVmFile(options.path)\n const outputPath = isWin ? inputFile : getOutputPath(inputFile, options.hash)\n if (!isWin) {\n options.resultOutputPath = outputPath\n }\n\n const args = isWin ? [\"sign\"] : [\"-in\", inputFile, \"-out\", outputPath]\n\n if (process.env.ELECTRON_BUILDER_OFFLINE !== \"true\") {\n const timestampingServiceUrl = options.options.timeStampServer || \"http://timestamp.digicert.com\"\n if (isWin) {\n args.push(options.isNest || options.hash === \"sha256\" ? \"/tr\" : \"/t\", options.isNest || options.hash === \"sha256\" ? (options.options.rfc3161TimeStampServer || \"http://timestamp.comodoca.com/rfc3161\") : timestampingServiceUrl)\n }\n else {\n args.push(\"-t\", timestampingServiceUrl)\n }\n }\n\n const certificateFile = (options.cscInfo as FileCodeSigningInfo).file\n if (certificateFile == null) {\n const cscInfo = (options.cscInfo as CertificateFromStoreInfo)\n const subjectName = cscInfo.thumbprint\n if (!isWin) {\n throw new Error(`${subjectName == null ? \"certificateSha1\" : \"certificateSubjectName\"} supported only on Windows`)\n }\n\n args.push(\"/sha1\", cscInfo.thumbprint)\n args.push(\"/s\", cscInfo.store)\n if (cscInfo.isLocalMachineStore) {\n args.push(\"/sm\")\n }\n }\n else {\n const certExtension = path.extname(certificateFile)\n if (certExtension === \".p12\" || certExtension === \".pfx\") {\n args.push(isWin ? \"/f\" : \"-pkcs12\", vm.toVmFile(certificateFile))\n }\n else {\n throw new Error(`Please specify pkcs12 (.p12/.pfx) file, ${certificateFile} is not correct`)\n }\n }\n\n if (!isWin || options.hash !== \"sha1\") {\n args.push(isWin ? \"/fd\" : \"-h\", options.hash)\n if (isWin && process.env.ELECTRON_BUILDER_OFFLINE !== \"true\") {\n args.push(\"/td\", \"sha256\")\n }\n }\n\n if (options.name) {\n args.push(isWin ? \"/d\" : \"-n\", options.name)\n }\n\n if (options.site) {\n args.push(isWin ? \"/du\" : \"-i\", options.site)\n }\n\n // msi does not support dual-signing\n if (options.isNest) {\n args.push(isWin ? \"/as\" : \"-nest\")\n }\n\n const password = options.cscInfo == null ? null : (options.cscInfo as FileCodeSigningInfo).password\n if (password) {\n args.push(isWin ? \"/p\" : \"-pass\", password)\n }\n\n if (options.options.additionalCertificateFile) {\n args.push(isWin ? \"/ac\" : \"-ac\", vm.toVmFile(options.options.additionalCertificateFile))\n }\n\n const httpsProxyFromEnv = process.env.HTTPS_PROXY\n if (!isWin && httpsProxyFromEnv != null && httpsProxyFromEnv.length) {\n args.push(\"-p\", httpsProxyFromEnv)\n }\n\n if (isWin) {\n // https://github.com/electron-userland/electron-builder/issues/2875#issuecomment-387233610\n args.push(\"/debug\")\n // must be last argument\n args.push(inputFile)\n }\n\n return args\n}\n\nfunction getOutputPath(inputPath: string, hash: string) {\n const extension = path.extname(inputPath)\n return path.join(path.dirname(inputPath), `${path.basename(inputPath, extension)}-signed-${hash}${extension}`)\n}\n\n/** @internal */\nexport function isOldWin6() {\n const winVersion = os.release()\n return winVersion.startsWith(\"6.\") && !winVersion.startsWith(\"6.3\")\n}\n\nfunction getWinSignTool(vendorPath: string): string {\n // use modern signtool on Windows Server 2012 R2 to be able to sign AppX\n if (isOldWin6()) {\n return path.join(vendorPath, \"windows-6\", \"signtool.exe\")\n }\n else {\n return path.join(vendorPath, \"windows-10\", process.arch, \"signtool.exe\")\n }\n}\n\nasync function getToolPath(): Promise<ToolInfo> {\n if (isUseSystemSigncode()) {\n return {path: \"osslsigncode\"}\n }\n\n const result = process.env.SIGNTOOL_PATH\n if (result) {\n return {path: result}\n }\n\n const vendorPath = await getSignVendorPath()\n if (process.platform === \"win32\") {\n // use modern signtool on Windows Server 2012 R2 to be able to sign AppX\n return {path: getWinSignTool(vendorPath)}\n }\n else if (process.platform === \"darwin\") {\n const toolDirPath = path.join(vendorPath, process.platform, \"10.12\")\n return {\n path: path.join(toolDirPath, \"osslsigncode\"),\n env: computeToolEnv([path.join(toolDirPath, \"lib\")]),\n }\n }\n else {\n return {path: path.join(vendorPath, process.platform, \"osslsigncode\")}\n }\n}\n"],"sourceRoot":""}
1
+ {"version":3,"sources":["../../src/codeSign/windowsCodeSign.ts"],"names":[],"mappings":"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","sourcesContent":["import { InvalidConfigurationError, asArray, log } from \"builder-util/out/util\"\nimport { getBin } from \"../binDownload\"\nimport { executeAppBuilderAsJson } from \"../util/appBuilder\"\nimport { computeToolEnv, ToolInfo } from \"../util/bundledTool\"\nimport { rename } from \"fs-extra\"\nimport * as os from \"os\"\nimport * as path from \"path\"\nimport { WindowsConfiguration } from \"..\"\nimport { resolveFunction } from \"../platformPackager\"\nimport { isUseSystemSigncode } from \"../util/flags\"\nimport { VmManager } from \"../vm/vm\"\nimport { WinPackager } from \"../winPackager\"\n\nexport function getSignVendorPath() {\n return getBin(\"winCodeSign\")\n}\n\nexport type CustomWindowsSign = (configuration: CustomWindowsSignTaskConfiguration) => Promise<any>\n\nexport interface WindowsSignOptions {\n readonly path: string\n\n readonly name?: string | null\n readonly cscInfo?: FileCodeSigningInfo | CertificateFromStoreInfo | null\n readonly site?: string | null\n\n readonly options: WindowsConfiguration\n}\n\nexport interface WindowsSignTaskConfiguration extends WindowsSignOptions {\n // set if output path differs from input (e.g. osslsigncode cannot sign file in-place)\n resultOutputPath?: string\n\n hash: string\n isNest: boolean\n}\n\nexport interface CustomWindowsSignTaskConfiguration extends WindowsSignTaskConfiguration {\n computeSignToolArgs(isWin: boolean): Array<string>\n}\n\nexport async function sign(options: WindowsSignOptions, packager: WinPackager) {\n let hashes = options.options.signingHashAlgorithms\n // msi does not support dual-signing\n if (options.path.endsWith(\".msi\")) {\n hashes = [hashes != null && !hashes.includes(\"sha1\") ? \"sha256\" : \"sha1\"]\n }\n else if (options.path.endsWith(\".appx\")) {\n hashes = [\"sha256\"]\n }\n else if (hashes == null) {\n hashes = [\"sha1\", \"sha256\"]\n }\n else {\n hashes = Array.isArray(hashes) ? hashes : [hashes]\n }\n\n function defaultExecutor(configuration: CustomWindowsSignTaskConfiguration) {\n return doSign(configuration, packager)\n }\n\n const executor = resolveFunction(options.options.sign, \"sign\") || defaultExecutor\n let isNest = false\n for (const hash of hashes) {\n const taskConfiguration: WindowsSignTaskConfiguration = {...options, hash, isNest}\n await executor({\n ...taskConfiguration,\n computeSignToolArgs: isWin => computeSignToolArgs(taskConfiguration, isWin)\n })\n isNest = true\n if (taskConfiguration.resultOutputPath != null) {\n await rename(taskConfiguration.resultOutputPath, options.path)\n }\n }\n}\n\nexport interface FileCodeSigningInfo {\n readonly file: string\n readonly password: string | null\n}\n\nexport async function getCertInfo(file: string, password: string): Promise<CertificateInfo> {\n let result: any = null\n const errorMessagePrefix = \"Cannot extract publisher name from code signing certificate. As workaround, set win.publisherName. Error: \"\n try {\n result = await executeAppBuilderAsJson<any>([\"certificate-info\", \"--input\", file, \"--password\", password])\n }\n catch (e) {\n throw new Error(`${errorMessagePrefix}${e.stack || e}`)\n }\n\n if (result.error != null) {\n // noinspection ExceptionCaughtLocallyJS\n throw new InvalidConfigurationError(`${errorMessagePrefix}${result.error}`)\n }\n return result\n}\n\nexport interface CertificateInfo {\n readonly commonName: string\n readonly bloodyMicrosoftSubjectDn: string\n}\n\nexport interface CertificateFromStoreInfo {\n thumbprint: string\n subject: string\n store: string\n isLocalMachineStore: boolean\n}\n\nexport async function getCertificateFromStoreInfo(options: WindowsConfiguration, vm: VmManager): Promise<CertificateFromStoreInfo> {\n const certificateSubjectName = options.certificateSubjectName\n const certificateSha1 = options.certificateSha1\n // ExcludeProperty doesn't work, so, we cannot exclude RawData, it is ok\n // powershell can return object if the only item\n const rawResult = await vm.exec(\"powershell.exe\", [\"Get-ChildItem -Recurse Cert: -CodeSigningCert | Select-Object -Property Subject,PSParentPath,Thumbprint | ConvertTo-Json -Compress\"])\n const certList = rawResult.length === 0 ? [] : asArray<CertInfo>(JSON.parse(rawResult))\n for (const certInfo of certList) {\n if (certificateSubjectName != null) {\n if (!certInfo.Subject.includes(certificateSubjectName)) {\n continue\n }\n }\n else if (certInfo.Thumbprint !== certificateSha1) {\n continue\n }\n\n const parentPath = certInfo.PSParentPath\n const store = parentPath.substring(parentPath.lastIndexOf(\"\\\\\") + 1)\n log.debug({store, PSParentPath: parentPath}, \"auto-detect certificate store\")\n // https://github.com/electron-userland/electron-builder/issues/1717\n const isLocalMachineStore = (parentPath.includes(\"Certificate::LocalMachine\"))\n log.debug(null, \"auto-detect using of LocalMachine store\")\n return {\n thumbprint: certInfo.Thumbprint,\n subject: certInfo.Subject,\n store,\n isLocalMachineStore\n }\n }\n\n throw new Error(`Cannot find certificate ${certificateSubjectName || certificateSha1}, all certs: ${rawResult}`)\n}\n\nasync function doSign(configuration: CustomWindowsSignTaskConfiguration, packager: WinPackager) {\n // https://github.com/electron-userland/electron-builder/pull/1944\n const timeout = parseInt(process.env.SIGNTOOL_TIMEOUT as any, 10) || 10 * 60 * 1000\n\n let tool: string\n let args: Array<string>\n let env = process.env\n let vm: VmManager\n if (configuration.path.endsWith(\".appx\") || !(\"file\" in configuration.cscInfo!!) /* certificateSubjectName and other such options */) {\n vm = await packager.vm.value\n tool = getWinSignTool(await getSignVendorPath())\n args = computeSignToolArgs(configuration, true, vm)\n }\n else {\n vm = new VmManager()\n const toolInfo = await getToolPath()\n tool = toolInfo.path\n args = configuration.computeSignToolArgs(process.platform === \"win32\")\n if (toolInfo.env != null) {\n env = toolInfo.env\n }\n }\n\n try {\n await vm.exec(tool, args, {timeout, env})\n }\n catch (e) {\n if (e.message.includes(\"The file is being used by another process\") || e.message.includes(\"The specified timestamp server either could not be reached\")) {\n log.warn(`First attempt to code sign failed, another attempt will be made in 2 seconds: ${e.message}`)\n await new Promise((resolve, reject) => {\n setTimeout(() => {\n vm.exec(tool, args, {timeout, env})\n .then(resolve)\n .catch(reject)\n }, 2000)\n })\n }\n throw e\n }\n}\n\ninterface CertInfo {\n Subject: string\n Thumbprint: string\n PSParentPath: string\n}\n\n// on windows be aware of http://stackoverflow.com/a/32640183/1910191\nfunction computeSignToolArgs(options: WindowsSignTaskConfiguration, isWin: boolean, vm: VmManager = new VmManager()): Array<string> {\n const inputFile = vm.toVmFile(options.path)\n const outputPath = isWin ? inputFile : getOutputPath(inputFile, options.hash)\n if (!isWin) {\n options.resultOutputPath = outputPath\n }\n\n const args = isWin ? [\"sign\"] : [\"-in\", inputFile, \"-out\", outputPath]\n\n if (process.env.ELECTRON_BUILDER_OFFLINE !== \"true\") {\n const timestampingServiceUrl = options.options.timeStampServer || \"http://timestamp.digicert.com\"\n if (isWin) {\n args.push(options.isNest || options.hash === \"sha256\" ? \"/tr\" : \"/t\", options.isNest || options.hash === \"sha256\" ? (options.options.rfc3161TimeStampServer || \"http://timestamp.comodoca.com/rfc3161\") : timestampingServiceUrl)\n }\n else {\n args.push(\"-t\", timestampingServiceUrl)\n }\n }\n\n const certificateFile = (options.cscInfo as FileCodeSigningInfo).file\n if (certificateFile == null) {\n const cscInfo = (options.cscInfo as CertificateFromStoreInfo)\n const subjectName = cscInfo.thumbprint\n if (!isWin) {\n throw new Error(`${subjectName == null ? \"certificateSha1\" : \"certificateSubjectName\"} supported only on Windows`)\n }\n\n args.push(\"/sha1\", cscInfo.thumbprint)\n args.push(\"/s\", cscInfo.store)\n if (cscInfo.isLocalMachineStore) {\n args.push(\"/sm\")\n }\n }\n else {\n const certExtension = path.extname(certificateFile)\n if (certExtension === \".p12\" || certExtension === \".pfx\") {\n args.push(isWin ? \"/f\" : \"-pkcs12\", vm.toVmFile(certificateFile))\n }\n else {\n throw new Error(`Please specify pkcs12 (.p12/.pfx) file, ${certificateFile} is not correct`)\n }\n }\n\n if (!isWin || options.hash !== \"sha1\") {\n args.push(isWin ? \"/fd\" : \"-h\", options.hash)\n if (isWin && process.env.ELECTRON_BUILDER_OFFLINE !== \"true\") {\n args.push(\"/td\", \"sha256\")\n }\n }\n\n if (options.name) {\n args.push(isWin ? \"/d\" : \"-n\", options.name)\n }\n\n if (options.site) {\n args.push(isWin ? \"/du\" : \"-i\", options.site)\n }\n\n // msi does not support dual-signing\n if (options.isNest) {\n args.push(isWin ? \"/as\" : \"-nest\")\n }\n\n const password = options.cscInfo == null ? null : (options.cscInfo as FileCodeSigningInfo).password\n if (password) {\n args.push(isWin ? \"/p\" : \"-pass\", password)\n }\n\n if (options.options.additionalCertificateFile) {\n args.push(isWin ? \"/ac\" : \"-ac\", vm.toVmFile(options.options.additionalCertificateFile))\n }\n\n const httpsProxyFromEnv = process.env.HTTPS_PROXY\n if (!isWin && httpsProxyFromEnv != null && httpsProxyFromEnv.length) {\n args.push(\"-p\", httpsProxyFromEnv)\n }\n\n if (isWin) {\n // https://github.com/electron-userland/electron-builder/issues/2875#issuecomment-387233610\n args.push(\"/debug\")\n // must be last argument\n args.push(inputFile)\n }\n\n return args\n}\n\nfunction getOutputPath(inputPath: string, hash: string) {\n const extension = path.extname(inputPath)\n return path.join(path.dirname(inputPath), `${path.basename(inputPath, extension)}-signed-${hash}${extension}`)\n}\n\n/** @internal */\nexport function isOldWin6() {\n const winVersion = os.release()\n return winVersion.startsWith(\"6.\") && !winVersion.startsWith(\"6.3\")\n}\n\nfunction getWinSignTool(vendorPath: string): string {\n // use modern signtool on Windows Server 2012 R2 to be able to sign AppX\n if (isOldWin6()) {\n return path.join(vendorPath, \"windows-6\", \"signtool.exe\")\n }\n else {\n return path.join(vendorPath, \"windows-10\", process.arch, \"signtool.exe\")\n }\n}\n\nasync function getToolPath(): Promise<ToolInfo> {\n if (isUseSystemSigncode()) {\n return {path: \"osslsigncode\"}\n }\n\n const result = process.env.SIGNTOOL_PATH\n if (result) {\n return {path: result}\n }\n\n const vendorPath = await getSignVendorPath()\n if (process.platform === \"win32\") {\n // use modern signtool on Windows Server 2012 R2 to be able to sign AppX\n return {path: getWinSignTool(vendorPath)}\n }\n else if (process.platform === \"darwin\") {\n const toolDirPath = path.join(vendorPath, process.platform, \"10.12\")\n return {\n path: path.join(toolDirPath, \"osslsigncode\"),\n env: computeToolEnv([path.join(toolDirPath, \"lib\")]),\n }\n }\n else {\n return {path: path.join(vendorPath, process.platform, \"osslsigncode\")}\n }\n}\n"],"sourceRoot":""}
@@ -42,6 +42,10 @@ export interface Configuration extends PlatformSpecificBuildOptions {
42
42
  * MAS (Mac Application Store) options.
43
43
  */
44
44
  readonly mas?: MasConfiguration | null;
45
+ /**
46
+ * MAS (Mac Application Store) development options (`mas-dev` target).
47
+ */
48
+ readonly masDev?: MasConfiguration | null;
45
49
  /**
46
50
  * macOS DMG options.
47
51
  */
@@ -92,7 +92,7 @@ function moveHelpers(helperSuffixes, frameworksPath, appName, prefix) {
92
92
  });
93
93
  }
94
94
 
95
- function getAvailableHelperSuffixes(helperEHPlist, helperNPPlist) {
95
+ function getAvailableHelperSuffixes(helperEHPlist, helperNPPlist, helperRendererPlist, helperPluginPlist, helperGPUPlist) {
96
96
  const result = [" Helper"];
97
97
 
98
98
  if (helperEHPlist != null) {
@@ -103,6 +103,18 @@ function getAvailableHelperSuffixes(helperEHPlist, helperNPPlist) {
103
103
  result.push(" Helper NP");
104
104
  }
105
105
 
106
+ if (helperRendererPlist != null) {
107
+ result.push(" Helper (Renderer)");
108
+ }
109
+
110
+ if (helperPluginPlist != null) {
111
+ result.push(" Helper (Plugin)");
112
+ }
113
+
114
+ if (helperGPUPlist != null) {
115
+ result.push(" Helper (GPU)");
116
+ }
117
+
106
118
  return result;
107
119
  }
108
120
  /** @internal */
@@ -118,8 +130,11 @@ async function createMacApp(packager, appOutDir, asarIntegrity, isMas) {
118
130
  const helperPlistFilename = path.join(frameworksPath, "Electron Helper.app", "Contents", "Info.plist");
119
131
  const helperEHPlistFilename = path.join(frameworksPath, "Electron Helper EH.app", "Contents", "Info.plist");
120
132
  const helperNPPlistFilename = path.join(frameworksPath, "Electron Helper NP.app", "Contents", "Info.plist");
133
+ const helperRendererPlistFilename = path.join(frameworksPath, "Electron Helper (Renderer).app", "Contents", "Info.plist");
134
+ const helperPluginPlistFilename = path.join(frameworksPath, "Electron Helper (Plugin).app", "Contents", "Info.plist");
135
+ const helperGPUPlistFilename = path.join(frameworksPath, "Electron Helper (GPU).app", "Contents", "Info.plist");
121
136
  const helperLoginPlistFilename = path.join(loginItemPath, "Electron Login Helper.app", "Contents", "Info.plist");
122
- const plistContent = await (0, _appBuilder().executeAppBuilderAsJson)(["decode-plist", "-f", appPlistFilename, "-f", helperPlistFilename, "-f", helperEHPlistFilename, "-f", helperNPPlistFilename, "-f", helperLoginPlistFilename]);
137
+ const plistContent = await (0, _appBuilder().executeAppBuilderAsJson)(["decode-plist", "-f", appPlistFilename, "-f", helperPlistFilename, "-f", helperEHPlistFilename, "-f", helperNPPlistFilename, "-f", helperRendererPlistFilename, "-f", helperPluginPlistFilename, "-f", helperGPUPlistFilename, "-f", helperLoginPlistFilename]);
123
138
 
124
139
  if (plistContent[0] == null) {
125
140
  throw new Error("corrupted Electron dist");
@@ -129,10 +144,13 @@ async function createMacApp(packager, appOutDir, asarIntegrity, isMas) {
129
144
  const helperPlist = plistContent[1];
130
145
  const helperEHPlist = plistContent[2];
131
146
  const helperNPPlist = plistContent[3];
132
- const helperLoginPlist = plistContent[4]; // if an extend-info file was supplied, copy its contents in first
147
+ const helperRendererPlist = plistContent[4];
148
+ const helperPluginPlist = plistContent[5];
149
+ const helperGPUPlist = plistContent[6];
150
+ const helperLoginPlist = plistContent[7]; // if an extend-info file was supplied, copy its contents in first
133
151
 
134
- if (plistContent[5] != null) {
135
- Object.assign(appPlist, plistContent[5]);
152
+ if (plistContent[8] != null) {
153
+ Object.assign(appPlist, plistContent[8]);
136
154
  }
137
155
 
138
156
  const buildMetadata = packager.config;
@@ -161,6 +179,18 @@ async function createMacApp(packager, appOutDir, asarIntegrity, isMas) {
161
179
  helper.CFBundleVersion = appPlist.CFBundleVersion;
162
180
  }
163
181
 
182
+ if (helperRendererPlist != null) {
183
+ configureHelper(helperRendererPlist, "(Renderer)");
184
+ }
185
+
186
+ if (helperPluginPlist != null) {
187
+ configureHelper(helperPluginPlist, "(Plugin)");
188
+ }
189
+
190
+ if (helperGPUPlist != null) {
191
+ configureHelper(helperGPUPlist, "(GPU)");
192
+ }
193
+
164
194
  if (helperEHPlist != null) {
165
195
  configureHelper(helperEHPlist, "EH");
166
196
  }
@@ -240,12 +270,24 @@ async function createMacApp(packager, appOutDir, asarIntegrity, isMas) {
240
270
  plistDataToWrite[helperNPPlistFilename] = helperNPPlist;
241
271
  }
242
272
 
273
+ if (helperRendererPlist != null) {
274
+ plistDataToWrite[helperRendererPlistFilename] = helperRendererPlist;
275
+ }
276
+
277
+ if (helperPluginPlist != null) {
278
+ plistDataToWrite[helperPluginPlistFilename] = helperPluginPlist;
279
+ }
280
+
281
+ if (helperGPUPlist != null) {
282
+ plistDataToWrite[helperGPUPlistFilename] = helperGPUPlist;
283
+ }
284
+
243
285
  if (helperLoginPlist != null) {
244
286
  plistDataToWrite[helperLoginPlistFilename] = helperLoginPlist;
245
287
  }
246
288
 
247
289
  await Promise.all([(0, _appBuilder().executeAppBuilderAndWriteJson)(["encode-plist"], plistDataToWrite), doRename(path.join(contentsPath, "MacOS"), "Electron", appPlist.CFBundleExecutable), (0, _fs().unlinkIfExists)(path.join(appOutDir, "LICENSE")), (0, _fs().unlinkIfExists)(path.join(appOutDir, "LICENSES.chromium.html"))]);
248
- await moveHelpers(getAvailableHelperSuffixes(helperEHPlist, helperNPPlist), frameworksPath, appFilename, "Electron");
290
+ await moveHelpers(getAvailableHelperSuffixes(helperEHPlist, helperNPPlist, helperRendererPlist, helperPluginPlist, helperGPUPlist), frameworksPath, appFilename, "Electron");
249
291
 
250
292
  if (helperLoginPlist != null) {
251
293
  const prefix = "Electron";
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/electron/electronMac.ts"],"names":[],"mappings":";;;;;;;AAAA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AACA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AACA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AACA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AACA;;AACA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AAGA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AACA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;;;;;AAEA,SAAS,QAAT,CAAkB,QAAlB,EAAoC,OAApC,EAAqD,OAArD,EAAoE;AAClE,SAAO,uBAAO,IAAI,CAAC,IAAL,CAAU,QAAV,EAAoB,OAApB,CAAP,EAAqC,IAAI,CAAC,IAAL,CAAU,QAAV,EAAoB,OAApB,CAArC,CAAP;AACD;;AAED,SAAS,WAAT,CAAqB,cAArB,EAAoD,cAApD,EAA4E,OAA5E,EAA6F,MAA7F,EAA2G;AACzG,SAAO,uBAAgB,GAAhB,CAAoB,cAApB,EAAoC,MAAM,IAAG;AAClD,UAAM,kBAAkB,GAAG,IAAI,CAAC,IAAL,CAAU,cAAV,EAA0B,GAAG,MAAM,GAAG,MAAM,MAA5C,EAAoD,UAApD,EAAgE,OAAhE,CAA3B;AACA,WAAO,QAAQ,CAAC,kBAAD,EAAqB,GAAG,MAAM,GAAG,MAAM,EAAvC,EAA2C,OAAO,GAAG,MAArD,CAAR,CACJ,IADI,CACC,MAAM,QAAQ,CAAC,cAAD,EAAiB,GAAG,MAAM,GAAG,MAAM,MAAnC,EAA2C,GAAG,OAAO,GAAG,MAAM,MAA9D,CADf,CAAP;AAED,GAJM,CAAP;AAKD;;AAED,SAAS,0BAAT,CAAoC,aAApC,EAAkE,aAAlE,EAA8F;AAC5F,QAAM,MAAM,GAAG,CAAC,SAAD,CAAf;;AACA,MAAI,aAAa,IAAI,IAArB,EAA2B;AACzB,IAAA,MAAM,CAAC,IAAP,CAAY,YAAZ;AACD;;AACD,MAAI,aAAa,IAAI,IAArB,EAA2B;AACzB,IAAA,MAAM,CAAC,IAAP,CAAY,YAAZ;AACD;;AACD,SAAO,MAAP;AACD;AAED;;;AACO,eAAe,YAAf,CAA4B,QAA5B,EAAmD,SAAnD,EAAsE,aAAtE,EAA2G,KAA3G,EAAyH;AAC9H,QAAM,OAAO,GAAG,QAAQ,CAAC,OAAzB;AACA,QAAM,WAAW,GAAG,OAAO,CAAC,eAA5B;AAEA,QAAM,YAAY,GAAG,IAAI,CAAC,IAAL,CAAU,SAAV,EAAqB,QAAQ,CAAC,IAAT,CAAc,SAAd,CAAwB,gBAA7C,EAA+D,UAA/D,CAArB;AACA,QAAM,cAAc,GAAG,IAAI,CAAC,IAAL,CAAU,YAAV,EAAwB,YAAxB,CAAvB;AACA,QAAM,aAAa,GAAG,IAAI,CAAC,IAAL,CAAU,YAAV,EAAwB,SAAxB,EAAmC,YAAnC,CAAtB;AAEA,QAAM,gBAAgB,GAAG,IAAI,CAAC,IAAL,CAAU,YAAV,EAAwB,YAAxB,CAAzB;AACA,QAAM,mBAAmB,GAAG,IAAI,CAAC,IAAL,CAAU,cAAV,EAA0B,qBAA1B,EAAiD,UAAjD,EAA6D,YAA7D,CAA5B;AACA,QAAM,qBAAqB,GAAG,IAAI,CAAC,IAAL,CAAU,cAAV,EAA0B,wBAA1B,EAAoD,UAApD,EAAgE,YAAhE,CAA9B;AACA,QAAM,qBAAqB,GAAG,IAAI,CAAC,IAAL,CAAU,cAAV,EAA0B,wBAA1B,EAAoD,UAApD,EAAgE,YAAhE,CAA9B;AACA,QAAM,wBAAwB,GAAG,IAAI,CAAC,IAAL,CAAU,aAAV,EAAyB,2BAAzB,EAAsD,UAAtD,EAAkE,YAAlE,CAAjC;AAEA,QAAM,YAAY,GAAe,MAAM,2CAAwB,CAAC,cAAD,EAAiB,IAAjB,EAAuB,gBAAvB,EAAyC,IAAzC,EAA+C,mBAA/C,EAAoE,IAApE,EAA0E,qBAA1E,EAAiG,IAAjG,EAAuG,qBAAvG,EAA8H,IAA9H,EAAoI,wBAApI,CAAxB,CAAvC;;AAEA,MAAI,YAAY,CAAC,CAAD,CAAZ,IAAmB,IAAvB,EAA6B;AAC3B,UAAM,IAAI,KAAJ,CAAU,yBAAV,CAAN;AACD;;AAED,QAAM,QAAQ,GAAG,YAAY,CAAC,CAAD,CAA7B;AACA,QAAM,WAAW,GAAG,YAAY,CAAC,CAAD,CAAhC;AACA,QAAM,aAAa,GAAG,YAAY,CAAC,CAAD,CAAlC;AACA,QAAM,aAAa,GAAG,YAAY,CAAC,CAAD,CAAlC;AACA,QAAM,gBAAgB,GAAG,YAAY,CAAC,CAAD,CAArC,CAxB8H,CA0B9H;;AACA,MAAI,YAAY,CAAC,CAAD,CAAZ,IAAmB,IAAvB,EAA6B;AAC3B,IAAA,MAAM,CAAC,MAAP,CAAc,QAAd,EAAwB,YAAY,CAAC,CAAD,CAApC;AACD;;AAED,QAAM,aAAa,GAAG,QAAQ,CAAC,MAA/B;AACA,QAAM,iBAAiB,GAAI,aAAqB,CAAC,kBAAD,CAAhD;;AACA,MAAI,iBAAiB,IAAI,IAAzB,EAA+B;AAC7B,uBAAI,IAAJ,CAAS,8EAAT;AACD;;AACD,QAAM,sBAAsB,GAAG,yCAAyB,QAAQ,CAAC,4BAAT,CAAsC,cAAtC,IAAwD,iBAAxD,IAA6E,GAAG,OAAO,CAAC,mBAAmB,SAApI,CAA/B;AAEA,QAAM,QAAQ,CAAC,eAAT,CAAyB,QAAzB,EAAmC,YAAnC,CAAN,CAtC8H,CAwC9H;;AACA,MAAI,CAAC,KAAL,EAAY;AACV,IAAA,qBAAqB,CAAC,QAAD,CAArB;AACD;;AAED,EAAA,WAAW,CAAC,kBAAZ,GAAiC,GAAG,WAAW,SAA/C;AACA,EAAA,WAAW,CAAC,mBAAZ,GAAkC,GAAG,OAAO,CAAC,WAAW,SAAxD;AACA,EAAA,WAAW,CAAC,kBAAZ,GAAiC,sBAAjC;AACA,EAAA,WAAW,CAAC,eAAZ,GAA8B,QAAQ,CAAC,eAAvC;;AAEA,WAAS,eAAT,CAAyB,MAAzB,EAAsC,OAAtC,EAAqD;AACnD,IAAA,MAAM,CAAC,kBAAP,GAA4B,GAAG,WAAW,WAAW,OAAO,EAA5D;AACA,IAAA,MAAM,CAAC,mBAAP,GAA6B,GAAG,OAAO,CAAC,WAAW,WAAW,OAAO,EAArE;AACA,IAAA,MAAM,CAAC,kBAAP,GAA4B,GAAG,sBAAsB,IAAI,OAAO,EAAhE;AACA,IAAA,MAAM,CAAC,eAAP,GAAyB,QAAQ,CAAC,eAAlC;AACD;;AAED,MAAI,aAAa,IAAI,IAArB,EAA2B;AACzB,IAAA,eAAe,CAAC,aAAD,EAAgB,IAAhB,CAAf;AACD;;AACD,MAAI,aAAa,IAAI,IAArB,EAA2B;AACzB,IAAA,eAAe,CAAC,aAAD,EAAgB,IAAhB,CAAf;AACD;;AACD,MAAI,gBAAgB,IAAI,IAAxB,EAA8B;AAC5B,IAAA,gBAAgB,CAAC,kBAAjB,GAAsC,GAAG,WAAW,eAApD;AACA,IAAA,gBAAgB,CAAC,mBAAjB,GAAuC,GAAG,OAAO,CAAC,WAAW,eAA7D,CAF4B,CAG5B;;AACA,IAAA,gBAAgB,CAAC,kBAAjB,GAAsC,GAAG,OAAO,CAAC,mBAAmB,cAApE;AACA,IAAA,gBAAgB,CAAC,eAAjB,GAAmC,QAAQ,CAAC,eAA5C;AACD;;AAED,QAAM,SAAS,GAAG,4BAAQ,aAAa,CAAC,SAAtB,EAAiC,MAAjC,CAAwC,4BAAQ,QAAQ,CAAC,4BAAT,CAAsC,SAA9C,CAAxC,CAAlB;;AACA,MAAI,SAAS,CAAC,MAAV,GAAmB,CAAvB,EAA0B;AACxB,IAAA,QAAQ,CAAC,gBAAT,GAA4B,SAAS,CAAC,GAAV,CAAc,QAAQ,IAAG;AACnD,YAAM,OAAO,GAAG,4BAAQ,QAAQ,CAAC,OAAjB,CAAhB;;AACA,UAAI,OAAO,CAAC,MAAR,KAAmB,CAAvB,EAA0B;AACxB,cAAM,KAAI,wCAAJ,EAA8B,aAAa,QAAQ,CAAC,IAAI,0CAAxD,CAAN;AACD;;AACD,aAAO;AACL,QAAA,eAAe,EAAE,QAAQ,CAAC,IADrB;AAEL,QAAA,gBAAgB,EAAE,QAAQ,CAAC,IAAT,IAAiB,QAF9B;AAGL,QAAA,kBAAkB,EAAE,OAAO,CAAC,KAAR;AAHf,OAAP;AAKD,KAV2B,CAA5B;AAWD;;AAED,QAAM,gBAAgB,GAAG,QAAQ,CAAC,gBAAlC;;AACA,MAAI,gBAAgB,CAAC,MAAjB,GAA0B,CAA9B,EAAiC;AAC/B,IAAA,QAAQ,CAAC,qBAAT,GAAiC,MAAM,uBAAgB,GAAhB,CAAoB,gBAApB,EAAsC,MAAM,eAAN,IAAwB;AACnG,YAAM,UAAU,GAAG,4BAAQ,eAAe,CAAC,GAAxB,EAA6B,GAA7B,CAAiC,gCAAjC,CAAnB;AACA,YAAM,UAAU,GAAG,MAAM,QAAQ,CAAC,WAAT,CAAqB,4CAAwB,eAAe,CAAC,IAAxC,EAA8C,IAA9C,CAArB,EAA0E,GAAG,UAAU,CAAC,CAAD,CAAG,OAA1F,CAAzB;AACA,UAAI,QAAQ,GAAG,QAAQ,CAAC,gBAAxB;;AACA,UAAI,UAAU,IAAI,IAAlB,EAAwB;AACtB,QAAA,QAAQ,GAAG,IAAI,CAAC,QAAL,CAAc,UAAd,CAAX;AACA,cAAM,0BAAe,UAAf,EAA2B,IAAI,CAAC,IAAL,CAAU,IAAI,CAAC,IAAL,CAAU,YAAV,EAAwB,WAAxB,CAAV,EAAgD,QAAhD,CAA3B,CAAN;AACD;;AAED,YAAM,MAAM,GAAG;AACb,QAAA,sBAAsB,EAAE,UADX;AAEb,QAAA,gBAAgB,EAAE,eAAe,CAAC,IAAhB,IAAwB,UAAU,CAAC,CAAD,CAFvC;AAGb,QAAA,gBAAgB,EAAE,eAAe,CAAC,IAAhB,IAAwB,QAH7B;AAIb,QAAA,oBAAoB,EAAE;AAJT,OAAf;;AAOA,UAAI,eAAe,CAAC,SAApB,EAA+B;AAC7B,QAAA,MAAM,CAAC,eAAP,GAAyB,IAAzB;AACD;;AACD,aAAO,MAAP;AACD,KApBsC,CAAvC;AAqBD;;AAED,MAAI,aAAa,IAAI,IAArB,EAA2B;AACzB,IAAA,QAAQ,CAAC,aAAT,GAAyB,IAAI,CAAC,SAAL,CAAe,aAAf,CAAzB;AACD;;AAED,QAAM,gBAAgB,GAAQ;AAC5B,KAAC,gBAAD,GAAoB,QADQ;AAE5B,KAAC,mBAAD,GAAuB;AAFK,GAA9B;;AAIA,MAAI,aAAa,IAAI,IAArB,EAA2B;AACzB,IAAA,gBAAgB,CAAC,qBAAD,CAAhB,GAA0C,aAA1C;AACD;;AACD,MAAI,aAAa,IAAI,IAArB,EAA2B;AACzB,IAAA,gBAAgB,CAAC,qBAAD,CAAhB,GAA0C,aAA1C;AACD;;AACD,MAAI,gBAAgB,IAAI,IAAxB,EAA8B;AAC5B,IAAA,gBAAgB,CAAC,wBAAD,CAAhB,GAA6C,gBAA7C;AACD;;AAED,QAAM,OAAO,CAAC,GAAR,CAAY,CAChB,iDAA8B,CAAC,cAAD,CAA9B,EAAgD,gBAAhD,CADgB,EAEhB,QAAQ,CAAC,IAAI,CAAC,IAAL,CAAU,YAAV,EAAwB,OAAxB,CAAD,EAAmC,UAAnC,EAA+C,QAAQ,CAAC,kBAAxD,CAFQ,EAGhB,0BAAe,IAAI,CAAC,IAAL,CAAU,SAAV,EAAqB,SAArB,CAAf,CAHgB,EAIhB,0BAAe,IAAI,CAAC,IAAL,CAAU,SAAV,EAAqB,wBAArB,CAAf,CAJgB,CAAZ,CAAN;AAOA,QAAM,WAAW,CAAC,0BAA0B,CAAC,aAAD,EAAgB,aAAhB,CAA3B,EAA2D,cAA3D,EAA2E,WAA3E,EAAwF,UAAxF,CAAjB;;AAEA,MAAI,gBAAgB,IAAI,IAAxB,EAA8B;AAC5B,UAAM,MAAM,GAAG,UAAf;AACA,UAAM,MAAM,GAAG,eAAf;AACA,UAAM,kBAAkB,GAAG,IAAI,CAAC,IAAL,CAAU,aAAV,EAAyB,GAAG,MAAM,GAAG,MAAM,MAA3C,EAAmD,UAAnD,EAA+D,OAA/D,CAA3B;AACA,UAAM,QAAQ,CAAC,kBAAD,EAAqB,GAAG,MAAM,GAAG,MAAM,EAAvC,EAA2C,WAAW,GAAG,MAAzD,CAAR,CACH,IADG,CACE,MAAM,QAAQ,CAAC,aAAD,EAAgB,GAAG,MAAM,GAAG,MAAM,MAAlC,EAA0C,GAAG,WAAW,GAAG,MAAM,MAAjE,CADhB,CAAN;AAED;;AAED,QAAM,OAAO,GAAG,IAAI,CAAC,IAAL,CAAU,SAAV,EAAqB,GAAG,WAAW,MAAnC,CAAhB;AACA,QAAM,uBAAO,IAAI,CAAC,OAAL,CAAa,YAAb,CAAP,EAAmC,OAAnC,CAAN,CAnJ8H,CAoJ9H;;AACA,QAAM,GAAG,GAAG,IAAI,CAAC,GAAL,KAAa,IAAzB;AACA,QAAM,uBAAO,OAAP,EAAgB,GAAhB,EAAqB,GAArB,CAAN;AACD;;AAED,SAAS,qBAAT,CAA+B,QAA/B,EAA4C;AAC1C;AACA,MAAI,GAAG,GAAG,QAAQ,CAAC,sBAAnB;;AACA,MAAI,GAAG,IAAI,IAAX,EAAiB;AACf,IAAA,GAAG,GAAG,EAAN;AACA,IAAA,QAAQ,CAAC,sBAAT,GAAkC,GAAlC;AACD;;AAED,EAAA,GAAG,CAAC,uBAAJ,GAA8B,IAA9B,CAR0C,CAS1C;;AACA,EAAA,GAAG,CAAC,sBAAJ,GAA6B,IAA7B;AAEA,MAAI,gBAAgB,GAAG,GAAG,CAAC,kBAA3B;;AACA,MAAI,gBAAgB,IAAI,IAAxB,EAA8B;AAC5B,IAAA,gBAAgB,GAAG,EAAnB;AACA,IAAA,GAAG,CAAC,kBAAJ,GAAyB,gBAAzB;AACD;;AAED,MAAI,gBAAgB,CAAC,SAAjB,IAA8B,IAAlC,EAAwC;AACtC,UAAM,SAAS,GAAG;AAChB,MAAA,4CAA4C,EAAE,KAD9B;AAEhB,MAAA,oBAAoB,EAAE,KAFN;AAGhB,MAAA,2CAA2C,EAAE,IAH7B;AAIhB,MAAA,qCAAqC,EAAE,KAJvB;AAKhB,MAAA,0CAA0C,EAAE;AAL5B,KAAlB;AAOA,IAAA,gBAAgB,CAAC,SAAjB,GAA6B,SAA7B;AACA,IAAA,gBAAgB,CAAC,WAAD,CAAhB,GAAgC,SAAhC;AACD;AACF,C","sourcesContent":["import BluebirdPromise from \"bluebird-lst\"\nimport { asArray, getPlatformIconFileName, InvalidConfigurationError, log } from \"builder-util\"\nimport { copyOrLinkFile, unlinkIfExists } from \"builder-util/out/fs\"\nimport { rename, utimes } from \"fs-extra\"\nimport * as path from \"path\"\nimport { filterCFBundleIdentifier } from \"../appInfo\"\nimport { AsarIntegrity } from \"../asar/integrity\"\nimport MacPackager from \"../macPackager\"\nimport { normalizeExt } from \"../platformPackager\"\nimport { executeAppBuilderAndWriteJson, executeAppBuilderAsJson } from \"../util/appBuilder\"\n\nfunction doRename(basePath: string, oldName: string, newName: string) {\n return rename(path.join(basePath, oldName), path.join(basePath, newName))\n}\n\nfunction moveHelpers(helperSuffixes: Array<string>, frameworksPath: string, appName: string, prefix: string): Promise<any> {\n return BluebirdPromise.map(helperSuffixes, suffix => {\n const executableBasePath = path.join(frameworksPath, `${prefix}${suffix}.app`, \"Contents\", \"MacOS\")\n return doRename(executableBasePath, `${prefix}${suffix}`, appName + suffix)\n .then(() => doRename(frameworksPath, `${prefix}${suffix}.app`, `${appName}${suffix}.app`))\n })\n}\n\nfunction getAvailableHelperSuffixes(helperEHPlist: string | null, helperNPPlist: string | null) {\n const result = [\" Helper\"]\n if (helperEHPlist != null) {\n result.push(\" Helper EH\")\n }\n if (helperNPPlist != null) {\n result.push(\" Helper NP\")\n }\n return result\n}\n\n/** @internal */\nexport async function createMacApp(packager: MacPackager, appOutDir: string, asarIntegrity: AsarIntegrity | null, isMas: boolean) {\n const appInfo = packager.appInfo\n const appFilename = appInfo.productFilename\n\n const contentsPath = path.join(appOutDir, packager.info.framework.distMacOsAppName, \"Contents\")\n const frameworksPath = path.join(contentsPath, \"Frameworks\")\n const loginItemPath = path.join(contentsPath, \"Library\", \"LoginItems\")\n\n const appPlistFilename = path.join(contentsPath, \"Info.plist\")\n const helperPlistFilename = path.join(frameworksPath, \"Electron Helper.app\", \"Contents\", \"Info.plist\")\n const helperEHPlistFilename = path.join(frameworksPath, \"Electron Helper EH.app\", \"Contents\", \"Info.plist\")\n const helperNPPlistFilename = path.join(frameworksPath, \"Electron Helper NP.app\", \"Contents\", \"Info.plist\")\n const helperLoginPlistFilename = path.join(loginItemPath, \"Electron Login Helper.app\", \"Contents\", \"Info.plist\")\n\n const plistContent: Array<any> = await executeAppBuilderAsJson([\"decode-plist\", \"-f\", appPlistFilename, \"-f\", helperPlistFilename, \"-f\", helperEHPlistFilename, \"-f\", helperNPPlistFilename, \"-f\", helperLoginPlistFilename])\n\n if (plistContent[0] == null) {\n throw new Error(\"corrupted Electron dist\")\n }\n\n const appPlist = plistContent[0]!!\n const helperPlist = plistContent[1]!!\n const helperEHPlist = plistContent[2]\n const helperNPPlist = plistContent[3]\n const helperLoginPlist = plistContent[4]\n\n // if an extend-info file was supplied, copy its contents in first\n if (plistContent[5] != null) {\n Object.assign(appPlist, plistContent[5])\n }\n\n const buildMetadata = packager.config!!\n const oldHelperBundleId = (buildMetadata as any)[\"helper-bundle-id\"]\n if (oldHelperBundleId != null) {\n log.warn(\"build.helper-bundle-id is deprecated, please set as build.mac.helperBundleId\")\n }\n const helperBundleIdentifier = filterCFBundleIdentifier(packager.platformSpecificBuildOptions.helperBundleId || oldHelperBundleId || `${appInfo.macBundleIdentifier}.helper`)\n\n await packager.applyCommonInfo(appPlist, contentsPath)\n\n // required for electron-updater proxy\n if (!isMas) {\n configureLocalhostAts(appPlist)\n }\n\n helperPlist.CFBundleExecutable = `${appFilename} Helper`\n helperPlist.CFBundleDisplayName = `${appInfo.productName} Helper`\n helperPlist.CFBundleIdentifier = helperBundleIdentifier\n helperPlist.CFBundleVersion = appPlist.CFBundleVersion\n\n function configureHelper(helper: any, postfix: string) {\n helper.CFBundleExecutable = `${appFilename} Helper ${postfix}`\n helper.CFBundleDisplayName = `${appInfo.productName} Helper ${postfix}`\n helper.CFBundleIdentifier = `${helperBundleIdentifier}.${postfix}`\n helper.CFBundleVersion = appPlist.CFBundleVersion\n }\n\n if (helperEHPlist != null) {\n configureHelper(helperEHPlist, \"EH\")\n }\n if (helperNPPlist != null) {\n configureHelper(helperNPPlist, \"NP\")\n }\n if (helperLoginPlist != null) {\n helperLoginPlist.CFBundleExecutable = `${appFilename} Login Helper`\n helperLoginPlist.CFBundleDisplayName = `${appInfo.productName} Login Helper`\n // noinspection SpellCheckingInspection\n helperLoginPlist.CFBundleIdentifier = `${appInfo.macBundleIdentifier}.loginhelper`\n helperLoginPlist.CFBundleVersion = appPlist.CFBundleVersion\n }\n\n const protocols = asArray(buildMetadata.protocols).concat(asArray(packager.platformSpecificBuildOptions.protocols))\n if (protocols.length > 0) {\n appPlist.CFBundleURLTypes = protocols.map(protocol => {\n const schemes = asArray(protocol.schemes)\n if (schemes.length === 0) {\n throw new InvalidConfigurationError(`Protocol \"${protocol.name}\": must be at least one scheme specified`)\n }\n return {\n CFBundleURLName: protocol.name,\n CFBundleTypeRole: protocol.role || \"Editor\",\n CFBundleURLSchemes: schemes.slice()\n }\n })\n }\n\n const fileAssociations = packager.fileAssociations\n if (fileAssociations.length > 0) {\n appPlist.CFBundleDocumentTypes = await BluebirdPromise.map(fileAssociations, async fileAssociation => {\n const extensions = asArray(fileAssociation.ext).map(normalizeExt)\n const customIcon = await packager.getResource(getPlatformIconFileName(fileAssociation.icon, true), `${extensions[0]}.icns`)\n let iconFile = appPlist.CFBundleIconFile\n if (customIcon != null) {\n iconFile = path.basename(customIcon)\n await copyOrLinkFile(customIcon, path.join(path.join(contentsPath, \"Resources\"), iconFile))\n }\n\n const result = {\n CFBundleTypeExtensions: extensions,\n CFBundleTypeName: fileAssociation.name || extensions[0],\n CFBundleTypeRole: fileAssociation.role || \"Editor\",\n CFBundleTypeIconFile: iconFile\n } as any\n\n if (fileAssociation.isPackage) {\n result.LSTypeIsPackage = true\n }\n return result\n })\n }\n\n if (asarIntegrity != null) {\n appPlist.AsarIntegrity = JSON.stringify(asarIntegrity)\n }\n\n const plistDataToWrite: any = {\n [appPlistFilename]: appPlist,\n [helperPlistFilename]: helperPlist,\n }\n if (helperEHPlist != null) {\n plistDataToWrite[helperEHPlistFilename] = helperEHPlist\n }\n if (helperNPPlist != null) {\n plistDataToWrite[helperNPPlistFilename] = helperNPPlist\n }\n if (helperLoginPlist != null) {\n plistDataToWrite[helperLoginPlistFilename] = helperLoginPlist\n }\n\n await Promise.all([\n executeAppBuilderAndWriteJson([\"encode-plist\"], plistDataToWrite),\n doRename(path.join(contentsPath, \"MacOS\"), \"Electron\", appPlist.CFBundleExecutable),\n unlinkIfExists(path.join(appOutDir, \"LICENSE\")),\n unlinkIfExists(path.join(appOutDir, \"LICENSES.chromium.html\")),\n ])\n\n await moveHelpers(getAvailableHelperSuffixes(helperEHPlist, helperNPPlist), frameworksPath, appFilename, \"Electron\")\n\n if (helperLoginPlist != null) {\n const prefix = \"Electron\"\n const suffix = \" Login Helper\"\n const executableBasePath = path.join(loginItemPath, `${prefix}${suffix}.app`, \"Contents\", \"MacOS\")\n await doRename(executableBasePath, `${prefix}${suffix}`, appFilename + suffix)\n .then(() => doRename(loginItemPath, `${prefix}${suffix}.app`, `${appFilename}${suffix}.app`))\n }\n\n const appPath = path.join(appOutDir, `${appFilename}.app`)\n await rename(path.dirname(contentsPath), appPath)\n // https://github.com/electron-userland/electron-builder/issues/840\n const now = Date.now() / 1000\n await utimes(appPath, now, now)\n}\n\nfunction configureLocalhostAts(appPlist: any) {\n // https://bencoding.com/2015/07/20/app-transport-security-and-localhost/\n let ats = appPlist.NSAppTransportSecurity\n if (ats == null) {\n ats = {}\n appPlist.NSAppTransportSecurity = ats\n }\n\n ats.NSAllowsLocalNetworking = true\n // https://github.com/electron-userland/electron-builder/issues/3377#issuecomment-446035814\n ats.NSAllowsArbitraryLoads = true\n\n let exceptionDomains = ats.NSExceptionDomains\n if (exceptionDomains == null) {\n exceptionDomains = {}\n ats.NSExceptionDomains = exceptionDomains\n }\n\n if (exceptionDomains.localhost == null) {\n const allowHttp = {\n NSTemporaryExceptionAllowsInsecureHTTPSLoads: false,\n NSIncludesSubdomains: false,\n NSTemporaryExceptionAllowsInsecureHTTPLoads: true,\n NSTemporaryExceptionMinimumTLSVersion: \"1.0\",\n NSTemporaryExceptionRequiresForwardSecrecy: false\n }\n exceptionDomains.localhost = allowHttp\n exceptionDomains[\"127.0.0.1\"] = allowHttp\n }\n}"],"sourceRoot":""}
1
+ {"version":3,"sources":["../../src/electron/electronMac.ts"],"names":[],"mappings":"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","sourcesContent":["import BluebirdPromise from \"bluebird-lst\"\nimport { asArray, getPlatformIconFileName, InvalidConfigurationError, log } from \"builder-util\"\nimport { copyOrLinkFile, unlinkIfExists } from \"builder-util/out/fs\"\nimport { rename, utimes } from \"fs-extra\"\nimport * as path from \"path\"\nimport { filterCFBundleIdentifier } from \"../appInfo\"\nimport { AsarIntegrity } from \"../asar/integrity\"\nimport MacPackager from \"../macPackager\"\nimport { normalizeExt } from \"../platformPackager\"\nimport { executeAppBuilderAndWriteJson, executeAppBuilderAsJson } from \"../util/appBuilder\"\n\nfunction doRename(basePath: string, oldName: string, newName: string) {\n return rename(path.join(basePath, oldName), path.join(basePath, newName))\n}\n\nfunction moveHelpers(helperSuffixes: Array<string>, frameworksPath: string, appName: string, prefix: string): Promise<any> {\n return BluebirdPromise.map(helperSuffixes, suffix => {\n const executableBasePath = path.join(frameworksPath, `${prefix}${suffix}.app`, \"Contents\", \"MacOS\")\n return doRename(executableBasePath, `${prefix}${suffix}`, appName + suffix)\n .then(() => doRename(frameworksPath, `${prefix}${suffix}.app`, `${appName}${suffix}.app`))\n })\n}\n\nfunction getAvailableHelperSuffixes(helperEHPlist: string | null, helperNPPlist: string | null, helperRendererPlist: string | null, helperPluginPlist: string | null, helperGPUPlist: string | null) {\n\n const result = [\" Helper\"]\n if (helperEHPlist != null) {\n result.push(\" Helper EH\")\n }\n if (helperNPPlist != null) {\n result.push(\" Helper NP\")\n }\n if (helperRendererPlist != null) {\n result.push(\" Helper (Renderer)\")\n }\n if (helperPluginPlist != null) {\n result.push(\" Helper (Plugin)\")\n }\n if (helperGPUPlist != null) {\n result.push(\" Helper (GPU)\")\n }\n return result\n}\n\n/** @internal */\nexport async function createMacApp(packager: MacPackager, appOutDir: string, asarIntegrity: AsarIntegrity | null, isMas: boolean) {\n const appInfo = packager.appInfo\n const appFilename = appInfo.productFilename\n\n const contentsPath = path.join(appOutDir, packager.info.framework.distMacOsAppName, \"Contents\")\n const frameworksPath = path.join(contentsPath, \"Frameworks\")\n const loginItemPath = path.join(contentsPath, \"Library\", \"LoginItems\")\n\n const appPlistFilename = path.join(contentsPath, \"Info.plist\")\n const helperPlistFilename = path.join(frameworksPath, \"Electron Helper.app\", \"Contents\", \"Info.plist\")\n const helperEHPlistFilename = path.join(frameworksPath, \"Electron Helper EH.app\", \"Contents\", \"Info.plist\")\n const helperNPPlistFilename = path.join(frameworksPath, \"Electron Helper NP.app\", \"Contents\", \"Info.plist\")\n const helperRendererPlistFilename = path.join(frameworksPath, \"Electron Helper (Renderer).app\", \"Contents\", \"Info.plist\")\n const helperPluginPlistFilename = path.join(frameworksPath, \"Electron Helper (Plugin).app\", \"Contents\", \"Info.plist\")\n const helperGPUPlistFilename = path.join(frameworksPath, \"Electron Helper (GPU).app\", \"Contents\", \"Info.plist\")\n const helperLoginPlistFilename = path.join(loginItemPath, \"Electron Login Helper.app\", \"Contents\", \"Info.plist\")\n\n const plistContent: Array<any> = await executeAppBuilderAsJson([\"decode-plist\", \"-f\", appPlistFilename, \"-f\", helperPlistFilename, \"-f\", helperEHPlistFilename, \"-f\", helperNPPlistFilename, \"-f\", helperRendererPlistFilename, \"-f\", helperPluginPlistFilename, \"-f\", helperGPUPlistFilename, \"-f\", helperLoginPlistFilename])\n\n if (plistContent[0] == null) {\n throw new Error(\"corrupted Electron dist\")\n }\n\n const appPlist = plistContent[0]!!\n const helperPlist = plistContent[1]!!\n const helperEHPlist = plistContent[2]\n const helperNPPlist = plistContent[3]\n const helperRendererPlist = plistContent[4]\n const helperPluginPlist = plistContent[5]\n const helperGPUPlist = plistContent[6]\n const helperLoginPlist = plistContent[7]\n\n // if an extend-info file was supplied, copy its contents in first\n if (plistContent[8] != null) {\n Object.assign(appPlist, plistContent[8])\n }\n\n const buildMetadata = packager.config!!\n const oldHelperBundleId = (buildMetadata as any)[\"helper-bundle-id\"]\n if (oldHelperBundleId != null) {\n log.warn(\"build.helper-bundle-id is deprecated, please set as build.mac.helperBundleId\")\n }\n const helperBundleIdentifier = filterCFBundleIdentifier(packager.platformSpecificBuildOptions.helperBundleId || oldHelperBundleId || `${appInfo.macBundleIdentifier}.helper`)\n\n await packager.applyCommonInfo(appPlist, contentsPath)\n\n // required for electron-updater proxy\n if (!isMas) {\n configureLocalhostAts(appPlist)\n }\n\n helperPlist.CFBundleExecutable = `${appFilename} Helper`\n helperPlist.CFBundleDisplayName = `${appInfo.productName} Helper`\n helperPlist.CFBundleIdentifier = helperBundleIdentifier\n helperPlist.CFBundleVersion = appPlist.CFBundleVersion\n\n function configureHelper(helper: any, postfix: string) {\n helper.CFBundleExecutable = `${appFilename} Helper ${postfix}`\n helper.CFBundleDisplayName = `${appInfo.productName} Helper ${postfix}`\n helper.CFBundleIdentifier = `${helperBundleIdentifier}.${postfix}`\n helper.CFBundleVersion = appPlist.CFBundleVersion\n }\n\n if (helperRendererPlist != null) {\n configureHelper(helperRendererPlist, \"(Renderer)\")\n }\n if (helperPluginPlist != null) {\n configureHelper(helperPluginPlist, \"(Plugin)\")\n }\n if (helperGPUPlist != null) {\n configureHelper(helperGPUPlist, \"(GPU)\")\n }\n if (helperEHPlist != null) {\n configureHelper(helperEHPlist, \"EH\")\n }\n if (helperNPPlist != null) {\n configureHelper(helperNPPlist, \"NP\")\n }\n if (helperLoginPlist != null) {\n helperLoginPlist.CFBundleExecutable = `${appFilename} Login Helper`\n helperLoginPlist.CFBundleDisplayName = `${appInfo.productName} Login Helper`\n // noinspection SpellCheckingInspection\n helperLoginPlist.CFBundleIdentifier = `${appInfo.macBundleIdentifier}.loginhelper`\n helperLoginPlist.CFBundleVersion = appPlist.CFBundleVersion\n }\n\n const protocols = asArray(buildMetadata.protocols).concat(asArray(packager.platformSpecificBuildOptions.protocols))\n if (protocols.length > 0) {\n appPlist.CFBundleURLTypes = protocols.map(protocol => {\n const schemes = asArray(protocol.schemes)\n if (schemes.length === 0) {\n throw new InvalidConfigurationError(`Protocol \"${protocol.name}\": must be at least one scheme specified`)\n }\n return {\n CFBundleURLName: protocol.name,\n CFBundleTypeRole: protocol.role || \"Editor\",\n CFBundleURLSchemes: schemes.slice()\n }\n })\n }\n\n const fileAssociations = packager.fileAssociations\n if (fileAssociations.length > 0) {\n appPlist.CFBundleDocumentTypes = await BluebirdPromise.map(fileAssociations, async fileAssociation => {\n const extensions = asArray(fileAssociation.ext).map(normalizeExt)\n const customIcon = await packager.getResource(getPlatformIconFileName(fileAssociation.icon, true), `${extensions[0]}.icns`)\n let iconFile = appPlist.CFBundleIconFile\n if (customIcon != null) {\n iconFile = path.basename(customIcon)\n await copyOrLinkFile(customIcon, path.join(path.join(contentsPath, \"Resources\"), iconFile))\n }\n\n const result = {\n CFBundleTypeExtensions: extensions,\n CFBundleTypeName: fileAssociation.name || extensions[0],\n CFBundleTypeRole: fileAssociation.role || \"Editor\",\n CFBundleTypeIconFile: iconFile\n } as any\n\n if (fileAssociation.isPackage) {\n result.LSTypeIsPackage = true\n }\n return result\n })\n }\n\n if (asarIntegrity != null) {\n appPlist.AsarIntegrity = JSON.stringify(asarIntegrity)\n }\n\n const plistDataToWrite: any = {\n [appPlistFilename]: appPlist,\n [helperPlistFilename]: helperPlist,\n }\n if (helperEHPlist != null) {\n plistDataToWrite[helperEHPlistFilename] = helperEHPlist\n }\n if (helperNPPlist != null) {\n plistDataToWrite[helperNPPlistFilename] = helperNPPlist\n }\n if (helperRendererPlist != null) {\n plistDataToWrite[helperRendererPlistFilename] = helperRendererPlist\n }\n if (helperPluginPlist != null) {\n plistDataToWrite[helperPluginPlistFilename] = helperPluginPlist\n }\n if (helperGPUPlist != null) {\n plistDataToWrite[helperGPUPlistFilename] = helperGPUPlist\n }\n if (helperLoginPlist != null) {\n plistDataToWrite[helperLoginPlistFilename] = helperLoginPlist\n }\n\n await Promise.all([\n executeAppBuilderAndWriteJson([\"encode-plist\"], plistDataToWrite),\n doRename(path.join(contentsPath, \"MacOS\"), \"Electron\", appPlist.CFBundleExecutable),\n unlinkIfExists(path.join(appOutDir, \"LICENSE\")),\n unlinkIfExists(path.join(appOutDir, \"LICENSES.chromium.html\")),\n ])\n\n await moveHelpers(getAvailableHelperSuffixes(helperEHPlist, helperNPPlist, helperRendererPlist, helperPluginPlist, helperGPUPlist), frameworksPath, appFilename, \"Electron\")\n\n if (helperLoginPlist != null) {\n const prefix = \"Electron\"\n const suffix = \" Login Helper\"\n const executableBasePath = path.join(loginItemPath, `${prefix}${suffix}.app`, \"Contents\", \"MacOS\")\n await doRename(executableBasePath, `${prefix}${suffix}`, appFilename + suffix)\n .then(() => doRename(loginItemPath, `${prefix}${suffix}.app`, `${appFilename}${suffix}.app`))\n }\n\n const appPath = path.join(appOutDir, `${appFilename}.app`)\n await rename(path.dirname(contentsPath), appPath)\n // https://github.com/electron-userland/electron-builder/issues/840\n const now = Date.now() / 1000\n await utimes(appPath, now, now)\n}\n\nfunction configureLocalhostAts(appPlist: any) {\n // https://bencoding.com/2015/07/20/app-transport-security-and-localhost/\n let ats = appPlist.NSAppTransportSecurity\n if (ats == null) {\n ats = {}\n appPlist.NSAppTransportSecurity = ats\n }\n\n ats.NSAllowsLocalNetworking = true\n // https://github.com/electron-userland/electron-builder/issues/3377#issuecomment-446035814\n ats.NSAllowsArbitraryLoads = true\n\n let exceptionDomains = ats.NSExceptionDomains\n if (exceptionDomains == null) {\n exceptionDomains = {}\n ats.NSExceptionDomains = exceptionDomains\n }\n\n if (exceptionDomains.localhost == null) {\n const allowHttp = {\n NSTemporaryExceptionAllowsInsecureHTTPSLoads: false,\n NSIncludesSubdomains: false,\n NSTemporaryExceptionAllowsInsecureHTTPLoads: true,\n NSTemporaryExceptionMinimumTLSVersion: \"1.0\",\n NSTemporaryExceptionRequiresForwardSecrecy: false\n }\n exceptionDomains.localhost = allowHttp\n exceptionDomains[\"127.0.0.1\"] = allowHttp\n }\n}"],"sourceRoot":""}
@@ -265,7 +265,7 @@ class MacPackager extends _platformPackager().PlatformPackager {
265
265
  const masBuildOptions = (0, _builderUtil().deepAssign)({}, this.platformSpecificBuildOptions, this.config.mas);
266
266
 
267
267
  if (targetName === "mas-dev") {
268
- (0, _builderUtil().deepAssign)(masBuildOptions, this.config[targetName], {
268
+ (0, _builderUtil().deepAssign)(masBuildOptions, this.config.masDev, {
269
269
  type: "development"
270
270
  });
271
271
  }
@@ -291,8 +291,8 @@ class MacPackager extends _platformPackager().PlatformPackager {
291
291
  }
292
292
 
293
293
  const isMas = masOptions != null;
294
- const macOptions = this.platformSpecificBuildOptions;
295
- const qualifier = (isMas ? masOptions.identity : null) || macOptions.identity;
294
+ const options = masOptions == null ? this.platformSpecificBuildOptions : masOptions;
295
+ const qualifier = options.identity;
296
296
 
297
297
  if (!isMas && qualifier === null) {
298
298
  if (this.forceCodeSigning) {
@@ -307,7 +307,7 @@ class MacPackager extends _platformPackager().PlatformPackager {
307
307
  }
308
308
 
309
309
  const keychainFile = (await this.codeSigningInfo.value).keychainFile;
310
- const explicitType = isMas ? masOptions.type : macOptions.type;
310
+ const explicitType = options.type;
311
311
  const type = explicitType || "distribution";
312
312
  const isDevelopment = type === "development";
313
313
  const certificateType = getCertificateType(isMas, isDevelopment);
@@ -346,12 +346,12 @@ class MacPackager extends _platformPackager().PlatformPackager {
346
346
  version: this.config.electronVersion,
347
347
  app: appPath,
348
348
  keychain: keychainFile || undefined,
349
- binaries: (isMas && masOptions != null ? masOptions.binaries : macOptions.binaries) || undefined,
350
- requirements: isMas || macOptions.requirements == null ? undefined : await this.getResource(macOptions.requirements),
349
+ binaries: options.binaries || undefined,
350
+ requirements: isMas || this.platformSpecificBuildOptions.requirements == null ? undefined : await this.getResource(this.platformSpecificBuildOptions.requirements),
351
351
  // https://github.com/electron-userland/electron-osx-sign/issues/196
352
352
  // will fail on 10.14.5+ because a signed but unnotarized app is also rejected.
353
- "gatekeeper-assess": macOptions.gatekeeperAssess === true,
354
- hardenedRuntime: macOptions.hardenedRuntime !== false
353
+ "gatekeeper-assess": options.gatekeeperAssess === true,
354
+ hardenedRuntime: options.hardenedRuntime !== false
355
355
  };
356
356
  await this.adjustSignOptions(signOptions, masOptions);
357
357
 
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/macPackager.ts"],"names":[],"mappings":";;;;;;;AAAA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AACA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AACA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AACA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AACA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AACA;;AACA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AACA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AACA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AACA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AACA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AAIA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AACA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AACA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AACA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AACA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AACA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;;;;;AAEc,MAAO,WAAP,SAA2B,oCAA3B,CAA6D;AA0BzE,EAAA,WAAA,CAAY,IAAZ,EAA0B;AACxB,UAAM,IAAN,EAAY,iBAAS,GAArB;AA1BO,SAAA,eAAA,GAAkB,KAAI,eAAJ,EAA0B,MAAK;AACxD,YAAM,OAAO,GAAG,KAAK,UAAL,EAAhB;;AACA,UAAI,OAAO,IAAI,IAAX,IAAmB,OAAO,CAAC,QAAR,KAAqB,QAA5C,EAAsD;AACpD,eAAO,OAAO,CAAC,OAAR,CAAgB;AAAC,UAAA,YAAY,EAAE,OAAO,CAAC,GAAR,CAAY,YAAZ,IAA4B;AAA3C,SAAhB,CAAP;AACD;;AAED,aAAO,mCAAe;AACpB,QAAA,MAAM,EAAE,KAAK,IAAL,CAAU,cADE;AAEpB,QAAA,OAFoB;AAGpB,QAAA,cAAc,EAAE,KAAK,cAAL,EAHI;AAIpB,QAAA,QAAQ,EAAE,uCAAc,KAAK,4BAAL,CAAkC,gBAAhD,EAAkE,OAAO,CAAC,GAAR,CAAY,kBAA9E,CAJU;AAKpB,QAAA,eAAe,EAAE,uCAAc,KAAK,4BAAL,CAAkC,uBAAhD,EAAyE,OAAO,CAAC,GAAR,CAAY,0BAArF,CALG;AAMpB,QAAA,UAAU,EAAE,KAAK;AANG,OAAf,EAQJ,IARI,CAQC,MAAM,IAAG;AACb,cAAM,YAAY,GAAG,MAAM,CAAC,YAA5B;;AACA,YAAI,YAAY,IAAI,IAApB,EAA0B;AACxB,eAAK,IAAL,CAAU,oBAAV,CAA+B,MAAM,mCAAe,YAAf,CAArC;AACD;;AACD,eAAO,MAAP;AACD,OAdI,CAAP;AAeD,KArB0B,CAAlB;AAuBD,SAAA,SAAA,GAAY,KAAI,eAAJ,EAAS,MAAM,KAAK,gBAAL,CAAsB,MAAtB,CAAf,CAAZ;AAIP;;AAED,MAAI,aAAJ,GAAiB;AACf,WAAO,KAAK,IAAL,CAAU,SAAV,CAAoB,mBAA3B;AACD;;AAES,EAAA,cAAc,CAAC,OAAD,EAAiB;AACvC,WAAO,KAAI,kBAAJ,EAAY,KAAK,IAAjB,EAAuB,KAAK,4BAAL,CAAkC,aAAzD,EAAwE,KAAK,4BAA7E,CAAP;AACD;;AAED,QAAM,WAAN,GAAiB;AACf,WAAO,KAAK,SAAL,CAAe,KAAtB;AACD;;AAED,EAAA,aAAa,CAAC,OAAD,EAAyB,MAAzB,EAA4F;AACvG,SAAK,MAAM,IAAX,IAAmB,OAAnB,EAA4B;AAC1B,cAAQ,IAAR;AACE,aAAK,kBAAL;AACE;;AAEF,aAAK,KAAL;AACE,gBAAM;AAAE,YAAA;AAAF,cAAgB,OAAO,CAAC,aAAD,CAA7B;;AACA,UAAA,MAAM,CAAC,IAAD,EAAO,MAAM,IAAI,IAAI,SAAJ,CAAc,IAAd,EAAoB,MAApB,CAAjB,CAAN;AACA;;AAEF,aAAK,KAAL;AACE;AACA,UAAA,MAAM,CAAC,IAAD,EAAO,MAAM,IAAI,KAAI,8BAAJ,EAAkB,IAAlB,EAAwB,MAAxB,EAAgC,IAAhC,EAAsC,IAAtC,CAAjB,CAAN;AACA;;AAEF,aAAK,KAAL;AACE,UAAA,MAAM,CAAC,IAAD,EAAO,MAAM,IAAI,KAAI,gBAAJ,EAAc,IAAd,EAAoB,MAApB,CAAjB,CAAN;AACA;;AAEF;AACE,UAAA,MAAM,CAAC,IAAD,EAAO,MAAM,IAAI,IAAI,KAAK,KAAT,IAAkB,IAAI,KAAK,SAA3B,GAAuC,KAAI,2BAAJ,EAAe,IAAf,CAAvC,GAA8D,yCAAmB,IAAnB,EAAyB,MAAzB,EAAiC,IAAjC,CAA/E,CAAN;AACA;AApBJ;AAsBD;AACF;;AAED,QAAM,IAAN,CAAW,MAAX,EAA2B,IAA3B,EAAuC,OAAvC,EAA+D,WAA/D,EAA4F;AAC1F,QAAI,aAAa,GAAwB,IAAzC;AAEA,UAAM,MAAM,GAAG,OAAO,CAAC,MAAR,KAAmB,CAAnB,IAAwB,OAAO,CAAC,IAAR,CAAa,EAAE,IAAI,EAAE,CAAC,IAAH,KAAY,KAAZ,IAAqB,EAAE,CAAC,IAAH,KAAY,SAApD,CAAvC;AACA,UAAM,WAAW,GAAG,KAAK,eAAL,CAAqB,WAAzC;;AAEA,QAAI,CAAC,MAAD,IAAW,OAAO,CAAC,MAAR,GAAiB,CAAhC,EAAmC;AACjC,YAAM,OAAO,GAAG,WAAW,IAAI,IAAf,GAAsB,IAAI,CAAC,IAAL,CAAU,KAAK,gBAAL,CAAsB,MAAtB,EAA8B,IAA9B,CAAV,EAA+C,GAAG,KAAK,OAAL,CAAa,eAAe,MAA9E,CAAtB,GAA8G,WAA9H;AACA,MAAA,aAAa,GAAG,CAAC,WAAW,GAAG,OAAO,CAAC,OAAR,EAAH,GAAuB,KAAK,MAAL,CAAY,MAAZ,EAAoB,IAAI,CAAC,OAAL,CAAa,OAAb,CAApB,EAA2C,KAAK,QAAL,CAAc,QAAzD,EAA2F,IAA3F,EAAiG,KAAK,4BAAtG,EAAoI,OAApI,CAAnC,EACb,IADa,CACR,MAAM,KAAK,4BAAL,CAAkC,OAAlC,EAA2C,oBAAK,GAAhD,EAAqD,OAArD,EAA8D,WAA9D,CADE,CAAhB;AAED;;AAED,SAAK,MAAM,MAAX,IAAqB,OAArB,EAA8B;AAC5B,YAAM,UAAU,GAAG,MAAM,CAAC,IAA1B;;AACA,UAAI,EAAE,UAAU,KAAK,KAAf,IAAwB,UAAU,KAAK,SAAzC,CAAJ,EAAyD;AACvD;AACD;;AAED,YAAM,eAAe,GAAG,+BAAW,EAAX,EAAe,KAAK,4BAApB,EAAmD,KAAK,MAAL,CAAoB,GAAvE,CAAxB;;AACA,UAAI,UAAU,KAAK,SAAnB,EAA8B;AAC5B,uCAAW,eAAX,EAA6B,KAAK,MAAL,CAAoB,UAApB,CAA7B,EAA8D;AAC5D,UAAA,IAAI,EAAE;AADsD,SAA9D;AAGD;;AAED,YAAM,YAAY,GAAG,IAAI,CAAC,IAAL,CAAU,MAAV,EAAkB,UAAlB,CAArB;;AACA,UAAI,WAAW,IAAI,IAAnB,EAAyB;AACvB,cAAM,KAAK,MAAL,CAAY,MAAZ,EAAoB,YAApB,EAAkC,KAAlC,EAAyC,IAAzC,EAA+C,eAA/C,EAAgE,CAAC,MAAD,CAAhE,CAAN;AACA,cAAM,KAAK,IAAL,CAAU,IAAI,CAAC,IAAL,CAAU,YAAV,EAAwB,GAAG,KAAK,OAAL,CAAa,eAAe,MAAvD,CAAV,EAA0E,YAA1E,EAAwF,eAAxF,CAAN;AACD,OAHD,MAIK;AACH,cAAM,KAAK,IAAL,CAAU,WAAV,EAAuB,YAAvB,EAAqC,eAArC,CAAN;AACD;AACF;;AAED,QAAI,aAAa,IAAI,IAArB,EAA2B;AACzB,YAAM,aAAN;AACD;AACF;;AAEO,QAAM,IAAN,CAAW,OAAX,EAA4B,MAA5B,EAAmD,UAAnD,EAAsF;AAC5F,QAAI,CAAC,mCAAL,EAAsB;AACpB;AACD;;AAED,UAAM,KAAK,GAAG,UAAU,IAAI,IAA5B;AACA,UAAM,UAAU,GAAG,KAAK,4BAAxB;AACA,UAAM,SAAS,GAAG,CAAC,KAAK,GAAG,UAAW,CAAC,QAAf,GAA0B,IAAhC,KAAyC,UAAU,CAAC,QAAtE;;AAEA,QAAI,CAAC,KAAD,IAAU,SAAS,KAAK,IAA5B,EAAkC;AAChC,UAAI,KAAK,gBAAT,EAA2B;AACzB,cAAM,KAAI,wCAAJ,EAA8B,yEAA9B,CAAN;AACD;;AACD,yBAAI,IAAJ,CAAS;AAAC,QAAA,MAAM,EAAE;AAAT,OAAT,EAAyD,4BAAzD;;AACA;AACD;;AAED,UAAM,YAAY,GAAG,CAAC,MAAM,KAAK,eAAL,CAAqB,KAA5B,EAAmC,YAAxD;AACA,UAAM,YAAY,GAAG,KAAK,GAAG,UAAW,CAAC,IAAf,GAAsB,UAAU,CAAC,IAA3D;AACA,UAAM,IAAI,GAAG,YAAY,IAAI,cAA7B;AACA,UAAM,aAAa,GAAG,IAAI,KAAK,aAA/B;AACA,UAAM,eAAe,GAAG,kBAAkB,CAAC,KAAD,EAAQ,aAAR,CAA1C;AACA,QAAI,QAAQ,GAAG,MAAM,iCAAa,eAAb,EAA8B,SAA9B,EAAyC,YAAzC,CAArB;;AACA,QAAI,QAAQ,IAAI,IAAhB,EAAsB;AACpB,UAAI,CAAC,KAAD,IAAU,CAAC,aAAX,IAA4B,YAAY,KAAK,cAAjD,EAAiE;AAC/D,QAAA,QAAQ,GAAG,MAAM,iCAAa,eAAb,EAA8B,SAA9B,EAAyC,YAAzC,CAAjB;;AACA,YAAI,QAAQ,IAAI,IAAhB,EAAsB;AACpB,6BAAI,IAAJ,CAAS,gGAAT;AACD;AACF;;AAED,UAAI,QAAQ,IAAI,IAAhB,EAAsB;AACpB,cAAM,gCAAY,KAAZ,EAAmB,eAAnB,EAAoC,SAApC,EAA+C,YAA/C,EAA6D,KAAK,gBAAlE,CAAN;AACA;AACD;AACF;;AAED,QAAI,CAAC,wCAAL,EAA0B;AACxB,YAAM,KAAI,wCAAJ,EAA8B,+CAA9B,CAAN;AACD;;AAED,UAAM,WAAW,GAAQ;AACvB,6BAAuB,KADA;AAEvB;AACA;AACA,MAAA,MAAM,EAAG,IAAD,IAAiB;AACvB,eAAO,IAAI,CAAC,QAAL,CAAc,OAAd,KAA0B,IAAI,CAAC,UAAL,CAAgB,mBAAhB,EAAqC,OAAO,CAAC,MAA7C,CAA1B,IACL;AACA,QAAA,IAAI,CAAC,QAAL,CAAc,yCAAd,CAFF;AAGD,OARsB;AASvB,MAAA,QAAQ,EAAE,QATa;AAUvB,MAAA,IAVuB;AAWvB,MAAA,QAAQ,EAAE,KAAK,GAAG,KAAH,GAAW,QAXH;AAYvB,MAAA,OAAO,EAAE,KAAK,MAAL,CAAY,eAZE;AAavB,MAAA,GAAG,EAAE,OAbkB;AAcvB,MAAA,QAAQ,EAAE,YAAY,IAAI,SAdH;AAevB,MAAA,QAAQ,EAAE,CAAC,KAAK,IAAI,UAAU,IAAI,IAAvB,GAA8B,UAAU,CAAC,QAAzC,GAAoD,UAAU,CAAC,QAAhE,KAA6E,SAfhE;AAgBvB,MAAA,YAAY,EAAE,KAAK,IAAI,UAAU,CAAC,YAAX,IAA2B,IAApC,GAA2C,SAA3C,GAAuD,MAAM,KAAK,WAAL,CAAiB,UAAU,CAAC,YAA5B,CAhBpD;AAiBvB;AACA;AACA,2BAAqB,UAAU,CAAC,gBAAX,KAAgC,IAnB9B;AAoBvB,MAAA,eAAe,EAAE,UAAU,CAAC,eAAX,KAA+B;AApBzB,KAAzB;AAuBA,UAAM,KAAK,iBAAL,CAAuB,WAAvB,EAAoC,UAApC,CAAN;;AACA,uBAAI,IAAJ,CAAS;AACP,MAAA,IAAI,EAAE,mBAAI,QAAJ,CAAa,OAAb,CADC;AAEP,MAAA,YAAY,EAAE,QAAQ,CAAC,IAFhB;AAGP,MAAA,YAAY,EAAE,QAAQ,CAAC,IAHhB;AAIP,MAAA,mBAAmB,EAAE,WAAW,CAAC,sBAAD,CAAX,IAAuC;AAJrD,KAAT,EAKG,SALH;;AAMA,UAAM,KAAK,MAAL,CAAY,WAAZ,CAAN,CAvE4F,CAyE5F;;AACA,QAAI,UAAU,IAAI,IAAd,IAAsB,CAAC,aAA3B,EAA0C;AACxC,YAAM,QAAQ,GAAG,aAAa,GAAG,eAAH,GAAqB,mCAAnD;AACA,YAAM,oBAAoB,GAAG,MAAM,iCAAa,QAAb,EAAuB,UAAU,CAAC,QAAlC,EAA4C,YAA5C,CAAnC;;AACA,UAAI,oBAAoB,IAAI,IAA5B,EAAkC;AAChC,cAAM,KAAI,wCAAJ,EAA8B,sBAAsB,QAAQ,kFAA5D,CAAN;AACD,OALuC,CAOxC;;;AACA,YAAM,YAAY,GAAG,KAAK,yBAAL,CAA+B,UAA/B,EAA2C,KAA3C,CAArB;AACA,YAAM,YAAY,GAAG,IAAI,CAAC,IAAL,CAAU,MAAV,EAAmB,YAAnB,CAArB;AACA,YAAM,KAAK,MAAL,CAAY,OAAZ,EAAqB,YAArB,EAAmC,oBAAnC,EAAyD,YAAzD,CAAN;AACA,YAAM,KAAK,uBAAL,CAA6B,YAA7B,EAA2C,IAA3C,EAAiD,oBAAK,GAAtD,EAA2D,KAAK,uBAAL,CAA6B,YAA7B,EAA2C,KAA3C,CAA3D,CAAN;AACD;AACF;;AAEO,QAAM,iBAAN,CAAwB,WAAxB,EAA0C,UAA1C,EAA6E;AACnF,UAAM,YAAY,GAAG,MAAM,KAAK,YAAhC;AACA,UAAM,iBAAiB,GAAG,UAAU,IAAI,KAAK,4BAA7C;AACA,UAAM,kBAAkB,GAAG,UAAU,IAAI,IAAd,GAAqB,KAArB,GAA6B,KAAxD;AAEA,QAAI,YAAY,GAAG,iBAAiB,CAAC,YAArC;;AACA,QAAI,YAAY,IAAI,IAApB,EAA0B;AACxB,YAAM,CAAC,GAAG,gBAAgB,kBAAkB,QAA5C;;AACA,UAAI,YAAY,CAAC,QAAb,CAAsB,CAAtB,CAAJ,EAA8B;AAC5B,QAAA,YAAY,GAAG,IAAI,CAAC,IAAL,CAAU,KAAK,IAAL,CAAU,iBAApB,EAAuC,CAAvC,CAAf;AACD,OAFD,MAGK;AACH,QAAA,YAAY,GAAG,oCAAgB,wBAAhB,CAAf;AACD;AACF;;AACD,IAAA,WAAW,CAAC,YAAZ,GAA2B,YAA3B;AAEA,QAAI,mBAAmB,GAAG,iBAAiB,CAAC,mBAA5C;;AACA,QAAI,mBAAmB,IAAI,IAA3B,EAAiC;AAC/B,YAAM,CAAC,GAAG,gBAAgB,kBAAkB,gBAA5C;;AACA,UAAI,YAAY,CAAC,QAAb,CAAsB,CAAtB,CAAJ,EAA8B;AAC5B,QAAA,mBAAmB,GAAG,IAAI,CAAC,IAAL,CAAU,KAAK,IAAL,CAAU,iBAApB,EAAuC,CAAvC,CAAtB;AACD,OAFD,MAGK;AACH,QAAA,mBAAmB,GAAG,oCAAgB,wBAAhB,CAAtB;AACD;AACF;;AACD,IAAA,WAAW,CAAC,sBAAD,CAAX,GAAsC,mBAAtC;;AAEA,QAAI,iBAAiB,CAAC,mBAAlB,IAAyC,IAA7C,EAAmD;AACjD,MAAA,WAAW,CAAC,sBAAD,CAAX,GAAsC,iBAAiB,CAAC,mBAAxD;AACD;AACF,GAtOwE,CAwOzE;;;AACU,QAAM,MAAN,CAAa,IAAb,EAA8B;AACtC,WAAO,kCAAU,IAAV,CAAP;AACD,GA3OwE,CA6OzE;;;AACU,QAAM,MAAN,CAAa,OAAb,EAA8B,OAA9B,EAA+C,QAA/C,EAAmE,QAAnE,EAAsG;AAC9G;AACA,UAAM,uBAAO,IAAI,CAAC,OAAL,CAAa,OAAb,CAAP,CAAN;AAEA,UAAM,IAAI,GAAG,oCAAwB,QAAxB,EAAkC,QAAlC,CAAb;AACA,IAAA,IAAI,CAAC,IAAL,CAAU,aAAV,EAAyB,OAAzB,EAAkC,eAAlC;AACA,IAAA,IAAI,CAAC,IAAL,CAAU,OAAV;AACA,WAAO,MAAM,yBAAK,cAAL,EAAqB,IAArB,CAAb;AACD;;AAEM,EAAA,iBAAiB,CAAC,IAAD,EAAa;AACnC,WAAO,IAAI,CAAC,OAAL,CAAa,KAAK,UAAlB,EAA8B,IAA9B,EAAoC,KAAK,IAAL,CAAU,SAAV,CAAoB,gBAAxD,CAAP;AACD;;AAEM,EAAA,yBAAyB,CAAC,SAAD,EAAkB;AAChD,WAAO,IAAI,CAAC,IAAL,CAAU,SAAV,EAAqB,KAAK,IAAL,CAAU,SAAV,CAAoB,gBAAzC,CAAP;AACD,GA9PwE,CAgQzE;;;AACA,QAAM,eAAN,CAAsB,QAAtB,EAAqC,YAArC,EAAyD;AACvD,UAAM,OAAO,GAAG,KAAK,OAArB;AACA,UAAM,WAAW,GAAG,OAAO,CAAC,eAA5B,CAFuD,CAIvD;;AACA,IAAA,QAAQ,CAAC,kBAAT,GAA8B,WAAW,CAAC,QAAZ,CAAqB,SAArB,IAAkC,WAAW,CAAC,SAAZ,CAAsB,CAAtB,EAAyB,WAAW,CAAC,MAAZ,GAAqB,UAAU,MAAxD,CAAlC,GAAoG,WAAlI;AAEA,UAAM,IAAI,GAAG,MAAM,KAAK,WAAL,EAAnB;;AACA,QAAI,IAAI,IAAI,IAAZ,EAAkB;AAChB,YAAM,OAAO,GAAG,QAAQ,CAAC,gBAAzB;AACA,YAAM,aAAa,GAAG,IAAI,CAAC,IAAL,CAAU,YAAV,EAAwB,WAAxB,CAAtB;;AACA,UAAI,OAAO,IAAI,IAAf,EAAqB;AACnB,cAAM,0BAAe,IAAI,CAAC,IAAL,CAAU,aAAV,EAAyB,OAAzB,CAAf,CAAN;AACD;;AACD,YAAM,YAAY,GAAG,GAAG,WAAW,OAAnC;AACA,MAAA,QAAQ,CAAC,gBAAT,GAA4B,YAA5B;AACA,YAAM,oBAAS,IAAT,EAAe,IAAI,CAAC,IAAL,CAAU,aAAV,EAAyB,YAAzB,CAAf,CAAN;AACD;;AACD,IAAA,QAAQ,CAAC,YAAT,GAAwB,OAAO,CAAC,WAAhC;AACA,IAAA,QAAQ,CAAC,mBAAT,GAA+B,OAAO,CAAC,WAAvC;AAEA,UAAM,oBAAoB,GAAG,KAAK,4BAAL,CAAkC,oBAA/D;;AACA,QAAI,oBAAoB,IAAI,IAA5B,EAAkC;AAChC,MAAA,QAAQ,CAAC,sBAAT,GAAkC,oBAAlC;AACD;;AAED,IAAA,QAAQ,CAAC,kBAAT,GAA8B,OAAO,CAAC,mBAAtC;AAEA,IAAA,QAAQ,CAAC,0BAAT,GAAsC,KAAK,4BAAL,CAAkC,kBAAlC,IAAwD,OAAO,CAAC,OAAtG;AACA,IAAA,QAAQ,CAAC,eAAT,GAA2B,OAAO,CAAC,YAAnC;AAEA,4BAAI,KAAK,4BAAL,CAAkC,QAAlC,IAA+C,KAAK,MAAL,CAAoB,QAAvE,EAAiF,EAAE,IAAI,QAAQ,CAAC,yBAAT,GAAqC,EAA5H;AACA,IAAA,QAAQ,CAAC,wBAAT,GAAoC,OAAO,CAAC,SAA5C;;AAEA,QAAI,KAAK,4BAAL,CAAkC,eAAtC,EAAuD;AACrD,MAAA,QAAQ,CAAC,8BAAT,GAA0C,KAA1C;AACD;;AAED,UAAM,UAAU,GAAG,KAAK,4BAAL,CAAkC,UAArD;;AACA,QAAI,UAAU,IAAI,IAAlB,EAAwB;AACtB,MAAA,MAAM,CAAC,MAAP,CAAc,QAAd,EAAwB,UAAxB;AACD;AACF;;AAES,QAAM,OAAN,CAAc,WAAd,EAA6C,MAA7C,EAA4D;AACpE,UAAM,WAAW,GAAG,GAAG,KAAK,OAAL,CAAa,eAAe,MAAnD;AAEA,UAAM,uBAAgB,GAAhB,CAAoB,wBAAQ,WAAW,CAAC,SAApB,CAApB,EAAqD,IAAD,IAAsB;AAC9E,UAAI,IAAI,KAAK,WAAb,EAA0B;AACxB,eAAO,KAAK,IAAL,CAAU,IAAI,CAAC,IAAL,CAAU,WAAW,CAAC,SAAtB,EAAiC,IAAjC,CAAV,EAAkD,IAAlD,EAAwD,IAAxD,CAAP;AACD;;AACD,aAAO,IAAP;AACD,KALK,CAAN;;AAOA,QAAI,CAAC,MAAL,EAAa;AACX;AACD;;AAED,UAAM,eAAe,GAAG,IAAI,CAAC,IAAL,CAAU,WAAW,CAAC,SAAtB,EAAiC,WAAjC,EAA8C,mBAA9C,CAAxB;AACA,UAAM,uBAAgB,GAAhB,CAAoB,iCAAiB,wBAAQ,eAAR,CAAjB,EAA2C,EAA3C,CAApB,EAAqE,IAAD,IAAsB;AAC9F,UAAI,IAAI,CAAC,QAAL,CAAc,MAAd,CAAJ,EAA2B;AACzB,eAAO,KAAK,IAAL,CAAU,IAAI,CAAC,IAAL,CAAU,eAAV,EAA2B,IAA3B,CAAV,EAA4C,IAA5C,EAAkD,IAAlD,CAAP;AACD,OAFD,MAGK;AACH,eAAO,IAAP;AACD;AACF,KAPK,CAAN;AAQD;;AApUwE;;;;AAuU3E,SAAS,kBAAT,CAA4B,KAA5B,EAA4C,aAA5C,EAAkE;AAChE,MAAI,aAAJ,EAAmB;AACjB,WAAO,eAAP;AACD;;AACD,SAAO,KAAK,GAAG,qCAAH,GAA2C,0BAAvD;AACD,C","sourcesContent":["import BluebirdPromise from \"bluebird-lst\"\nimport { deepAssign, Arch, AsyncTaskManager, exec, InvalidConfigurationError, log, use } from \"builder-util\"\nimport { signAsync, SignOptions } from \"../electron-osx-sign\"\nimport { mkdirs, readdir } from \"fs-extra\"\nimport { Lazy } from \"lazy-val\"\nimport * as path from \"path\"\nimport { copyFile, unlinkIfExists } from \"builder-util/out/fs\"\nimport { orIfFileNotExist } from \"builder-util/out/promise\"\nimport { AppInfo } from \"./appInfo\"\nimport { CertType, CodeSigningInfo, createKeychain, findIdentity, Identity, isSignAllowed, removeKeychain, reportError } from \"./codeSign/macCodeSign\"\nimport { DIR_TARGET, Platform, Target } from \"./core\"\nimport { AfterPackContext, ElectronPlatformName } from \"./index\"\nimport { MacConfiguration, MasConfiguration } from \"./options/macOptions\"\nimport { Packager } from \"./packager\"\nimport { chooseNotNull, PlatformPackager } from \"./platformPackager\"\nimport { ArchiveTarget } from \"./targets/ArchiveTarget\"\nimport { PkgTarget, prepareProductBuildArgs } from \"./targets/pkg\"\nimport { createCommonTarget, NoOpTarget } from \"./targets/targetFactory\"\nimport { isMacOsHighSierra } from \"./util/macosVersion\"\nimport { getTemplatePath } from \"./util/pathManager\"\n\nexport default class MacPackager extends PlatformPackager<MacConfiguration> {\n readonly codeSigningInfo = new Lazy<CodeSigningInfo>(() => {\n const cscLink = this.getCscLink()\n if (cscLink == null || process.platform !== \"darwin\") {\n return Promise.resolve({keychainFile: process.env.CSC_KEYCHAIN || null})\n }\n\n return createKeychain({\n tmpDir: this.info.tempDirManager,\n cscLink,\n cscKeyPassword: this.getCscPassword(),\n cscILink: chooseNotNull(this.platformSpecificBuildOptions.cscInstallerLink, process.env.CSC_INSTALLER_LINK),\n cscIKeyPassword: chooseNotNull(this.platformSpecificBuildOptions.cscInstallerKeyPassword, process.env.CSC_INSTALLER_KEY_PASSWORD),\n currentDir: this.projectDir\n })\n .then(result => {\n const keychainFile = result.keychainFile\n if (keychainFile != null) {\n this.info.disposeOnBuildFinish(() => removeKeychain(keychainFile))\n }\n return result\n })\n })\n\n private _iconPath = new Lazy(() => this.getOrConvertIcon(\"icns\"))\n\n constructor(info: Packager) {\n super(info, Platform.MAC)\n }\n\n get defaultTarget(): Array<string> {\n return this.info.framework.macOsDefaultTargets\n }\n\n protected prepareAppInfo(appInfo: AppInfo): AppInfo {\n return new AppInfo(this.info, this.platformSpecificBuildOptions.bundleVersion, this.platformSpecificBuildOptions)\n }\n\n async getIconPath(): Promise<string | null> {\n return this._iconPath.value\n }\n\n createTargets(targets: Array<string>, mapper: (name: string, factory: (outDir: string) => Target) => void): void {\n for (const name of targets) {\n switch (name) {\n case DIR_TARGET:\n break\n\n case \"dmg\":\n const { DmgTarget } = require(\"dmg-builder\")\n mapper(name, outDir => new DmgTarget(this, outDir))\n break\n\n case \"zip\":\n // https://github.com/electron-userland/electron-builder/issues/2313\n mapper(name, outDir => new ArchiveTarget(name, outDir, this, true))\n break\n\n case \"pkg\":\n mapper(name, outDir => new PkgTarget(this, outDir))\n break\n\n default:\n mapper(name, outDir => name === \"mas\" || name === \"mas-dev\" ? new NoOpTarget(name) : createCommonTarget(name, outDir, this))\n break\n }\n }\n }\n\n async pack(outDir: string, arch: Arch, targets: Array<Target>, taskManager: AsyncTaskManager): Promise<any> {\n let nonMasPromise: Promise<any> | null = null\n\n const hasMas = targets.length !== 0 && targets.some(it => it.name === \"mas\" || it.name === \"mas-dev\")\n const prepackaged = this.packagerOptions.prepackaged\n\n if (!hasMas || targets.length > 1) {\n const appPath = prepackaged == null ? path.join(this.computeAppOutDir(outDir, arch), `${this.appInfo.productFilename}.app`) : prepackaged\n nonMasPromise = (prepackaged ? Promise.resolve() : this.doPack(outDir, path.dirname(appPath), this.platform.nodeName as ElectronPlatformName, arch, this.platformSpecificBuildOptions, targets))\n .then(() => this.packageInDistributableFormat(appPath, Arch.x64, targets, taskManager))\n }\n\n for (const target of targets) {\n const targetName = target.name\n if (!(targetName === \"mas\" || targetName === \"mas-dev\")) {\n continue\n }\n\n const masBuildOptions = deepAssign({}, this.platformSpecificBuildOptions, (this.config as any).mas)\n if (targetName === \"mas-dev\") {\n deepAssign(masBuildOptions, (this.config as any)[targetName], {\n type: \"development\",\n })\n }\n\n const targetOutDir = path.join(outDir, targetName)\n if (prepackaged == null) {\n await this.doPack(outDir, targetOutDir, \"mas\", arch, masBuildOptions, [target])\n await this.sign(path.join(targetOutDir, `${this.appInfo.productFilename}.app`), targetOutDir, masBuildOptions)\n }\n else {\n await this.sign(prepackaged, targetOutDir, masBuildOptions)\n }\n }\n\n if (nonMasPromise != null) {\n await nonMasPromise\n }\n }\n\n private async sign(appPath: string, outDir: string | null, masOptions: MasConfiguration | null): Promise<void> {\n if (!isSignAllowed()) {\n return\n }\n\n const isMas = masOptions != null\n const macOptions = this.platformSpecificBuildOptions\n const qualifier = (isMas ? masOptions!.identity : null) || macOptions.identity\n\n if (!isMas && qualifier === null) {\n if (this.forceCodeSigning) {\n throw new InvalidConfigurationError(\"identity explicitly is set to null, but forceCodeSigning is set to true\")\n }\n log.info({reason: \"identity explicitly is set to null\"}, \"skipped macOS code signing\")\n return\n }\n\n const keychainFile = (await this.codeSigningInfo.value).keychainFile\n const explicitType = isMas ? masOptions!.type : macOptions.type\n const type = explicitType || \"distribution\"\n const isDevelopment = type === \"development\"\n const certificateType = getCertificateType(isMas, isDevelopment)\n let identity = await findIdentity(certificateType, qualifier, keychainFile)\n if (identity == null) {\n if (!isMas && !isDevelopment && explicitType !== \"distribution\") {\n identity = await findIdentity(\"Mac Developer\", qualifier, keychainFile)\n if (identity != null) {\n log.warn(\"Mac Developer is used to sign app — it is only for development and testing, not for production\")\n }\n }\n\n if (identity == null) {\n await reportError(isMas, certificateType, qualifier, keychainFile, this.forceCodeSigning)\n return\n }\n }\n\n if (!isMacOsHighSierra()) {\n throw new InvalidConfigurationError(\"macOS High Sierra 10.13.6 is required to sign\")\n }\n\n const signOptions: any = {\n \"identity-validation\": false,\n // https://github.com/electron-userland/electron-builder/issues/1699\n // kext are signed by the chipset manufacturers. You need a special certificate (only available on request) from Apple to be able to sign kext.\n ignore: (file: string) => {\n return file.endsWith(\".kext\") || file.startsWith(\"/Contents/PlugIns\", appPath.length) ||\n // https://github.com/electron-userland/electron-builder/issues/2010\n file.includes(\"/node_modules/puppeteer/.local-chromium\")\n },\n identity: identity!,\n type,\n platform: isMas ? \"mas\" : \"darwin\",\n version: this.config.electronVersion,\n app: appPath,\n keychain: keychainFile || undefined,\n binaries: (isMas && masOptions != null ? masOptions.binaries : macOptions.binaries) || undefined,\n requirements: isMas || macOptions.requirements == null ? undefined : await this.getResource(macOptions.requirements),\n // https://github.com/electron-userland/electron-osx-sign/issues/196\n // will fail on 10.14.5+ because a signed but unnotarized app is also rejected.\n \"gatekeeper-assess\": macOptions.gatekeeperAssess === true,\n hardenedRuntime: macOptions.hardenedRuntime !== false,\n }\n\n await this.adjustSignOptions(signOptions, masOptions)\n log.info({\n file: log.filePath(appPath),\n identityName: identity.name,\n identityHash: identity.hash,\n provisioningProfile: signOptions[\"provisioning-profile\"] || \"none\",\n }, \"signing\")\n await this.doSign(signOptions)\n\n // https://github.com/electron-userland/electron-builder/issues/1196#issuecomment-312310209\n if (masOptions != null && !isDevelopment) {\n const certType = isDevelopment ? \"Mac Developer\" : \"3rd Party Mac Developer Installer\"\n const masInstallerIdentity = await findIdentity(certType, masOptions.identity, keychainFile)\n if (masInstallerIdentity == null) {\n throw new InvalidConfigurationError(`Cannot find valid \"${certType}\" identity to sign MAS installer, please see https://electron.build/code-signing`)\n }\n\n // mas uploaded to AppStore, so, use \"-\" instead of space for name\n const artifactName = this.expandArtifactNamePattern(masOptions, \"pkg\")\n const artifactPath = path.join(outDir!, artifactName)\n await this.doFlat(appPath, artifactPath, masInstallerIdentity, keychainFile)\n await this.dispatchArtifactCreated(artifactPath, null, Arch.x64, this.computeSafeArtifactName(artifactName, \"pkg\"))\n }\n }\n\n private async adjustSignOptions(signOptions: any, masOptions: MasConfiguration | null) {\n const resourceList = await this.resourceList\n const customSignOptions = masOptions || this.platformSpecificBuildOptions\n const entitlementsSuffix = masOptions == null ? \"mac\" : \"mas\"\n\n let entitlements = customSignOptions.entitlements\n if (entitlements == null) {\n const p = `entitlements.${entitlementsSuffix}.plist`\n if (resourceList.includes(p)) {\n entitlements = path.join(this.info.buildResourcesDir, p)\n }\n else {\n entitlements = getTemplatePath(\"entitlements.mac.plist\")\n }\n }\n signOptions.entitlements = entitlements\n\n let entitlementsInherit = customSignOptions.entitlementsInherit\n if (entitlementsInherit == null) {\n const p = `entitlements.${entitlementsSuffix}.inherit.plist`\n if (resourceList.includes(p)) {\n entitlementsInherit = path.join(this.info.buildResourcesDir, p)\n }\n else {\n entitlementsInherit = getTemplatePath(\"entitlements.mac.plist\")\n }\n }\n signOptions[\"entitlements-inherit\"] = entitlementsInherit\n\n if (customSignOptions.provisioningProfile != null) {\n signOptions[\"provisioning-profile\"] = customSignOptions.provisioningProfile\n }\n }\n\n //noinspection JSMethodCanBeStatic\n protected async doSign(opts: SignOptions): Promise<any> {\n return signAsync(opts)\n }\n\n //noinspection JSMethodCanBeStatic\n protected async doFlat(appPath: string, outFile: string, identity: Identity, keychain: string | null | undefined): Promise<any> {\n // productbuild doesn't created directory for out file\n await mkdirs(path.dirname(outFile))\n\n const args = prepareProductBuildArgs(identity, keychain)\n args.push(\"--component\", appPath, \"/Applications\")\n args.push(outFile)\n return await exec(\"productbuild\", args)\n }\n\n public getElectronSrcDir(dist: string) {\n return path.resolve(this.projectDir, dist, this.info.framework.distMacOsAppName)\n }\n\n public getElectronDestinationDir(appOutDir: string) {\n return path.join(appOutDir, this.info.framework.distMacOsAppName)\n }\n\n // todo fileAssociations\n async applyCommonInfo(appPlist: any, contentsPath: string) {\n const appInfo = this.appInfo\n const appFilename = appInfo.productFilename\n\n // https://github.com/electron-userland/electron-builder/issues/1278\n appPlist.CFBundleExecutable = appFilename.endsWith(\" Helper\") ? appFilename.substring(0, appFilename.length - \" Helper\".length) : appFilename\n\n const icon = await this.getIconPath()\n if (icon != null) {\n const oldIcon = appPlist.CFBundleIconFile\n const resourcesPath = path.join(contentsPath, \"Resources\")\n if (oldIcon != null) {\n await unlinkIfExists(path.join(resourcesPath, oldIcon))\n }\n const iconFileName = `${appFilename}.icns`\n appPlist.CFBundleIconFile = iconFileName\n await copyFile(icon, path.join(resourcesPath, iconFileName))\n }\n appPlist.CFBundleName = appInfo.productName\n appPlist.CFBundleDisplayName = appInfo.productName\n\n const minimumSystemVersion = this.platformSpecificBuildOptions.minimumSystemVersion\n if (minimumSystemVersion != null) {\n appPlist.LSMinimumSystemVersion = minimumSystemVersion\n }\n\n appPlist.CFBundleIdentifier = appInfo.macBundleIdentifier\n\n appPlist.CFBundleShortVersionString = this.platformSpecificBuildOptions.bundleShortVersion || appInfo.version\n appPlist.CFBundleVersion = appInfo.buildVersion\n\n use(this.platformSpecificBuildOptions.category || (this.config as any).category, it => appPlist.LSApplicationCategoryType = it)\n appPlist.NSHumanReadableCopyright = appInfo.copyright\n\n if (this.platformSpecificBuildOptions.darkModeSupport) {\n appPlist.NSRequiresAquaSystemAppearance = false\n }\n\n const extendInfo = this.platformSpecificBuildOptions.extendInfo\n if (extendInfo != null) {\n Object.assign(appPlist, extendInfo)\n }\n }\n\n protected async signApp(packContext: AfterPackContext, isAsar: boolean): Promise<any> {\n const appFileName = `${this.appInfo.productFilename}.app`\n\n await BluebirdPromise.map(readdir(packContext.appOutDir), (file: string): any => {\n if (file === appFileName) {\n return this.sign(path.join(packContext.appOutDir, file), null, null)\n }\n return null\n })\n\n if (!isAsar) {\n return\n }\n\n const outResourcesDir = path.join(packContext.appOutDir, \"resources\", \"app.asar.unpacked\")\n await BluebirdPromise.map(orIfFileNotExist(readdir(outResourcesDir), []), (file: string): any => {\n if (file.endsWith(\".app\")) {\n return this.sign(path.join(outResourcesDir, file), null, null)\n }\n else {\n return null\n }\n })\n }\n}\n\nfunction getCertificateType(isMas: boolean, isDevelopment: boolean): CertType {\n if (isDevelopment) {\n return \"Mac Developer\"\n }\n return isMas ? \"3rd Party Mac Developer Application\" : \"Developer ID Application\"\n}\n"],"sourceRoot":""}
1
+ {"version":3,"sources":["../src/macPackager.ts"],"names":[],"mappings":"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","sourcesContent":["import BluebirdPromise from \"bluebird-lst\"\nimport { deepAssign, Arch, AsyncTaskManager, exec, InvalidConfigurationError, log, use } from \"builder-util\"\nimport { signAsync, SignOptions } from \"../electron-osx-sign\"\nimport { mkdirs, readdir } from \"fs-extra\"\nimport { Lazy } from \"lazy-val\"\nimport * as path from \"path\"\nimport { copyFile, unlinkIfExists } from \"builder-util/out/fs\"\nimport { orIfFileNotExist } from \"builder-util/out/promise\"\nimport { AppInfo } from \"./appInfo\"\nimport { CertType, CodeSigningInfo, createKeychain, findIdentity, Identity, isSignAllowed, removeKeychain, reportError } from \"./codeSign/macCodeSign\"\nimport { DIR_TARGET, Platform, Target } from \"./core\"\nimport { AfterPackContext, ElectronPlatformName } from \"./index\"\nimport { MacConfiguration, MasConfiguration } from \"./options/macOptions\"\nimport { Packager } from \"./packager\"\nimport { chooseNotNull, PlatformPackager } from \"./platformPackager\"\nimport { ArchiveTarget } from \"./targets/ArchiveTarget\"\nimport { PkgTarget, prepareProductBuildArgs } from \"./targets/pkg\"\nimport { createCommonTarget, NoOpTarget } from \"./targets/targetFactory\"\nimport { isMacOsHighSierra } from \"./util/macosVersion\"\nimport { getTemplatePath } from \"./util/pathManager\"\n\nexport default class MacPackager extends PlatformPackager<MacConfiguration> {\n readonly codeSigningInfo = new Lazy<CodeSigningInfo>(() => {\n const cscLink = this.getCscLink()\n if (cscLink == null || process.platform !== \"darwin\") {\n return Promise.resolve({keychainFile: process.env.CSC_KEYCHAIN || null})\n }\n\n return createKeychain({\n tmpDir: this.info.tempDirManager,\n cscLink,\n cscKeyPassword: this.getCscPassword(),\n cscILink: chooseNotNull(this.platformSpecificBuildOptions.cscInstallerLink, process.env.CSC_INSTALLER_LINK),\n cscIKeyPassword: chooseNotNull(this.platformSpecificBuildOptions.cscInstallerKeyPassword, process.env.CSC_INSTALLER_KEY_PASSWORD),\n currentDir: this.projectDir\n })\n .then(result => {\n const keychainFile = result.keychainFile\n if (keychainFile != null) {\n this.info.disposeOnBuildFinish(() => removeKeychain(keychainFile))\n }\n return result\n })\n })\n\n private _iconPath = new Lazy(() => this.getOrConvertIcon(\"icns\"))\n\n constructor(info: Packager) {\n super(info, Platform.MAC)\n }\n\n get defaultTarget(): Array<string> {\n return this.info.framework.macOsDefaultTargets\n }\n\n protected prepareAppInfo(appInfo: AppInfo): AppInfo {\n return new AppInfo(this.info, this.platformSpecificBuildOptions.bundleVersion, this.platformSpecificBuildOptions)\n }\n\n async getIconPath(): Promise<string | null> {\n return this._iconPath.value\n }\n\n createTargets(targets: Array<string>, mapper: (name: string, factory: (outDir: string) => Target) => void): void {\n for (const name of targets) {\n switch (name) {\n case DIR_TARGET:\n break\n\n case \"dmg\":\n const { DmgTarget } = require(\"dmg-builder\")\n mapper(name, outDir => new DmgTarget(this, outDir))\n break\n\n case \"zip\":\n // https://github.com/electron-userland/electron-builder/issues/2313\n mapper(name, outDir => new ArchiveTarget(name, outDir, this, true))\n break\n\n case \"pkg\":\n mapper(name, outDir => new PkgTarget(this, outDir))\n break\n\n default:\n mapper(name, outDir => name === \"mas\" || name === \"mas-dev\" ? new NoOpTarget(name) : createCommonTarget(name, outDir, this))\n break\n }\n }\n }\n\n async pack(outDir: string, arch: Arch, targets: Array<Target>, taskManager: AsyncTaskManager): Promise<any> {\n let nonMasPromise: Promise<any> | null = null\n\n const hasMas = targets.length !== 0 && targets.some(it => it.name === \"mas\" || it.name === \"mas-dev\")\n const prepackaged = this.packagerOptions.prepackaged\n\n if (!hasMas || targets.length > 1) {\n const appPath = prepackaged == null ? path.join(this.computeAppOutDir(outDir, arch), `${this.appInfo.productFilename}.app`) : prepackaged\n nonMasPromise = (prepackaged ? Promise.resolve() : this.doPack(outDir, path.dirname(appPath), this.platform.nodeName as ElectronPlatformName, arch, this.platformSpecificBuildOptions, targets))\n .then(() => this.packageInDistributableFormat(appPath, Arch.x64, targets, taskManager))\n }\n\n for (const target of targets) {\n const targetName = target.name\n if (!(targetName === \"mas\" || targetName === \"mas-dev\")) {\n continue\n }\n\n const masBuildOptions = deepAssign({}, this.platformSpecificBuildOptions, this.config.mas)\n if (targetName === \"mas-dev\") {\n deepAssign(masBuildOptions, this.config.masDev, {\n type: \"development\",\n })\n }\n\n const targetOutDir = path.join(outDir, targetName)\n if (prepackaged == null) {\n await this.doPack(outDir, targetOutDir, \"mas\", arch, masBuildOptions, [target])\n await this.sign(path.join(targetOutDir, `${this.appInfo.productFilename}.app`), targetOutDir, masBuildOptions)\n }\n else {\n await this.sign(prepackaged, targetOutDir, masBuildOptions)\n }\n }\n\n if (nonMasPromise != null) {\n await nonMasPromise\n }\n }\n\n private async sign(appPath: string, outDir: string | null, masOptions: MasConfiguration | null): Promise<void> {\n if (!isSignAllowed()) {\n return\n }\n\n const isMas = masOptions != null\n const options = masOptions == null ? this.platformSpecificBuildOptions : masOptions\n const qualifier = options.identity\n\n if (!isMas && qualifier === null) {\n if (this.forceCodeSigning) {\n throw new InvalidConfigurationError(\"identity explicitly is set to null, but forceCodeSigning is set to true\")\n }\n log.info({reason: \"identity explicitly is set to null\"}, \"skipped macOS code signing\")\n return\n }\n\n const keychainFile = (await this.codeSigningInfo.value).keychainFile\n const explicitType = options.type\n const type = explicitType || \"distribution\"\n const isDevelopment = type === \"development\"\n const certificateType = getCertificateType(isMas, isDevelopment)\n let identity = await findIdentity(certificateType, qualifier, keychainFile)\n if (identity == null) {\n if (!isMas && !isDevelopment && explicitType !== \"distribution\") {\n identity = await findIdentity(\"Mac Developer\", qualifier, keychainFile)\n if (identity != null) {\n log.warn(\"Mac Developer is used to sign app — it is only for development and testing, not for production\")\n }\n }\n\n if (identity == null) {\n await reportError(isMas, certificateType, qualifier, keychainFile, this.forceCodeSigning)\n return\n }\n }\n\n if (!isMacOsHighSierra()) {\n throw new InvalidConfigurationError(\"macOS High Sierra 10.13.6 is required to sign\")\n }\n\n const signOptions: any = {\n \"identity-validation\": false,\n // https://github.com/electron-userland/electron-builder/issues/1699\n // kext are signed by the chipset manufacturers. You need a special certificate (only available on request) from Apple to be able to sign kext.\n ignore: (file: string) => {\n return file.endsWith(\".kext\") || file.startsWith(\"/Contents/PlugIns\", appPath.length) ||\n // https://github.com/electron-userland/electron-builder/issues/2010\n file.includes(\"/node_modules/puppeteer/.local-chromium\")\n },\n identity: identity!,\n type,\n platform: isMas ? \"mas\" : \"darwin\",\n version: this.config.electronVersion,\n app: appPath,\n keychain: keychainFile || undefined,\n binaries: options.binaries || undefined,\n requirements: isMas || this.platformSpecificBuildOptions.requirements == null ? undefined : await this.getResource(this.platformSpecificBuildOptions.requirements),\n // https://github.com/electron-userland/electron-osx-sign/issues/196\n // will fail on 10.14.5+ because a signed but unnotarized app is also rejected.\n \"gatekeeper-assess\": options.gatekeeperAssess === true,\n hardenedRuntime: options.hardenedRuntime !== false,\n }\n\n await this.adjustSignOptions(signOptions, masOptions)\n log.info({\n file: log.filePath(appPath),\n identityName: identity.name,\n identityHash: identity.hash,\n provisioningProfile: signOptions[\"provisioning-profile\"] || \"none\",\n }, \"signing\")\n await this.doSign(signOptions)\n\n // https://github.com/electron-userland/electron-builder/issues/1196#issuecomment-312310209\n if (masOptions != null && !isDevelopment) {\n const certType = isDevelopment ? \"Mac Developer\" : \"3rd Party Mac Developer Installer\"\n const masInstallerIdentity = await findIdentity(certType, masOptions.identity, keychainFile)\n if (masInstallerIdentity == null) {\n throw new InvalidConfigurationError(`Cannot find valid \"${certType}\" identity to sign MAS installer, please see https://electron.build/code-signing`)\n }\n\n // mas uploaded to AppStore, so, use \"-\" instead of space for name\n const artifactName = this.expandArtifactNamePattern(masOptions, \"pkg\")\n const artifactPath = path.join(outDir!, artifactName)\n await this.doFlat(appPath, artifactPath, masInstallerIdentity, keychainFile)\n await this.dispatchArtifactCreated(artifactPath, null, Arch.x64, this.computeSafeArtifactName(artifactName, \"pkg\"))\n }\n }\n\n private async adjustSignOptions(signOptions: any, masOptions: MasConfiguration | null) {\n const resourceList = await this.resourceList\n const customSignOptions = masOptions || this.platformSpecificBuildOptions\n const entitlementsSuffix = masOptions == null ? \"mac\" : \"mas\"\n\n let entitlements = customSignOptions.entitlements\n if (entitlements == null) {\n const p = `entitlements.${entitlementsSuffix}.plist`\n if (resourceList.includes(p)) {\n entitlements = path.join(this.info.buildResourcesDir, p)\n }\n else {\n entitlements = getTemplatePath(\"entitlements.mac.plist\")\n }\n }\n signOptions.entitlements = entitlements\n\n let entitlementsInherit = customSignOptions.entitlementsInherit\n if (entitlementsInherit == null) {\n const p = `entitlements.${entitlementsSuffix}.inherit.plist`\n if (resourceList.includes(p)) {\n entitlementsInherit = path.join(this.info.buildResourcesDir, p)\n }\n else {\n entitlementsInherit = getTemplatePath(\"entitlements.mac.plist\")\n }\n }\n signOptions[\"entitlements-inherit\"] = entitlementsInherit\n\n if (customSignOptions.provisioningProfile != null) {\n signOptions[\"provisioning-profile\"] = customSignOptions.provisioningProfile\n }\n }\n\n //noinspection JSMethodCanBeStatic\n protected async doSign(opts: SignOptions): Promise<any> {\n return signAsync(opts)\n }\n\n //noinspection JSMethodCanBeStatic\n protected async doFlat(appPath: string, outFile: string, identity: Identity, keychain: string | null | undefined): Promise<any> {\n // productbuild doesn't created directory for out file\n await mkdirs(path.dirname(outFile))\n\n const args = prepareProductBuildArgs(identity, keychain)\n args.push(\"--component\", appPath, \"/Applications\")\n args.push(outFile)\n return await exec(\"productbuild\", args)\n }\n\n public getElectronSrcDir(dist: string) {\n return path.resolve(this.projectDir, dist, this.info.framework.distMacOsAppName)\n }\n\n public getElectronDestinationDir(appOutDir: string) {\n return path.join(appOutDir, this.info.framework.distMacOsAppName)\n }\n\n // todo fileAssociations\n async applyCommonInfo(appPlist: any, contentsPath: string) {\n const appInfo = this.appInfo\n const appFilename = appInfo.productFilename\n\n // https://github.com/electron-userland/electron-builder/issues/1278\n appPlist.CFBundleExecutable = appFilename.endsWith(\" Helper\") ? appFilename.substring(0, appFilename.length - \" Helper\".length) : appFilename\n\n const icon = await this.getIconPath()\n if (icon != null) {\n const oldIcon = appPlist.CFBundleIconFile\n const resourcesPath = path.join(contentsPath, \"Resources\")\n if (oldIcon != null) {\n await unlinkIfExists(path.join(resourcesPath, oldIcon))\n }\n const iconFileName = `${appFilename}.icns`\n appPlist.CFBundleIconFile = iconFileName\n await copyFile(icon, path.join(resourcesPath, iconFileName))\n }\n appPlist.CFBundleName = appInfo.productName\n appPlist.CFBundleDisplayName = appInfo.productName\n\n const minimumSystemVersion = this.platformSpecificBuildOptions.minimumSystemVersion\n if (minimumSystemVersion != null) {\n appPlist.LSMinimumSystemVersion = minimumSystemVersion\n }\n\n appPlist.CFBundleIdentifier = appInfo.macBundleIdentifier\n\n appPlist.CFBundleShortVersionString = this.platformSpecificBuildOptions.bundleShortVersion || appInfo.version\n appPlist.CFBundleVersion = appInfo.buildVersion\n\n use(this.platformSpecificBuildOptions.category || (this.config as any).category, it => appPlist.LSApplicationCategoryType = it)\n appPlist.NSHumanReadableCopyright = appInfo.copyright\n\n if (this.platformSpecificBuildOptions.darkModeSupport) {\n appPlist.NSRequiresAquaSystemAppearance = false\n }\n\n const extendInfo = this.platformSpecificBuildOptions.extendInfo\n if (extendInfo != null) {\n Object.assign(appPlist, extendInfo)\n }\n }\n\n protected async signApp(packContext: AfterPackContext, isAsar: boolean): Promise<any> {\n const appFileName = `${this.appInfo.productFilename}.app`\n\n await BluebirdPromise.map(readdir(packContext.appOutDir), (file: string): any => {\n if (file === appFileName) {\n return this.sign(path.join(packContext.appOutDir, file), null, null)\n }\n return null\n })\n\n if (!isAsar) {\n return\n }\n\n const outResourcesDir = path.join(packContext.appOutDir, \"resources\", \"app.asar.unpacked\")\n await BluebirdPromise.map(orIfFileNotExist(readdir(outResourcesDir), []), (file: string): any => {\n if (file.endsWith(\".app\")) {\n return this.sign(path.join(outResourcesDir, file), null, null)\n }\n else {\n return null\n }\n })\n }\n}\n\nfunction getCertificateType(isMas: boolean, isDevelopment: boolean): CertType {\n if (isDevelopment) {\n return \"Mac Developer\"\n }\n return isMas ? \"3rd Party Mac Developer Application\" : \"Developer ID Application\"\n}\n"],"sourceRoot":""}
package/out/packager.js CHANGED
@@ -362,7 +362,7 @@ class Packager {
362
362
 
363
363
  try {
364
364
  _builderUtil().log.info({
365
- version: "21.1.3",
365
+ version: "21.2.0",
366
366
  os: require("os").release()
367
367
  }, "electron-builder");
368
368
  } catch (e) {
@@ -66,7 +66,7 @@ class LinuxTargetHelper {
66
66
  <glob pattern="*.${fileAssociation.ext}"/>
67
67
  ${fileAssociation.description ? `<comment>${fileAssociation.description}</comment>` : ""}
68
68
  <icon name="x-office-document" />
69
- </mime-type>`;
69
+ </mime-type>`;
70
70
  items.push(data);
71
71
  }
72
72
 
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/targets/LinuxTargetHelper.ts"],"names":[],"mappings":"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","sourcesContent":["import { asArray, isEmptyOrSpaces, log } from \"builder-util\"\nimport { outputFile } from \"fs-extra\"\nimport { Lazy } from \"lazy-val\"\nimport { LinuxTargetSpecificOptions } from \"..\"\nimport { LinuxPackager } from \"../linuxPackager\"\nimport { IconInfo } from \"../platformPackager\"\n\nexport const installPrefix = \"/opt\"\n\nexport class LinuxTargetHelper {\n private readonly iconPromise = new Lazy(() => this.computeDesktopIcons())\n\n private readonly mimeTypeFilesPromise = new Lazy(() => this.computeMimeTypeFiles())\n\n maxIconPath: string | null = null\n\n constructor(private packager: LinuxPackager) {\n }\n\n get icons(): Promise<Array<IconInfo>> {\n return this.iconPromise.value\n }\n\n get mimeTypeFiles(): Promise<string | null> {\n return this.mimeTypeFilesPromise.value\n }\n\n private async computeMimeTypeFiles(): Promise<string | null> {\n const items: Array<string> = []\n for (const fileAssociation of this.packager.fileAssociations) {\n if (!fileAssociation.mimeType) {\n continue\n }\n\n const data = `<mime-type type=\"${fileAssociation.mimeType}\">\n <glob pattern=\"*.${fileAssociation.ext}\"/>\n ${fileAssociation.description ? `<comment>${fileAssociation.description}</comment>` : \"\"}\n <icon name=\"x-office-document\" />\n </mime-type>`\n items.push(data)\n }\n\n if (items.length === 0) {\n return null\n }\n\n const file = await this.packager.getTempFile(\".xml\")\n await outputFile(file, '<?xml version=\"1.0\" encoding=\"utf-8\"?>\\n<mime-info xmlns=\"http://www.freedesktop.org/standards/shared-mime-info\">\\n' + items.join(\"\\n\") + \"\\n</mime-info>\")\n return file\n }\n\n // must be name without spaces and other special characters, but not product name used\n private async computeDesktopIcons(): Promise<Array<IconInfo>> {\n const packager = this.packager\n const iconDir = packager.platformSpecificBuildOptions.icon\n const sources = iconDir == null ? [] : [iconDir]\n\n const commonConfiguration = packager.config\n const icnsPath = (commonConfiguration.mac || {}).icon || commonConfiguration.icon\n if (icnsPath != null) {\n sources.push(icnsPath)\n }\n\n // need to put here and not as default because need to resolve image size\n const result = await packager.resolveIcon(sources, asArray(packager.getDefaultFrameworkIcon()), \"set\")\n this.maxIconPath = result[result.length - 1].file\n return result\n }\n\n getDescription(options: LinuxTargetSpecificOptions) {\n return options.description || this.packager.appInfo.description\n }\n\n async writeDesktopEntry(targetSpecificOptions: LinuxTargetSpecificOptions, exec?: string, destination?: string | null, extra?: { [key: string]: string; }): Promise<string> {\n const data = await this.computeDesktopEntry(targetSpecificOptions, exec, extra)\n const file = destination || await this.packager.getTempFile(`${this.packager.appInfo.productFilename}.desktop`)\n await outputFile(file, data)\n return file\n }\n\n async computeDesktopEntry(targetSpecificOptions: LinuxTargetSpecificOptions, exec?: string, extra?: { [key: string]: string; }): Promise<string> {\n if (exec != null && exec.length === 0) {\n throw new Error(\"Specified exec is empty\")\n }\n // https://github.com/electron-userland/electron-builder/issues/3418\n if (targetSpecificOptions.desktop != null && targetSpecificOptions.desktop.Exec != null) {\n throw new Error(\"Please specify executable name as linux.executableName instead of linux.desktop.Exec\")\n }\n\n const packager = this.packager\n const appInfo = packager.appInfo\n\n const productFilename = appInfo.productFilename\n\n if (exec == null) {\n exec = `${installPrefix}/${productFilename}/${packager.executableName}`\n if (!/^[/0-9A-Za-z._-]+$/.test(exec)) {\n exec = `\"${exec}\"`\n }\n exec += \" %U\"\n }\n\n const desktopMeta: any = {\n Name: appInfo.productName,\n Exec: exec,\n Terminal: \"false\",\n Type: \"Application\",\n Icon: packager.executableName,\n // https://askubuntu.com/questions/367396/what-represent-the-startupwmclass-field-of-a-desktop-file\n // must be set to package.json name (because it is Electron set WM_CLASS)\n // to get WM_CLASS of running window: xprop WM_CLASS\n // StartupWMClass doesn't work for unicode\n // https://github.com/electron/electron/blob/2-0-x/atom/browser/native_window_views.cc#L226\n StartupWMClass: appInfo.productName,\n ...extra,\n ...targetSpecificOptions.desktop,\n }\n\n const description = this.getDescription(targetSpecificOptions)\n if (!isEmptyOrSpaces(description)) {\n desktopMeta.Comment = description\n }\n\n const mimeTypes: Array<string> = asArray(targetSpecificOptions.mimeTypes)\n for (const fileAssociation of packager.fileAssociations) {\n if (fileAssociation.mimeType != null) {\n mimeTypes.push(fileAssociation.mimeType)\n }\n }\n\n for (const protocol of asArray(packager.config.protocols).concat(asArray(packager.platformSpecificBuildOptions.protocols))) {\n for (const scheme of asArray(protocol.schemes)) {\n mimeTypes.push(`x-scheme-handler/${scheme}`)\n }\n }\n\n if (mimeTypes.length !== 0) {\n desktopMeta.MimeType = mimeTypes.join(\";\") + \";\"\n }\n\n let category = targetSpecificOptions.category\n if (isEmptyOrSpaces(category)) {\n const macCategory = (packager.config.mac || {}).category\n if (macCategory != null) {\n category = macToLinuxCategory[macCategory]\n }\n\n if (category == null) {\n // https://github.com/develar/onshape-desktop-shell/issues/48\n if (macCategory != null) {\n log.warn({macCategory}, \"cannot map macOS category to Linux. If possible mapping is known for you, please file issue to add it.\")\n }\n log.warn({\n reason: \"linux.category is not set and cannot map from macOS\",\n docs: \"https://www.electron.build/configuration/linux\",\n }, \"application Linux category is set to default \\\"Utility\\\"\")\n category = \"Utility\"\n }\n }\n desktopMeta.Categories = `${category}${category.endsWith(\";\") ? \"\" : \";\"}`\n\n let data = `[Desktop Entry]`\n for (const name of Object.keys(desktopMeta)) {\n data += `\\n${name}=${desktopMeta[name]}`\n }\n data += \"\\n\"\n return data\n }\n}\n\nconst macToLinuxCategory: any = {\n \"public.app-category.graphics-design\": \"Graphics\",\n \"public.app-category.developer-tools\": \"Development\",\n \"public.app-category.education\": \"Education\",\n \"public.app-category.games\": \"Game\",\n \"public.app-category.video\": \"Video;AudioVideo\",\n \"public.app-category.utilities\": \"Utility\",\n \"public.app-category.social-networking\": \"Network;Chat\",\n \"public.app-category.finance\": \"Office;Finance\",\n}\n"],"sourceRoot":""}
1
+ {"version":3,"sources":["../../src/targets/LinuxTargetHelper.ts"],"names":[],"mappings":"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","sourcesContent":["import { asArray, isEmptyOrSpaces, log } from \"builder-util\"\nimport { outputFile } from \"fs-extra\"\nimport { Lazy } from \"lazy-val\"\nimport { LinuxTargetSpecificOptions } from \"..\"\nimport { LinuxPackager } from \"../linuxPackager\"\nimport { IconInfo } from \"../platformPackager\"\n\nexport const installPrefix = \"/opt\"\n\nexport class LinuxTargetHelper {\n private readonly iconPromise = new Lazy(() => this.computeDesktopIcons())\n\n private readonly mimeTypeFilesPromise = new Lazy(() => this.computeMimeTypeFiles())\n\n maxIconPath: string | null = null\n\n constructor(private packager: LinuxPackager) {\n }\n\n get icons(): Promise<Array<IconInfo>> {\n return this.iconPromise.value\n }\n\n get mimeTypeFiles(): Promise<string | null> {\n return this.mimeTypeFilesPromise.value\n }\n\n private async computeMimeTypeFiles(): Promise<string | null> {\n const items: Array<string> = []\n for (const fileAssociation of this.packager.fileAssociations) {\n if (!fileAssociation.mimeType) {\n continue\n }\n\n const data = `<mime-type type=\"${fileAssociation.mimeType}\">\n <glob pattern=\"*.${fileAssociation.ext}\"/>\n ${fileAssociation.description ? `<comment>${fileAssociation.description}</comment>` : \"\"}\n <icon name=\"x-office-document\" />\n</mime-type>`\n items.push(data)\n }\n\n if (items.length === 0) {\n return null\n }\n\n const file = await this.packager.getTempFile(\".xml\")\n await outputFile(file, '<?xml version=\"1.0\" encoding=\"utf-8\"?>\\n<mime-info xmlns=\"http://www.freedesktop.org/standards/shared-mime-info\">\\n' + items.join(\"\\n\") + \"\\n</mime-info>\")\n return file\n }\n\n // must be name without spaces and other special characters, but not product name used\n private async computeDesktopIcons(): Promise<Array<IconInfo>> {\n const packager = this.packager\n const iconDir = packager.platformSpecificBuildOptions.icon\n const sources = iconDir == null ? [] : [iconDir]\n\n const commonConfiguration = packager.config\n const icnsPath = (commonConfiguration.mac || {}).icon || commonConfiguration.icon\n if (icnsPath != null) {\n sources.push(icnsPath)\n }\n\n // need to put here and not as default because need to resolve image size\n const result = await packager.resolveIcon(sources, asArray(packager.getDefaultFrameworkIcon()), \"set\")\n this.maxIconPath = result[result.length - 1].file\n return result\n }\n\n getDescription(options: LinuxTargetSpecificOptions) {\n return options.description || this.packager.appInfo.description\n }\n\n async writeDesktopEntry(targetSpecificOptions: LinuxTargetSpecificOptions, exec?: string, destination?: string | null, extra?: { [key: string]: string; }): Promise<string> {\n const data = await this.computeDesktopEntry(targetSpecificOptions, exec, extra)\n const file = destination || await this.packager.getTempFile(`${this.packager.appInfo.productFilename}.desktop`)\n await outputFile(file, data)\n return file\n }\n\n async computeDesktopEntry(targetSpecificOptions: LinuxTargetSpecificOptions, exec?: string, extra?: { [key: string]: string; }): Promise<string> {\n if (exec != null && exec.length === 0) {\n throw new Error(\"Specified exec is empty\")\n }\n // https://github.com/electron-userland/electron-builder/issues/3418\n if (targetSpecificOptions.desktop != null && targetSpecificOptions.desktop.Exec != null) {\n throw new Error(\"Please specify executable name as linux.executableName instead of linux.desktop.Exec\")\n }\n\n const packager = this.packager\n const appInfo = packager.appInfo\n\n const productFilename = appInfo.productFilename\n\n if (exec == null) {\n exec = `${installPrefix}/${productFilename}/${packager.executableName}`\n if (!/^[/0-9A-Za-z._-]+$/.test(exec)) {\n exec = `\"${exec}\"`\n }\n exec += \" %U\"\n }\n\n const desktopMeta: any = {\n Name: appInfo.productName,\n Exec: exec,\n Terminal: \"false\",\n Type: \"Application\",\n Icon: packager.executableName,\n // https://askubuntu.com/questions/367396/what-represent-the-startupwmclass-field-of-a-desktop-file\n // must be set to package.json name (because it is Electron set WM_CLASS)\n // to get WM_CLASS of running window: xprop WM_CLASS\n // StartupWMClass doesn't work for unicode\n // https://github.com/electron/electron/blob/2-0-x/atom/browser/native_window_views.cc#L226\n StartupWMClass: appInfo.productName,\n ...extra,\n ...targetSpecificOptions.desktop,\n }\n\n const description = this.getDescription(targetSpecificOptions)\n if (!isEmptyOrSpaces(description)) {\n desktopMeta.Comment = description\n }\n\n const mimeTypes: Array<string> = asArray(targetSpecificOptions.mimeTypes)\n for (const fileAssociation of packager.fileAssociations) {\n if (fileAssociation.mimeType != null) {\n mimeTypes.push(fileAssociation.mimeType)\n }\n }\n\n for (const protocol of asArray(packager.config.protocols).concat(asArray(packager.platformSpecificBuildOptions.protocols))) {\n for (const scheme of asArray(protocol.schemes)) {\n mimeTypes.push(`x-scheme-handler/${scheme}`)\n }\n }\n\n if (mimeTypes.length !== 0) {\n desktopMeta.MimeType = mimeTypes.join(\";\") + \";\"\n }\n\n let category = targetSpecificOptions.category\n if (isEmptyOrSpaces(category)) {\n const macCategory = (packager.config.mac || {}).category\n if (macCategory != null) {\n category = macToLinuxCategory[macCategory]\n }\n\n if (category == null) {\n // https://github.com/develar/onshape-desktop-shell/issues/48\n if (macCategory != null) {\n log.warn({macCategory}, \"cannot map macOS category to Linux. If possible mapping is known for you, please file issue to add it.\")\n }\n log.warn({\n reason: \"linux.category is not set and cannot map from macOS\",\n docs: \"https://www.electron.build/configuration/linux\",\n }, \"application Linux category is set to default \\\"Utility\\\"\")\n category = \"Utility\"\n }\n }\n desktopMeta.Categories = `${category}${category.endsWith(\";\") ? \"\" : \";\"}`\n\n let data = `[Desktop Entry]`\n for (const name of Object.keys(desktopMeta)) {\n data += `\\n${name}=${desktopMeta[name]}`\n }\n data += \"\\n\"\n return data\n }\n}\n\nconst macToLinuxCategory: any = {\n \"public.app-category.graphics-design\": \"Graphics\",\n \"public.app-category.developer-tools\": \"Development\",\n \"public.app-category.education\": \"Education\",\n \"public.app-category.games\": \"Game\",\n \"public.app-category.video\": \"Video;AudioVideo\",\n \"public.app-category.utilities\": \"Utility\",\n \"public.app-category.social-networking\": \"Network;Chat\",\n \"public.app-category.finance\": \"Office;Finance\",\n}\n"],"sourceRoot":""}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/targets/fpm.ts"],"names":[],"mappings":"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","sourcesContent":["import { path7za } from \"7zip-bin\"\nimport { Arch, executeAppBuilder, log, TmpDir, toLinuxArchString, use } from \"builder-util\"\nimport { unlinkIfExists } from \"builder-util/out/fs\"\nimport { ensureDir, outputFile, readFile } from \"fs-extra\"\nimport * as path from \"path\"\nimport { DebOptions, LinuxTargetSpecificOptions } from \"..\"\nimport { smarten } from \"../appInfo\"\nimport { Target } from \"../core\"\nimport * as errorMessages from \"../errorMessages\"\nimport { LinuxPackager } from \"../linuxPackager\"\nimport { objectToArgs } from \"../util/appBuilder\"\nimport { computeEnv } from \"../util/bundledTool\"\nimport { isMacOsSierra } from \"../util/macosVersion\"\nimport { getTemplatePath } from \"../util/pathManager\"\nimport { installPrefix, LinuxTargetHelper } from \"./LinuxTargetHelper\"\nimport { getLinuxToolsPath } from \"./tools\"\n\ninterface FpmOptions {\n maintainer: string | undefined\n vendor: string\n url: string\n}\n\nexport default class FpmTarget extends Target {\n readonly options: LinuxTargetSpecificOptions = {...this.packager.platformSpecificBuildOptions, ...(this.packager.config as any)[this.name]}\n\n private readonly scriptFiles: Promise<Array<string>>\n\n constructor(name: string, private readonly packager: LinuxPackager, private readonly helper: LinuxTargetHelper, readonly outDir: string) {\n super(name, false)\n\n this.scriptFiles = this.createScripts()\n }\n\n private async createScripts(): Promise<Array<string>> {\n const defaultTemplatesDir = getTemplatePath(\"linux\")\n\n const packager = this.packager\n const templateOptions = {\n // old API compatibility\n executable: packager.executableName,\n productFilename: packager.appInfo.productFilename, ...packager.platformSpecificBuildOptions}\n\n function getResource(value: string | null | undefined, defaultFile: string) {\n if (value == null) {\n return path.join(defaultTemplatesDir, defaultFile)\n }\n return path.resolve(packager.projectDir, value)\n }\n\n return await Promise.all<string>([\n writeConfigFile(packager.info.tempDirManager, getResource(this.options.afterInstall, \"after-install.tpl\"), templateOptions),\n writeConfigFile(packager.info.tempDirManager, getResource(this.options.afterRemove, \"after-remove.tpl\"), templateOptions)\n ])\n }\n\n checkOptions(): Promise<any> {\n return this.computeFpmMetaInfoOptions()\n }\n\n private async computeFpmMetaInfoOptions(): Promise<FpmOptions> {\n const packager = this.packager\n const projectUrl = await packager.appInfo.computePackageUrl()\n const errors: Array<string> = []\n if (projectUrl == null) {\n errors.push(\"Please specify project homepage, see https://electron.build/configuration/configuration#Metadata-homepage\")\n }\n\n const options = this.options\n let author = options.maintainer\n if (author == null) {\n const a = packager.info.metadata.author\n if (a == null || a.email == null) {\n errors.push(errorMessages.authorEmailIsMissed)\n }\n else {\n author = `${a.name} <${a.email}>`\n }\n }\n\n if (errors.length > 0) {\n throw new Error(errors.join(\"\\n\\n\"))\n }\n\n return {\n maintainer: author!!,\n url: projectUrl!!,\n vendor: options.vendor || author!!,\n }\n }\n\n async build(appOutDir: string, arch: Arch): Promise<any> {\n const target = this.name\n\n // tslint:disable:no-invalid-template-strings\n let nameFormat = \"${name}-${version}-${arch}.${ext}\"\n let isUseArchIfX64 = false\n if (target === \"deb\") {\n nameFormat = \"${name}_${version}_${arch}.${ext}\"\n isUseArchIfX64 = true\n }\n else if (target === \"rpm\") {\n nameFormat = \"${name}-${version}.${arch}.${ext}\"\n isUseArchIfX64 = true\n }\n\n const packager = this.packager\n const artifactPath = path.join(this.outDir, packager.expandArtifactNamePattern(this.options, target, arch, nameFormat, !isUseArchIfX64))\n\n await packager.info.callArtifactBuildStarted({\n targetPresentableName: target,\n file: artifactPath,\n arch,\n })\n\n await unlinkIfExists(artifactPath)\n if (packager.packagerOptions.prepackaged != null) {\n await ensureDir(this.outDir)\n }\n\n const scripts = await this.scriptFiles\n const appInfo = packager.appInfo\n const options = this.options\n const synopsis = options.synopsis\n const args = [\n \"--architecture\", toLinuxArchString(arch, target),\n \"--name\", appInfo.linuxPackageName,\n \"--after-install\", scripts[0],\n \"--after-remove\", scripts[1],\n \"--description\", smarten(target === \"rpm\" ? this.helper.getDescription(options)! : `${synopsis || \"\"}\\n ${this.helper.getDescription(options)}`),\n \"--version\", appInfo.version,\n \"--package\", artifactPath,\n ]\n\n objectToArgs(args, await this.computeFpmMetaInfoOptions() as any)\n\n const packageCategory = options.packageCategory\n if (packageCategory != null) {\n args.push(\"--category\", packageCategory)\n }\n\n if (target === \"deb\") {\n use((options as DebOptions).priority, it => args.push(\"--deb-priority\", it!))\n }\n else if (target === \"rpm\") {\n if (synopsis != null) {\n args.push(\"--rpm-summary\", smarten(synopsis))\n }\n }\n\n const fpmConfiguration: FpmConfiguration = {\n args, target,\n }\n\n if (options.compression != null) {\n fpmConfiguration.compression = options.compression\n }\n\n // noinspection JSDeprecatedSymbols\n const depends = options.depends\n if (depends != null) {\n if (Array.isArray(depends)) {\n fpmConfiguration.customDepends = depends\n }\n else {\n // noinspection SuspiciousTypeOfGuard\n if (typeof depends === \"string\") {\n fpmConfiguration.customDepends = [depends as string]\n }\n else {\n throw new Error(`depends must be Array or String, but specified as: ${depends}`)\n }\n }\n }\n\n use(packager.info.metadata.license, it => args.push(\"--license\", it!))\n use(appInfo.buildNumber, it => args.push(\"--iteration\", it!))\n\n use(options.fpm, it => args.push(...it as any))\n\n args.push(`${appOutDir}/=${installPrefix}/${appInfo.productFilename}`)\n for (const icon of (await this.helper.icons)) {\n const extWithDot = path.extname(icon.file)\n const sizeName = extWithDot === \".svg\" ? \"scalable\" : `${icon.size}x${icon.size}`\n args.push(`${icon.file}=/usr/share/icons/hicolor/${sizeName}/apps/${packager.executableName}${extWithDot}`)\n }\n\n const mimeTypeFilePath = await this.helper.mimeTypeFiles\n if (mimeTypeFilePath != null) {\n args.push(`${mimeTypeFilePath}=/usr/share/mime/packages/${packager.executableName}.xml`)\n }\n\n const desktopFilePath = await this.helper.writeDesktopEntry(this.options)\n args.push(`${desktopFilePath}=/usr/share/applications/${packager.executableName}.desktop`)\n\n if (packager.packagerOptions.effectiveOptionComputed != null && await packager.packagerOptions.effectiveOptionComputed([args, desktopFilePath])) {\n return\n }\n\n const env = {\n ...process.env,\n SZA_PATH: path7za,\n SZA_COMPRESSION_LEVEL: packager.compression === \"store\" ? \"0\" : \"9\",\n }\n\n // rpmbuild wants directory rpm with some default config files. Even if we can use dylibbundler, path to such config files are not changed (we need to replace in the binary)\n // so, for now, brew install rpm is still required.\n if (target !== \"rpm\" && await isMacOsSierra()) {\n const linuxToolsPath = await getLinuxToolsPath()\n Object.assign(env, {\n PATH: computeEnv(process.env.PATH, [path.join(linuxToolsPath, \"bin\")]),\n DYLD_LIBRARY_PATH: computeEnv(process.env.DYLD_LIBRARY_PATH, [path.join(linuxToolsPath, \"lib\")]),\n })\n }\n await executeAppBuilder([\"fpm\", \"--configuration\", JSON.stringify(fpmConfiguration)], undefined, {env})\n\n await packager.dispatchArtifactCreated(artifactPath, this, arch)\n }\n}\n\ninterface FpmConfiguration {\n target: string\n args: Array<string>\n customDepends?: Array<string>\n compression?: string | null\n}\n\nasync function writeConfigFile(tmpDir: TmpDir, templatePath: string, options: any): Promise<string> {\n //noinspection JSUnusedLocalSymbols\n function replacer(match: string, p1: string) {\n if (p1 in options) {\n return options[p1]\n }\n else {\n throw new Error(`Macro ${p1} is not defined`)\n }\n }\n const config = (await readFile(templatePath, \"utf8\"))\n .replace(/\\${([a-zA-Z]+)}/g, replacer)\n .replace(/<%=([a-zA-Z]+)%>/g, (match, p1) => {\n log.warn(\"<%= varName %> is deprecated, please use ${varName} instead\")\n return replacer(match, p1.trim())\n })\n\n const outputPath = await tmpDir.getTempFile({suffix: path.basename(templatePath, \".tpl\")})\n await outputFile(outputPath, config)\n return outputPath\n}\n"],"sourceRoot":""}
1
+ {"version":3,"sources":["../../src/targets/fpm.ts"],"names":[],"mappings":"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","sourcesContent":["import { path7za } from \"7zip-bin\"\nimport { Arch, executeAppBuilder, log, TmpDir, toLinuxArchString, use } from \"builder-util\"\nimport { unlinkIfExists } from \"builder-util/out/fs\"\nimport { ensureDir, outputFile, readFile } from \"fs-extra\"\nimport * as path from \"path\"\nimport { DebOptions, LinuxTargetSpecificOptions } from \"..\"\nimport { smarten } from \"../appInfo\"\nimport { Target } from \"../core\"\nimport * as errorMessages from \"../errorMessages\"\nimport { LinuxPackager } from \"../linuxPackager\"\nimport { objectToArgs } from \"../util/appBuilder\"\nimport { computeEnv } from \"../util/bundledTool\"\nimport { isMacOsSierra } from \"../util/macosVersion\"\nimport { getTemplatePath } from \"../util/pathManager\"\nimport { installPrefix, LinuxTargetHelper } from \"./LinuxTargetHelper\"\nimport { getLinuxToolsPath } from \"./tools\"\n\ninterface FpmOptions {\n maintainer: string | undefined\n vendor: string\n url: string\n}\n\nexport default class FpmTarget extends Target {\n readonly options: LinuxTargetSpecificOptions = {...this.packager.platformSpecificBuildOptions, ...(this.packager.config as any)[this.name]}\n\n private readonly scriptFiles: Promise<Array<string>>\n\n constructor(name: string, private readonly packager: LinuxPackager, private readonly helper: LinuxTargetHelper, readonly outDir: string) {\n super(name, false)\n\n this.scriptFiles = this.createScripts()\n }\n\n private async createScripts(): Promise<Array<string>> {\n const defaultTemplatesDir = getTemplatePath(\"linux\")\n\n const packager = this.packager\n const templateOptions = {\n // old API compatibility\n executable: packager.executableName,\n productFilename: packager.appInfo.productFilename, ...packager.platformSpecificBuildOptions}\n\n function getResource(value: string | null | undefined, defaultFile: string) {\n if (value == null) {\n return path.join(defaultTemplatesDir, defaultFile)\n }\n return path.resolve(packager.projectDir, value)\n }\n\n return await Promise.all<string>([\n writeConfigFile(packager.info.tempDirManager, getResource(this.options.afterInstall, \"after-install.tpl\"), templateOptions),\n writeConfigFile(packager.info.tempDirManager, getResource(this.options.afterRemove, \"after-remove.tpl\"), templateOptions)\n ])\n }\n\n checkOptions(): Promise<any> {\n return this.computeFpmMetaInfoOptions()\n }\n\n private async computeFpmMetaInfoOptions(): Promise<FpmOptions> {\n const packager = this.packager\n const projectUrl = await packager.appInfo.computePackageUrl()\n const errors: Array<string> = []\n if (projectUrl == null) {\n errors.push(\"Please specify project homepage, see https://electron.build/configuration/configuration#Metadata-homepage\")\n }\n\n const options = this.options\n let author = options.maintainer\n if (author == null) {\n const a = packager.info.metadata.author\n if (a == null || a.email == null) {\n errors.push(errorMessages.authorEmailIsMissed)\n }\n else {\n author = `${a.name} <${a.email}>`\n }\n }\n\n if (errors.length > 0) {\n throw new Error(errors.join(\"\\n\\n\"))\n }\n\n return {\n maintainer: author!!,\n url: projectUrl!!,\n vendor: options.vendor || author!!,\n }\n }\n\n async build(appOutDir: string, arch: Arch): Promise<any> {\n const target = this.name\n\n // tslint:disable:no-invalid-template-strings\n let nameFormat = \"${name}-${version}-${arch}.${ext}\"\n let isUseArchIfX64 = false\n if (target === \"deb\") {\n nameFormat = \"${name}_${version}_${arch}.${ext}\"\n isUseArchIfX64 = true\n }\n else if (target === \"rpm\") {\n nameFormat = \"${name}-${version}.${arch}.${ext}\"\n isUseArchIfX64 = true\n }\n\n const packager = this.packager\n const artifactPath = path.join(this.outDir, packager.expandArtifactNamePattern(this.options, target, arch, nameFormat, !isUseArchIfX64))\n\n await packager.info.callArtifactBuildStarted({\n targetPresentableName: target,\n file: artifactPath,\n arch,\n })\n\n await unlinkIfExists(artifactPath)\n if (packager.packagerOptions.prepackaged != null) {\n await ensureDir(this.outDir)\n }\n\n const scripts = await this.scriptFiles\n const appInfo = packager.appInfo\n const options = this.options\n const synopsis = options.synopsis\n const args = [\n \"--architecture\", toLinuxArchString(arch, target),\n \"--name\", appInfo.linuxPackageName,\n \"--after-install\", scripts[0],\n \"--after-remove\", scripts[1],\n \"--description\", smarten(target === \"rpm\" ? this.helper.getDescription(options)! : `${synopsis || \"\"}\\n ${this.helper.getDescription(options)}`),\n \"--version\", appInfo.version,\n \"--package\", artifactPath,\n ]\n\n objectToArgs(args, await this.computeFpmMetaInfoOptions() as any)\n\n const packageCategory = options.packageCategory\n if (packageCategory != null) {\n args.push(\"--category\", packageCategory)\n }\n\n if (target === \"deb\") {\n use((options as DebOptions).priority, it => args.push(\"--deb-priority\", it!))\n }\n else if (target === \"rpm\") {\n if (synopsis != null) {\n args.push(\"--rpm-summary\", smarten(synopsis))\n }\n }\n\n const fpmConfiguration: FpmConfiguration = {\n args, target,\n }\n\n if (options.compression != null) {\n fpmConfiguration.compression = options.compression\n }\n\n // noinspection JSDeprecatedSymbols\n const depends = options.depends\n if (depends != null) {\n if (Array.isArray(depends)) {\n fpmConfiguration.customDepends = depends\n }\n else {\n // noinspection SuspiciousTypeOfGuard\n if (typeof depends === \"string\") {\n fpmConfiguration.customDepends = [depends as string]\n }\n else {\n throw new Error(`depends must be Array or String, but specified as: ${depends}`)\n }\n }\n }\n\n use(packager.info.metadata.license, it => args.push(\"--license\", it!))\n use(appInfo.buildNumber, it => args.push(\"--iteration\", it!))\n\n use(options.fpm, it => args.push(...it as any))\n\n args.push(`${appOutDir}/=${installPrefix}/${appInfo.productFilename}`)\n for (const icon of (await this.helper.icons)) {\n const extWithDot = path.extname(icon.file)\n const sizeName = extWithDot === \".svg\" ? \"scalable\" : `${icon.size}x${icon.size}`\n args.push(`${icon.file}=/usr/share/icons/hicolor/${sizeName}/apps/${packager.executableName}${extWithDot}`)\n }\n\n const mimeTypeFilePath = await this.helper.mimeTypeFiles\n if (mimeTypeFilePath != null) {\n args.push(`${mimeTypeFilePath}=/usr/share/mime/packages/${packager.executableName}.xml`)\n }\n\n const desktopFilePath = await this.helper.writeDesktopEntry(this.options)\n args.push(`${desktopFilePath}=/usr/share/applications/${packager.executableName}.desktop`)\n\n if (packager.packagerOptions.effectiveOptionComputed != null && await packager.packagerOptions.effectiveOptionComputed([args, desktopFilePath])) {\n return\n }\n\n const env = {\n ...process.env,\n SZA_PATH: path7za,\n SZA_COMPRESSION_LEVEL: packager.compression === \"store\" ? \"0\" : \"9\",\n }\n\n // rpmbuild wants directory rpm with some default config files. Even if we can use dylibbundler, path to such config files are not changed (we need to replace in the binary)\n // so, for now, brew install rpm is still required.\n if (target !== \"rpm\" && await isMacOsSierra()) {\n const linuxToolsPath = await getLinuxToolsPath()\n Object.assign(env, {\n PATH: computeEnv(process.env.PATH, [path.join(linuxToolsPath, \"bin\")]),\n DYLD_LIBRARY_PATH: computeEnv(process.env.DYLD_LIBRARY_PATH, [path.join(linuxToolsPath, \"lib\")]),\n })\n }\n\n await executeAppBuilder([\"fpm\", \"--configuration\", JSON.stringify(fpmConfiguration)], undefined, {env})\n\n await packager.dispatchArtifactCreated(artifactPath, this, arch)\n }\n}\n\ninterface FpmConfiguration {\n target: string\n args: Array<string>\n customDepends?: Array<string>\n compression?: string | null\n}\n\nasync function writeConfigFile(tmpDir: TmpDir, templatePath: string, options: any): Promise<string> {\n //noinspection JSUnusedLocalSymbols\n function replacer(match: string, p1: string) {\n if (p1 in options) {\n return options[p1]\n }\n else {\n throw new Error(`Macro ${p1} is not defined`)\n }\n }\n const config = (await readFile(templatePath, \"utf8\"))\n .replace(/\\${([a-zA-Z]+)}/g, replacer)\n .replace(/<%=([a-zA-Z]+)%>/g, (match, p1) => {\n log.warn(\"<%= varName %> is deprecated, please use ${varName} instead\")\n return replacer(match, p1.trim())\n })\n\n const outputPath = await tmpDir.getTempFile({suffix: path.basename(templatePath, \".tpl\")})\n await outputFile(outputPath, config)\n return outputPath\n}\n"],"sourceRoot":""}
@@ -519,15 +519,21 @@ class NsisTarget extends _core().Target {
519
519
  // it is more safe and reliable to write uninstaller to our out dir
520
520
 
521
521
 
522
- const uninstallerPath = path.join(this.outDir, `.__uninstaller-${this.name}-${this.packager.appInfo.sanitizedName}.exe`);
522
+ const uninstallerPath = path.join(this.outDir, `__uninstaller-${this.name}-${this.packager.appInfo.sanitizedName}.exe`);
523
523
  const isWin = process.platform === "win32";
524
524
  defines.BUILD_UNINSTALLER = null;
525
525
  defines.UNINSTALLER_OUT_FILE = isWin ? uninstallerPath : path.win32.join("Z:", uninstallerPath);
526
526
  await this.executeMakensis(defines, commands, sharedHeader + (await this.computeFinalScript(script, false))); // http://forums.winamp.com/showthread.php?p=3078545
527
- //
528
527
 
529
- if (await (0, _macosVersion().isMacOsCatalina)()) {
530
- (await packager.vm.value).exec(installerPath, []);
528
+ if ((0, _macosVersion().isMacOsCatalina)()) {
529
+ (await packager.vm.value).exec(installerPath, []); // Parallels VM can exit after command execution, but NSIS continue to be running
530
+
531
+ let i = 0;
532
+
533
+ while (!(await (0, _fs().exists)(uninstallerPath)) && i++ < 100) {
534
+ // noinspection JSUnusedLocalSymbols
535
+ await new Promise((resolve, _reject) => setTimeout(resolve, 300));
536
+ }
531
537
  } else {
532
538
  await (0, _wine().execWine)(installerPath);
533
539
  }
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/targets/nsis/NsisTarget.ts"],"names":[],"mappings":"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","sourcesContent":["import { path7za } from \"7zip-bin\"\nimport BluebirdPromise from \"bluebird-lst\"\nimport { executeAppBuilder, Arch, asArray, AsyncTaskManager, getPlatformIconFileName, InvalidConfigurationError, log, spawnAndWrite, use, exec } from \"builder-util\"\nimport { PackageFileInfo, UUID, CURRENT_APP_PACKAGE_FILE_NAME, CURRENT_APP_INSTALLER_FILE_NAME } from \"builder-util-runtime\"\nimport { getBinFromUrl } from \"../../binDownload\"\nimport { statOrNull, walk } from \"builder-util/out/fs\"\nimport { hashFile } from \"../../util/hash\"\nimport _debug from \"debug\"\nimport { readFile, stat, unlink } from \"fs-extra\"\nimport { Lazy } from \"lazy-val\"\nimport * as path from \"path\"\nimport { Target } from \"../../core\"\nimport { DesktopShortcutCreationPolicy, getEffectiveOptions } from \"../../options/CommonWindowsInstallerConfiguration\"\nimport { computeSafeArtifactNameIfNeeded, normalizeExt } from \"../../platformPackager\"\nimport { isMacOsCatalina } from \"../../util/macosVersion\"\nimport { time } from \"../../util/timer\"\nimport { execWine } from \"../../wine\"\nimport { WinPackager } from \"../../winPackager\"\nimport { archive, ArchiveOptions } from \"../archive\"\nimport { appendBlockmap, configureDifferentialAwareArchiveOptions, createBlockmap, createNsisWebDifferentialUpdateInfo } from \"../differentialUpdateInfoBuilder\"\nimport { getWindowsInstallationDirName } from \"../targetUtil\"\nimport { addCustomMessageFileInclude, createAddLangsMacro, LangConfigurator } from \"./nsisLang\"\nimport { computeLicensePage } from \"./nsisLicense\"\nimport { NsisOptions, PortableOptions } from \"./nsisOptions\"\nimport { NsisScriptGenerator } from \"./nsisScriptGenerator\"\nimport { AppPackageHelper, NSIS_PATH, nsisTemplatesDir } from \"./nsisUtil\"\n\nconst debug = _debug(\"electron-builder:nsis\")\n\n// noinspection SpellCheckingInspection\nconst ELECTRON_BUILDER_NS_UUID = UUID.parse(\"50e065bc-3134-11e6-9bab-38c9862bdaf3\")\n\n// noinspection SpellCheckingInspection\nconst nsisResourcePathPromise = new Lazy(() => getBinFromUrl(\"nsis-resources\", \"3.4.1\", \"Dqd6g+2buwwvoG1Vyf6BHR1b+25QMmPcwZx40atOT57gH27rkjOei1L0JTldxZu4NFoEmW4kJgZ3DlSWVON3+Q==\"))\n\nconst USE_NSIS_BUILT_IN_COMPRESSOR = false\n\nexport class NsisTarget extends Target {\n readonly options: NsisOptions\n\n /** @private */\n readonly archs: Map<Arch, string> = new Map()\n\n constructor(readonly packager: WinPackager, readonly outDir: string, targetName: string, protected readonly packageHelper: AppPackageHelper) {\n super(targetName)\n\n this.packageHelper.refCount++\n\n this.options = targetName === \"portable\" ? Object.create(null) : {\n preCompressedFileExtensions: [\".avi\", \".mov\", \".m4v\", \".mp4\", \".m4p\", \".qt\", \".mkv\", \".webm\", \".vmdk\"],\n ...this.packager.config.nsis,\n }\n\n if (targetName !== \"nsis\") {\n Object.assign(this.options, (this.packager.config as any)[targetName === \"nsis-web\" ? \"nsisWeb\" : targetName])\n }\n\n const deps = packager.info.metadata.dependencies\n if (deps != null && deps[\"electron-squirrel-startup\"] != null) {\n log.warn('\"electron-squirrel-startup\" dependency is not required for NSIS')\n }\n }\n\n async build(appOutDir: string, arch: Arch) {\n this.archs.set(arch, appOutDir)\n }\n\n get isBuildDifferentialAware() {\n return !this.isPortable && this.options.differentialPackage !== false\n }\n\n private getPreCompressedFileExtensions(): Array<string> | null {\n const result = this.isWebInstaller ? null : this.options.preCompressedFileExtensions\n return result == null ? null : asArray(result).map(it => it.startsWith(\".\") ? it : `.${it}`)\n }\n\n /** @private */\n async buildAppPackage(appOutDir: string, arch: Arch): Promise<PackageFileInfo> {\n const options = this.options\n const packager = this.packager\n\n const isBuildDifferentialAware = this.isBuildDifferentialAware\n const format = !isBuildDifferentialAware && options.useZip ? \"zip\" : \"7z\"\n const archiveFile = path.join(this.outDir, `${packager.appInfo.sanitizedName}-${packager.appInfo.version}-${Arch[arch]}.nsis.${format}`)\n const preCompressedFileExtensions = this.getPreCompressedFileExtensions()\n const archiveOptions: ArchiveOptions = {\n withoutDir: true,\n compression: packager.compression,\n excluded: preCompressedFileExtensions == null ? null : preCompressedFileExtensions.map(it => `*${it}`)\n }\n\n const timer = time(`nsis package, ${Arch[arch]}`)\n await archive(format, archiveFile, appOutDir, isBuildDifferentialAware ? configureDifferentialAwareArchiveOptions(archiveOptions) : archiveOptions)\n timer.end()\n\n if (isBuildDifferentialAware && this.isWebInstaller) {\n const data = await appendBlockmap(archiveFile)\n return {\n ...data,\n path: archiveFile,\n }\n }\n else {\n return await createPackageFileInfo(archiveFile)\n }\n }\n\n async finishBuild(): Promise<any> {\n try {\n await this.buildInstaller()\n }\n finally {\n await this.packageHelper.finishBuild()\n }\n }\n\n protected get installerFilenamePattern(): string {\n // tslint:disable:no-invalid-template-strings\n return \"${productName} \" + (this.isPortable ? \"\" : \"Setup \") + \"${version}.${ext}\"\n }\n\n private get isPortable() {\n return this.name === \"portable\"\n }\n\n private async buildInstaller(): Promise<any> {\n const packager = this.packager\n const appInfo = packager.appInfo\n const options = this.options\n const installerFilename = packager.expandArtifactNamePattern(options, \"exe\", null, this.installerFilenamePattern)\n const oneClick = options.oneClick !== false\n const installerPath = path.join(this.outDir, installerFilename)\n\n const logFields: any = {\n target: this.name,\n file: log.filePath(installerPath),\n archs: Array.from(this.archs.keys()).map(it => Arch[it]).join(\", \"),\n }\n const isPerMachine = options.perMachine === true\n if (!this.isPortable) {\n logFields.oneClick = oneClick\n logFields.perMachine = isPerMachine\n }\n\n await packager.info.callArtifactBuildStarted({\n targetPresentableName: this.name,\n file: installerPath,\n arch: null,\n }, logFields)\n\n const guid = options.guid || UUID.v5(appInfo.id, ELECTRON_BUILDER_NS_UUID)\n const uninstallAppKey = guid.replace(/\\\\/g, \" - \")\n const defines: any = {\n APP_ID: appInfo.id,\n APP_GUID: guid,\n // Windows bug - entry in Software\\Microsoft\\Windows\\CurrentVersion\\Uninstall cannot have \\ symbols (dir)\n UNINSTALL_APP_KEY: uninstallAppKey,\n PRODUCT_NAME: appInfo.productName,\n PRODUCT_FILENAME: appInfo.productFilename,\n APP_FILENAME: getWindowsInstallationDirName(appInfo, !oneClick || isPerMachine),\n APP_DESCRIPTION: appInfo.description,\n VERSION: appInfo.version,\n\n PROJECT_DIR: packager.projectDir,\n BUILD_RESOURCES_DIR: packager.info.buildResourcesDir,\n\n APP_PACKAGE_NAME: appInfo.name\n }\n if (uninstallAppKey !== guid) {\n defines.UNINSTALL_REGISTRY_KEY_2 = `Software\\\\Microsoft\\\\Windows\\\\CurrentVersion\\\\Uninstall\\\\{${guid}}`\n }\n\n const commands: any = {\n OutFile: `\"${installerPath}\"`,\n VIProductVersion: appInfo.getVersionInWeirdWindowsForm(),\n VIAddVersionKey: this.computeVersionKey(),\n Unicode: this.isUnicodeEnabled,\n }\n\n const isPortable = this.isPortable\n const iconPath = (isPortable ? null : await packager.getResource(options.installerIcon, \"installerIcon.ico\")) || await packager.getIconPath()\n if (iconPath != null) {\n if (isPortable) {\n commands.Icon = `\"${iconPath}\"`\n }\n else {\n defines.MUI_ICON = iconPath\n defines.MUI_UNICON = iconPath\n }\n }\n\n const packageFiles: { [arch: string]: PackageFileInfo } = {}\n let estimatedSize = 0\n if (this.isPortable && options.useZip) {\n for (const [arch, dir] of this.archs.entries()) {\n defines[arch === Arch.x64 ? \"APP_DIR_64\" : \"APP_DIR_32\"] = dir\n }\n }\n else if (USE_NSIS_BUILT_IN_COMPRESSOR && this.archs.size === 1) {\n defines.APP_BUILD_DIR = this.archs.get(this.archs.keys().next().value)\n }\n else {\n await BluebirdPromise.map(this.archs.keys(), async arch => {\n const fileInfo = await this.packageHelper.packArch(arch, this)\n const file = fileInfo.path\n const defineKey = arch === Arch.x64 ? \"APP_64\" : \"APP_32\"\n defines[defineKey] = file\n defines[`${defineKey}_NAME`] = path.basename(file)\n // nsis expect a hexadecimal string\n defines[`${defineKey}_HASH`] = Buffer.from(fileInfo.sha512, \"base64\").toString(\"hex\").toUpperCase()\n\n if (this.isWebInstaller) {\n await packager.dispatchArtifactCreated(file, this, arch)\n packageFiles[Arch[arch]] = fileInfo\n }\n\n const archiveInfo = (await exec(path7za, [\"l\", file])).trim()\n // after adding blockmap data will be \"Warnings: 1\" in the end of output\n const match = archiveInfo.match(/(\\d+)\\s+\\d+\\s+\\d+\\s+files/)\n if (match == null) {\n log.warn({output: archiveInfo}, \"cannot compute size of app package\")\n }\n else {\n estimatedSize += parseInt(match[1], 10)\n }\n })\n }\n\n this.configureDefinesForAllTypeOfInstaller(defines)\n if (isPortable) {\n const portableOptions = options as PortableOptions\n defines.REQUEST_EXECUTION_LEVEL = portableOptions.requestExecutionLevel || \"user\"\n defines.UNPACK_DIR_NAME = portableOptions.unpackDirName || (await executeAppBuilder([\"ksuid\"]))\n }\n else {\n await this.configureDefines(oneClick, defines)\n }\n\n if (estimatedSize !== 0) {\n // in kb\n defines.ESTIMATED_SIZE = Math.round(estimatedSize / 1024)\n }\n\n if (packager.compression === \"store\") {\n commands.SetCompress = \"off\"\n }\n else {\n // difference - 33.540 vs 33.601, only 61 KB (but zip is faster to decompress)\n // do not use /SOLID - \"With solid compression, files are uncompressed to temporary file before they are copied to their final destination\",\n // it is not good for portable installer (where built-in NSIS compression is used). http://forums.winamp.com/showpost.php?p=2982902&postcount=6\n commands.SetCompressor = \"zlib\"\n if (!this.isWebInstaller) {\n defines.COMPRESS = \"auto\"\n }\n }\n\n debug(defines)\n debug(commands)\n\n if (packager.packagerOptions.effectiveOptionComputed != null && await packager.packagerOptions.effectiveOptionComputed([defines, commands])) {\n return\n }\n\n const sharedHeader = await this.computeCommonInstallerScriptHeader()\n const script = isPortable ? await readFile(path.join(nsisTemplatesDir, \"portable.nsi\"), \"utf8\") : await this.computeScriptAndSignUninstaller(defines, commands, installerPath, sharedHeader)\n await this.executeMakensis(defines, commands, sharedHeader + await this.computeFinalScript(script, true))\n await Promise.all<any>([packager.sign(installerPath), defines.UNINSTALLER_OUT_FILE == null ? Promise.resolve() : unlink(defines.UNINSTALLER_OUT_FILE)])\n\n const safeArtifactName = computeSafeArtifactNameIfNeeded(installerFilename, () => this.generateGitHubInstallerName())\n let updateInfo: any\n if (this.isWebInstaller) {\n updateInfo = createNsisWebDifferentialUpdateInfo(installerPath, packageFiles)\n }\n else if (this.isBuildDifferentialAware) {\n updateInfo = await createBlockmap(installerPath, this, packager, safeArtifactName)\n }\n\n if (updateInfo != null && isPerMachine && oneClick) {\n updateInfo.isAdminRightsRequired = true\n }\n\n await packager.info.callArtifactBuildCompleted({\n file: installerPath,\n updateInfo,\n target: this,\n packager,\n arch: this.archs.size === 1 ? this.archs.keys().next().value : null,\n safeArtifactName,\n isWriteUpdateInfo: !this.isPortable,\n })\n }\n\n protected generateGitHubInstallerName() {\n const appInfo = this.packager.appInfo\n const classifier = appInfo.name.toLowerCase() === appInfo.name ? \"setup-\" : \"Setup-\"\n return `${appInfo.name}-${this.isPortable ? \"\" : classifier}${appInfo.version}.exe`\n }\n\n private get isUnicodeEnabled() {\n return this.options.unicode !== false\n }\n\n get isWebInstaller(): boolean {\n return false\n }\n\n private async computeScriptAndSignUninstaller(defines: any, commands: any, installerPath: string, sharedHeader: string) {\n const packager = this.packager\n const customScriptPath = await packager.getResource(this.options.script, \"installer.nsi\")\n const script = await readFile(customScriptPath || path.join(nsisTemplatesDir, \"installer.nsi\"), \"utf8\")\n\n if (customScriptPath != null) {\n log.info({reason: \"custom NSIS script is used\"}, \"uninstaller is not signed by electron-builder\")\n return script\n }\n\n // https://github.com/electron-userland/electron-builder/issues/2103\n // it is more safe and reliable to write uninstaller to our out dir\n const uninstallerPath = path.join(this.outDir, `.__uninstaller-${this.name}-${this.packager.appInfo.sanitizedName}.exe`)\n const isWin = process.platform === \"win32\"\n defines.BUILD_UNINSTALLER = null\n defines.UNINSTALLER_OUT_FILE = isWin ? uninstallerPath : path.win32.join(\"Z:\", uninstallerPath)\n await this.executeMakensis(defines, commands, sharedHeader + await this.computeFinalScript(script, false))\n\n // http://forums.winamp.com/showthread.php?p=3078545\n //\n if (await isMacOsCatalina()) {\n (await packager.vm.value).exec(installerPath, [])\n }\n else {\n await execWine(installerPath)\n }\n await packager.sign(uninstallerPath, \" Signing NSIS uninstaller\")\n\n delete defines.BUILD_UNINSTALLER\n // platform-specific path, not wine\n defines.UNINSTALLER_OUT_FILE = uninstallerPath\n return script\n }\n\n private computeVersionKey() {\n // Error: invalid VIProductVersion format, should be X.X.X.X\n // so, we must strip beta\n const localeId = this.options.language || \"1033\"\n const appInfo = this.packager.appInfo\n const versionKey = [\n `/LANG=${localeId} ProductName \"${appInfo.productName}\"`,\n `/LANG=${localeId} ProductVersion \"${appInfo.version}\"`,\n `/LANG=${localeId} LegalCopyright \"${appInfo.copyright}\"`,\n `/LANG=${localeId} FileDescription \"${appInfo.description}\"`,\n `/LANG=${localeId} FileVersion \"${appInfo.buildVersion}\"`,\n ]\n use(this.packager.platformSpecificBuildOptions.legalTrademarks, it => versionKey.push(`/LANG=${localeId} LegalTrademarks \"${it}\"`))\n use(appInfo.companyName, it => versionKey.push(`/LANG=${localeId} CompanyName \"${it}\"`))\n return versionKey\n }\n\n protected configureDefines(oneClick: boolean, defines: any): Promise<any> {\n const packager = this.packager\n const options = this.options\n\n const asyncTaskManager = new AsyncTaskManager(packager.info.cancellationToken)\n\n if (oneClick) {\n defines.ONE_CLICK = null\n\n if (options.runAfterFinish !== false) {\n defines.RUN_AFTER_FINISH = null\n }\n\n asyncTaskManager.add(async () => {\n const installerHeaderIcon = await packager.getResource(options.installerHeaderIcon, \"installerHeaderIcon.ico\")\n if (installerHeaderIcon != null) {\n defines.HEADER_ICO = installerHeaderIcon\n }\n })\n }\n else {\n if (options.runAfterFinish === false) {\n defines.HIDE_RUN_AFTER_FINISH = null\n }\n\n asyncTaskManager.add(async () => {\n const installerHeader = await packager.getResource(options.installerHeader, \"installerHeader.bmp\")\n if (installerHeader != null) {\n defines.MUI_HEADERIMAGE = null\n defines.MUI_HEADERIMAGE_RIGHT = null\n defines.MUI_HEADERIMAGE_BITMAP = installerHeader\n }\n })\n\n asyncTaskManager.add(async () => {\n const bitmap = (await packager.getResource(options.installerSidebar, \"installerSidebar.bmp\")) || \"${NSISDIR}\\\\Contrib\\\\Graphics\\\\Wizard\\\\nsis3-metro.bmp\"\n defines.MUI_WELCOMEFINISHPAGE_BITMAP = bitmap\n defines.MUI_UNWELCOMEFINISHPAGE_BITMAP = (await packager.getResource(options.uninstallerSidebar, \"uninstallerSidebar.bmp\")) || bitmap\n })\n\n if (options.allowElevation !== false) {\n defines.MULTIUSER_INSTALLMODE_ALLOW_ELEVATION = null\n }\n }\n\n if (options.perMachine === true) {\n defines.INSTALL_MODE_PER_ALL_USERS = null\n }\n\n if (!oneClick || options.perMachine === true) {\n defines.INSTALL_MODE_PER_ALL_USERS_REQUIRED = null\n }\n\n if (options.allowToChangeInstallationDirectory) {\n if (oneClick) {\n throw new InvalidConfigurationError(\"allowToChangeInstallationDirectory makes sense only for assisted installer (please set oneClick to false)\")\n }\n defines.allowToChangeInstallationDirectory = null\n }\n\n const commonOptions = getEffectiveOptions(options, packager)\n\n if (commonOptions.menuCategory != null) {\n defines.MENU_FILENAME = commonOptions.menuCategory\n }\n\n defines.SHORTCUT_NAME = commonOptions.shortcutName\n\n if (options.deleteAppDataOnUninstall) {\n defines.DELETE_APP_DATA_ON_UNINSTALL = null\n }\n\n asyncTaskManager.add(async () => {\n const uninstallerIcon = await packager.getResource(options.uninstallerIcon, \"uninstallerIcon.ico\")\n if (uninstallerIcon != null) {\n // we don't need to copy MUI_UNICON (defaults to app icon), so, we have 2 defines\n defines.UNINSTALLER_ICON = uninstallerIcon\n defines.MUI_UNICON = uninstallerIcon\n }\n })\n\n defines.UNINSTALL_DISPLAY_NAME = packager.expandMacro(options.uninstallDisplayName || \"${productName} ${version}\", null, {}, false)\n if (commonOptions.isCreateDesktopShortcut === DesktopShortcutCreationPolicy.NEVER) {\n defines.DO_NOT_CREATE_DESKTOP_SHORTCUT = null\n }\n if (commonOptions.isCreateDesktopShortcut === DesktopShortcutCreationPolicy.ALWAYS) {\n defines.RECREATE_DESKTOP_SHORTCUT = null\n }\n if (!commonOptions.isCreateStartMenuShortcut) {\n defines.DO_NOT_CREATE_START_MENU_SHORTCUT = null\n }\n\n if (options.displayLanguageSelector === true) {\n defines.DISPLAY_LANG_SELECTOR = null\n }\n\n return asyncTaskManager.awaitTasks()\n }\n\n private configureDefinesForAllTypeOfInstaller(defines: any) {\n const appInfo = this.packager.appInfo\n const companyName = appInfo.companyName\n if (companyName != null) {\n defines.COMPANY_NAME = companyName\n }\n\n // electron uses product file name as app data, define it as well to remove on uninstall\n if (defines.APP_FILENAME !== appInfo.productFilename) {\n defines.APP_PRODUCT_FILENAME = appInfo.productFilename\n }\n\n if (this.isWebInstaller) {\n defines.APP_PACKAGE_STORE_FILE = `${appInfo.updaterCacheDirName}\\\\${CURRENT_APP_PACKAGE_FILE_NAME}`\n }\n else {\n defines.APP_INSTALLER_STORE_FILE = `${appInfo.updaterCacheDirName}\\\\${CURRENT_APP_INSTALLER_FILE_NAME}`\n }\n\n if (!this.isWebInstaller && defines.APP_BUILD_DIR == null) {\n const options = this.options\n if (options.useZip) {\n defines.ZIP_COMPRESSION = null\n }\n\n defines.COMPRESSION_METHOD = options.useZip ? \"zip\" : \"7z\"\n }\n }\n\n private async executeMakensis(defines: any, commands: any, script: string) {\n const args: Array<string> = (this.options.warningsAsErrors === false) ? [] : [\"-WX\"]\n for (const name of Object.keys(defines)) {\n const value = defines[name]\n if (value == null) {\n args.push(`-D${name}`)\n }\n else {\n args.push(`-D${name}=${value}`)\n }\n }\n\n for (const name of Object.keys(commands)) {\n const value = commands[name]\n if (Array.isArray(value)) {\n for (const c of value) {\n args.push(`-X${name} ${c}`)\n }\n }\n else {\n args.push(`-X${name} ${value}`)\n }\n }\n\n args.push(\"-\")\n\n if (this.packager.debugLogger.isEnabled) {\n this.packager.debugLogger.add(\"nsis.script\", script)\n }\n\n const nsisPath = await NSIS_PATH.value\n const command = path.join(nsisPath, process.platform === \"darwin\" ? \"mac\" : (process.platform === \"win32\" ? \"Bin\" : \"linux\"), process.platform === \"win32\" ? \"makensis.exe\" : \"makensis\")\n await spawnAndWrite(command, args, script, {\n // we use NSIS_CONFIG_CONST_DATA_PATH=no to build makensis on Linux, but in any case it doesn't use stubs as MacOS/Windows version, so, we explicitly set NSISDIR\n env: {...process.env, NSISDIR: nsisPath},\n cwd: nsisTemplatesDir,\n })\n }\n\n private async computeCommonInstallerScriptHeader() {\n const packager = this.packager\n const options = this.options\n const scriptGenerator = new NsisScriptGenerator()\n const langConfigurator = new LangConfigurator(options)\n\n scriptGenerator.include(path.join(nsisTemplatesDir, \"include\", \"StdUtils.nsh\"))\n\n const includeDir = path.join(nsisTemplatesDir, \"include\")\n scriptGenerator.addIncludeDir(includeDir)\n scriptGenerator.flags([\"updated\", \"force-run\", \"keep-shortcuts\", \"no-desktop-shortcut\", \"delete-app-data\", \"allusers\", \"currentuser\"])\n\n createAddLangsMacro(scriptGenerator, langConfigurator)\n\n const taskManager = new AsyncTaskManager(packager.info.cancellationToken)\n\n const pluginArch = this.isUnicodeEnabled ? \"x86-unicode\" : \"x86-ansi\"\n taskManager.add(async () => {\n scriptGenerator.addPluginDir(pluginArch, path.join(await nsisResourcePathPromise.value, \"plugins\", pluginArch))\n })\n\n taskManager.add(async () => {\n const userPluginDir = path.join(packager.info.buildResourcesDir, pluginArch)\n const stat = await statOrNull(userPluginDir)\n if (stat != null && stat.isDirectory()) {\n scriptGenerator.addPluginDir(pluginArch, userPluginDir)\n }\n })\n\n taskManager.addTask(addCustomMessageFileInclude(\"messages.yml\", packager, scriptGenerator, langConfigurator))\n\n if (!this.isPortable) {\n if (options.oneClick === false) {\n taskManager.addTask(addCustomMessageFileInclude(\"assistedMessages.yml\", packager, scriptGenerator, langConfigurator))\n }\n\n taskManager.add(async () => {\n const customInclude = await packager.getResource(this.options.include, \"installer.nsh\")\n if (customInclude != null) {\n scriptGenerator.addIncludeDir(packager.info.buildResourcesDir)\n scriptGenerator.include(customInclude)\n }\n })\n }\n\n await taskManager.awaitTasks()\n return scriptGenerator.build()\n }\n\n private async computeFinalScript(originalScript: string, isInstaller: boolean) {\n const packager = this.packager\n const options = this.options\n const langConfigurator = new LangConfigurator(options)\n\n const scriptGenerator = new NsisScriptGenerator()\n const taskManager = new AsyncTaskManager(packager.info.cancellationToken)\n\n if (isInstaller) {\n // http://stackoverflow.com/questions/997456/nsis-license-file-based-on-language-selection\n taskManager.add(() => computeLicensePage(packager, options, scriptGenerator, langConfigurator.langs))\n }\n\n await taskManager.awaitTasks()\n\n if (this.isPortable) {\n return scriptGenerator.build() + originalScript\n }\n\n const preCompressedFileExtensions = this.getPreCompressedFileExtensions()\n if (preCompressedFileExtensions != null && preCompressedFileExtensions.length !== 0) {\n for (const [arch, dir] of this.archs.entries()) {\n await generateForPreCompressed(preCompressedFileExtensions, dir, arch, scriptGenerator)\n }\n }\n\n const fileAssociations = packager.fileAssociations\n if (fileAssociations.length !== 0) {\n\n scriptGenerator.include(path.join(path.join(nsisTemplatesDir, \"include\"), \"FileAssociation.nsh\"))\n if (isInstaller) {\n const registerFileAssociationsScript = new NsisScriptGenerator()\n for (const item of fileAssociations) {\n const extensions = asArray(item.ext).map(normalizeExt)\n for (const ext of extensions) {\n const customIcon = await packager.getResource(getPlatformIconFileName(item.icon, false), `${extensions[0]}.ico`)\n let installedIconPath = \"$appExe,0\"\n if (customIcon != null) {\n installedIconPath = `$INSTDIR\\\\resources\\\\${path.basename(customIcon)}`\n registerFileAssociationsScript.file(installedIconPath, customIcon)\n }\n\n const icon = `\"${installedIconPath}\"`\n const commandText = `\"Open with ${packager.appInfo.productName}\"`\n const command = '\"$appExe $\\\\\"%1$\\\\\"\"'\n registerFileAssociationsScript.insertMacro(\"APP_ASSOCIATE\", `\"${ext}\" \"${item.name || ext}\" \"${item.description || \"\"}\" ${icon} ${commandText} ${command}`)\n }\n }\n scriptGenerator.macro(\"registerFileAssociations\", registerFileAssociationsScript)\n }\n else {\n const unregisterFileAssociationsScript = new NsisScriptGenerator()\n for (const item of fileAssociations) {\n for (const ext of asArray(item.ext)) {\n unregisterFileAssociationsScript.insertMacro(\"APP_UNASSOCIATE\", `\"${normalizeExt(ext)}\" \"${item.name || ext}\"`)\n }\n }\n scriptGenerator.macro(\"unregisterFileAssociations\", unregisterFileAssociationsScript)\n }\n }\n\n return scriptGenerator.build() + originalScript\n }\n}\n\nasync function generateForPreCompressed(preCompressedFileExtensions: Array<string>, dir: string, arch: Arch, scriptGenerator: NsisScriptGenerator) {\n const resourcesDir = path.join(dir, \"resources\")\n const dirInfo = await statOrNull(resourcesDir)\n if (dirInfo == null || !dirInfo.isDirectory()) {\n return\n }\n\n const nodeModules = `${path.sep}node_modules`\n const preCompressedAssets = await walk(resourcesDir, (file, stat) => {\n if (stat.isDirectory()) {\n return !file.endsWith(nodeModules)\n }\n else {\n return preCompressedFileExtensions.some(it => file.endsWith(it))\n }\n })\n\n if (preCompressedAssets.length !== 0) {\n const macro = new NsisScriptGenerator()\n for (const file of preCompressedAssets) {\n macro.file(`$INSTDIR\\\\${path.relative(dir, file).replace(/\\//g, \"\\\\\")}`, file)\n }\n scriptGenerator.macro(`customFiles_${Arch[arch]}`, macro)\n }\n}\n\nasync function createPackageFileInfo(file: string): Promise<PackageFileInfo> {\n return {\n path: file,\n size: (await stat(file)).size,\n sha512: await hashFile(file),\n }\n}"],"sourceRoot":""}
1
+ {"version":3,"sources":["../../../src/targets/nsis/NsisTarget.ts"],"names":[],"mappings":"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","sourcesContent":["import { path7za } from \"7zip-bin\"\nimport BluebirdPromise from \"bluebird-lst\"\nimport { executeAppBuilder, Arch, asArray, AsyncTaskManager, getPlatformIconFileName, InvalidConfigurationError, log, spawnAndWrite, use, exec } from \"builder-util\"\nimport { PackageFileInfo, UUID, CURRENT_APP_PACKAGE_FILE_NAME, CURRENT_APP_INSTALLER_FILE_NAME } from \"builder-util-runtime\"\nimport { getBinFromUrl } from \"../../binDownload\"\nimport { statOrNull, walk, exists } from \"builder-util/out/fs\"\nimport { hashFile } from \"../../util/hash\"\nimport _debug from \"debug\"\nimport { readFile, stat, unlink } from \"fs-extra\"\nimport { Lazy } from \"lazy-val\"\nimport * as path from \"path\"\nimport { Target } from \"../../core\"\nimport { DesktopShortcutCreationPolicy, getEffectiveOptions } from \"../../options/CommonWindowsInstallerConfiguration\"\nimport { computeSafeArtifactNameIfNeeded, normalizeExt } from \"../../platformPackager\"\nimport { isMacOsCatalina } from \"../../util/macosVersion\"\nimport { time } from \"../../util/timer\"\nimport { execWine } from \"../../wine\"\nimport { WinPackager } from \"../../winPackager\"\nimport { archive, ArchiveOptions } from \"../archive\"\nimport { appendBlockmap, configureDifferentialAwareArchiveOptions, createBlockmap, createNsisWebDifferentialUpdateInfo } from \"../differentialUpdateInfoBuilder\"\nimport { getWindowsInstallationDirName } from \"../targetUtil\"\nimport { addCustomMessageFileInclude, createAddLangsMacro, LangConfigurator } from \"./nsisLang\"\nimport { computeLicensePage } from \"./nsisLicense\"\nimport { NsisOptions, PortableOptions } from \"./nsisOptions\"\nimport { NsisScriptGenerator } from \"./nsisScriptGenerator\"\nimport { AppPackageHelper, NSIS_PATH, nsisTemplatesDir } from \"./nsisUtil\"\n\nconst debug = _debug(\"electron-builder:nsis\")\n\n// noinspection SpellCheckingInspection\nconst ELECTRON_BUILDER_NS_UUID = UUID.parse(\"50e065bc-3134-11e6-9bab-38c9862bdaf3\")\n\n// noinspection SpellCheckingInspection\nconst nsisResourcePathPromise = new Lazy(() => getBinFromUrl(\"nsis-resources\", \"3.4.1\", \"Dqd6g+2buwwvoG1Vyf6BHR1b+25QMmPcwZx40atOT57gH27rkjOei1L0JTldxZu4NFoEmW4kJgZ3DlSWVON3+Q==\"))\n\nconst USE_NSIS_BUILT_IN_COMPRESSOR = false\n\nexport class NsisTarget extends Target {\n readonly options: NsisOptions\n\n /** @private */\n readonly archs: Map<Arch, string> = new Map()\n\n constructor(readonly packager: WinPackager, readonly outDir: string, targetName: string, protected readonly packageHelper: AppPackageHelper) {\n super(targetName)\n\n this.packageHelper.refCount++\n\n this.options = targetName === \"portable\" ? Object.create(null) : {\n preCompressedFileExtensions: [\".avi\", \".mov\", \".m4v\", \".mp4\", \".m4p\", \".qt\", \".mkv\", \".webm\", \".vmdk\"],\n ...this.packager.config.nsis,\n }\n\n if (targetName !== \"nsis\") {\n Object.assign(this.options, (this.packager.config as any)[targetName === \"nsis-web\" ? \"nsisWeb\" : targetName])\n }\n\n const deps = packager.info.metadata.dependencies\n if (deps != null && deps[\"electron-squirrel-startup\"] != null) {\n log.warn('\"electron-squirrel-startup\" dependency is not required for NSIS')\n }\n }\n\n async build(appOutDir: string, arch: Arch) {\n this.archs.set(arch, appOutDir)\n }\n\n get isBuildDifferentialAware() {\n return !this.isPortable && this.options.differentialPackage !== false\n }\n\n private getPreCompressedFileExtensions(): Array<string> | null {\n const result = this.isWebInstaller ? null : this.options.preCompressedFileExtensions\n return result == null ? null : asArray(result).map(it => it.startsWith(\".\") ? it : `.${it}`)\n }\n\n /** @private */\n async buildAppPackage(appOutDir: string, arch: Arch): Promise<PackageFileInfo> {\n const options = this.options\n const packager = this.packager\n\n const isBuildDifferentialAware = this.isBuildDifferentialAware\n const format = !isBuildDifferentialAware && options.useZip ? \"zip\" : \"7z\"\n const archiveFile = path.join(this.outDir, `${packager.appInfo.sanitizedName}-${packager.appInfo.version}-${Arch[arch]}.nsis.${format}`)\n const preCompressedFileExtensions = this.getPreCompressedFileExtensions()\n const archiveOptions: ArchiveOptions = {\n withoutDir: true,\n compression: packager.compression,\n excluded: preCompressedFileExtensions == null ? null : preCompressedFileExtensions.map(it => `*${it}`)\n }\n\n const timer = time(`nsis package, ${Arch[arch]}`)\n await archive(format, archiveFile, appOutDir, isBuildDifferentialAware ? configureDifferentialAwareArchiveOptions(archiveOptions) : archiveOptions)\n timer.end()\n\n if (isBuildDifferentialAware && this.isWebInstaller) {\n const data = await appendBlockmap(archiveFile)\n return {\n ...data,\n path: archiveFile,\n }\n }\n else {\n return await createPackageFileInfo(archiveFile)\n }\n }\n\n async finishBuild(): Promise<any> {\n try {\n await this.buildInstaller()\n }\n finally {\n await this.packageHelper.finishBuild()\n }\n }\n\n protected get installerFilenamePattern(): string {\n // tslint:disable:no-invalid-template-strings\n return \"${productName} \" + (this.isPortable ? \"\" : \"Setup \") + \"${version}.${ext}\"\n }\n\n private get isPortable() {\n return this.name === \"portable\"\n }\n\n private async buildInstaller(): Promise<any> {\n const packager = this.packager\n const appInfo = packager.appInfo\n const options = this.options\n const installerFilename = packager.expandArtifactNamePattern(options, \"exe\", null, this.installerFilenamePattern)\n const oneClick = options.oneClick !== false\n const installerPath = path.join(this.outDir, installerFilename)\n\n const logFields: any = {\n target: this.name,\n file: log.filePath(installerPath),\n archs: Array.from(this.archs.keys()).map(it => Arch[it]).join(\", \"),\n }\n const isPerMachine = options.perMachine === true\n if (!this.isPortable) {\n logFields.oneClick = oneClick\n logFields.perMachine = isPerMachine\n }\n\n await packager.info.callArtifactBuildStarted({\n targetPresentableName: this.name,\n file: installerPath,\n arch: null,\n }, logFields)\n\n const guid = options.guid || UUID.v5(appInfo.id, ELECTRON_BUILDER_NS_UUID)\n const uninstallAppKey = guid.replace(/\\\\/g, \" - \")\n const defines: any = {\n APP_ID: appInfo.id,\n APP_GUID: guid,\n // Windows bug - entry in Software\\Microsoft\\Windows\\CurrentVersion\\Uninstall cannot have \\ symbols (dir)\n UNINSTALL_APP_KEY: uninstallAppKey,\n PRODUCT_NAME: appInfo.productName,\n PRODUCT_FILENAME: appInfo.productFilename,\n APP_FILENAME: getWindowsInstallationDirName(appInfo, !oneClick || isPerMachine),\n APP_DESCRIPTION: appInfo.description,\n VERSION: appInfo.version,\n\n PROJECT_DIR: packager.projectDir,\n BUILD_RESOURCES_DIR: packager.info.buildResourcesDir,\n\n APP_PACKAGE_NAME: appInfo.name\n }\n if (uninstallAppKey !== guid) {\n defines.UNINSTALL_REGISTRY_KEY_2 = `Software\\\\Microsoft\\\\Windows\\\\CurrentVersion\\\\Uninstall\\\\{${guid}}`\n }\n\n const commands: any = {\n OutFile: `\"${installerPath}\"`,\n VIProductVersion: appInfo.getVersionInWeirdWindowsForm(),\n VIAddVersionKey: this.computeVersionKey(),\n Unicode: this.isUnicodeEnabled,\n }\n\n const isPortable = this.isPortable\n const iconPath = (isPortable ? null : await packager.getResource(options.installerIcon, \"installerIcon.ico\")) || await packager.getIconPath()\n if (iconPath != null) {\n if (isPortable) {\n commands.Icon = `\"${iconPath}\"`\n }\n else {\n defines.MUI_ICON = iconPath\n defines.MUI_UNICON = iconPath\n }\n }\n\n const packageFiles: { [arch: string]: PackageFileInfo } = {}\n let estimatedSize = 0\n if (this.isPortable && options.useZip) {\n for (const [arch, dir] of this.archs.entries()) {\n defines[arch === Arch.x64 ? \"APP_DIR_64\" : \"APP_DIR_32\"] = dir\n }\n }\n else if (USE_NSIS_BUILT_IN_COMPRESSOR && this.archs.size === 1) {\n defines.APP_BUILD_DIR = this.archs.get(this.archs.keys().next().value)\n }\n else {\n await BluebirdPromise.map(this.archs.keys(), async arch => {\n const fileInfo = await this.packageHelper.packArch(arch, this)\n const file = fileInfo.path\n const defineKey = arch === Arch.x64 ? \"APP_64\" : \"APP_32\"\n defines[defineKey] = file\n defines[`${defineKey}_NAME`] = path.basename(file)\n // nsis expect a hexadecimal string\n defines[`${defineKey}_HASH`] = Buffer.from(fileInfo.sha512, \"base64\").toString(\"hex\").toUpperCase()\n\n if (this.isWebInstaller) {\n await packager.dispatchArtifactCreated(file, this, arch)\n packageFiles[Arch[arch]] = fileInfo\n }\n\n const archiveInfo = (await exec(path7za, [\"l\", file])).trim()\n // after adding blockmap data will be \"Warnings: 1\" in the end of output\n const match = archiveInfo.match(/(\\d+)\\s+\\d+\\s+\\d+\\s+files/)\n if (match == null) {\n log.warn({output: archiveInfo}, \"cannot compute size of app package\")\n }\n else {\n estimatedSize += parseInt(match[1], 10)\n }\n })\n }\n\n this.configureDefinesForAllTypeOfInstaller(defines)\n if (isPortable) {\n const portableOptions = options as PortableOptions\n defines.REQUEST_EXECUTION_LEVEL = portableOptions.requestExecutionLevel || \"user\"\n defines.UNPACK_DIR_NAME = portableOptions.unpackDirName || (await executeAppBuilder([\"ksuid\"]))\n }\n else {\n await this.configureDefines(oneClick, defines)\n }\n\n if (estimatedSize !== 0) {\n // in kb\n defines.ESTIMATED_SIZE = Math.round(estimatedSize / 1024)\n }\n\n if (packager.compression === \"store\") {\n commands.SetCompress = \"off\"\n }\n else {\n // difference - 33.540 vs 33.601, only 61 KB (but zip is faster to decompress)\n // do not use /SOLID - \"With solid compression, files are uncompressed to temporary file before they are copied to their final destination\",\n // it is not good for portable installer (where built-in NSIS compression is used). http://forums.winamp.com/showpost.php?p=2982902&postcount=6\n commands.SetCompressor = \"zlib\"\n if (!this.isWebInstaller) {\n defines.COMPRESS = \"auto\"\n }\n }\n\n debug(defines)\n debug(commands)\n\n if (packager.packagerOptions.effectiveOptionComputed != null && await packager.packagerOptions.effectiveOptionComputed([defines, commands])) {\n return\n }\n\n const sharedHeader = await this.computeCommonInstallerScriptHeader()\n const script = isPortable ? await readFile(path.join(nsisTemplatesDir, \"portable.nsi\"), \"utf8\") : await this.computeScriptAndSignUninstaller(defines, commands, installerPath, sharedHeader)\n await this.executeMakensis(defines, commands, sharedHeader + await this.computeFinalScript(script, true))\n await Promise.all<any>([packager.sign(installerPath), defines.UNINSTALLER_OUT_FILE == null ? Promise.resolve() : unlink(defines.UNINSTALLER_OUT_FILE)])\n\n const safeArtifactName = computeSafeArtifactNameIfNeeded(installerFilename, () => this.generateGitHubInstallerName())\n let updateInfo: any\n if (this.isWebInstaller) {\n updateInfo = createNsisWebDifferentialUpdateInfo(installerPath, packageFiles)\n }\n else if (this.isBuildDifferentialAware) {\n updateInfo = await createBlockmap(installerPath, this, packager, safeArtifactName)\n }\n\n if (updateInfo != null && isPerMachine && oneClick) {\n updateInfo.isAdminRightsRequired = true\n }\n\n await packager.info.callArtifactBuildCompleted({\n file: installerPath,\n updateInfo,\n target: this,\n packager,\n arch: this.archs.size === 1 ? this.archs.keys().next().value : null,\n safeArtifactName,\n isWriteUpdateInfo: !this.isPortable,\n })\n }\n\n protected generateGitHubInstallerName() {\n const appInfo = this.packager.appInfo\n const classifier = appInfo.name.toLowerCase() === appInfo.name ? \"setup-\" : \"Setup-\"\n return `${appInfo.name}-${this.isPortable ? \"\" : classifier}${appInfo.version}.exe`\n }\n\n private get isUnicodeEnabled() {\n return this.options.unicode !== false\n }\n\n get isWebInstaller(): boolean {\n return false\n }\n\n private async computeScriptAndSignUninstaller(defines: any, commands: any, installerPath: string, sharedHeader: string) {\n const packager = this.packager\n const customScriptPath = await packager.getResource(this.options.script, \"installer.nsi\")\n const script = await readFile(customScriptPath || path.join(nsisTemplatesDir, \"installer.nsi\"), \"utf8\")\n\n if (customScriptPath != null) {\n log.info({reason: \"custom NSIS script is used\"}, \"uninstaller is not signed by electron-builder\")\n return script\n }\n\n // https://github.com/electron-userland/electron-builder/issues/2103\n // it is more safe and reliable to write uninstaller to our out dir\n const uninstallerPath = path.join(this.outDir, `__uninstaller-${this.name}-${this.packager.appInfo.sanitizedName}.exe`)\n const isWin = process.platform === \"win32\"\n defines.BUILD_UNINSTALLER = null\n defines.UNINSTALLER_OUT_FILE = isWin ? uninstallerPath : path.win32.join(\"Z:\", uninstallerPath)\n await this.executeMakensis(defines, commands, sharedHeader + await this.computeFinalScript(script, false))\n\n // http://forums.winamp.com/showthread.php?p=3078545\n if (isMacOsCatalina()) {\n (await packager.vm.value).exec(installerPath, [])\n\n // Parallels VM can exit after command execution, but NSIS continue to be running\n let i = 0\n while (!(await exists(uninstallerPath)) && i++ < 100) {\n // noinspection JSUnusedLocalSymbols\n await new Promise((resolve, _reject) => setTimeout(resolve, 300))\n }\n }\n else {\n await execWine(installerPath)\n }\n await packager.sign(uninstallerPath, \" Signing NSIS uninstaller\")\n\n delete defines.BUILD_UNINSTALLER\n // platform-specific path, not wine\n defines.UNINSTALLER_OUT_FILE = uninstallerPath\n return script\n }\n\n private computeVersionKey() {\n // Error: invalid VIProductVersion format, should be X.X.X.X\n // so, we must strip beta\n const localeId = this.options.language || \"1033\"\n const appInfo = this.packager.appInfo\n const versionKey = [\n `/LANG=${localeId} ProductName \"${appInfo.productName}\"`,\n `/LANG=${localeId} ProductVersion \"${appInfo.version}\"`,\n `/LANG=${localeId} LegalCopyright \"${appInfo.copyright}\"`,\n `/LANG=${localeId} FileDescription \"${appInfo.description}\"`,\n `/LANG=${localeId} FileVersion \"${appInfo.buildVersion}\"`,\n ]\n use(this.packager.platformSpecificBuildOptions.legalTrademarks, it => versionKey.push(`/LANG=${localeId} LegalTrademarks \"${it}\"`))\n use(appInfo.companyName, it => versionKey.push(`/LANG=${localeId} CompanyName \"${it}\"`))\n return versionKey\n }\n\n protected configureDefines(oneClick: boolean, defines: any): Promise<any> {\n const packager = this.packager\n const options = this.options\n\n const asyncTaskManager = new AsyncTaskManager(packager.info.cancellationToken)\n\n if (oneClick) {\n defines.ONE_CLICK = null\n\n if (options.runAfterFinish !== false) {\n defines.RUN_AFTER_FINISH = null\n }\n\n asyncTaskManager.add(async () => {\n const installerHeaderIcon = await packager.getResource(options.installerHeaderIcon, \"installerHeaderIcon.ico\")\n if (installerHeaderIcon != null) {\n defines.HEADER_ICO = installerHeaderIcon\n }\n })\n }\n else {\n if (options.runAfterFinish === false) {\n defines.HIDE_RUN_AFTER_FINISH = null\n }\n\n asyncTaskManager.add(async () => {\n const installerHeader = await packager.getResource(options.installerHeader, \"installerHeader.bmp\")\n if (installerHeader != null) {\n defines.MUI_HEADERIMAGE = null\n defines.MUI_HEADERIMAGE_RIGHT = null\n defines.MUI_HEADERIMAGE_BITMAP = installerHeader\n }\n })\n\n asyncTaskManager.add(async () => {\n const bitmap = (await packager.getResource(options.installerSidebar, \"installerSidebar.bmp\")) || \"${NSISDIR}\\\\Contrib\\\\Graphics\\\\Wizard\\\\nsis3-metro.bmp\"\n defines.MUI_WELCOMEFINISHPAGE_BITMAP = bitmap\n defines.MUI_UNWELCOMEFINISHPAGE_BITMAP = (await packager.getResource(options.uninstallerSidebar, \"uninstallerSidebar.bmp\")) || bitmap\n })\n\n if (options.allowElevation !== false) {\n defines.MULTIUSER_INSTALLMODE_ALLOW_ELEVATION = null\n }\n }\n\n if (options.perMachine === true) {\n defines.INSTALL_MODE_PER_ALL_USERS = null\n }\n\n if (!oneClick || options.perMachine === true) {\n defines.INSTALL_MODE_PER_ALL_USERS_REQUIRED = null\n }\n\n if (options.allowToChangeInstallationDirectory) {\n if (oneClick) {\n throw new InvalidConfigurationError(\"allowToChangeInstallationDirectory makes sense only for assisted installer (please set oneClick to false)\")\n }\n defines.allowToChangeInstallationDirectory = null\n }\n\n const commonOptions = getEffectiveOptions(options, packager)\n\n if (commonOptions.menuCategory != null) {\n defines.MENU_FILENAME = commonOptions.menuCategory\n }\n\n defines.SHORTCUT_NAME = commonOptions.shortcutName\n\n if (options.deleteAppDataOnUninstall) {\n defines.DELETE_APP_DATA_ON_UNINSTALL = null\n }\n\n asyncTaskManager.add(async () => {\n const uninstallerIcon = await packager.getResource(options.uninstallerIcon, \"uninstallerIcon.ico\")\n if (uninstallerIcon != null) {\n // we don't need to copy MUI_UNICON (defaults to app icon), so, we have 2 defines\n defines.UNINSTALLER_ICON = uninstallerIcon\n defines.MUI_UNICON = uninstallerIcon\n }\n })\n\n defines.UNINSTALL_DISPLAY_NAME = packager.expandMacro(options.uninstallDisplayName || \"${productName} ${version}\", null, {}, false)\n if (commonOptions.isCreateDesktopShortcut === DesktopShortcutCreationPolicy.NEVER) {\n defines.DO_NOT_CREATE_DESKTOP_SHORTCUT = null\n }\n if (commonOptions.isCreateDesktopShortcut === DesktopShortcutCreationPolicy.ALWAYS) {\n defines.RECREATE_DESKTOP_SHORTCUT = null\n }\n if (!commonOptions.isCreateStartMenuShortcut) {\n defines.DO_NOT_CREATE_START_MENU_SHORTCUT = null\n }\n\n if (options.displayLanguageSelector === true) {\n defines.DISPLAY_LANG_SELECTOR = null\n }\n\n return asyncTaskManager.awaitTasks()\n }\n\n private configureDefinesForAllTypeOfInstaller(defines: any) {\n const appInfo = this.packager.appInfo\n const companyName = appInfo.companyName\n if (companyName != null) {\n defines.COMPANY_NAME = companyName\n }\n\n // electron uses product file name as app data, define it as well to remove on uninstall\n if (defines.APP_FILENAME !== appInfo.productFilename) {\n defines.APP_PRODUCT_FILENAME = appInfo.productFilename\n }\n\n if (this.isWebInstaller) {\n defines.APP_PACKAGE_STORE_FILE = `${appInfo.updaterCacheDirName}\\\\${CURRENT_APP_PACKAGE_FILE_NAME}`\n }\n else {\n defines.APP_INSTALLER_STORE_FILE = `${appInfo.updaterCacheDirName}\\\\${CURRENT_APP_INSTALLER_FILE_NAME}`\n }\n\n if (!this.isWebInstaller && defines.APP_BUILD_DIR == null) {\n const options = this.options\n if (options.useZip) {\n defines.ZIP_COMPRESSION = null\n }\n\n defines.COMPRESSION_METHOD = options.useZip ? \"zip\" : \"7z\"\n }\n }\n\n private async executeMakensis(defines: any, commands: any, script: string) {\n const args: Array<string> = (this.options.warningsAsErrors === false) ? [] : [\"-WX\"]\n for (const name of Object.keys(defines)) {\n const value = defines[name]\n if (value == null) {\n args.push(`-D${name}`)\n }\n else {\n args.push(`-D${name}=${value}`)\n }\n }\n\n for (const name of Object.keys(commands)) {\n const value = commands[name]\n if (Array.isArray(value)) {\n for (const c of value) {\n args.push(`-X${name} ${c}`)\n }\n }\n else {\n args.push(`-X${name} ${value}`)\n }\n }\n\n args.push(\"-\")\n\n if (this.packager.debugLogger.isEnabled) {\n this.packager.debugLogger.add(\"nsis.script\", script)\n }\n\n const nsisPath = await NSIS_PATH.value\n const command = path.join(nsisPath, process.platform === \"darwin\" ? \"mac\" : (process.platform === \"win32\" ? \"Bin\" : \"linux\"), process.platform === \"win32\" ? \"makensis.exe\" : \"makensis\")\n await spawnAndWrite(command, args, script, {\n // we use NSIS_CONFIG_CONST_DATA_PATH=no to build makensis on Linux, but in any case it doesn't use stubs as MacOS/Windows version, so, we explicitly set NSISDIR\n env: {...process.env, NSISDIR: nsisPath},\n cwd: nsisTemplatesDir,\n })\n }\n\n private async computeCommonInstallerScriptHeader() {\n const packager = this.packager\n const options = this.options\n const scriptGenerator = new NsisScriptGenerator()\n const langConfigurator = new LangConfigurator(options)\n\n scriptGenerator.include(path.join(nsisTemplatesDir, \"include\", \"StdUtils.nsh\"))\n\n const includeDir = path.join(nsisTemplatesDir, \"include\")\n scriptGenerator.addIncludeDir(includeDir)\n scriptGenerator.flags([\"updated\", \"force-run\", \"keep-shortcuts\", \"no-desktop-shortcut\", \"delete-app-data\", \"allusers\", \"currentuser\"])\n\n createAddLangsMacro(scriptGenerator, langConfigurator)\n\n const taskManager = new AsyncTaskManager(packager.info.cancellationToken)\n\n const pluginArch = this.isUnicodeEnabled ? \"x86-unicode\" : \"x86-ansi\"\n taskManager.add(async () => {\n scriptGenerator.addPluginDir(pluginArch, path.join(await nsisResourcePathPromise.value, \"plugins\", pluginArch))\n })\n\n taskManager.add(async () => {\n const userPluginDir = path.join(packager.info.buildResourcesDir, pluginArch)\n const stat = await statOrNull(userPluginDir)\n if (stat != null && stat.isDirectory()) {\n scriptGenerator.addPluginDir(pluginArch, userPluginDir)\n }\n })\n\n taskManager.addTask(addCustomMessageFileInclude(\"messages.yml\", packager, scriptGenerator, langConfigurator))\n\n if (!this.isPortable) {\n if (options.oneClick === false) {\n taskManager.addTask(addCustomMessageFileInclude(\"assistedMessages.yml\", packager, scriptGenerator, langConfigurator))\n }\n\n taskManager.add(async () => {\n const customInclude = await packager.getResource(this.options.include, \"installer.nsh\")\n if (customInclude != null) {\n scriptGenerator.addIncludeDir(packager.info.buildResourcesDir)\n scriptGenerator.include(customInclude)\n }\n })\n }\n\n await taskManager.awaitTasks()\n return scriptGenerator.build()\n }\n\n private async computeFinalScript(originalScript: string, isInstaller: boolean) {\n const packager = this.packager\n const options = this.options\n const langConfigurator = new LangConfigurator(options)\n\n const scriptGenerator = new NsisScriptGenerator()\n const taskManager = new AsyncTaskManager(packager.info.cancellationToken)\n\n if (isInstaller) {\n // http://stackoverflow.com/questions/997456/nsis-license-file-based-on-language-selection\n taskManager.add(() => computeLicensePage(packager, options, scriptGenerator, langConfigurator.langs))\n }\n\n await taskManager.awaitTasks()\n\n if (this.isPortable) {\n return scriptGenerator.build() + originalScript\n }\n\n const preCompressedFileExtensions = this.getPreCompressedFileExtensions()\n if (preCompressedFileExtensions != null && preCompressedFileExtensions.length !== 0) {\n for (const [arch, dir] of this.archs.entries()) {\n await generateForPreCompressed(preCompressedFileExtensions, dir, arch, scriptGenerator)\n }\n }\n\n const fileAssociations = packager.fileAssociations\n if (fileAssociations.length !== 0) {\n\n scriptGenerator.include(path.join(path.join(nsisTemplatesDir, \"include\"), \"FileAssociation.nsh\"))\n if (isInstaller) {\n const registerFileAssociationsScript = new NsisScriptGenerator()\n for (const item of fileAssociations) {\n const extensions = asArray(item.ext).map(normalizeExt)\n for (const ext of extensions) {\n const customIcon = await packager.getResource(getPlatformIconFileName(item.icon, false), `${extensions[0]}.ico`)\n let installedIconPath = \"$appExe,0\"\n if (customIcon != null) {\n installedIconPath = `$INSTDIR\\\\resources\\\\${path.basename(customIcon)}`\n registerFileAssociationsScript.file(installedIconPath, customIcon)\n }\n\n const icon = `\"${installedIconPath}\"`\n const commandText = `\"Open with ${packager.appInfo.productName}\"`\n const command = '\"$appExe $\\\\\"%1$\\\\\"\"'\n registerFileAssociationsScript.insertMacro(\"APP_ASSOCIATE\", `\"${ext}\" \"${item.name || ext}\" \"${item.description || \"\"}\" ${icon} ${commandText} ${command}`)\n }\n }\n scriptGenerator.macro(\"registerFileAssociations\", registerFileAssociationsScript)\n }\n else {\n const unregisterFileAssociationsScript = new NsisScriptGenerator()\n for (const item of fileAssociations) {\n for (const ext of asArray(item.ext)) {\n unregisterFileAssociationsScript.insertMacro(\"APP_UNASSOCIATE\", `\"${normalizeExt(ext)}\" \"${item.name || ext}\"`)\n }\n }\n scriptGenerator.macro(\"unregisterFileAssociations\", unregisterFileAssociationsScript)\n }\n }\n\n return scriptGenerator.build() + originalScript\n }\n}\n\nasync function generateForPreCompressed(preCompressedFileExtensions: Array<string>, dir: string, arch: Arch, scriptGenerator: NsisScriptGenerator) {\n const resourcesDir = path.join(dir, \"resources\")\n const dirInfo = await statOrNull(resourcesDir)\n if (dirInfo == null || !dirInfo.isDirectory()) {\n return\n }\n\n const nodeModules = `${path.sep}node_modules`\n const preCompressedAssets = await walk(resourcesDir, (file, stat) => {\n if (stat.isDirectory()) {\n return !file.endsWith(nodeModules)\n }\n else {\n return preCompressedFileExtensions.some(it => file.endsWith(it))\n }\n })\n\n if (preCompressedAssets.length !== 0) {\n const macro = new NsisScriptGenerator()\n for (const file of preCompressedAssets) {\n macro.file(`$INSTDIR\\\\${path.relative(dir, file).replace(/\\//g, \"\\\\\")}`, file)\n }\n scriptGenerator.macro(`customFiles_${Arch[arch]}`, macro)\n }\n}\n\nasync function createPackageFileInfo(file: string): Promise<PackageFileInfo> {\n return {\n path: file,\n size: (await stat(file)).size,\n sha512: await hashFile(file),\n }\n}"],"sourceRoot":""}
@@ -72,7 +72,7 @@ function _rectCra() {
72
72
 
73
73
  function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = Object.defineProperty && Object.getOwnPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : {}; if (desc.get || desc.set) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } } newObj.default = obj; return newObj; } }
74
74
 
75
- const validateSchema = require("schema-utils"); // https://github.com/electron-userland/electron-builder/issues/1847
75
+ const validateSchema = require("@develar/schema-utils"); // https://github.com/electron-userland/electron-builder/issues/1847
76
76
 
77
77
 
78
78
  function mergePublish(config, configFromOptions) {
@@ -308,7 +308,7 @@ async function validateConfig(config, debugLogger) {
308
308
 
309
309
 
310
310
  validateSchema((await schemeDataPromise.value), config, {
311
- name: `electron-builder ${"21.1.3"}`,
311
+ name: `electron-builder ${"21.2.0"}`,
312
312
  postFormatter: (formattedError, error) => {
313
313
  if (debugLogger.isEnabled) {
314
314
  debugLogger.add("invalidConfig", (0, _builderUtil().safeStringifyJson)(error));
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/util/config.ts"],"names":[],"mappings":"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","sourcesContent":["import { DebugLogger, deepAssign, InvalidConfigurationError, log, safeStringifyJson } from \"builder-util\"\nimport { statOrNull } from \"builder-util/out/fs\"\nimport { readJson } from \"fs-extra\"\nimport { Lazy } from \"lazy-val\"\nimport * as path from \"path\"\nimport { getConfig as _getConfig, loadParentConfig, orNullIfFileNotExist, ReadConfigRequest } from \"read-config-file\"\nimport { FileSet } from \"..\"\nimport { Configuration } from \"../configuration\"\nimport { reactCra } from \"../presets/rectCra\"\nconst validateSchema = require(\"schema-utils\")\n\ndeclare const PACKAGE_VERSION: string\n\n// https://github.com/electron-userland/electron-builder/issues/1847\nfunction mergePublish(config: Configuration, configFromOptions: Configuration) {\n // if config from disk doesn't have publish (or object), no need to handle, it will be simply merged by deepAssign\n const publish = Array.isArray(config.publish) ? configFromOptions.publish : null\n if (publish != null) {\n delete (configFromOptions as any).publish\n }\n\n deepAssign(config, configFromOptions)\n\n if (publish == null) {\n return\n }\n\n const listOnDisk = config.publish as Array<any>\n if (listOnDisk.length === 0) {\n config.publish = publish\n }\n else {\n // apply to first\n Object.assign(listOnDisk[0], publish)\n }\n}\n\nexport async function getConfig(projectDir: string,\n configPath: string | null,\n configFromOptions: Configuration | null | undefined,\n packageMetadata: Lazy<{ [key: string]: any } | null> = new Lazy(() => orNullIfFileNotExist(readJson(path.join(projectDir, \"package.json\"))))): Promise<Configuration> {\n const configRequest: ReadConfigRequest = {packageKey: \"build\", configFilename: \"electron-builder\", projectDir, packageMetadata}\n const configAndEffectiveFile = await _getConfig<Configuration>(configRequest, configPath)\n const config = configAndEffectiveFile == null ? {} : configAndEffectiveFile.result\n if (configFromOptions != null) {\n mergePublish(config, configFromOptions)\n }\n\n if (configAndEffectiveFile != null) {\n log.info({file: configAndEffectiveFile.configFile == null ? 'package.json (\"build\" field)' : configAndEffectiveFile.configFile}, \"loaded configuration\")\n }\n\n if (config.extends == null && config.extends !== null) {\n const metadata = await packageMetadata.value || {}\n const devDependencies = metadata.devDependencies\n const dependencies = metadata.dependencies\n if ((dependencies != null && \"react-scripts\" in dependencies) || (devDependencies != null && \"react-scripts\" in devDependencies)) {\n config.extends = \"react-cra\"\n }\n else if (devDependencies != null && \"electron-webpack\" in devDependencies) {\n let file = \"electron-webpack/out/electron-builder.js\"\n try {\n file = require.resolve(file)\n }\n catch (ignore) {\n file = require.resolve(\"electron-webpack/electron-builder.yml\")\n }\n config.extends = `file:${file}`\n }\n }\n\n let parentConfig: Configuration | null\n if (config.extends === \"react-cra\") {\n parentConfig = await reactCra(projectDir)\n log.info({preset: config.extends}, \"loaded parent configuration\")\n }\n else if (config.extends != null) {\n const parentConfigAndEffectiveFile = await loadParentConfig<Configuration>(configRequest, config.extends)\n log.info({file: parentConfigAndEffectiveFile.configFile}, \"loaded parent configuration\")\n parentConfig = parentConfigAndEffectiveFile.result\n }\n else {\n parentConfig = null\n }\n\n return doMergeConfigs(config, parentConfig)\n}\n\n// normalize for easy merge\nfunction normalizeFiles(configuration: Configuration, name: \"files\" | \"extraFiles\" | \"extraResources\") {\n let value = configuration[name]\n if (value == null) {\n return\n }\n\n if (!Array.isArray(value)) {\n value = [value]\n }\n\n itemLoop: for (let i = 0; i < value.length; i++) {\n let item = value[i]\n if (typeof item === \"string\") {\n // merge with previous if possible\n if (i !== 0) {\n let prevItemIndex = i - 1\n let prevItem: FileSet\n do {\n prevItem = value[prevItemIndex--] as FileSet\n } while (prevItem == null)\n\n if (prevItem.from == null && prevItem.to == null) {\n if (prevItem.filter == null) {\n prevItem.filter = [item]\n }\n else {\n (prevItem.filter as Array<string>).push(item)\n }\n value[i] = null as any\n continue itemLoop\n }\n }\n\n item = {\n filter: [item],\n }\n value[i] = item\n }\n else if (Array.isArray(item)) {\n throw new Error(`${name} configuration is invalid, nested array not expected for index ${i}: ` + item)\n }\n\n // make sure that merge logic is not complex - unify different presentations\n if (item.from === \".\") {\n item.from = undefined\n }\n\n if (item.to === \".\") {\n item.to = undefined\n }\n\n if (item.filter != null && typeof item.filter === \"string\") {\n item.filter = [item.filter]\n }\n }\n\n configuration[name] = value.filter(it => it != null)\n}\n\nfunction mergeFiles(configuration: Configuration, parentConfiguration: Configuration, mergedConfiguration: Configuration, name: \"files\" | \"extraFiles\" | \"extraResources\") {\n const list = configuration[name] as Array<FileSet> | null\n const parentList = parentConfiguration[name] as Array<FileSet> | null\n if (list == null || parentList == null) {\n return\n }\n\n const result = list.slice()\n mergedConfiguration[name] = result\n\n itemLoop: for (const item of parentConfiguration.files as Array<FileSet>) {\n for (const existingItem of list) {\n if (existingItem.from === item.from && existingItem.to === item.to) {\n if (item.filter != null) {\n if (existingItem.filter == null) {\n existingItem.filter = item.filter.slice()\n }\n else {\n existingItem.filter = (item.filter as Array<string>).concat(existingItem.filter)\n }\n }\n\n continue itemLoop\n }\n }\n\n // existing item not found, simply add\n result.push(item)\n }\n}\n\nexport function doMergeConfigs(configuration: Configuration, parentConfiguration: Configuration | null) {\n normalizeFiles(configuration, \"files\")\n normalizeFiles(configuration, \"extraFiles\")\n normalizeFiles(configuration, \"extraResources\")\n\n if (parentConfiguration == null) {\n return deepAssign(getDefaultConfig(), configuration)\n }\n\n normalizeFiles(parentConfiguration, \"files\")\n normalizeFiles(parentConfiguration, \"extraFiles\")\n normalizeFiles(parentConfiguration, \"extraResources\")\n\n const result = deepAssign(getDefaultConfig(), parentConfiguration, configuration)\n mergeFiles(configuration, parentConfiguration, result, \"files\")\n return result\n}\n\nfunction getDefaultConfig(): Configuration {\n return {\n directories: {\n output: \"dist\",\n buildResources: \"build\",\n },\n }\n}\n\nconst schemeDataPromise = new Lazy(() => readJson(path.join(__dirname, \"..\", \"..\", \"scheme.json\")))\n\nexport async function validateConfig(config: Configuration, debugLogger: DebugLogger) {\n const extraMetadata = config.extraMetadata\n if (extraMetadata != null) {\n if (extraMetadata.build != null) {\n throw new InvalidConfigurationError(`--em.build is deprecated, please specify as -c\"`)\n }\n if (extraMetadata.directories != null) {\n throw new InvalidConfigurationError(`--em.directories is deprecated, please specify as -c.directories\"`)\n }\n }\n\n const oldConfig: any = config\n if (oldConfig.npmSkipBuildFromSource === false) {\n throw new InvalidConfigurationError(`npmSkipBuildFromSource is deprecated, please use buildDependenciesFromSource\"`)\n }\n if (oldConfig.appImage != null && oldConfig.appImage.systemIntegration != null) {\n throw new InvalidConfigurationError(`appImage.systemIntegration is deprecated, https://github.com/TheAssassin/AppImageLauncher is used for desktop integration\"`)\n }\n\n // noinspection JSUnusedGlobalSymbols\n validateSchema(await schemeDataPromise.value, config, {\n name: `electron-builder ${PACKAGE_VERSION}`,\n postFormatter: (formattedError: string, error: any): string => {\n if (debugLogger.isEnabled) {\n debugLogger.add(\"invalidConfig\", safeStringifyJson(error))\n }\n\n const site = \"https://www.electron.build\"\n let url = `${site}/configuration/configuration`\n const targets = new Set([\"mac\", \"dmg\", \"pkg\", \"mas\", \"win\", \"nsis\", \"appx\", \"linux\", \"appimage\", \"snap\"])\n const dataPath: string = error.dataPath == null ? null : error.dataPath\n const targetPath = dataPath.startsWith(\".\") ? dataPath.substr(1).toLowerCase() : null\n if (targetPath != null && targets.has(targetPath)) {\n url = `${site}/configuration/${targetPath}`\n }\n\n return `${formattedError}\\n How to fix:\n 1. Open ${url}\n 2. Search the option name on the page (or type in into Search to find across the docs).\n * Not found? The option was deprecated or not exists (check spelling).\n * Found? Check that the option in the appropriate place. e.g. \"title\" only in the \"dmg\", not in the root.\n`\n },\n })\n}\n\nconst DEFAULT_APP_DIR_NAMES = [\"app\", \"www\"]\n\nexport async function computeDefaultAppDirectory(projectDir: string, userAppDir: string | null | undefined): Promise<string> {\n if (userAppDir != null) {\n const absolutePath = path.resolve(projectDir, userAppDir)\n const stat = await statOrNull(absolutePath)\n if (stat == null) {\n throw new InvalidConfigurationError(`Application directory ${userAppDir} doesn't exist`)\n }\n else if (!stat.isDirectory()) {\n throw new InvalidConfigurationError(`Application directory ${userAppDir} is not a directory`)\n }\n else if (projectDir === absolutePath) {\n log.warn({appDirectory: userAppDir}, `Specified application directory equals to project dir — superfluous or wrong configuration`)\n }\n return absolutePath\n }\n\n for (const dir of DEFAULT_APP_DIR_NAMES) {\n const absolutePath = path.join(projectDir, dir)\n const packageJson = path.join(absolutePath, \"package.json\")\n const stat = await statOrNull(packageJson)\n if (stat != null && stat.isFile()) {\n return absolutePath\n }\n }\n return projectDir\n}\n"],"sourceRoot":""}
1
+ {"version":3,"sources":["../../src/util/config.ts"],"names":[],"mappings":"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","sourcesContent":["import { DebugLogger, deepAssign, InvalidConfigurationError, log, safeStringifyJson } from \"builder-util\"\nimport { statOrNull } from \"builder-util/out/fs\"\nimport { readJson } from \"fs-extra\"\nimport { Lazy } from \"lazy-val\"\nimport * as path from \"path\"\nimport { getConfig as _getConfig, loadParentConfig, orNullIfFileNotExist, ReadConfigRequest } from \"read-config-file\"\nimport { FileSet } from \"..\"\nimport { Configuration } from \"../configuration\"\nimport { reactCra } from \"../presets/rectCra\"\nconst validateSchema = require(\"@develar/schema-utils\")\n\ndeclare const PACKAGE_VERSION: string\n\n// https://github.com/electron-userland/electron-builder/issues/1847\nfunction mergePublish(config: Configuration, configFromOptions: Configuration) {\n // if config from disk doesn't have publish (or object), no need to handle, it will be simply merged by deepAssign\n const publish = Array.isArray(config.publish) ? configFromOptions.publish : null\n if (publish != null) {\n delete (configFromOptions as any).publish\n }\n\n deepAssign(config, configFromOptions)\n\n if (publish == null) {\n return\n }\n\n const listOnDisk = config.publish as Array<any>\n if (listOnDisk.length === 0) {\n config.publish = publish\n }\n else {\n // apply to first\n Object.assign(listOnDisk[0], publish)\n }\n}\n\nexport async function getConfig(projectDir: string,\n configPath: string | null,\n configFromOptions: Configuration | null | undefined,\n packageMetadata: Lazy<{ [key: string]: any } | null> = new Lazy(() => orNullIfFileNotExist(readJson(path.join(projectDir, \"package.json\"))))): Promise<Configuration> {\n const configRequest: ReadConfigRequest = {packageKey: \"build\", configFilename: \"electron-builder\", projectDir, packageMetadata}\n const configAndEffectiveFile = await _getConfig<Configuration>(configRequest, configPath)\n const config = configAndEffectiveFile == null ? {} : configAndEffectiveFile.result\n if (configFromOptions != null) {\n mergePublish(config, configFromOptions)\n }\n\n if (configAndEffectiveFile != null) {\n log.info({file: configAndEffectiveFile.configFile == null ? 'package.json (\"build\" field)' : configAndEffectiveFile.configFile}, \"loaded configuration\")\n }\n\n if (config.extends == null && config.extends !== null) {\n const metadata = await packageMetadata.value || {}\n const devDependencies = metadata.devDependencies\n const dependencies = metadata.dependencies\n if ((dependencies != null && \"react-scripts\" in dependencies) || (devDependencies != null && \"react-scripts\" in devDependencies)) {\n config.extends = \"react-cra\"\n }\n else if (devDependencies != null && \"electron-webpack\" in devDependencies) {\n let file = \"electron-webpack/out/electron-builder.js\"\n try {\n file = require.resolve(file)\n }\n catch (ignore) {\n file = require.resolve(\"electron-webpack/electron-builder.yml\")\n }\n config.extends = `file:${file}`\n }\n }\n\n let parentConfig: Configuration | null\n if (config.extends === \"react-cra\") {\n parentConfig = await reactCra(projectDir)\n log.info({preset: config.extends}, \"loaded parent configuration\")\n }\n else if (config.extends != null) {\n const parentConfigAndEffectiveFile = await loadParentConfig<Configuration>(configRequest, config.extends)\n log.info({file: parentConfigAndEffectiveFile.configFile}, \"loaded parent configuration\")\n parentConfig = parentConfigAndEffectiveFile.result\n }\n else {\n parentConfig = null\n }\n\n return doMergeConfigs(config, parentConfig)\n}\n\n// normalize for easy merge\nfunction normalizeFiles(configuration: Configuration, name: \"files\" | \"extraFiles\" | \"extraResources\") {\n let value = configuration[name]\n if (value == null) {\n return\n }\n\n if (!Array.isArray(value)) {\n value = [value]\n }\n\n itemLoop: for (let i = 0; i < value.length; i++) {\n let item = value[i]\n if (typeof item === \"string\") {\n // merge with previous if possible\n if (i !== 0) {\n let prevItemIndex = i - 1\n let prevItem: FileSet\n do {\n prevItem = value[prevItemIndex--] as FileSet\n } while (prevItem == null)\n\n if (prevItem.from == null && prevItem.to == null) {\n if (prevItem.filter == null) {\n prevItem.filter = [item]\n }\n else {\n (prevItem.filter as Array<string>).push(item)\n }\n value[i] = null as any\n continue itemLoop\n }\n }\n\n item = {\n filter: [item],\n }\n value[i] = item\n }\n else if (Array.isArray(item)) {\n throw new Error(`${name} configuration is invalid, nested array not expected for index ${i}: ` + item)\n }\n\n // make sure that merge logic is not complex - unify different presentations\n if (item.from === \".\") {\n item.from = undefined\n }\n\n if (item.to === \".\") {\n item.to = undefined\n }\n\n if (item.filter != null && typeof item.filter === \"string\") {\n item.filter = [item.filter]\n }\n }\n\n configuration[name] = value.filter(it => it != null)\n}\n\nfunction mergeFiles(configuration: Configuration, parentConfiguration: Configuration, mergedConfiguration: Configuration, name: \"files\" | \"extraFiles\" | \"extraResources\") {\n const list = configuration[name] as Array<FileSet> | null\n const parentList = parentConfiguration[name] as Array<FileSet> | null\n if (list == null || parentList == null) {\n return\n }\n\n const result = list.slice()\n mergedConfiguration[name] = result\n\n itemLoop: for (const item of parentConfiguration.files as Array<FileSet>) {\n for (const existingItem of list) {\n if (existingItem.from === item.from && existingItem.to === item.to) {\n if (item.filter != null) {\n if (existingItem.filter == null) {\n existingItem.filter = item.filter.slice()\n }\n else {\n existingItem.filter = (item.filter as Array<string>).concat(existingItem.filter)\n }\n }\n\n continue itemLoop\n }\n }\n\n // existing item not found, simply add\n result.push(item)\n }\n}\n\nexport function doMergeConfigs(configuration: Configuration, parentConfiguration: Configuration | null) {\n normalizeFiles(configuration, \"files\")\n normalizeFiles(configuration, \"extraFiles\")\n normalizeFiles(configuration, \"extraResources\")\n\n if (parentConfiguration == null) {\n return deepAssign(getDefaultConfig(), configuration)\n }\n\n normalizeFiles(parentConfiguration, \"files\")\n normalizeFiles(parentConfiguration, \"extraFiles\")\n normalizeFiles(parentConfiguration, \"extraResources\")\n\n const result = deepAssign(getDefaultConfig(), parentConfiguration, configuration)\n mergeFiles(configuration, parentConfiguration, result, \"files\")\n return result\n}\n\nfunction getDefaultConfig(): Configuration {\n return {\n directories: {\n output: \"dist\",\n buildResources: \"build\",\n },\n }\n}\n\nconst schemeDataPromise = new Lazy(() => readJson(path.join(__dirname, \"..\", \"..\", \"scheme.json\")))\n\nexport async function validateConfig(config: Configuration, debugLogger: DebugLogger) {\n const extraMetadata = config.extraMetadata\n if (extraMetadata != null) {\n if (extraMetadata.build != null) {\n throw new InvalidConfigurationError(`--em.build is deprecated, please specify as -c\"`)\n }\n if (extraMetadata.directories != null) {\n throw new InvalidConfigurationError(`--em.directories is deprecated, please specify as -c.directories\"`)\n }\n }\n\n const oldConfig: any = config\n if (oldConfig.npmSkipBuildFromSource === false) {\n throw new InvalidConfigurationError(`npmSkipBuildFromSource is deprecated, please use buildDependenciesFromSource\"`)\n }\n if (oldConfig.appImage != null && oldConfig.appImage.systemIntegration != null) {\n throw new InvalidConfigurationError(`appImage.systemIntegration is deprecated, https://github.com/TheAssassin/AppImageLauncher is used for desktop integration\"`)\n }\n\n // noinspection JSUnusedGlobalSymbols\n validateSchema(await schemeDataPromise.value, config, {\n name: `electron-builder ${PACKAGE_VERSION}`,\n postFormatter: (formattedError: string, error: any): string => {\n if (debugLogger.isEnabled) {\n debugLogger.add(\"invalidConfig\", safeStringifyJson(error))\n }\n\n const site = \"https://www.electron.build\"\n let url = `${site}/configuration/configuration`\n const targets = new Set([\"mac\", \"dmg\", \"pkg\", \"mas\", \"win\", \"nsis\", \"appx\", \"linux\", \"appimage\", \"snap\"])\n const dataPath: string = error.dataPath == null ? null : error.dataPath\n const targetPath = dataPath.startsWith(\".\") ? dataPath.substr(1).toLowerCase() : null\n if (targetPath != null && targets.has(targetPath)) {\n url = `${site}/configuration/${targetPath}`\n }\n\n return `${formattedError}\\n How to fix:\n 1. Open ${url}\n 2. Search the option name on the page (or type in into Search to find across the docs).\n * Not found? The option was deprecated or not exists (check spelling).\n * Found? Check that the option in the appropriate place. e.g. \"title\" only in the \"dmg\", not in the root.\n`\n },\n })\n}\n\nconst DEFAULT_APP_DIR_NAMES = [\"app\", \"www\"]\n\nexport async function computeDefaultAppDirectory(projectDir: string, userAppDir: string | null | undefined): Promise<string> {\n if (userAppDir != null) {\n const absolutePath = path.resolve(projectDir, userAppDir)\n const stat = await statOrNull(absolutePath)\n if (stat == null) {\n throw new InvalidConfigurationError(`Application directory ${userAppDir} doesn't exist`)\n }\n else if (!stat.isDirectory()) {\n throw new InvalidConfigurationError(`Application directory ${userAppDir} is not a directory`)\n }\n else if (projectDir === absolutePath) {\n log.warn({appDirectory: userAppDir}, `Specified application directory equals to project dir — superfluous or wrong configuration`)\n }\n return absolutePath\n }\n\n for (const dir of DEFAULT_APP_DIR_NAMES) {\n const absolutePath = path.join(projectDir, dir)\n const packageJson = path.join(absolutePath, \"package.json\")\n const stat = await statOrNull(packageJson)\n if (stat != null && stat.isFile()) {\n return absolutePath\n }\n }\n return projectDir\n}\n"],"sourceRoot":""}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "app-builder-lib",
3
3
  "description": "electron-builder lib",
4
- "version": "21.1.3",
4
+ "version": "21.2.0",
5
5
  "main": "out/index.js",
6
6
  "files": [
7
7
  "out",
@@ -48,8 +48,8 @@
48
48
  "bluebird-lst": "^1.0.9",
49
49
  "chromium-pickle-js": "^0.2.0",
50
50
  "builder-util-runtime": "8.3.0",
51
- "builder-util": "21.1.3",
52
- "electron-publish": "21.1.3",
51
+ "builder-util": "21.2.0",
52
+ "electron-publish": "21.2.0",
53
53
  "fs-extra": "^8.1.0",
54
54
  "hosted-git-info": "^2.7.1",
55
55
  "is-ci": "^2.0.0",
@@ -58,9 +58,9 @@
58
58
  "read-config-file": "5.0.0",
59
59
  "minimatch": "^3.0.4",
60
60
  "normalize-package-data": "^2.5.0",
61
- "sanitize-filename": "^1.6.1",
62
- "schema-utils": "^2.0.1",
63
- "semver": "^6.2.0",
61
+ "sanitize-filename": "^1.6.2",
62
+ "@develar/schema-utils": "~2.1.0",
63
+ "semver": "^6.3.0",
64
64
  "debug": "^4.1.1",
65
65
  "lazy-val": "^1.0.4",
66
66
  "temp-file": "^3.3.4",
@@ -40,7 +40,7 @@
40
40
  ${if} $3 != "${APP_EXECUTABLE_FILENAME}"
41
41
  ${if} ${isUpdated}
42
42
  # allow app to exit without explicit kill
43
- Sleep 100
43
+ Sleep 300
44
44
  ${endIf}
45
45
 
46
46
  ${nsProcess::FindProcess} "${APP_EXECUTABLE_FILENAME}" $R0
@@ -58,16 +58,15 @@
58
58
  DetailPrint `Closing running "${PRODUCT_NAME}"...`
59
59
 
60
60
  # https://github.com/electron-userland/electron-builder/issues/2516#issuecomment-372009092
61
- nsExec::Exec `taskkill /im "${APP_EXECUTABLE_FILENAME}" /fi "PID ne $pid"` $R0
61
+ nsExec::Exec `taskkill /t /im "${APP_EXECUTABLE_FILENAME}" /fi "PID ne $pid"` $R0
62
62
  # to ensure that files are not "in-use"
63
- Sleep 100
63
+ Sleep 300
64
64
 
65
65
  ${nsProcess::FindProcess} "${APP_EXECUTABLE_FILENAME}" $R0
66
66
  ${if} $R0 == 0
67
67
  # wait to give a chance to exit gracefully
68
68
  Sleep 1000
69
- # do not use /t tree kill - app was killed softly already
70
- nsExec::Exec `taskkill /f /im "${APP_EXECUTABLE_FILENAME}" /fi "PID ne $pid"` $R0
69
+ nsExec::Exec `taskkill /f /t /im "${APP_EXECUTABLE_FILENAME}" /fi "PID ne $pid"` $R0
71
70
  ${If} $R0 != 0
72
71
  DetailPrint `Waiting for "${PRODUCT_NAME}" to close (taskkill exit code $R0).`
73
72
  Sleep 2000
@@ -75,6 +74,4 @@
75
74
  ${endIf}
76
75
  ${endIf}
77
76
  ${endIf}
78
-
79
- ${nsProcess::Unload}
80
77
  !macroend