app-builder-lib 23.0.7 → 23.1.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.
@@ -97,19 +97,19 @@ exports.getCertificateFromStoreInfo = getCertificateFromStoreInfo;
97
97
  async function doSign(configuration, packager) {
98
98
  // https://github.com/electron-userland/electron-builder/pull/1944
99
99
  const timeout = parseInt(process.env.SIGNTOOL_TIMEOUT, 10) || 10 * 60 * 1000;
100
- let tool;
100
+ // unify logic of signtool path location
101
+ const toolInfo = await getToolPath();
102
+ const tool = toolInfo.path;
103
+ // decide runtime argument by cases
101
104
  let args;
102
105
  let env = process.env;
103
106
  let vm;
104
107
  if (configuration.path.endsWith(".appx") || !("file" in configuration.cscInfo) /* certificateSubjectName and other such options */) {
105
108
  vm = await packager.vm.value;
106
- tool = getWinSignTool(await getSignVendorPath());
107
109
  args = computeSignToolArgs(configuration, true, vm);
108
110
  }
109
111
  else {
110
112
  vm = new vm_1.VmManager();
111
- const toolInfo = await getToolPath();
112
- tool = toolInfo.path;
113
113
  args = configuration.computeSignToolArgs(process.platform === "win32");
114
114
  if (toolInfo.env != null) {
115
115
  env = toolInfo.env;
@@ -1 +1 @@
1
- {"version":3,"file":"windowsCodeSign.js","sourceRoot":"","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 { WindowsConfiguration } from \"../options/winOptions\"\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 { 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, packager?: WinPackager) => 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 } else if (options.path.endsWith(\".appx\")) {\n hashes = [\"sha256\"]\n } else if (hashes == null) {\n hashes = [\"sha1\", \"sha256\"]\n } else {\n hashes = Array.isArray(hashes) ? hashes : [hashes]\n }\n\n const executor = resolveFunction(options.options.sign, \"sign\") || doSign\n let isNest = false\n for (const hash of hashes) {\n const taskConfiguration: WindowsSignTaskConfiguration = { ...options, hash, isNest }\n await Promise.resolve(\n executor(\n {\n ...taskConfiguration,\n computeSignToolArgs: isWin => computeSignToolArgs(taskConfiguration, isWin),\n },\n packager\n )\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 } 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 ? options.certificateSha1.toUpperCase() : 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\", [\n \"-NoProfile\",\n \"-NonInteractive\",\n \"-Command\",\n \"Get-ChildItem -Recurse Cert: -CodeSigningCert | Select-Object -Property Subject,PSParentPath,Thumbprint | ConvertTo-Json -Compress\",\n ])\n const certList = rawResult.length === 0 ? [] : asArray<CertInfo>(JSON.parse(rawResult))\n for (const certInfo of certList) {\n if (\n (certificateSubjectName != null && !certInfo.Subject.includes(certificateSubjectName)) ||\n (certificateSha1 != null && certInfo.Thumbprint.toUpperCase() !== certificateSha1)\n ) {\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\nexport async 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 } 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 } 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 15 seconds: ${e.message}`)\n await new Promise((resolve, reject) => {\n setTimeout(() => {\n vm.exec(tool, args, { timeout, env }).then(resolve).catch(reject)\n }, 15000)\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(\n options.isNest || options.hash === \"sha256\" ? \"/tr\" : \"/t\",\n options.isNest || options.hash === \"sha256\" ? options.options.rfc3161TimeStampServer || \"http://timestamp.digicert.com\" : 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 } else {\n const certExtension = path.extname(certificateFile)\n if (certExtension === \".p12\" || certExtension === \".pfx\") {\n args.push(isWin ? \"/f\" : \"-pkcs12\", vm.toVmFile(certificateFile))\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 } 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 } 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 } else {\n return { path: path.join(vendorPath, process.platform, \"osslsigncode\") }\n }\n}\n"]}
1
+ {"version":3,"file":"windowsCodeSign.js","sourceRoot":"","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 { WindowsConfiguration } from \"../options/winOptions\"\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 { 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, packager?: WinPackager) => 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 } else if (options.path.endsWith(\".appx\")) {\n hashes = [\"sha256\"]\n } else if (hashes == null) {\n hashes = [\"sha1\", \"sha256\"]\n } else {\n hashes = Array.isArray(hashes) ? hashes : [hashes]\n }\n\n const executor = resolveFunction(options.options.sign, \"sign\") || doSign\n let isNest = false\n for (const hash of hashes) {\n const taskConfiguration: WindowsSignTaskConfiguration = { ...options, hash, isNest }\n await Promise.resolve(\n executor(\n {\n ...taskConfiguration,\n computeSignToolArgs: isWin => computeSignToolArgs(taskConfiguration, isWin),\n },\n packager\n )\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 } 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 ? options.certificateSha1.toUpperCase() : 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\", [\n \"-NoProfile\",\n \"-NonInteractive\",\n \"-Command\",\n \"Get-ChildItem -Recurse Cert: -CodeSigningCert | Select-Object -Property Subject,PSParentPath,Thumbprint | ConvertTo-Json -Compress\",\n ])\n const certList = rawResult.length === 0 ? [] : asArray<CertInfo>(JSON.parse(rawResult))\n for (const certInfo of certList) {\n if (\n (certificateSubjectName != null && !certInfo.Subject.includes(certificateSubjectName)) ||\n (certificateSha1 != null && certInfo.Thumbprint.toUpperCase() !== certificateSha1)\n ) {\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\nexport async 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 // unify logic of signtool path location\n const toolInfo = await getToolPath()\n const tool = toolInfo.path\n // decide runtime argument by cases\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 args = computeSignToolArgs(configuration, true, vm)\n } else {\n vm = new VmManager()\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 } 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 15 seconds: ${e.message}`)\n await new Promise((resolve, reject) => {\n setTimeout(() => {\n vm.exec(tool, args, { timeout, env }).then(resolve).catch(reject)\n }, 15000)\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(\n options.isNest || options.hash === \"sha256\" ? \"/tr\" : \"/t\",\n options.isNest || options.hash === \"sha256\" ? options.options.rfc3161TimeStampServer || \"http://timestamp.digicert.com\" : 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 } else {\n const certExtension = path.extname(certificateFile)\n if (certExtension === \".p12\" || certExtension === \".pfx\") {\n args.push(isWin ? \"/f\" : \"-pkcs12\", vm.toVmFile(certificateFile))\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 } 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 } 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 } else {\n return { path: path.join(vendorPath, process.platform, \"osslsigncode\") }\n }\n}\n"]}
@@ -109,6 +109,16 @@ class MacPackager extends platformPackager_1.PlatformPackager {
109
109
  });
110
110
  await fs.rm(x64AppOutDir, { recursive: true, force: true });
111
111
  await fs.rm(arm64AppOutPath, { recursive: true, force: true });
112
+ // Give users a final opportunity to perform things on the combined universal package before signing
113
+ const packContext = {
114
+ appOutDir,
115
+ outDir,
116
+ arch,
117
+ targets,
118
+ packager: this,
119
+ electronPlatformName: platformName,
120
+ };
121
+ await this.info.afterPack(packContext);
112
122
  await this.doSignAfterPack(outDir, appOutDir, platformName, arch, platformSpecificBuildOptions, targets);
113
123
  break;
114
124
  }
@@ -1 +1 @@
1
- {"version":3,"file":"macPackager.js","sourceRoot":"","sources":["../src/macPackager.ts"],"names":[],"mappings":"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","sourcesContent":["import BluebirdPromise from \"bluebird-lst\"\nimport { deepAssign, Arch, AsyncTaskManager, exec, InvalidConfigurationError, log, use, getArchSuffix } from \"builder-util\"\nimport { signAsync, SignOptions } from \"electron-osx-sign\"\nimport { mkdir, readdir } from \"fs/promises\"\nimport { Lazy } from \"lazy-val\"\nimport * as path from \"path\"\nimport { copyFile, statOrNull, 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\"\nimport * as fs from \"fs/promises\"\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 }).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 // eslint-disable-next-line @typescript-eslint/no-unused-vars\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 // eslint-disable-next-line @typescript-eslint/no-var-requires\n const { DmgTarget } = require(\"dmg-builder\")\n mapper(name, outDir => new DmgTarget(this, outDir))\n break\n }\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 protected async doPack(\n outDir: string,\n appOutDir: string,\n platformName: ElectronPlatformName,\n arch: Arch,\n platformSpecificBuildOptions: MacConfiguration,\n targets: Array<Target>\n ): Promise<any> {\n switch (arch) {\n default: {\n return super.doPack(outDir, appOutDir, platformName, arch, platformSpecificBuildOptions, targets)\n }\n case Arch.universal: {\n const x64Arch = Arch.x64\n const x64AppOutDir = appOutDir + \"--\" + Arch[x64Arch]\n await super.doPack(outDir, x64AppOutDir, platformName, x64Arch, platformSpecificBuildOptions, targets, false, true)\n const arm64Arch = Arch.arm64\n const arm64AppOutPath = appOutDir + \"--\" + Arch[arm64Arch]\n await super.doPack(outDir, arm64AppOutPath, platformName, arm64Arch, platformSpecificBuildOptions, targets, false, true)\n const framework = this.info.framework\n log.info(\n {\n platform: platformName,\n arch: Arch[arch],\n [`${framework.name}`]: framework.version,\n appOutDir: log.filePath(appOutDir),\n },\n `packaging`\n )\n const appFile = `${this.appInfo.productFilename}.app`\n const { makeUniversalApp } = require(\"@electron/universal\")\n await makeUniversalApp({\n x64AppPath: path.join(x64AppOutDir, appFile),\n arm64AppPath: path.join(arm64AppOutPath, appFile),\n outAppPath: path.join(appOutDir, appFile),\n force: true,\n mergeASARs: platformSpecificBuildOptions.mergeASARs ?? true,\n singleArchFiles: platformSpecificBuildOptions.singleArchFiles,\n })\n await fs.rm(x64AppOutDir, { recursive: true, force: true })\n await fs.rm(arm64AppOutPath, { recursive: true, force: true })\n await this.doSignAfterPack(outDir, appOutDir, platformName, arch, platformSpecificBuildOptions, targets)\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 = (\n prepackaged\n ? Promise.resolve()\n : this.doPack(outDir, path.dirname(appPath), this.platform.nodeName as ElectronPlatformName, arch, this.platformSpecificBuildOptions, targets)\n ).then(() => this.packageInDistributableFormat(appPath, arch, 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}${getArchSuffix(arch)}`)\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, arch)\n } else {\n await this.sign(prepackaged, targetOutDir, masBuildOptions, arch)\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, arch: Arch | 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 certificateTypes = getCertificateTypes(isMas, isDevelopment)\n\n let identity = null\n for (const certificateType of certificateTypes) {\n identity = await findIdentity(certificateType, qualifier, keychainFile)\n if (identity != null) {\n break\n }\n }\n\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, certificateTypes, 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 let filter = options.signIgnore\n if (Array.isArray(filter)) {\n if (filter.length == 0) {\n filter = null\n }\n } else if (filter != null) {\n filter = filter.length === 0 ? null : [filter]\n }\n\n const filterRe = filter == null ? null : filter.map(it => new RegExp(it))\n\n let binaries = options.binaries || undefined\n if (binaries) {\n // Accept absolute paths for external binaries, else resolve relative paths from the artifact's app Contents path.\n binaries = await Promise.all(\n binaries.map(async destination => {\n if (await statOrNull(destination)) {\n return destination\n }\n return path.resolve(appPath, destination)\n })\n )\n log.info(\"Signing addtional user-defined binaries: \" + JSON.stringify(binaries, null, 1))\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 if (filterRe != null) {\n for (const regExp of filterRe) {\n if (regExp.test(file)) {\n return true\n }\n }\n }\n return (\n file.endsWith(\".kext\") ||\n file.startsWith(\"/Contents/PlugIns\", appPath.length) ||\n file.includes(\"/node_modules/puppeteer/.local-chromium\") ||\n file.includes(\"/node_modules/playwright-firefox/.local-browsers\") ||\n file.includes(\"/node_modules/playwright/.local-browsers\")\n )\n\n /* Those are browser automating modules, browser (chromium, nightly) cannot be signed\n https://github.com/electron-userland/electron-builder/issues/2010\n https://github.com/electron-userland/electron-builder/issues/5383\n */\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,\n timestamp: isMas ? masOptions?.timestamp : options.timestamp,\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 // https://github.com/electron-userland/electron-builder/issues/1480\n \"strict-verify\": options.strictVerify,\n hardenedRuntime: isMas ? masOptions && masOptions.hardenedRuntime === true : options.hardenedRuntime !== false,\n }\n\n await this.adjustSignOptions(signOptions, masOptions)\n log.info(\n {\n file: log.filePath(appPath),\n identityName: identity.name,\n identityHash: identity.hash,\n provisioningProfile: signOptions[\"provisioning-profile\"] || \"none\",\n },\n \"signing\"\n )\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\", arch)\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\", arch, true, this.platformSpecificBuildOptions.defaultArch))\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 } 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 } 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 signOptions[\"entitlements-loginhelper\"] = customSignOptions.entitlementsLoginHelper\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 mkdir(path.dirname(outFile), { recursive: true })\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 = \"icon.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, 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, null)\n } else {\n return null\n }\n })\n }\n}\n\nfunction getCertificateTypes(isMas: boolean, isDevelopment: boolean): CertType[] {\n if (isDevelopment) {\n return isMas ? [\"Mac Developer\", \"Apple Development\"] : [\"Developer ID Application\"]\n }\n return isMas ? [\"Apple Distribution\"] : [\"Developer ID Application\"]\n}\n"]}
1
+ {"version":3,"file":"macPackager.js","sourceRoot":"","sources":["../src/macPackager.ts"],"names":[],"mappings":"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","sourcesContent":["import BluebirdPromise from \"bluebird-lst\"\nimport { deepAssign, Arch, AsyncTaskManager, exec, InvalidConfigurationError, log, use, getArchSuffix } from \"builder-util\"\nimport { signAsync, SignOptions } from \"electron-osx-sign\"\nimport { mkdir, readdir } from \"fs/promises\"\nimport { Lazy } from \"lazy-val\"\nimport * as path from \"path\"\nimport { copyFile, statOrNull, 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\"\nimport * as fs from \"fs/promises\"\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 }).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 // eslint-disable-next-line @typescript-eslint/no-unused-vars\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 // eslint-disable-next-line @typescript-eslint/no-var-requires\n const { DmgTarget } = require(\"dmg-builder\")\n mapper(name, outDir => new DmgTarget(this, outDir))\n break\n }\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 protected async doPack(\n outDir: string,\n appOutDir: string,\n platformName: ElectronPlatformName,\n arch: Arch,\n platformSpecificBuildOptions: MacConfiguration,\n targets: Array<Target>\n ): Promise<any> {\n switch (arch) {\n default: {\n return super.doPack(outDir, appOutDir, platformName, arch, platformSpecificBuildOptions, targets)\n }\n case Arch.universal: {\n const x64Arch = Arch.x64\n const x64AppOutDir = appOutDir + \"--\" + Arch[x64Arch]\n await super.doPack(outDir, x64AppOutDir, platformName, x64Arch, platformSpecificBuildOptions, targets, false, true)\n const arm64Arch = Arch.arm64\n const arm64AppOutPath = appOutDir + \"--\" + Arch[arm64Arch]\n await super.doPack(outDir, arm64AppOutPath, platformName, arm64Arch, platformSpecificBuildOptions, targets, false, true)\n const framework = this.info.framework\n log.info(\n {\n platform: platformName,\n arch: Arch[arch],\n [`${framework.name}`]: framework.version,\n appOutDir: log.filePath(appOutDir),\n },\n `packaging`\n )\n const appFile = `${this.appInfo.productFilename}.app`\n const { makeUniversalApp } = require(\"@electron/universal\")\n await makeUniversalApp({\n x64AppPath: path.join(x64AppOutDir, appFile),\n arm64AppPath: path.join(arm64AppOutPath, appFile),\n outAppPath: path.join(appOutDir, appFile),\n force: true,\n mergeASARs: platformSpecificBuildOptions.mergeASARs ?? true,\n singleArchFiles: platformSpecificBuildOptions.singleArchFiles,\n })\n await fs.rm(x64AppOutDir, { recursive: true, force: true })\n await fs.rm(arm64AppOutPath, { recursive: true, force: true })\n\n // Give users a final opportunity to perform things on the combined universal package before signing\n const packContext: AfterPackContext = {\n appOutDir,\n outDir,\n arch,\n targets,\n packager: this,\n electronPlatformName: platformName,\n }\n await this.info.afterPack(packContext)\n\n await this.doSignAfterPack(outDir, appOutDir, platformName, arch, platformSpecificBuildOptions, targets)\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 = (\n prepackaged\n ? Promise.resolve()\n : this.doPack(outDir, path.dirname(appPath), this.platform.nodeName as ElectronPlatformName, arch, this.platformSpecificBuildOptions, targets)\n ).then(() => this.packageInDistributableFormat(appPath, arch, 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}${getArchSuffix(arch)}`)\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, arch)\n } else {\n await this.sign(prepackaged, targetOutDir, masBuildOptions, arch)\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, arch: Arch | 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 certificateTypes = getCertificateTypes(isMas, isDevelopment)\n\n let identity = null\n for (const certificateType of certificateTypes) {\n identity = await findIdentity(certificateType, qualifier, keychainFile)\n if (identity != null) {\n break\n }\n }\n\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, certificateTypes, 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 let filter = options.signIgnore\n if (Array.isArray(filter)) {\n if (filter.length == 0) {\n filter = null\n }\n } else if (filter != null) {\n filter = filter.length === 0 ? null : [filter]\n }\n\n const filterRe = filter == null ? null : filter.map(it => new RegExp(it))\n\n let binaries = options.binaries || undefined\n if (binaries) {\n // Accept absolute paths for external binaries, else resolve relative paths from the artifact's app Contents path.\n binaries = await Promise.all(\n binaries.map(async destination => {\n if (await statOrNull(destination)) {\n return destination\n }\n return path.resolve(appPath, destination)\n })\n )\n log.info(\"Signing addtional user-defined binaries: \" + JSON.stringify(binaries, null, 1))\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 if (filterRe != null) {\n for (const regExp of filterRe) {\n if (regExp.test(file)) {\n return true\n }\n }\n }\n return (\n file.endsWith(\".kext\") ||\n file.startsWith(\"/Contents/PlugIns\", appPath.length) ||\n file.includes(\"/node_modules/puppeteer/.local-chromium\") ||\n file.includes(\"/node_modules/playwright-firefox/.local-browsers\") ||\n file.includes(\"/node_modules/playwright/.local-browsers\")\n )\n\n /* Those are browser automating modules, browser (chromium, nightly) cannot be signed\n https://github.com/electron-userland/electron-builder/issues/2010\n https://github.com/electron-userland/electron-builder/issues/5383\n */\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,\n timestamp: isMas ? masOptions?.timestamp : options.timestamp,\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 // https://github.com/electron-userland/electron-builder/issues/1480\n \"strict-verify\": options.strictVerify,\n hardenedRuntime: isMas ? masOptions && masOptions.hardenedRuntime === true : options.hardenedRuntime !== false,\n }\n\n await this.adjustSignOptions(signOptions, masOptions)\n log.info(\n {\n file: log.filePath(appPath),\n identityName: identity.name,\n identityHash: identity.hash,\n provisioningProfile: signOptions[\"provisioning-profile\"] || \"none\",\n },\n \"signing\"\n )\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\", arch)\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\", arch, true, this.platformSpecificBuildOptions.defaultArch))\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 } 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 } 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 signOptions[\"entitlements-loginhelper\"] = customSignOptions.entitlementsLoginHelper\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 mkdir(path.dirname(outFile), { recursive: true })\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 = \"icon.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, 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, null)\n } else {\n return null\n }\n })\n }\n}\n\nfunction getCertificateTypes(isMas: boolean, isDevelopment: boolean): CertType[] {\n if (isDevelopment) {\n return isMas ? [\"Mac Developer\", \"Apple Development\"] : [\"Developer ID Application\"]\n }\n return isMas ? [\"Apple Distribution\"] : [\"Developer ID Application\"]\n}\n"]}
@@ -1,7 +1,7 @@
1
1
  import { PlatformSpecificBuildOptions, TargetConfigType, TargetSpecificOptions } from "../index";
2
2
  export interface LinuxConfiguration extends CommonLinuxOptions, PlatformSpecificBuildOptions {
3
3
  /**
4
- * Target package type: list of `AppImage`, `snap`, `deb`, `rpm`, `freebsd`, `pacman`, `p5p`, `apk`, `7z`, `zip`, `tar.xz`, `tar.lz`, `tar.gz`, `tar.bz2`, `dir`.
4
+ * Target package type: list of `AppImage`, `flatpak`, `snap`, `deb`, `rpm`, `freebsd`, `pacman`, `p5p`, `apk`, `7z`, `zip`, `tar.xz`, `tar.lz`, `tar.gz`, `tar.bz2`, `dir`.
5
5
  *
6
6
  * electron-builder [docker image](/multi-platform-build#docker) can be used to build Linux targets on any platform.
7
7
  *
@@ -1 +1 @@
1
- {"version":3,"file":"linuxOptions.js","sourceRoot":"","sources":["../../src/options/linuxOptions.ts"],"names":[],"mappings":"","sourcesContent":["import { PlatformSpecificBuildOptions, TargetConfigType, TargetSpecificOptions } from \"../index\"\n\nexport interface LinuxConfiguration extends CommonLinuxOptions, PlatformSpecificBuildOptions {\n /**\n * Target package type: list of `AppImage`, `snap`, `deb`, `rpm`, `freebsd`, `pacman`, `p5p`, `apk`, `7z`, `zip`, `tar.xz`, `tar.lz`, `tar.gz`, `tar.bz2`, `dir`.\n *\n * electron-builder [docker image](/multi-platform-build#docker) can be used to build Linux targets on any platform.\n *\n * Please [do not put an AppImage into another archive](https://github.com/probonopd/AppImageKit/wiki/Creating-AppImages#common-mistake) like a .zip or .tar.gz.\n * @default AppImage\n */\n readonly target?: TargetConfigType\n\n /**\n * The maintainer. Defaults to [author](/configuration/configuration#Metadata-author).\n */\n readonly maintainer?: string | null\n\n /**\n * The vendor. Defaults to [author](/configuration/configuration#Metadata-author).\n */\n readonly vendor?: string | null\n\n /**\n * The path to icon set directory or one png file, relative to the [build resources](/configuration/configuration#MetadataDirectories-buildResources) or to the project directory. The icon filename must contain the size (e.g. 32x32.png) of the icon.\n * By default will be generated automatically based on the macOS icns file.\n */\n readonly icon?: string\n\n /**\n * backward compatibility + to allow specify fpm-only category for all possible fpm targets in one place\n * @private\n */\n readonly packageCategory?: string | null\n}\n\nexport interface CommonLinuxOptions {\n /**\n * The [short description](https://www.debian.org/doc/debian-policy/ch-controlfields.html#s-f-Description).\n */\n readonly synopsis?: string | null\n\n /**\n * As [description](/configuration/configuration#Metadata-description) from application package.json, but allows you to specify different for Linux.\n */\n readonly description?: string | null\n\n /**\n * The [application category](https://specifications.freedesktop.org/menu-spec/latest/apa.html#main-category-registry).\n */\n readonly category?: string | null\n\n /**\n * The mime types in addition to specified in the file associations. Use it if you don't want to register a new mime type, but reuse existing.\n */\n readonly mimeTypes?: Array<string> | null\n\n /**\n * The [Desktop file](https://developer.gnome.org/integration-guide/stable/desktop-files.html.en) entries (name to value).\n */\n readonly desktop?: any | null\n\n /**\n * The executable parameters. Pass to executableName\n */\n readonly executableArgs?: Array<string> | null\n}\n\n// fpm-only specific options\nexport interface LinuxTargetSpecificOptions extends CommonLinuxOptions, TargetSpecificOptions {\n /**\n * Package dependencies.\n */\n readonly depends?: Array<string> | null\n\n /**\n * The compression type.\n * @default xz\n */\n readonly compression?: \"gz\" | \"bzip2\" | \"xz\" | \"lzo\" | null\n\n readonly icon?: string\n\n /**\n * The package category.\n */\n readonly packageCategory?: string | null\n\n /**\n * The name of the package.\n */\n readonly packageName?: string | null\n\n readonly vendor?: string | null\n readonly maintainer?: string | null\n\n readonly afterInstall?: string | null\n readonly afterRemove?: string | null\n\n /**\n * *Advanced only* The [fpm](https://github.com/jordansissel/fpm/wiki#usage) options.\n *\n * Example: `[\"--before-install=build/deb-preinstall.sh\", \"--after-upgrade=build/deb-postinstall.sh\"]`\n */\n readonly fpm?: Array<string> | null\n}\nexport interface DebOptions extends LinuxTargetSpecificOptions {\n /**\n * Package dependencies. Defaults to `[\"gconf2\", \"gconf-service\", \"libnotify4\", \"libappindicator1\", \"libxtst6\", \"libnss3\"]`.\n * If need to support Debian, `libappindicator1` should be removed, it is [deprecated in Debian](https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=895037).\n * If need to support KDE, `gconf2` and `gconf-service` should be removed as it's no longer used by GNOME](https://packages.debian.org/bullseye/gconf2).\n */\n readonly depends?: Array<string> | null\n\n /**\n * The [package category](https://www.debian.org/doc/debian-policy/ch-controlfields.html#s-f-Section).\n */\n readonly packageCategory?: string | null\n\n /**\n * The [Priority](https://www.debian.org/doc/debian-policy/ch-controlfields.html#s-f-Priority) attribute.\n */\n readonly priority?: string | null\n}\n\nexport interface AppImageOptions extends CommonLinuxOptions, TargetSpecificOptions {\n /**\n * The path to EULA license file. Defaults to `license.txt` or `eula.txt` (or uppercase variants). Only plain text is supported.\n */\n readonly license?: string | null\n}\n\nexport interface FlatpakOptions extends CommonLinuxOptions, TargetSpecificOptions {\n /**\n * The path to EULA license file. Defaults to `license.txt` or `eula.txt` (or uppercase variants). Only plain text is supported.\n */\n readonly license?: string | null\n\n /**\n * The name of the runtime that the application uses. Defaults to `org.freedesktop.Platform`.\n *\n * See [flatpak manifest documentation](https://docs.flatpak.org/en/latest/flatpak-builder-command-reference.html#flatpak-manifest).\n */\n readonly runtime?: string\n\n /**\n * The version of the runtime that the application uses. Defaults to `20.08`.\n *\n * See [flatpak manifest documentation](https://docs.flatpak.org/en/latest/flatpak-builder-command-reference.html#flatpak-manifest).\n */\n readonly runtimeVersion?: string\n\n /**\n * The name of the development runtime that the application builds with. Defaults to `org.freedesktop.Sdk`.\n *\n * See [flatpak manifest documentation](https://docs.flatpak.org/en/latest/flatpak-builder-command-reference.html#flatpak-manifest).\n */\n readonly sdk?: string\n\n /**\n * Start with the files from the specified application. This can be used to create applications that extend another application.\n * Defaults to [org.electronjs.Electron2.BaseApp](https://github.com/flathub/org.electronjs.Electron2.BaseApp).\n *\n * See [flatpak manifest documentation](https://docs.flatpak.org/en/latest/flatpak-builder-command-reference.html#flatpak-manifest).\n */\n readonly base?: string\n\n /**\n * Use this specific version of the application specified in base. Defaults to `20.08`.\n *\n * See [flatpak manifest documentation](https://docs.flatpak.org/en/latest/flatpak-builder-command-reference.html#flatpak-manifest).\n */\n readonly baseVersion?: string\n\n /**\n * The branch to use when exporting the application. Defaults to `master`.\n *\n * See [flatpak manifest documentation](https://docs.flatpak.org/en/latest/flatpak-builder-command-reference.html#flatpak-manifest).\n */\n readonly branch?: string\n\n /**\n * An array of arguments passed to the flatpak build-finish command. Defaults to:\n * ```json\n * [\n * // Wayland/X11 Rendering\n * \"--socket=wayland\",\n * \"--socket=x11\",\n * \"--share=ipc\",\n * // Open GL\n * \"--device=dri\",\n * // Audio output\n * \"--socket=pulseaudio\",\n * // Read/write home directory access\n * \"--filesystem=home\",\n * // Allow communication with network\n * \"--share=network\",\n * // System notifications with libnotify\n * \"--talk-name=org.freedesktop.Notifications\",\n * ]\n * ```\n *\n * See [flatpak manifest documentation](https://docs.flatpak.org/en/latest/flatpak-builder-command-reference.html#flatpak-manifest).\n */\n readonly finishArgs?: string[]\n\n /**\n * An array of objects specifying the modules to be built in order.\n *\n * See [flatpak manifest documentation](https://docs.flatpak.org/en/latest/flatpak-builder-command-reference.html#flatpak-manifest).\n */\n readonly modules?: (string | any)[]\n\n /**\n * Files to copy directly into the app. Should be a list of [source, dest] tuples. Source should be a relative/absolute path to a file/directory to copy into the flatpak, and dest should be the path inside the app install prefix (e.g. /share/applications/).\n *\n * See [@malept/flatpak-bundler documentation](https://github.com/malept/flatpak-bundler#build-options).\n */\n readonly files?: [string, string][]\n\n /**\n * Symlinks to create in the app files. Should be a list of [target, location] symlink tuples. Target can be either a relative or absolute path inside the app install prefix, and location should be a absolute path inside the prefix to create the symlink at.\n *\n * See [@malept/flatpak-bundler documentation](https://github.com/malept/flatpak-bundler#build-options).\n */\n readonly symlinks?: [string, string][]\n\n /**\n * Whether to enable the Wayland specific flags (`--enable-features=UseOzonePlatform --ozone-platform=wayland`) in the wrapper script. These flags are only available starting with Electron version 12. Defaults to `false`.\n */\n readonly useWaylandFlags?: boolean\n}\n"]}
1
+ {"version":3,"file":"linuxOptions.js","sourceRoot":"","sources":["../../src/options/linuxOptions.ts"],"names":[],"mappings":"","sourcesContent":["import { PlatformSpecificBuildOptions, TargetConfigType, TargetSpecificOptions } from \"../index\"\n\nexport interface LinuxConfiguration extends CommonLinuxOptions, PlatformSpecificBuildOptions {\n /**\n * Target package type: list of `AppImage`, `flatpak`, `snap`, `deb`, `rpm`, `freebsd`, `pacman`, `p5p`, `apk`, `7z`, `zip`, `tar.xz`, `tar.lz`, `tar.gz`, `tar.bz2`, `dir`.\n *\n * electron-builder [docker image](/multi-platform-build#docker) can be used to build Linux targets on any platform.\n *\n * Please [do not put an AppImage into another archive](https://github.com/probonopd/AppImageKit/wiki/Creating-AppImages#common-mistake) like a .zip or .tar.gz.\n * @default AppImage\n */\n readonly target?: TargetConfigType\n\n /**\n * The maintainer. Defaults to [author](/configuration/configuration#Metadata-author).\n */\n readonly maintainer?: string | null\n\n /**\n * The vendor. Defaults to [author](/configuration/configuration#Metadata-author).\n */\n readonly vendor?: string | null\n\n /**\n * The path to icon set directory or one png file, relative to the [build resources](/configuration/configuration#MetadataDirectories-buildResources) or to the project directory. The icon filename must contain the size (e.g. 32x32.png) of the icon.\n * By default will be generated automatically based on the macOS icns file.\n */\n readonly icon?: string\n\n /**\n * backward compatibility + to allow specify fpm-only category for all possible fpm targets in one place\n * @private\n */\n readonly packageCategory?: string | null\n}\n\nexport interface CommonLinuxOptions {\n /**\n * The [short description](https://www.debian.org/doc/debian-policy/ch-controlfields.html#s-f-Description).\n */\n readonly synopsis?: string | null\n\n /**\n * As [description](/configuration/configuration#Metadata-description) from application package.json, but allows you to specify different for Linux.\n */\n readonly description?: string | null\n\n /**\n * The [application category](https://specifications.freedesktop.org/menu-spec/latest/apa.html#main-category-registry).\n */\n readonly category?: string | null\n\n /**\n * The mime types in addition to specified in the file associations. Use it if you don't want to register a new mime type, but reuse existing.\n */\n readonly mimeTypes?: Array<string> | null\n\n /**\n * The [Desktop file](https://developer.gnome.org/integration-guide/stable/desktop-files.html.en) entries (name to value).\n */\n readonly desktop?: any | null\n\n /**\n * The executable parameters. Pass to executableName\n */\n readonly executableArgs?: Array<string> | null\n}\n\n// fpm-only specific options\nexport interface LinuxTargetSpecificOptions extends CommonLinuxOptions, TargetSpecificOptions {\n /**\n * Package dependencies.\n */\n readonly depends?: Array<string> | null\n\n /**\n * The compression type.\n * @default xz\n */\n readonly compression?: \"gz\" | \"bzip2\" | \"xz\" | \"lzo\" | null\n\n readonly icon?: string\n\n /**\n * The package category.\n */\n readonly packageCategory?: string | null\n\n /**\n * The name of the package.\n */\n readonly packageName?: string | null\n\n readonly vendor?: string | null\n readonly maintainer?: string | null\n\n readonly afterInstall?: string | null\n readonly afterRemove?: string | null\n\n /**\n * *Advanced only* The [fpm](https://github.com/jordansissel/fpm/wiki#usage) options.\n *\n * Example: `[\"--before-install=build/deb-preinstall.sh\", \"--after-upgrade=build/deb-postinstall.sh\"]`\n */\n readonly fpm?: Array<string> | null\n}\nexport interface DebOptions extends LinuxTargetSpecificOptions {\n /**\n * Package dependencies. Defaults to `[\"gconf2\", \"gconf-service\", \"libnotify4\", \"libappindicator1\", \"libxtst6\", \"libnss3\"]`.\n * If need to support Debian, `libappindicator1` should be removed, it is [deprecated in Debian](https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=895037).\n * If need to support KDE, `gconf2` and `gconf-service` should be removed as it's no longer used by GNOME](https://packages.debian.org/bullseye/gconf2).\n */\n readonly depends?: Array<string> | null\n\n /**\n * The [package category](https://www.debian.org/doc/debian-policy/ch-controlfields.html#s-f-Section).\n */\n readonly packageCategory?: string | null\n\n /**\n * The [Priority](https://www.debian.org/doc/debian-policy/ch-controlfields.html#s-f-Priority) attribute.\n */\n readonly priority?: string | null\n}\n\nexport interface AppImageOptions extends CommonLinuxOptions, TargetSpecificOptions {\n /**\n * The path to EULA license file. Defaults to `license.txt` or `eula.txt` (or uppercase variants). Only plain text is supported.\n */\n readonly license?: string | null\n}\n\nexport interface FlatpakOptions extends CommonLinuxOptions, TargetSpecificOptions {\n /**\n * The path to EULA license file. Defaults to `license.txt` or `eula.txt` (or uppercase variants). Only plain text is supported.\n */\n readonly license?: string | null\n\n /**\n * The name of the runtime that the application uses. Defaults to `org.freedesktop.Platform`.\n *\n * See [flatpak manifest documentation](https://docs.flatpak.org/en/latest/flatpak-builder-command-reference.html#flatpak-manifest).\n */\n readonly runtime?: string\n\n /**\n * The version of the runtime that the application uses. Defaults to `20.08`.\n *\n * See [flatpak manifest documentation](https://docs.flatpak.org/en/latest/flatpak-builder-command-reference.html#flatpak-manifest).\n */\n readonly runtimeVersion?: string\n\n /**\n * The name of the development runtime that the application builds with. Defaults to `org.freedesktop.Sdk`.\n *\n * See [flatpak manifest documentation](https://docs.flatpak.org/en/latest/flatpak-builder-command-reference.html#flatpak-manifest).\n */\n readonly sdk?: string\n\n /**\n * Start with the files from the specified application. This can be used to create applications that extend another application.\n * Defaults to [org.electronjs.Electron2.BaseApp](https://github.com/flathub/org.electronjs.Electron2.BaseApp).\n *\n * See [flatpak manifest documentation](https://docs.flatpak.org/en/latest/flatpak-builder-command-reference.html#flatpak-manifest).\n */\n readonly base?: string\n\n /**\n * Use this specific version of the application specified in base. Defaults to `20.08`.\n *\n * See [flatpak manifest documentation](https://docs.flatpak.org/en/latest/flatpak-builder-command-reference.html#flatpak-manifest).\n */\n readonly baseVersion?: string\n\n /**\n * The branch to use when exporting the application. Defaults to `master`.\n *\n * See [flatpak manifest documentation](https://docs.flatpak.org/en/latest/flatpak-builder-command-reference.html#flatpak-manifest).\n */\n readonly branch?: string\n\n /**\n * An array of arguments passed to the flatpak build-finish command. Defaults to:\n * ```json\n * [\n * // Wayland/X11 Rendering\n * \"--socket=wayland\",\n * \"--socket=x11\",\n * \"--share=ipc\",\n * // Open GL\n * \"--device=dri\",\n * // Audio output\n * \"--socket=pulseaudio\",\n * // Read/write home directory access\n * \"--filesystem=home\",\n * // Allow communication with network\n * \"--share=network\",\n * // System notifications with libnotify\n * \"--talk-name=org.freedesktop.Notifications\",\n * ]\n * ```\n *\n * See [flatpak manifest documentation](https://docs.flatpak.org/en/latest/flatpak-builder-command-reference.html#flatpak-manifest).\n */\n readonly finishArgs?: string[]\n\n /**\n * An array of objects specifying the modules to be built in order.\n *\n * See [flatpak manifest documentation](https://docs.flatpak.org/en/latest/flatpak-builder-command-reference.html#flatpak-manifest).\n */\n readonly modules?: (string | any)[]\n\n /**\n * Files to copy directly into the app. Should be a list of [source, dest] tuples. Source should be a relative/absolute path to a file/directory to copy into the flatpak, and dest should be the path inside the app install prefix (e.g. /share/applications/).\n *\n * See [@malept/flatpak-bundler documentation](https://github.com/malept/flatpak-bundler#build-options).\n */\n readonly files?: [string, string][]\n\n /**\n * Symlinks to create in the app files. Should be a list of [target, location] symlink tuples. Target can be either a relative or absolute path inside the app install prefix, and location should be a absolute path inside the prefix to create the symlink at.\n *\n * See [@malept/flatpak-bundler documentation](https://github.com/malept/flatpak-bundler#build-options).\n */\n readonly symlinks?: [string, string][]\n\n /**\n * Whether to enable the Wayland specific flags (`--enable-features=UseOzonePlatform --ozone-platform=wayland`) in the wrapper script. These flags are only available starting with Electron version 12. Defaults to `false`.\n */\n readonly useWaylandFlags?: boolean\n}\n"]}
@@ -184,7 +184,7 @@ class MsiTarget extends core_1.Target {
184
184
  // since RegistryValue can be part of Component, *** *** *** *** *** *** *** *** *** wix cannot auto generate guid
185
185
  // https://stackoverflow.com/questions/1405100/change-my-component-guid-in-wix
186
186
  let result = `<Component${directoryId === null ? "" : ` Directory="${directoryId}"`}>`;
187
- result += `\n${fileSpace} <File Name="${fileName}" Source="$(var.appDir)${path.sep}${packagePath}" ReadOnly="yes" KeyPath="yes"`;
187
+ result += `\n${fileSpace} <File Name="${xmlAttr(fileName)}" Source="$(var.appDir)${path.sep}${xmlAttr(packagePath)}" ReadOnly="yes" KeyPath="yes"`;
188
188
  const isMainExecutable = packagePath === `${appInfo.productFilename}.exe`;
189
189
  if (isMainExecutable) {
190
190
  result += ' Id="mainExecutable"';
@@ -197,7 +197,7 @@ class MsiTarget extends core_1.Target {
197
197
  result += `>\n`;
198
198
  const shortcutName = commonOptions.shortcutName;
199
199
  if (isCreateDesktopShortcut) {
200
- result += `${fileSpace} <Shortcut Id="desktopShortcut" Directory="DesktopFolder" Name="${shortcutName}" WorkingDirectory="APPLICATIONFOLDER" Advertise="yes" Icon="${this.iconId}"/>\n`;
200
+ result += `${fileSpace} <Shortcut Id="desktopShortcut" Directory="DesktopFolder" Name="${xmlAttr(shortcutName)}" WorkingDirectory="APPLICATIONFOLDER" Advertise="yes" Icon="${this.iconId}"/>\n`;
201
201
  }
202
202
  const hasMenuCategory = commonOptions.menuCategory != null;
203
203
  const startMenuShortcutDirectoryId = hasMenuCategory ? "AppProgramMenuDir" : "ProgramMenuFolder";
@@ -205,8 +205,8 @@ class MsiTarget extends core_1.Target {
205
205
  if (hasMenuCategory) {
206
206
  dirs.push(`<Directory Id="${startMenuShortcutDirectoryId}" Name="ProgramMenuFolder:\\${commonOptions.menuCategory}\\"/>`);
207
207
  }
208
- result += `${fileSpace} <Shortcut Id="startMenuShortcut" Directory="${startMenuShortcutDirectoryId}" Name="${shortcutName}" WorkingDirectory="APPLICATIONFOLDER" Advertise="yes" Icon="${this.iconId}">\n`;
209
- result += `${fileSpace} <ShortcutProperty Key="System.AppUserModel.ID" Value="${this.packager.appInfo.id}"/>\n`;
208
+ result += `${fileSpace} <Shortcut Id="startMenuShortcut" Directory="${startMenuShortcutDirectoryId}" Name="${xmlAttr(shortcutName)}" WorkingDirectory="APPLICATIONFOLDER" Advertise="yes" Icon="${this.iconId}">\n`;
209
+ result += `${fileSpace} <ShortcutProperty Key="System.AppUserModel.ID" Value="${xmlAttr(this.packager.appInfo.id)}"/>\n`;
210
210
  result += `${fileSpace} </Shortcut>\n`;
211
211
  }
212
212
  result += `${fileSpace}</File>`;
@@ -224,7 +224,7 @@ class MsiTarget extends core_1.Target {
224
224
  for (const ext of extensions) {
225
225
  result += `${fileSpace} <ProgId Id="${this.productMsiIdPrefix}.${ext}" Advertise="yes" Icon="${this.iconId}" ${item.description ? `Description="${item.description}"` : ""}>\n`;
226
226
  result += `${fileSpace} <Extension Id="${ext}" Advertise="yes">\n`;
227
- result += `${fileSpace} <Verb Id="open" Command="Open with ${this.packager.appInfo.productName}" Argument="&quot;%1&quot;"/>\n`;
227
+ result += `${fileSpace} <Verb Id="open" Command="Open with ${xmlAttr(this.packager.appInfo.productName)}" Argument="&quot;%1&quot;"/>\n`;
228
228
  result += `${fileSpace} </Extension>\n`;
229
229
  result += `${fileSpace} </ProgId>\n`;
230
230
  }
@@ -240,4 +240,7 @@ function listToString(list, indentLevel) {
240
240
  const space = " ".repeat(indentLevel * 2);
241
241
  return list.join(`\n${space}`);
242
242
  }
243
+ function xmlAttr(str) {
244
+ return str.replace(/&/g, "&amp;").replace(/</g, "&lt;").replace(/>/g, "&gt;").replace(/"/g, "&quot;").replace(/'/g, "&apos;");
245
+ }
243
246
  //# sourceMappingURL=MsiTarget.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"MsiTarget.js","sourceRoot":"","sources":["../../src/targets/MsiTarget.ts"],"names":[],"mappings":"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","sourcesContent":["import BluebirdPromise from \"bluebird-lst\"\nimport { Arch, asArray, log, deepAssign } from \"builder-util\"\nimport { UUID } from \"builder-util-runtime\"\nimport { getBinFromUrl } from \"../binDownload\"\nimport { walk } from \"builder-util/out/fs\"\nimport { createHash } from \"crypto\"\nimport * as ejs from \"ejs\"\nimport { readFile, writeFile } from \"fs/promises\"\nimport { Lazy } from \"lazy-val\"\nimport * as path from \"path\"\nimport { MsiOptions } from \"../\"\nimport { Target } from \"../core\"\nimport { DesktopShortcutCreationPolicy, FinalCommonWindowsInstallerOptions, getEffectiveOptions } from \"../options/CommonWindowsInstallerConfiguration\"\nimport { normalizeExt } from \"../platformPackager\"\nimport { getTemplatePath } from \"../util/pathManager\"\nimport { VmManager } from \"../vm/vm\"\nimport { WineVmManager } from \"../vm/WineVm\"\nimport { WinPackager } from \"../winPackager\"\nimport { createStageDir, getWindowsInstallationDirName } from \"./targetUtil\"\n\nconst ELECTRON_BUILDER_UPGRADE_CODE_NS_UUID = UUID.parse(\"d752fe43-5d44-44d5-9fc9-6dd1bf19d5cc\")\nconst ROOT_DIR_ID = \"APPLICATIONFOLDER\"\n\nconst projectTemplate = new Lazy<(data: any) => string>(async () => {\n const template = (await readFile(path.join(getTemplatePath(\"msi\"), \"template.xml\"), \"utf8\"))\n .replace(/{{/g, \"<%\")\n .replace(/}}/g, \"%>\")\n .replace(/\\${([^}]+)}/g, \"<%=$1%>\")\n return ejs.compile(template)\n})\n\n// WiX doesn't support Mono, so, dontnet462 is required to be installed for wine (preinstalled in our bundled wine)\nexport default class MsiTarget extends Target {\n private readonly vm = process.platform === \"win32\" ? new VmManager() : new WineVmManager()\n\n readonly options: MsiOptions = deepAssign(this.packager.platformSpecificBuildOptions, this.packager.config.msi)\n\n constructor(private readonly packager: WinPackager, readonly outDir: string) {\n super(\"msi\")\n }\n\n /**\n * A product-specific string that can be used in an [MSI Identifier](https://docs.microsoft.com/en-us/windows/win32/msi/identifier).\n */\n private get productMsiIdPrefix() {\n const sanitizedId = this.packager.appInfo.productFilename.replace(/[^\\w.]/g, \"\").replace(/^[^A-Za-z_]+/, \"\")\n return sanitizedId.length > 0 ? sanitizedId : \"App\" + this.upgradeCode.replace(/-/g, \"\")\n }\n\n private get iconId() {\n return `${this.productMsiIdPrefix}Icon.exe`\n }\n\n private get upgradeCode(): string {\n return (this.options.upgradeCode || UUID.v5(this.packager.appInfo.id, ELECTRON_BUILDER_UPGRADE_CODE_NS_UUID)).toUpperCase()\n }\n\n async build(appOutDir: string, arch: Arch) {\n const packager = this.packager\n const artifactName = packager.expandArtifactBeautyNamePattern(this.options, \"msi\", arch)\n const artifactPath = path.join(this.outDir, artifactName)\n await packager.info.callArtifactBuildStarted({\n targetPresentableName: \"MSI\",\n file: artifactPath,\n arch,\n })\n\n const stageDir = await createStageDir(this, packager, arch)\n const vm = this.vm\n\n const commonOptions = getEffectiveOptions(this.options, this.packager)\n\n const projectFile = stageDir.getTempFile(\"project.wxs\")\n const objectFiles = [\"project.wixobj\"]\n await writeFile(projectFile, await this.writeManifest(appOutDir, arch, commonOptions))\n\n await packager.info.callMsiProjectCreated(projectFile)\n\n // noinspection SpellCheckingInspection\n const vendorPath = await getBinFromUrl(\"wix\", \"4.0.0.5512.2\", \"/X5poahdCc3199Vt6AP7gluTlT1nxi9cbbHhZhCMEu+ngyP1LiBMn+oZX7QAZVaKeBMc2SjVp7fJqNLqsUnPNQ==\")\n\n // noinspection SpellCheckingInspection\n const candleArgs = [\"-arch\", arch === Arch.ia32 ? \"x86\" : arch === Arch.arm64 ? \"arm64\" : \"x64\", `-dappDir=${vm.toVmFile(appOutDir)}`].concat(this.getCommonWixArgs())\n candleArgs.push(\"project.wxs\")\n await vm.exec(vm.toVmFile(path.join(vendorPath, \"candle.exe\")), candleArgs, {\n cwd: stageDir.dir,\n })\n\n await this.light(objectFiles, vm, artifactPath, appOutDir, vendorPath, stageDir.dir)\n\n await stageDir.cleanup()\n\n await packager.sign(artifactPath)\n\n await packager.info.callArtifactBuildCompleted({\n file: artifactPath,\n packager,\n arch,\n safeArtifactName: packager.computeSafeArtifactName(artifactName, \"msi\"),\n target: this,\n isWriteUpdateInfo: false,\n })\n }\n\n private async light(objectFiles: Array<string>, vm: VmManager, artifactPath: string, appOutDir: string, vendorPath: string, tempDir: string) {\n // noinspection SpellCheckingInspection\n const lightArgs = [\n \"-out\",\n vm.toVmFile(artifactPath),\n \"-v\",\n // https://github.com/wixtoolset/issues/issues/5169\n \"-spdb\",\n // https://sourceforge.net/p/wix/bugs/2405/\n // error LGHT1076 : ICE61: This product should remove only older versions of itself. The Maximum version is not less than the current product. (1.1.0.42 1.1.0.42)\n \"-sw1076\",\n `-dappDir=${vm.toVmFile(appOutDir)}`,\n // \"-dcl:high\",\n ].concat(this.getCommonWixArgs())\n\n // http://windows-installer-xml-wix-toolset.687559.n2.nabble.com/Build-3-5-2229-0-give-me-the-following-error-error-LGHT0216-An-unexpected-Win32-exception-with-errorn-td5707443.html\n if (process.platform !== \"win32\") {\n // noinspection SpellCheckingInspection\n lightArgs.push(\"-sval\")\n }\n\n if (this.options.oneClick === false) {\n lightArgs.push(\"-ext\", \"WixUIExtension\")\n }\n\n // objectFiles - only filenames, we set current directory to our temp stage dir\n lightArgs.push(...objectFiles)\n await vm.exec(vm.toVmFile(path.join(vendorPath, \"light.exe\")), lightArgs, {\n cwd: tempDir,\n })\n }\n\n private getCommonWixArgs() {\n const args: Array<string> = [\"-pedantic\"]\n if (this.options.warningsAsErrors !== false) {\n args.push(\"-wx\")\n }\n if (this.options.additionalWixArgs != null) {\n args.push(...this.options.additionalWixArgs)\n }\n return args\n }\n\n private async writeManifest(appOutDir: string, arch: Arch, commonOptions: FinalCommonWindowsInstallerOptions) {\n const appInfo = this.packager.appInfo\n const { files, dirs } = await this.computeFileDeclaration(appOutDir)\n\n const companyName = appInfo.companyName\n if (!companyName) {\n log.warn(`Manufacturer is not set for MSI — please set \"author\" in the package.json`)\n }\n\n const compression = this.packager.compression\n const options = this.options\n const iconPath = await this.packager.getIconPath()\n return (await projectTemplate.value)({\n ...commonOptions,\n isCreateDesktopShortcut: commonOptions.isCreateDesktopShortcut !== DesktopShortcutCreationPolicy.NEVER,\n isRunAfterFinish: options.runAfterFinish !== false,\n iconPath: iconPath == null ? null : this.vm.toVmFile(iconPath),\n iconId: this.iconId,\n compressionLevel: compression === \"store\" ? \"none\" : \"high\",\n version: appInfo.getVersionInWeirdWindowsForm(),\n productName: appInfo.productName,\n upgradeCode: this.upgradeCode,\n manufacturer: companyName || appInfo.productName,\n appDescription: appInfo.description,\n // https://stackoverflow.com/questions/1929038/compilation-error-ice80-the-64bitcomponent-uses-32bitdirectory\n programFilesId: arch === Arch.x64 ? \"ProgramFiles64Folder\" : \"ProgramFilesFolder\",\n // wix in the name because special wix format can be used in the name\n installationDirectoryWixName: getWindowsInstallationDirName(appInfo, commonOptions.isAssisted || commonOptions.isPerMachine === true),\n dirs,\n files,\n })\n }\n\n private async computeFileDeclaration(appOutDir: string) {\n const appInfo = this.packager.appInfo\n let isRootDirAddedToRemoveTable = false\n const dirNames = new Set<string>()\n const dirs: Array<string> = []\n const fileSpace = \" \".repeat(6)\n const commonOptions = getEffectiveOptions(this.options, this.packager)\n const files = await BluebirdPromise.map(walk(appOutDir), file => {\n const packagePath = file.substring(appOutDir.length + 1)\n\n const lastSlash = packagePath.lastIndexOf(path.sep)\n const fileName = lastSlash > 0 ? packagePath.substring(lastSlash + 1) : packagePath\n let directoryId: string | null = null\n let dirName = \"\"\n // Wix Directory.FileSource doesn't work - https://stackoverflow.com/questions/21519388/wix-filesource-confusion\n if (lastSlash > 0) {\n // This Name attribute may also define multiple directories using the inline directory syntax.\n // For example, \"ProgramFilesFolder:\\My Company\\My Product\\bin\" would create a reference to a Directory element with Id=\"ProgramFilesFolder\" then create directories named \"My Company\" then \"My Product\" then \"bin\" nested beneath each other.\n // This syntax is a shortcut to defining each directory in an individual Directory element.\n dirName = packagePath.substring(0, lastSlash)\n // https://github.com/electron-userland/electron-builder/issues/3027\n directoryId = \"d\" + createHash(\"md5\").update(dirName).digest(\"base64\").replace(/\\//g, \"_\").replace(/\\+/g, \".\").replace(/=+$/, \"\")\n if (!dirNames.has(dirName)) {\n dirNames.add(dirName)\n dirs.push(`<Directory Id=\"${directoryId}\" Name=\"${ROOT_DIR_ID}:\\\\${dirName.replace(/\\//g, \"\\\\\")}\\\\\"/>`)\n }\n } else if (!isRootDirAddedToRemoveTable) {\n isRootDirAddedToRemoveTable = true\n }\n\n // since RegistryValue can be part of Component, *** *** *** *** *** *** *** *** *** wix cannot auto generate guid\n // https://stackoverflow.com/questions/1405100/change-my-component-guid-in-wix\n let result = `<Component${directoryId === null ? \"\" : ` Directory=\"${directoryId}\"`}>`\n result += `\\n${fileSpace} <File Name=\"${fileName}\" Source=\"$(var.appDir)${path.sep}${packagePath}\" ReadOnly=\"yes\" KeyPath=\"yes\"`\n const isMainExecutable = packagePath === `${appInfo.productFilename}.exe`\n if (isMainExecutable) {\n result += ' Id=\"mainExecutable\"'\n } else if (directoryId === null) {\n result += ` Id=\"${path.basename(packagePath)}_f\"`\n }\n\n const isCreateDesktopShortcut = commonOptions.isCreateDesktopShortcut !== DesktopShortcutCreationPolicy.NEVER\n if (isMainExecutable && (isCreateDesktopShortcut || commonOptions.isCreateStartMenuShortcut)) {\n result += `>\\n`\n const shortcutName = commonOptions.shortcutName\n if (isCreateDesktopShortcut) {\n result += `${fileSpace} <Shortcut Id=\"desktopShortcut\" Directory=\"DesktopFolder\" Name=\"${shortcutName}\" WorkingDirectory=\"APPLICATIONFOLDER\" Advertise=\"yes\" Icon=\"${this.iconId}\"/>\\n`\n }\n\n const hasMenuCategory = commonOptions.menuCategory != null\n const startMenuShortcutDirectoryId = hasMenuCategory ? \"AppProgramMenuDir\" : \"ProgramMenuFolder\"\n if (commonOptions.isCreateStartMenuShortcut) {\n if (hasMenuCategory) {\n dirs.push(`<Directory Id=\"${startMenuShortcutDirectoryId}\" Name=\"ProgramMenuFolder:\\\\${commonOptions.menuCategory}\\\\\"/>`)\n }\n result += `${fileSpace} <Shortcut Id=\"startMenuShortcut\" Directory=\"${startMenuShortcutDirectoryId}\" Name=\"${shortcutName}\" WorkingDirectory=\"APPLICATIONFOLDER\" Advertise=\"yes\" Icon=\"${this.iconId}\">\\n`\n result += `${fileSpace} <ShortcutProperty Key=\"System.AppUserModel.ID\" Value=\"${this.packager.appInfo.id}\"/>\\n`\n result += `${fileSpace} </Shortcut>\\n`\n }\n result += `${fileSpace}</File>`\n\n if (hasMenuCategory) {\n result += `<RemoveFolder Id=\"${startMenuShortcutDirectoryId}\" Directory=\"${startMenuShortcutDirectoryId}\" On=\"uninstall\"/>\\n`\n }\n } else {\n result += `/>`\n }\n\n const fileAssociations = this.packager.fileAssociations\n if (isMainExecutable && fileAssociations.length !== 0) {\n for (const item of fileAssociations) {\n const extensions = asArray(item.ext).map(normalizeExt)\n for (const ext of extensions) {\n result += `${fileSpace} <ProgId Id=\"${this.productMsiIdPrefix}.${ext}\" Advertise=\"yes\" Icon=\"${this.iconId}\" ${\n item.description ? `Description=\"${item.description}\"` : \"\"\n }>\\n`\n result += `${fileSpace} <Extension Id=\"${ext}\" Advertise=\"yes\">\\n`\n result += `${fileSpace} <Verb Id=\"open\" Command=\"Open with ${this.packager.appInfo.productName}\" Argument=\"&quot;%1&quot;\"/>\\n`\n result += `${fileSpace} </Extension>\\n`\n result += `${fileSpace} </ProgId>\\n`\n }\n }\n }\n\n return `${result}\\n${fileSpace}</Component>`\n })\n\n return { dirs: listToString(dirs, 2), files: listToString(files, 3) }\n }\n}\n\nfunction listToString(list: Array<string>, indentLevel: number) {\n const space = \" \".repeat(indentLevel * 2)\n return list.join(`\\n${space}`)\n}\n"]}
1
+ {"version":3,"file":"MsiTarget.js","sourceRoot":"","sources":["../../src/targets/MsiTarget.ts"],"names":[],"mappings":"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","sourcesContent":["import BluebirdPromise from \"bluebird-lst\"\nimport { Arch, asArray, log, deepAssign } from \"builder-util\"\nimport { UUID } from \"builder-util-runtime\"\nimport { getBinFromUrl } from \"../binDownload\"\nimport { walk } from \"builder-util/out/fs\"\nimport { createHash } from \"crypto\"\nimport * as ejs from \"ejs\"\nimport { readFile, writeFile } from \"fs/promises\"\nimport { Lazy } from \"lazy-val\"\nimport * as path from \"path\"\nimport { MsiOptions } from \"../\"\nimport { Target } from \"../core\"\nimport { DesktopShortcutCreationPolicy, FinalCommonWindowsInstallerOptions, getEffectiveOptions } from \"../options/CommonWindowsInstallerConfiguration\"\nimport { normalizeExt } from \"../platformPackager\"\nimport { getTemplatePath } from \"../util/pathManager\"\nimport { VmManager } from \"../vm/vm\"\nimport { WineVmManager } from \"../vm/WineVm\"\nimport { WinPackager } from \"../winPackager\"\nimport { createStageDir, getWindowsInstallationDirName } from \"./targetUtil\"\n\nconst ELECTRON_BUILDER_UPGRADE_CODE_NS_UUID = UUID.parse(\"d752fe43-5d44-44d5-9fc9-6dd1bf19d5cc\")\nconst ROOT_DIR_ID = \"APPLICATIONFOLDER\"\n\nconst projectTemplate = new Lazy<(data: any) => string>(async () => {\n const template = (await readFile(path.join(getTemplatePath(\"msi\"), \"template.xml\"), \"utf8\"))\n .replace(/{{/g, \"<%\")\n .replace(/}}/g, \"%>\")\n .replace(/\\${([^}]+)}/g, \"<%=$1%>\")\n return ejs.compile(template)\n})\n\n// WiX doesn't support Mono, so, dontnet462 is required to be installed for wine (preinstalled in our bundled wine)\nexport default class MsiTarget extends Target {\n private readonly vm = process.platform === \"win32\" ? new VmManager() : new WineVmManager()\n\n readonly options: MsiOptions = deepAssign(this.packager.platformSpecificBuildOptions, this.packager.config.msi)\n\n constructor(private readonly packager: WinPackager, readonly outDir: string) {\n super(\"msi\")\n }\n\n /**\n * A product-specific string that can be used in an [MSI Identifier](https://docs.microsoft.com/en-us/windows/win32/msi/identifier).\n */\n private get productMsiIdPrefix() {\n const sanitizedId = this.packager.appInfo.productFilename.replace(/[^\\w.]/g, \"\").replace(/^[^A-Za-z_]+/, \"\")\n return sanitizedId.length > 0 ? sanitizedId : \"App\" + this.upgradeCode.replace(/-/g, \"\")\n }\n\n private get iconId() {\n return `${this.productMsiIdPrefix}Icon.exe`\n }\n\n private get upgradeCode(): string {\n return (this.options.upgradeCode || UUID.v5(this.packager.appInfo.id, ELECTRON_BUILDER_UPGRADE_CODE_NS_UUID)).toUpperCase()\n }\n\n async build(appOutDir: string, arch: Arch) {\n const packager = this.packager\n const artifactName = packager.expandArtifactBeautyNamePattern(this.options, \"msi\", arch)\n const artifactPath = path.join(this.outDir, artifactName)\n await packager.info.callArtifactBuildStarted({\n targetPresentableName: \"MSI\",\n file: artifactPath,\n arch,\n })\n\n const stageDir = await createStageDir(this, packager, arch)\n const vm = this.vm\n\n const commonOptions = getEffectiveOptions(this.options, this.packager)\n\n const projectFile = stageDir.getTempFile(\"project.wxs\")\n const objectFiles = [\"project.wixobj\"]\n await writeFile(projectFile, await this.writeManifest(appOutDir, arch, commonOptions))\n\n await packager.info.callMsiProjectCreated(projectFile)\n\n // noinspection SpellCheckingInspection\n const vendorPath = await getBinFromUrl(\"wix\", \"4.0.0.5512.2\", \"/X5poahdCc3199Vt6AP7gluTlT1nxi9cbbHhZhCMEu+ngyP1LiBMn+oZX7QAZVaKeBMc2SjVp7fJqNLqsUnPNQ==\")\n\n // noinspection SpellCheckingInspection\n const candleArgs = [\"-arch\", arch === Arch.ia32 ? \"x86\" : arch === Arch.arm64 ? \"arm64\" : \"x64\", `-dappDir=${vm.toVmFile(appOutDir)}`].concat(this.getCommonWixArgs())\n candleArgs.push(\"project.wxs\")\n await vm.exec(vm.toVmFile(path.join(vendorPath, \"candle.exe\")), candleArgs, {\n cwd: stageDir.dir,\n })\n\n await this.light(objectFiles, vm, artifactPath, appOutDir, vendorPath, stageDir.dir)\n\n await stageDir.cleanup()\n\n await packager.sign(artifactPath)\n\n await packager.info.callArtifactBuildCompleted({\n file: artifactPath,\n packager,\n arch,\n safeArtifactName: packager.computeSafeArtifactName(artifactName, \"msi\"),\n target: this,\n isWriteUpdateInfo: false,\n })\n }\n\n private async light(objectFiles: Array<string>, vm: VmManager, artifactPath: string, appOutDir: string, vendorPath: string, tempDir: string) {\n // noinspection SpellCheckingInspection\n const lightArgs = [\n \"-out\",\n vm.toVmFile(artifactPath),\n \"-v\",\n // https://github.com/wixtoolset/issues/issues/5169\n \"-spdb\",\n // https://sourceforge.net/p/wix/bugs/2405/\n // error LGHT1076 : ICE61: This product should remove only older versions of itself. The Maximum version is not less than the current product. (1.1.0.42 1.1.0.42)\n \"-sw1076\",\n `-dappDir=${vm.toVmFile(appOutDir)}`,\n // \"-dcl:high\",\n ].concat(this.getCommonWixArgs())\n\n // http://windows-installer-xml-wix-toolset.687559.n2.nabble.com/Build-3-5-2229-0-give-me-the-following-error-error-LGHT0216-An-unexpected-Win32-exception-with-errorn-td5707443.html\n if (process.platform !== \"win32\") {\n // noinspection SpellCheckingInspection\n lightArgs.push(\"-sval\")\n }\n\n if (this.options.oneClick === false) {\n lightArgs.push(\"-ext\", \"WixUIExtension\")\n }\n\n // objectFiles - only filenames, we set current directory to our temp stage dir\n lightArgs.push(...objectFiles)\n await vm.exec(vm.toVmFile(path.join(vendorPath, \"light.exe\")), lightArgs, {\n cwd: tempDir,\n })\n }\n\n private getCommonWixArgs() {\n const args: Array<string> = [\"-pedantic\"]\n if (this.options.warningsAsErrors !== false) {\n args.push(\"-wx\")\n }\n if (this.options.additionalWixArgs != null) {\n args.push(...this.options.additionalWixArgs)\n }\n return args\n }\n\n private async writeManifest(appOutDir: string, arch: Arch, commonOptions: FinalCommonWindowsInstallerOptions) {\n const appInfo = this.packager.appInfo\n const { files, dirs } = await this.computeFileDeclaration(appOutDir)\n\n const companyName = appInfo.companyName\n if (!companyName) {\n log.warn(`Manufacturer is not set for MSI — please set \"author\" in the package.json`)\n }\n\n const compression = this.packager.compression\n const options = this.options\n const iconPath = await this.packager.getIconPath()\n return (await projectTemplate.value)({\n ...commonOptions,\n isCreateDesktopShortcut: commonOptions.isCreateDesktopShortcut !== DesktopShortcutCreationPolicy.NEVER,\n isRunAfterFinish: options.runAfterFinish !== false,\n iconPath: iconPath == null ? null : this.vm.toVmFile(iconPath),\n iconId: this.iconId,\n compressionLevel: compression === \"store\" ? \"none\" : \"high\",\n version: appInfo.getVersionInWeirdWindowsForm(),\n productName: appInfo.productName,\n upgradeCode: this.upgradeCode,\n manufacturer: companyName || appInfo.productName,\n appDescription: appInfo.description,\n // https://stackoverflow.com/questions/1929038/compilation-error-ice80-the-64bitcomponent-uses-32bitdirectory\n programFilesId: arch === Arch.x64 ? \"ProgramFiles64Folder\" : \"ProgramFilesFolder\",\n // wix in the name because special wix format can be used in the name\n installationDirectoryWixName: getWindowsInstallationDirName(appInfo, commonOptions.isAssisted || commonOptions.isPerMachine === true),\n dirs,\n files,\n })\n }\n\n private async computeFileDeclaration(appOutDir: string) {\n const appInfo = this.packager.appInfo\n let isRootDirAddedToRemoveTable = false\n const dirNames = new Set<string>()\n const dirs: Array<string> = []\n const fileSpace = \" \".repeat(6)\n const commonOptions = getEffectiveOptions(this.options, this.packager)\n const files = await BluebirdPromise.map(walk(appOutDir), file => {\n const packagePath = file.substring(appOutDir.length + 1)\n\n const lastSlash = packagePath.lastIndexOf(path.sep)\n const fileName = lastSlash > 0 ? packagePath.substring(lastSlash + 1) : packagePath\n let directoryId: string | null = null\n let dirName = \"\"\n // Wix Directory.FileSource doesn't work - https://stackoverflow.com/questions/21519388/wix-filesource-confusion\n if (lastSlash > 0) {\n // This Name attribute may also define multiple directories using the inline directory syntax.\n // For example, \"ProgramFilesFolder:\\My Company\\My Product\\bin\" would create a reference to a Directory element with Id=\"ProgramFilesFolder\" then create directories named \"My Company\" then \"My Product\" then \"bin\" nested beneath each other.\n // This syntax is a shortcut to defining each directory in an individual Directory element.\n dirName = packagePath.substring(0, lastSlash)\n // https://github.com/electron-userland/electron-builder/issues/3027\n directoryId = \"d\" + createHash(\"md5\").update(dirName).digest(\"base64\").replace(/\\//g, \"_\").replace(/\\+/g, \".\").replace(/=+$/, \"\")\n if (!dirNames.has(dirName)) {\n dirNames.add(dirName)\n dirs.push(`<Directory Id=\"${directoryId}\" Name=\"${ROOT_DIR_ID}:\\\\${dirName.replace(/\\//g, \"\\\\\")}\\\\\"/>`)\n }\n } else if (!isRootDirAddedToRemoveTable) {\n isRootDirAddedToRemoveTable = true\n }\n\n // since RegistryValue can be part of Component, *** *** *** *** *** *** *** *** *** wix cannot auto generate guid\n // https://stackoverflow.com/questions/1405100/change-my-component-guid-in-wix\n let result = `<Component${directoryId === null ? \"\" : ` Directory=\"${directoryId}\"`}>`\n result += `\\n${fileSpace} <File Name=\"${xmlAttr(fileName)}\" Source=\"$(var.appDir)${path.sep}${xmlAttr(packagePath)}\" ReadOnly=\"yes\" KeyPath=\"yes\"`\n const isMainExecutable = packagePath === `${appInfo.productFilename}.exe`\n if (isMainExecutable) {\n result += ' Id=\"mainExecutable\"'\n } else if (directoryId === null) {\n result += ` Id=\"${path.basename(packagePath)}_f\"`\n }\n\n const isCreateDesktopShortcut = commonOptions.isCreateDesktopShortcut !== DesktopShortcutCreationPolicy.NEVER\n if (isMainExecutable && (isCreateDesktopShortcut || commonOptions.isCreateStartMenuShortcut)) {\n result += `>\\n`\n const shortcutName = commonOptions.shortcutName\n if (isCreateDesktopShortcut) {\n result += `${fileSpace} <Shortcut Id=\"desktopShortcut\" Directory=\"DesktopFolder\" Name=\"${xmlAttr(\n shortcutName\n )}\" WorkingDirectory=\"APPLICATIONFOLDER\" Advertise=\"yes\" Icon=\"${this.iconId}\"/>\\n`\n }\n\n const hasMenuCategory = commonOptions.menuCategory != null\n const startMenuShortcutDirectoryId = hasMenuCategory ? \"AppProgramMenuDir\" : \"ProgramMenuFolder\"\n if (commonOptions.isCreateStartMenuShortcut) {\n if (hasMenuCategory) {\n dirs.push(`<Directory Id=\"${startMenuShortcutDirectoryId}\" Name=\"ProgramMenuFolder:\\\\${commonOptions.menuCategory}\\\\\"/>`)\n }\n result += `${fileSpace} <Shortcut Id=\"startMenuShortcut\" Directory=\"${startMenuShortcutDirectoryId}\" Name=\"${xmlAttr(\n shortcutName\n )}\" WorkingDirectory=\"APPLICATIONFOLDER\" Advertise=\"yes\" Icon=\"${this.iconId}\">\\n`\n result += `${fileSpace} <ShortcutProperty Key=\"System.AppUserModel.ID\" Value=\"${xmlAttr(this.packager.appInfo.id)}\"/>\\n`\n result += `${fileSpace} </Shortcut>\\n`\n }\n result += `${fileSpace}</File>`\n\n if (hasMenuCategory) {\n result += `<RemoveFolder Id=\"${startMenuShortcutDirectoryId}\" Directory=\"${startMenuShortcutDirectoryId}\" On=\"uninstall\"/>\\n`\n }\n } else {\n result += `/>`\n }\n\n const fileAssociations = this.packager.fileAssociations\n if (isMainExecutable && fileAssociations.length !== 0) {\n for (const item of fileAssociations) {\n const extensions = asArray(item.ext).map(normalizeExt)\n for (const ext of extensions) {\n result += `${fileSpace} <ProgId Id=\"${this.productMsiIdPrefix}.${ext}\" Advertise=\"yes\" Icon=\"${this.iconId}\" ${\n item.description ? `Description=\"${item.description}\"` : \"\"\n }>\\n`\n result += `${fileSpace} <Extension Id=\"${ext}\" Advertise=\"yes\">\\n`\n result += `${fileSpace} <Verb Id=\"open\" Command=\"Open with ${xmlAttr(this.packager.appInfo.productName)}\" Argument=\"&quot;%1&quot;\"/>\\n`\n result += `${fileSpace} </Extension>\\n`\n result += `${fileSpace} </ProgId>\\n`\n }\n }\n }\n\n return `${result}\\n${fileSpace}</Component>`\n })\n\n return { dirs: listToString(dirs, 2), files: listToString(files, 3) }\n }\n}\n\nfunction listToString(list: Array<string>, indentLevel: number) {\n const space = \" \".repeat(indentLevel * 2)\n return list.join(`\\n${space}`)\n}\n\nfunction xmlAttr(str: string) {\n return str.replace(/&/g, \"&amp;\").replace(/</g, \"&lt;\").replace(/>/g, \"&gt;\").replace(/\"/g, \"&quot;\").replace(/'/g, \"&apos;\")\n}\n"]}
@@ -0,0 +1,9 @@
1
+ export declare type Commands = {
2
+ OutFile: string;
3
+ VIProductVersion?: string;
4
+ VIAddVersionKey: Array<string>;
5
+ Unicode: boolean;
6
+ Icon?: string;
7
+ SetCompress?: "off";
8
+ SetCompressor?: "zlib";
9
+ };
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=Commands.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Commands.js","sourceRoot":"","sources":["../../../src/targets/nsis/Commands.ts"],"names":[],"mappings":"","sourcesContent":["export type Commands = {\n OutFile: string\n VIProductVersion?: string\n VIAddVersionKey: Array<string>\n Unicode: boolean\n Icon?: string\n SetCompress?: \"off\"\n SetCompressor?: \"zlib\"\n}\n"]}