app-builder-lib 22.7.0 → 22.9.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (83) hide show
  1. package/electron-osx-sign/index.d.ts +1 -0
  2. package/electron-osx-sign/sign.js +12 -1
  3. package/out/asar/asarUtil.js +1 -1
  4. package/out/asar/asarUtil.js.map +1 -1
  5. package/out/codeSign/windowsCodeSign.js +2 -2
  6. package/out/codeSign/windowsCodeSign.js.map +1 -1
  7. package/out/configuration.d.ts +1 -1
  8. package/out/configuration.js +4 -0
  9. package/out/core.js +43 -49
  10. package/out/core.js.map +1 -1
  11. package/out/electron/electronVersion.js +3 -3
  12. package/out/electron/electronVersion.js.map +1 -1
  13. package/out/fileTransformer.js +1 -1
  14. package/out/fileTransformer.js.map +1 -1
  15. package/out/index.js +1 -1
  16. package/out/index.js.map +1 -1
  17. package/out/macPackager.js +25 -2
  18. package/out/macPackager.js.map +1 -1
  19. package/out/options/AppXOptions.js +4 -0
  20. package/out/options/FileAssociation.js +4 -0
  21. package/out/options/MsiOptions.js +4 -0
  22. package/out/options/PlatformSpecificBuildOptions.js +4 -0
  23. package/out/options/SnapOptions.d.ts +18 -0
  24. package/out/options/SnapOptions.js +4 -0
  25. package/out/options/SquirrelWindowsOptions.js +4 -0
  26. package/out/options/linuxOptions.js +4 -0
  27. package/out/options/macOptions.d.ts +15 -0
  28. package/out/options/macOptions.js +4 -0
  29. package/out/options/metadata.js +4 -0
  30. package/out/options/pkgOptions.js +4 -0
  31. package/out/options/winOptions.d.ts +1 -1
  32. package/out/options/winOptions.js +4 -0
  33. package/out/packager.js +1 -1
  34. package/out/packagerApi.js +4 -0
  35. package/out/platformPackager.js +1 -1
  36. package/out/platformPackager.js.map +1 -1
  37. package/out/publish/PublishManager.js +1 -1
  38. package/out/publish/PublishManager.js.map +1 -1
  39. package/out/publish/updateInfoBuilder.js +1 -1
  40. package/out/publish/updateInfoBuilder.js.map +1 -1
  41. package/out/remoteBuilder/RemoteBuilder.js +1 -1
  42. package/out/remoteBuilder/RemoteBuilder.js.map +1 -1
  43. package/out/targets/AppImageTarget.js +1 -1
  44. package/out/targets/AppImageTarget.js.map +1 -1
  45. package/out/targets/AppxTarget.js +3 -3
  46. package/out/targets/AppxTarget.js.map +1 -1
  47. package/out/targets/MsiTarget.js +2 -2
  48. package/out/targets/MsiTarget.js.map +1 -1
  49. package/out/targets/archive.js +1 -1
  50. package/out/targets/archive.js.map +1 -1
  51. package/out/targets/fpm.js +1 -1
  52. package/out/targets/fpm.js.map +1 -1
  53. package/out/targets/nsis/NsisTarget.js +42 -3
  54. package/out/targets/nsis/NsisTarget.js.map +1 -1
  55. package/out/targets/nsis/WebInstallerTarget.js +1 -1
  56. package/out/targets/nsis/WebInstallerTarget.js.map +1 -1
  57. package/out/targets/nsis/nsisLang.js +2 -2
  58. package/out/targets/nsis/nsisLang.js.map +1 -1
  59. package/out/targets/nsis/nsisOptions.js +4 -0
  60. package/out/targets/snap.js +15 -2
  61. package/out/targets/snap.js.map +1 -1
  62. package/out/targets/targetUtil.js +1 -1
  63. package/out/targets/targetUtil.js.map +1 -1
  64. package/out/util/appFileCopier.js +1 -1
  65. package/out/util/appFileCopier.js.map +1 -1
  66. package/out/util/cacheManager.js +56 -62
  67. package/out/util/cacheManager.js.map +1 -1
  68. package/out/util/config.js +2 -2
  69. package/out/util/config.js.map +1 -1
  70. package/out/util/macosVersion.js +1 -1
  71. package/out/util/macosVersion.js.map +1 -1
  72. package/out/util/yarn.js +1 -1
  73. package/out/util/yarn.js.map +1 -1
  74. package/out/winPackager.js +2 -2
  75. package/out/winPackager.js.map +1 -1
  76. package/package.json +31 -31
  77. package/scheme.json +130 -29
  78. package/templates/nsis/assistedInstaller.nsh +18 -14
  79. package/templates/nsis/assistedMessages.yml +17 -0
  80. package/templates/nsis/include/installUtil.nsh +1 -5
  81. package/templates/nsis/messages.yml +5 -0
  82. package/templates/nsis/portable.nsi +3 -1
  83. package/templates/snap/snapcraft.yaml +9 -1
@@ -101,7 +101,7 @@ class AppImageTarget extends _core().Target {
101
101
  this.options = { ...this.packager.platformSpecificBuildOptions,
102
102
  ...this.packager.config[this.name]
103
103
  };
104
- this.desktopEntry = new (_lazyVal().Lazy)(() => helper.computeDesktopEntry(this.options, "AppRun", {
104
+ this.desktopEntry = new (_lazyVal().Lazy)(() => helper.computeDesktopEntry(this.options, "AppRun %U", {
105
105
  "X-AppImage-Version": `${packager.appInfo.buildVersion}`
106
106
  }));
107
107
  }
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/targets/AppImageTarget.ts"],"names":[],"mappings":"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","sourcesContent":["import { Arch, serializeToYaml } from \"builder-util\"\nimport { outputFile } from \"fs-extra\"\nimport { Lazy } from \"lazy-val\"\nimport * as path from \"path\"\nimport { AppImageOptions } from \"..\"\nimport { Target } from \"../core\"\nimport { LinuxPackager } from \"../linuxPackager\"\nimport { getAppUpdatePublishConfiguration } from \"../publish/PublishManager\"\nimport { executeAppBuilderAsJson, objectToArgs } from \"../util/appBuilder\"\nimport { getNotLocalizedLicenseFile } from \"../util/license\"\nimport { LinuxTargetHelper } from \"./LinuxTargetHelper\"\nimport { createStageDir } from \"./targetUtil\"\n\n// https://unix.stackexchange.com/questions/375191/append-to-sub-directory-inside-squashfs-file\nexport default class AppImageTarget extends Target {\n readonly options: AppImageOptions = {...this.packager.platformSpecificBuildOptions, ...(this.packager.config as any)[this.name]}\n private readonly desktopEntry: Lazy<string>\n\n constructor(ignored: string, private readonly packager: LinuxPackager, private readonly helper: LinuxTargetHelper, readonly outDir: string) {\n super(\"appImage\")\n\n this.desktopEntry = new Lazy<string>(() => helper.computeDesktopEntry(this.options, \"AppRun\", {\n \"X-AppImage-Version\": `${packager.appInfo.buildVersion}`,\n }))\n }\n\n async build(appOutDir: string, arch: Arch): Promise<any> {\n const packager = this.packager\n const options = this.options\n // https://github.com/electron-userland/electron-builder/issues/775\n // https://github.com/electron-userland/electron-builder/issues/1726\n // tslint:disable-next-line:no-invalid-template-strings\n const artifactName = packager.expandArtifactNamePattern(options, \"AppImage\", arch)\n const artifactPath = path.join(this.outDir, artifactName)\n await packager.info.callArtifactBuildStarted({\n targetPresentableName: \"AppImage\",\n file: artifactPath,\n arch,\n })\n\n const c = await Promise.all([\n this.desktopEntry.value,\n this.helper.icons,\n getAppUpdatePublishConfiguration(packager, arch, false /* in any case validation will be done on publish */),\n getNotLocalizedLicenseFile(options.license, this.packager, [\"txt\", \"html\"]),\n createStageDir(this, packager, arch),\n ])\n const license = c[3]\n const stageDir = c[4]!!\n\n const publishConfig = c[2]\n if (publishConfig != null) {\n await outputFile(path.join(packager.getResourcesDir(stageDir.dir), \"app-update.yml\"), serializeToYaml(publishConfig))\n }\n\n if (this.packager.packagerOptions.effectiveOptionComputed != null && await this.packager.packagerOptions.effectiveOptionComputed({desktop: await this.desktopEntry.value})) {\n return\n }\n\n const args = [\n \"appimage\",\n \"--stage\", stageDir.dir,\n \"--arch\", Arch[arch],\n \"--output\", artifactPath,\n \"--app\", appOutDir,\n \"--configuration\", (JSON.stringify({\n productName: this.packager.appInfo.productName,\n productFilename: this.packager.appInfo.productFilename,\n desktopEntry: c[0],\n executableName: this.packager.executableName,\n icons: c[1],\n fileAssociations: this.packager.fileAssociations,\n ...options,\n })),\n ]\n objectToArgs(args, {\n license,\n })\n if (packager.compression === \"maximum\") {\n args.push(\"--compression\", \"xz\")\n }\n\n await packager.info.callArtifactBuildCompleted({\n file: artifactPath,\n safeArtifactName: packager.computeSafeArtifactName(artifactName, \"AppImage\", arch, false),\n target: this,\n arch,\n packager,\n isWriteUpdateInfo: true,\n updateInfo: await executeAppBuilderAsJson(args),\n })\n }\n}"],"sourceRoot":""}
1
+ {"version":3,"sources":["../../src/targets/AppImageTarget.ts"],"names":[],"mappings":"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","sourcesContent":["import { Arch, serializeToYaml } from \"builder-util\"\nimport { outputFile } from \"fs-extra\"\nimport { Lazy } from \"lazy-val\"\nimport * as path from \"path\"\nimport { AppImageOptions } from \"..\"\nimport { Target } from \"../core\"\nimport { LinuxPackager } from \"../linuxPackager\"\nimport { getAppUpdatePublishConfiguration } from \"../publish/PublishManager\"\nimport { executeAppBuilderAsJson, objectToArgs } from \"../util/appBuilder\"\nimport { getNotLocalizedLicenseFile } from \"../util/license\"\nimport { LinuxTargetHelper } from \"./LinuxTargetHelper\"\nimport { createStageDir } from \"./targetUtil\"\n\n// https://unix.stackexchange.com/questions/375191/append-to-sub-directory-inside-squashfs-file\nexport default class AppImageTarget extends Target {\n readonly options: AppImageOptions = {...this.packager.platformSpecificBuildOptions, ...(this.packager.config as any)[this.name]}\n private readonly desktopEntry: Lazy<string>\n\n constructor(ignored: string, private readonly packager: LinuxPackager, private readonly helper: LinuxTargetHelper, readonly outDir: string) {\n super(\"appImage\")\n\n this.desktopEntry = new Lazy<string>(() => helper.computeDesktopEntry(this.options, \"AppRun %U\", {\n \"X-AppImage-Version\": `${packager.appInfo.buildVersion}`,\n }))\n }\n\n async build(appOutDir: string, arch: Arch): Promise<any> {\n const packager = this.packager\n const options = this.options\n // https://github.com/electron-userland/electron-builder/issues/775\n // https://github.com/electron-userland/electron-builder/issues/1726\n // tslint:disable-next-line:no-invalid-template-strings\n const artifactName = packager.expandArtifactNamePattern(options, \"AppImage\", arch)\n const artifactPath = path.join(this.outDir, artifactName)\n await packager.info.callArtifactBuildStarted({\n targetPresentableName: \"AppImage\",\n file: artifactPath,\n arch,\n })\n\n const c = await Promise.all([\n this.desktopEntry.value,\n this.helper.icons,\n getAppUpdatePublishConfiguration(packager, arch, false /* in any case validation will be done on publish */),\n getNotLocalizedLicenseFile(options.license, this.packager, [\"txt\", \"html\"]),\n createStageDir(this, packager, arch),\n ])\n const license = c[3]\n const stageDir = c[4]!!\n\n const publishConfig = c[2]\n if (publishConfig != null) {\n await outputFile(path.join(packager.getResourcesDir(stageDir.dir), \"app-update.yml\"), serializeToYaml(publishConfig))\n }\n\n if (this.packager.packagerOptions.effectiveOptionComputed != null && await this.packager.packagerOptions.effectiveOptionComputed({desktop: await this.desktopEntry.value})) {\n return\n }\n\n const args = [\n \"appimage\",\n \"--stage\", stageDir.dir,\n \"--arch\", Arch[arch],\n \"--output\", artifactPath,\n \"--app\", appOutDir,\n \"--configuration\", (JSON.stringify({\n productName: this.packager.appInfo.productName,\n productFilename: this.packager.appInfo.productFilename,\n desktopEntry: c[0],\n executableName: this.packager.executableName,\n icons: c[1],\n fileAssociations: this.packager.fileAssociations,\n ...options,\n })),\n ]\n objectToArgs(args, {\n license,\n })\n if (packager.compression === \"maximum\") {\n args.push(\"--compression\", \"xz\")\n }\n\n await packager.info.callArtifactBuildCompleted({\n file: artifactPath,\n safeArtifactName: packager.computeSafeArtifactName(artifactName, \"AppImage\", arch, false),\n target: this,\n arch,\n packager,\n isWriteUpdateInfo: true,\n updateInfo: await executeAppBuilderAsJson(args),\n })\n }\n}\n"],"sourceRoot":""}
@@ -137,7 +137,7 @@ class AppXTarget extends _core().Target {
137
137
  }
138
138
 
139
139
  const mappingList = [];
140
- mappingList.push((await _bluebirdLst().default.map((0, _fs().walk)(appOutDir), file => {
140
+ mappingList.push(await _bluebirdLst().default.map((0, _fs().walk)(appOutDir), file => {
141
141
  let appxPath = file.substring(appOutDir.length + 1);
142
142
 
143
143
  if (path.sep !== "\\") {
@@ -145,12 +145,12 @@ class AppXTarget extends _core().Target {
145
145
  }
146
146
 
147
147
  return `"${vm.toVmFile(file)}" "app\\${appxPath}"`;
148
- })));
148
+ }));
149
149
  const userAssetDir = await this.packager.getResource(undefined, APPX_ASSETS_DIR_NAME);
150
150
  const assetInfo = await AppXTarget.computeUserAssets(vm, vendorPath, userAssetDir);
151
151
  const userAssets = assetInfo.userAssets;
152
152
  const manifestFile = stageDir.getTempFile("AppxManifest.xml");
153
- await this.writeManifest(manifestFile, arch, (await this.computePublisherName()), userAssets);
153
+ await this.writeManifest(manifestFile, arch, await this.computePublisherName(), userAssets);
154
154
  await packager.info.callAppxManifestCreated(manifestFile);
155
155
  mappingList.push(assetInfo.mappings);
156
156
  mappingList.push([`"${vm.toVmFile(manifestFile)}" "AppxManifest.xml"`]);
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/targets/AppxTarget.ts"],"names":[],"mappings":"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","sourcesContent":["import BluebirdPromise from \"bluebird-lst\"\nimport { Arch, asArray, deepAssign, InvalidConfigurationError, log } from \"builder-util\"\nimport { copyOrLinkFile, walk } from \"builder-util/out/fs\"\nimport { emptyDir, readdir, readFile, writeFile } from \"fs-extra\"\nimport * as path from \"path\"\nimport { AppXOptions } from \"../\"\nimport { getSignVendorPath, isOldWin6 } from \"../codeSign/windowsCodeSign\"\nimport { Target } from \"../core\"\nimport { getTemplatePath } from \"../util/pathManager\"\nimport { VmManager } from \"../vm/vm\"\nimport { WinPackager } from \"../winPackager\"\nimport { createStageDir } from \"./targetUtil\"\n\nconst APPX_ASSETS_DIR_NAME = \"appx\"\n\nconst vendorAssetsForDefaultAssets: { [key: string]: string } = {\n \"StoreLogo.png\": \"SampleAppx.50x50.png\",\n \"Square150x150Logo.png\": \"SampleAppx.150x150.png\",\n \"Square44x44Logo.png\": \"SampleAppx.44x44.png\",\n \"Wide310x150Logo.png\": \"SampleAppx.310x150.png\",\n}\n\nconst DEFAULT_RESOURCE_LANG = \"en-US\"\n\nexport default class AppXTarget extends Target {\n readonly options: AppXOptions = deepAssign({}, this.packager.platformSpecificBuildOptions, this.packager.config.appx)\n\n constructor(private readonly packager: WinPackager, readonly outDir: string) {\n super(\"appx\")\n\n if (process.platform !== \"darwin\" && (process.platform !== \"win32\" || isOldWin6())) {\n throw new Error(\"AppX is supported only on Windows 10 or Windows Server 2012 R2 (version number 6.3+)\")\n }\n }\n\n // https://docs.microsoft.com/en-us/windows/uwp/packaging/create-app-package-with-makeappx-tool#mapping-files\n async build(appOutDir: string, arch: Arch): Promise<any> {\n const packager = this.packager\n const artifactName = packager.expandArtifactBeautyNamePattern(this.options, \"appx\", arch)\n const artifactPath = path.join(this.outDir, artifactName)\n await packager.info.callArtifactBuildStarted({\n targetPresentableName: \"AppX\",\n file: artifactPath,\n arch,\n })\n\n const vendorPath = await getSignVendorPath()\n const vm = await packager.vm.value\n\n const stageDir = await createStageDir(this, packager, arch)\n\n const mappingFile = stageDir.getTempFile(\"mapping.txt\")\n const makeAppXArgs = [\"pack\", \"/o\" /* overwrite the output file if it exists */,\n \"/f\", vm.toVmFile(mappingFile),\n \"/p\", vm.toVmFile(artifactPath),\n ]\n if (packager.compression === \"store\") {\n makeAppXArgs.push(\"/nc\")\n }\n\n const mappingList: Array<Array<string>> = []\n mappingList.push(await BluebirdPromise.map(walk(appOutDir), file => {\n let appxPath = file.substring(appOutDir.length + 1)\n if (path.sep !== \"\\\\\") {\n appxPath = appxPath.replace(/\\//g, \"\\\\\")\n }\n return `\"${vm.toVmFile(file)}\" \"app\\\\${appxPath}\"`\n }))\n\n const userAssetDir = await this.packager.getResource(undefined, APPX_ASSETS_DIR_NAME)\n const assetInfo = await AppXTarget.computeUserAssets(vm, vendorPath, userAssetDir)\n const userAssets = assetInfo.userAssets\n\n const manifestFile = stageDir.getTempFile(\"AppxManifest.xml\")\n await this.writeManifest(manifestFile, arch, await this.computePublisherName(), userAssets)\n await packager.info.callAppxManifestCreated(manifestFile)\n mappingList.push(assetInfo.mappings)\n mappingList.push([`\"${vm.toVmFile(manifestFile)}\" \"AppxManifest.xml\"`])\n const signToolArch = (arch === Arch.arm64 ? \"x64\" : Arch[arch])\n\n if (isScaledAssetsProvided(userAssets)) {\n const outFile = vm.toVmFile(stageDir.getTempFile(\"resources.pri\"))\n const makePriPath = vm.toVmFile(path.join(vendorPath, \"windows-10\", signToolArch, \"makepri.exe\"))\n\n const assetRoot = stageDir.getTempFile(\"appx/assets\")\n await emptyDir(assetRoot)\n await BluebirdPromise.map(assetInfo.allAssets, it => copyOrLinkFile(it, path.join(assetRoot, path.basename(it))))\n\n await vm.exec(makePriPath, [\"new\",\n \"/Overwrite\",\n \"/Manifest\", vm.toVmFile(manifestFile),\n \"/ProjectRoot\", vm.toVmFile(path.dirname(assetRoot)),\n \"/ConfigXml\", vm.toVmFile(path.join(getTemplatePath(\"appx\"), \"priconfig.xml\")),\n \"/OutputFile\", outFile,\n ])\n\n // in addition to resources.pri, resources.scale-140.pri and other such files will be generated\n for (const resourceFile of (await readdir(stageDir.dir)).filter(it => it.startsWith(\"resources.\")).sort()) {\n mappingList.push([`\"${vm.toVmFile(stageDir.getTempFile(resourceFile))}\" \"${resourceFile}\"`])\n }\n makeAppXArgs.push(\"/l\")\n }\n\n let mapping = \"[Files]\"\n for (const list of mappingList) {\n mapping += \"\\r\\n\" + list.join(\"\\r\\n\")\n }\n await writeFile(mappingFile, mapping)\n packager.debugLogger.add(\"appx.mapping\", mapping)\n\n if (this.options.makeappxArgs != null) {\n makeAppXArgs.push(...this.options.makeappxArgs)\n }\n await vm.exec(vm.toVmFile(path.join(vendorPath, \"windows-10\", signToolArch, \"makeappx.exe\")), makeAppXArgs)\n await packager.sign(artifactPath)\n\n await stageDir.cleanup()\n\n await packager.info.callArtifactBuildCompleted({\n file: artifactPath,\n packager,\n arch,\n safeArtifactName: packager.computeSafeArtifactName(artifactName, \"appx\"),\n target: this,\n isWriteUpdateInfo: this.options.electronUpdaterAware,\n })\n }\n\n private static async computeUserAssets(vm: VmManager, vendorPath: string, userAssetDir: string | null) {\n const mappings: Array<string> = []\n let userAssets: Array<string>\n const allAssets: Array<string> = []\n if (userAssetDir == null) {\n userAssets = []\n }\n else {\n userAssets = (await readdir(userAssetDir)).filter(it => !it.startsWith(\".\") && !it.endsWith(\".db\") && it.includes(\".\"))\n for (const name of userAssets) {\n mappings.push(`\"${vm.toVmFile(userAssetDir)}${vm.pathSep}${name}\" \"assets\\\\${name}\"`)\n allAssets.push(path.join(userAssetDir, name))\n }\n }\n\n for (const defaultAsset of Object.keys(vendorAssetsForDefaultAssets)) {\n if (userAssets.length === 0 || !isDefaultAssetIncluded(userAssets, defaultAsset)) {\n const file = path.join(vendorPath, \"appxAssets\", vendorAssetsForDefaultAssets[defaultAsset])\n mappings.push(`\"${vm.toVmFile(file)}\" \"assets\\\\${defaultAsset}\"`)\n allAssets.push(file)\n }\n }\n\n // we do not use process.arch to build path to tools, because even if you are on x64, ia32 appx tool must be used if you build appx for ia32\n return {userAssets, mappings, allAssets}\n }\n\n // https://github.com/electron-userland/electron-builder/issues/2108#issuecomment-333200711\n private async computePublisherName() {\n if (await this.packager.cscInfo.value == null) {\n log.info({reason: \"Windows Store only build\"}, \"AppX is not signed\")\n return this.options.publisher || \"CN=ms\"\n }\n\n const certInfo = await this.packager.lazyCertInfo.value\n const publisher = certInfo == null ? null : certInfo.bloodyMicrosoftSubjectDn\n if (publisher == null) {\n throw new Error(\"Internal error: cannot compute subject using certificate info\")\n }\n return publisher\n }\n\n private async writeManifest(outFile: string, arch: Arch, publisher: string, userAssets: Array<string>) {\n const appInfo = this.packager.appInfo\n const options = this.options\n const executable = `app\\\\${appInfo.productFilename}.exe`\n const displayName = options.displayName || appInfo.productName\n const extensions = await this.getExtensions(executable, displayName)\n\n const manifest = (await readFile(path.join(getTemplatePath(\"appx\"), \"appxmanifest.xml\"), \"utf8\"))\n .replace(/\\${([a-zA-Z0-9]+)}/g, (match, p1): string => {\n switch (p1) {\n case \"publisher\":\n return publisher\n\n case \"publisherDisplayName\": {\n const name = options.publisherDisplayName || appInfo.companyName\n if (name == null) {\n throw new InvalidConfigurationError(`Please specify \"author\" in the application package.json — it is required because \"appx.publisherDisplayName\" is not set.`)\n }\n return name\n }\n\n case \"version\":\n return appInfo.getVersionInWeirdWindowsForm(options.setBuildNumber === true)\n\n case \"applicationId\": {\n const result = options.applicationId || options.identityName || appInfo.name\n if (!isNaN(parseInt(result[0], 10))) {\n let message = `AppX Application.Id can’t start with numbers: \"${result}\"`\n if (options.applicationId == null) {\n message += `\\nPlease set appx.applicationId (or correct appx.identityName or name)`\n }\n throw new InvalidConfigurationError(message)\n }\n return result\n }\n\n case \"identityName\":\n return options.identityName || appInfo.name\n\n case \"executable\":\n return executable\n\n case \"displayName\":\n return displayName\n\n case \"description\":\n return appInfo.description || appInfo.productName\n\n case \"backgroundColor\":\n return options.backgroundColor || \"#464646\"\n\n case \"logo\":\n return \"assets\\\\StoreLogo.png\"\n\n case \"square150x150Logo\":\n return \"assets\\\\Square150x150Logo.png\"\n\n case \"square44x44Logo\":\n return \"assets\\\\Square44x44Logo.png\"\n\n case \"lockScreen\":\n return lockScreenTag(userAssets)\n\n case \"defaultTile\":\n return defaultTileTag(userAssets, options.showNameOnTiles || false)\n\n case \"splashScreen\":\n return splashScreenTag(userAssets)\n\n case \"arch\":\n return arch === Arch.ia32 ? \"x86\" : (arch === Arch.arm64 ? \"arm64\" : \"x64\")\n\n case \"resourceLanguages\":\n return resourceLanguageTag(asArray(options.languages))\n\n case \"extensions\":\n return extensions\n\n case \"minVersion\":\n return arch === Arch.arm64 ? \"10.0.16299.0\" : \"10.0.14316.0\"\n\n case \"maxVersionTested\":\n return arch === Arch.arm64 ? \"10.0.16299.0\" : \"10.0.14316.0\"\n\n default:\n throw new Error(`Macro ${p1} is not defined`)\n }\n })\n await writeFile(outFile, manifest)\n }\n\n private async getExtensions(executable: string, displayName: string): Promise<string> {\n const uriSchemes = asArray(this.packager.config.protocols)\n .concat(asArray(this.packager.platformSpecificBuildOptions.protocols))\n\n const fileAssociations = asArray(this.packager.config.fileAssociations)\n .concat(asArray(this.packager.platformSpecificBuildOptions.fileAssociations))\n\n let isAddAutoLaunchExtension = this.options.addAutoLaunchExtension\n if (isAddAutoLaunchExtension === undefined) {\n const deps = this.packager.info.metadata.dependencies\n isAddAutoLaunchExtension = deps != null && deps[\"electron-winstore-auto-launch\"] != null\n }\n\n if (!isAddAutoLaunchExtension\n && uriSchemes.length === 0\n && fileAssociations.length === 0\n && this.options.customExtensionsPath === undefined) {\n return \"\"\n }\n\n let extensions = \"<Extensions>\"\n\n if (isAddAutoLaunchExtension) {\n extensions += `\n <desktop:Extension Category=\"windows.startupTask\" Executable=\"${executable}\" EntryPoint=\"Windows.FullTrustApplication\">\n <desktop:StartupTask TaskId=\"SlackStartup\" Enabled=\"true\" DisplayName=\"${displayName}\" />\n </desktop:Extension>`\n }\n\n for (const protocol of uriSchemes) {\n for (const scheme of asArray(protocol.schemes)) {\n extensions += `\n <uap:Extension Category=\"windows.protocol\">\n <uap:Protocol Name=\"${scheme}\">\n <uap:DisplayName>${protocol.name}</uap:DisplayName>\n </uap:Protocol>\n </uap:Extension>`\n }\n }\n\n for (const fileAssociation of fileAssociations) {\n for (const ext of asArray(fileAssociation.ext)) {\n extensions += `\n <uap:Extension Category=\"windows.fileTypeAssociation\">\n <uap:FileTypeAssociation Name=\"${ext}\">\n <uap:SupportedFileTypes>\n <uap:FileType>.${ext}</uap:FileType>\n </uap:SupportedFileTypes>\n </uap:FileTypeAssociation>\n </uap:Extension>`\n }\n }\n\n if (this.options.customExtensionsPath !== undefined) {\n const extensionsPath = path.resolve(this.packager.info.appDir, this.options.customExtensionsPath)\n extensions += await readFile(extensionsPath, \"utf8\")\n }\n\n extensions += \"</Extensions>\"\n return extensions\n }\n}\n\n// get the resource - language tag, see https://docs.microsoft.com/en-us/windows/uwp/globalizing/manage-language-and-region#specify-the-supported-languages-in-the-apps-manifest\nfunction resourceLanguageTag(userLanguages: Array<string> | null | undefined): string {\n if (userLanguages == null || userLanguages.length === 0) {\n userLanguages = [DEFAULT_RESOURCE_LANG]\n }\n return userLanguages.map(it => `<Resource Language=\"${it.replace(/_/g, \"-\")}\" />`).join(\"\\n\")\n}\n\nfunction lockScreenTag(userAssets: Array<string>): string {\n if (isDefaultAssetIncluded(userAssets, \"BadgeLogo.png\")) {\n return '<uap:LockScreen Notification=\"badgeAndTileText\" BadgeLogo=\"assets\\\\BadgeLogo.png\" />'\n }\n else {\n return \"\"\n }\n}\n\nfunction defaultTileTag(userAssets: Array<string>, showNameOnTiles: boolean): string {\n const defaultTiles: Array<string> = [\"<uap:DefaultTile\", 'Wide310x150Logo=\"assets\\\\Wide310x150Logo.png\"']\n\n if (isDefaultAssetIncluded(userAssets, \"LargeTile.png\")) {\n defaultTiles.push('Square310x310Logo=\"assets\\\\LargeTile.png\"')\n }\n if (isDefaultAssetIncluded(userAssets, \"SmallTile.png\")) {\n defaultTiles.push('Square71x71Logo=\"assets\\\\SmallTile.png\"')\n }\n\n if (showNameOnTiles) {\n defaultTiles.push(\">\")\n defaultTiles.push(\"<uap:ShowNameOnTiles>\")\n defaultTiles.push(\"<uap:ShowOn\", 'Tile=\"wide310x150Logo\"', \"/>\")\n defaultTiles.push(\"<uap:ShowOn\", 'Tile=\"square150x150Logo\"', \"/>\")\n defaultTiles.push(\"</uap:ShowNameOnTiles>\")\n defaultTiles.push(\"</uap:DefaultTile>\")\n } else {\n defaultTiles.push(\"/>\")\n }\n return defaultTiles.join(\" \")\n}\n\nfunction splashScreenTag(userAssets: Array<string>): string {\n if (isDefaultAssetIncluded(userAssets, \"SplashScreen.png\")) {\n return '<uap:SplashScreen Image=\"assets\\\\SplashScreen.png\" />'\n }\n else {\n return \"\"\n }\n}\n\nfunction isDefaultAssetIncluded(userAssets: Array<string>, defaultAsset: string) {\n const defaultAssetName = defaultAsset.substring(0, defaultAsset.indexOf(\".\"))\n return userAssets.some(it => it.includes(defaultAssetName))\n}\n\nfunction isScaledAssetsProvided(userAssets: Array<string>) {\n return userAssets.some(it => it.includes(\".scale-\") || it.includes(\".targetsize-\"))\n}\n"],"sourceRoot":""}
1
+ {"version":3,"sources":["../../src/targets/AppxTarget.ts"],"names":[],"mappings":"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","sourcesContent":["import BluebirdPromise from \"bluebird-lst\"\nimport { Arch, asArray, deepAssign, InvalidConfigurationError, log } from \"builder-util\"\nimport { copyOrLinkFile, walk } from \"builder-util/out/fs\"\nimport { emptyDir, readdir, readFile, writeFile } from \"fs-extra\"\nimport * as path from \"path\"\nimport { AppXOptions } from \"../\"\nimport { getSignVendorPath, isOldWin6 } from \"../codeSign/windowsCodeSign\"\nimport { Target } from \"../core\"\nimport { getTemplatePath } from \"../util/pathManager\"\nimport { VmManager } from \"../vm/vm\"\nimport { WinPackager } from \"../winPackager\"\nimport { createStageDir } from \"./targetUtil\"\n\nconst APPX_ASSETS_DIR_NAME = \"appx\"\n\nconst vendorAssetsForDefaultAssets: { [key: string]: string } = {\n \"StoreLogo.png\": \"SampleAppx.50x50.png\",\n \"Square150x150Logo.png\": \"SampleAppx.150x150.png\",\n \"Square44x44Logo.png\": \"SampleAppx.44x44.png\",\n \"Wide310x150Logo.png\": \"SampleAppx.310x150.png\",\n}\n\nconst DEFAULT_RESOURCE_LANG = \"en-US\"\n\nexport default class AppXTarget extends Target {\n readonly options: AppXOptions = deepAssign({}, this.packager.platformSpecificBuildOptions, this.packager.config.appx)\n\n constructor(private readonly packager: WinPackager, readonly outDir: string) {\n super(\"appx\")\n\n if (process.platform !== \"darwin\" && (process.platform !== \"win32\" || isOldWin6())) {\n throw new Error(\"AppX is supported only on Windows 10 or Windows Server 2012 R2 (version number 6.3+)\")\n }\n }\n\n // https://docs.microsoft.com/en-us/windows/uwp/packaging/create-app-package-with-makeappx-tool#mapping-files\n async build(appOutDir: string, arch: Arch): Promise<any> {\n const packager = this.packager\n const artifactName = packager.expandArtifactBeautyNamePattern(this.options, \"appx\", arch)\n const artifactPath = path.join(this.outDir, artifactName)\n await packager.info.callArtifactBuildStarted({\n targetPresentableName: \"AppX\",\n file: artifactPath,\n arch,\n })\n\n const vendorPath = await getSignVendorPath()\n const vm = await packager.vm.value\n\n const stageDir = await createStageDir(this, packager, arch)\n\n const mappingFile = stageDir.getTempFile(\"mapping.txt\")\n const makeAppXArgs = [\"pack\", \"/o\" /* overwrite the output file if it exists */,\n \"/f\", vm.toVmFile(mappingFile),\n \"/p\", vm.toVmFile(artifactPath),\n ]\n if (packager.compression === \"store\") {\n makeAppXArgs.push(\"/nc\")\n }\n\n const mappingList: Array<Array<string>> = []\n mappingList.push(await BluebirdPromise.map(walk(appOutDir), file => {\n let appxPath = file.substring(appOutDir.length + 1)\n if (path.sep !== \"\\\\\") {\n appxPath = appxPath.replace(/\\//g, \"\\\\\")\n }\n return `\"${vm.toVmFile(file)}\" \"app\\\\${appxPath}\"`\n }))\n\n const userAssetDir = await this.packager.getResource(undefined, APPX_ASSETS_DIR_NAME)\n const assetInfo = await AppXTarget.computeUserAssets(vm, vendorPath, userAssetDir)\n const userAssets = assetInfo.userAssets\n\n const manifestFile = stageDir.getTempFile(\"AppxManifest.xml\")\n await this.writeManifest(manifestFile, arch, await this.computePublisherName(), userAssets)\n await packager.info.callAppxManifestCreated(manifestFile)\n mappingList.push(assetInfo.mappings)\n mappingList.push([`\"${vm.toVmFile(manifestFile)}\" \"AppxManifest.xml\"`])\n const signToolArch = (arch === Arch.arm64 ? \"x64\" : Arch[arch])\n\n if (isScaledAssetsProvided(userAssets)) {\n const outFile = vm.toVmFile(stageDir.getTempFile(\"resources.pri\"))\n const makePriPath = vm.toVmFile(path.join(vendorPath, \"windows-10\", signToolArch, \"makepri.exe\"))\n\n const assetRoot = stageDir.getTempFile(\"appx/assets\")\n await emptyDir(assetRoot)\n await BluebirdPromise.map(assetInfo.allAssets, it => copyOrLinkFile(it, path.join(assetRoot, path.basename(it))))\n\n await vm.exec(makePriPath, [\"new\",\n \"/Overwrite\",\n \"/Manifest\", vm.toVmFile(manifestFile),\n \"/ProjectRoot\", vm.toVmFile(path.dirname(assetRoot)),\n \"/ConfigXml\", vm.toVmFile(path.join(getTemplatePath(\"appx\"), \"priconfig.xml\")),\n \"/OutputFile\", outFile,\n ])\n\n // in addition to resources.pri, resources.scale-140.pri and other such files will be generated\n for (const resourceFile of (await readdir(stageDir.dir)).filter(it => it.startsWith(\"resources.\")).sort()) {\n mappingList.push([`\"${vm.toVmFile(stageDir.getTempFile(resourceFile))}\" \"${resourceFile}\"`])\n }\n makeAppXArgs.push(\"/l\")\n }\n\n let mapping = \"[Files]\"\n for (const list of mappingList) {\n mapping += \"\\r\\n\" + list.join(\"\\r\\n\")\n }\n await writeFile(mappingFile, mapping)\n packager.debugLogger.add(\"appx.mapping\", mapping)\n\n if (this.options.makeappxArgs != null) {\n makeAppXArgs.push(...this.options.makeappxArgs)\n }\n await vm.exec(vm.toVmFile(path.join(vendorPath, \"windows-10\", signToolArch, \"makeappx.exe\")), makeAppXArgs)\n await packager.sign(artifactPath)\n\n await stageDir.cleanup()\n\n await packager.info.callArtifactBuildCompleted({\n file: artifactPath,\n packager,\n arch,\n safeArtifactName: packager.computeSafeArtifactName(artifactName, \"appx\"),\n target: this,\n isWriteUpdateInfo: this.options.electronUpdaterAware,\n })\n }\n\n private static async computeUserAssets(vm: VmManager, vendorPath: string, userAssetDir: string | null) {\n const mappings: Array<string> = []\n let userAssets: Array<string>\n const allAssets: Array<string> = []\n if (userAssetDir == null) {\n userAssets = []\n }\n else {\n userAssets = (await readdir(userAssetDir)).filter(it => !it.startsWith(\".\") && !it.endsWith(\".db\") && it.includes(\".\"))\n for (const name of userAssets) {\n mappings.push(`\"${vm.toVmFile(userAssetDir)}${vm.pathSep}${name}\" \"assets\\\\${name}\"`)\n allAssets.push(path.join(userAssetDir, name))\n }\n }\n\n for (const defaultAsset of Object.keys(vendorAssetsForDefaultAssets)) {\n if (userAssets.length === 0 || !isDefaultAssetIncluded(userAssets, defaultAsset)) {\n const file = path.join(vendorPath, \"appxAssets\", vendorAssetsForDefaultAssets[defaultAsset])\n mappings.push(`\"${vm.toVmFile(file)}\" \"assets\\\\${defaultAsset}\"`)\n allAssets.push(file)\n }\n }\n\n // we do not use process.arch to build path to tools, because even if you are on x64, ia32 appx tool must be used if you build appx for ia32\n return {userAssets, mappings, allAssets}\n }\n\n // https://github.com/electron-userland/electron-builder/issues/2108#issuecomment-333200711\n private async computePublisherName() {\n if (await this.packager.cscInfo.value == null) {\n log.info({reason: \"Windows Store only build\"}, \"AppX is not signed\")\n return this.options.publisher || \"CN=ms\"\n }\n\n const certInfo = await this.packager.lazyCertInfo.value\n const publisher = certInfo == null ? null : certInfo.bloodyMicrosoftSubjectDn\n if (publisher == null) {\n throw new Error(\"Internal error: cannot compute subject using certificate info\")\n }\n return publisher\n }\n\n private async writeManifest(outFile: string, arch: Arch, publisher: string, userAssets: Array<string>) {\n const appInfo = this.packager.appInfo\n const options = this.options\n const executable = `app\\\\${appInfo.productFilename}.exe`\n const displayName = options.displayName || appInfo.productName\n const extensions = await this.getExtensions(executable, displayName)\n\n const manifest = (await readFile(path.join(getTemplatePath(\"appx\"), \"appxmanifest.xml\"), \"utf8\"))\n .replace(/\\${([a-zA-Z0-9]+)}/g, (match, p1): string => {\n switch (p1) {\n case \"publisher\":\n return publisher\n\n case \"publisherDisplayName\": {\n const name = options.publisherDisplayName || appInfo.companyName\n if (name == null) {\n throw new InvalidConfigurationError(`Please specify \"author\" in the application package.json — it is required because \"appx.publisherDisplayName\" is not set.`)\n }\n return name\n }\n\n case \"version\":\n return appInfo.getVersionInWeirdWindowsForm(options.setBuildNumber === true)\n\n case \"applicationId\": {\n const result = options.applicationId || options.identityName || appInfo.name\n if (!isNaN(parseInt(result[0], 10))) {\n let message = `AppX Application.Id can’t start with numbers: \"${result}\"`\n if (options.applicationId == null) {\n message += `\\nPlease set appx.applicationId (or correct appx.identityName or name)`\n }\n throw new InvalidConfigurationError(message)\n }\n return result\n }\n\n case \"identityName\":\n return options.identityName || appInfo.name\n\n case \"executable\":\n return executable\n\n case \"displayName\":\n return displayName\n\n case \"description\":\n return appInfo.description || appInfo.productName\n\n case \"backgroundColor\":\n return options.backgroundColor || \"#464646\"\n\n case \"logo\":\n return \"assets\\\\StoreLogo.png\"\n\n case \"square150x150Logo\":\n return \"assets\\\\Square150x150Logo.png\"\n\n case \"square44x44Logo\":\n return \"assets\\\\Square44x44Logo.png\"\n\n case \"lockScreen\":\n return lockScreenTag(userAssets)\n\n case \"defaultTile\":\n return defaultTileTag(userAssets, options.showNameOnTiles || false)\n\n case \"splashScreen\":\n return splashScreenTag(userAssets)\n\n case \"arch\":\n return arch === Arch.ia32 ? \"x86\" : (arch === Arch.arm64 ? \"arm64\" : \"x64\")\n\n case \"resourceLanguages\":\n return resourceLanguageTag(asArray(options.languages))\n\n case \"extensions\":\n return extensions\n\n case \"minVersion\":\n return arch === Arch.arm64 ? \"10.0.16299.0\" : \"10.0.14316.0\"\n\n case \"maxVersionTested\":\n return arch === Arch.arm64 ? \"10.0.16299.0\" : \"10.0.14316.0\"\n\n default:\n throw new Error(`Macro ${p1} is not defined`)\n }\n })\n await writeFile(outFile, manifest)\n }\n\n private async getExtensions(executable: string, displayName: string): Promise<string> {\n const uriSchemes = asArray(this.packager.config.protocols)\n .concat(asArray(this.packager.platformSpecificBuildOptions.protocols))\n\n const fileAssociations = asArray(this.packager.config.fileAssociations)\n .concat(asArray(this.packager.platformSpecificBuildOptions.fileAssociations))\n\n let isAddAutoLaunchExtension = this.options.addAutoLaunchExtension\n if (isAddAutoLaunchExtension === undefined) {\n const deps = this.packager.info.metadata.dependencies\n isAddAutoLaunchExtension = deps != null && deps[\"electron-winstore-auto-launch\"] != null\n }\n\n if (!isAddAutoLaunchExtension\n && uriSchemes.length === 0\n && fileAssociations.length === 0\n && this.options.customExtensionsPath === undefined) {\n return \"\"\n }\n\n let extensions = \"<Extensions>\"\n\n if (isAddAutoLaunchExtension) {\n extensions += `\n <desktop:Extension Category=\"windows.startupTask\" Executable=\"${executable}\" EntryPoint=\"Windows.FullTrustApplication\">\n <desktop:StartupTask TaskId=\"SlackStartup\" Enabled=\"true\" DisplayName=\"${displayName}\" />\n </desktop:Extension>`\n }\n\n for (const protocol of uriSchemes) {\n for (const scheme of asArray(protocol.schemes)) {\n extensions += `\n <uap:Extension Category=\"windows.protocol\">\n <uap:Protocol Name=\"${scheme}\">\n <uap:DisplayName>${protocol.name}</uap:DisplayName>\n </uap:Protocol>\n </uap:Extension>`\n }\n }\n\n for (const fileAssociation of fileAssociations) {\n for (const ext of asArray(fileAssociation.ext)) {\n extensions += `\n <uap:Extension Category=\"windows.fileTypeAssociation\">\n <uap:FileTypeAssociation Name=\"${ext}\">\n <uap:SupportedFileTypes>\n <uap:FileType>.${ext}</uap:FileType>\n </uap:SupportedFileTypes>\n </uap:FileTypeAssociation>\n </uap:Extension>`\n }\n }\n\n if (this.options.customExtensionsPath !== undefined) {\n const extensionsPath = path.resolve(this.packager.info.appDir, this.options.customExtensionsPath)\n extensions += await readFile(extensionsPath, \"utf8\")\n }\n\n extensions += \"</Extensions>\"\n return extensions\n }\n}\n\n// get the resource - language tag, see https://docs.microsoft.com/en-us/windows/uwp/globalizing/manage-language-and-region#specify-the-supported-languages-in-the-apps-manifest\nfunction resourceLanguageTag(userLanguages: Array<string> | null | undefined): string {\n if (userLanguages == null || userLanguages.length === 0) {\n userLanguages = [DEFAULT_RESOURCE_LANG]\n }\n return userLanguages.map(it => `<Resource Language=\"${it.replace(/_/g, \"-\")}\" />`).join(\"\\n\")\n}\n\nfunction lockScreenTag(userAssets: Array<string>): string {\n if (isDefaultAssetIncluded(userAssets, \"BadgeLogo.png\")) {\n return '<uap:LockScreen Notification=\"badgeAndTileText\" BadgeLogo=\"assets\\\\BadgeLogo.png\" />'\n }\n else {\n return \"\"\n }\n}\n\nfunction defaultTileTag(userAssets: Array<string>, showNameOnTiles: boolean): string {\n const defaultTiles: Array<string> = [\"<uap:DefaultTile\", 'Wide310x150Logo=\"assets\\\\Wide310x150Logo.png\"']\n\n if (isDefaultAssetIncluded(userAssets, \"LargeTile.png\")) {\n defaultTiles.push('Square310x310Logo=\"assets\\\\LargeTile.png\"')\n }\n if (isDefaultAssetIncluded(userAssets, \"SmallTile.png\")) {\n defaultTiles.push('Square71x71Logo=\"assets\\\\SmallTile.png\"')\n }\n\n if (showNameOnTiles) {\n defaultTiles.push(\">\")\n defaultTiles.push(\"<uap:ShowNameOnTiles>\")\n defaultTiles.push(\"<uap:ShowOn\", 'Tile=\"wide310x150Logo\"', \"/>\")\n defaultTiles.push(\"<uap:ShowOn\", 'Tile=\"square150x150Logo\"', \"/>\")\n defaultTiles.push(\"</uap:ShowNameOnTiles>\")\n defaultTiles.push(\"</uap:DefaultTile>\")\n } else {\n defaultTiles.push(\"/>\")\n }\n return defaultTiles.join(\" \")\n}\n\nfunction splashScreenTag(userAssets: Array<string>): string {\n if (isDefaultAssetIncluded(userAssets, \"SplashScreen.png\")) {\n return '<uap:SplashScreen Image=\"assets\\\\SplashScreen.png\" />'\n }\n else {\n return \"\"\n }\n}\n\nfunction isDefaultAssetIncluded(userAssets: Array<string>, defaultAsset: string) {\n const defaultAssetName = defaultAsset.substring(0, defaultAsset.indexOf(\".\"))\n return userAssets.some(it => it.includes(defaultAssetName))\n}\n\nfunction isScaledAssetsProvided(userAssets: Array<string>) {\n return userAssets.some(it => it.includes(\".scale-\") || it.includes(\".targetsize-\"))\n}\n"],"sourceRoot":""}
@@ -203,10 +203,10 @@ class MsiTarget extends _core().Target {
203
203
  const projectFile = stageDir.getTempFile("project.wxs");
204
204
  const objectFiles = ["project.wixobj"];
205
205
  const uiFile = commonOptions.isAssisted ? stageDir.getTempFile(ASSISTED_UI_FILE_NAME) : null;
206
- await (0, _fsExtra().writeFile)(projectFile, (await this.writeManifest(appOutDir, arch, commonOptions)));
206
+ await (0, _fsExtra().writeFile)(projectFile, await this.writeManifest(appOutDir, arch, commonOptions));
207
207
 
208
208
  if (uiFile !== null) {
209
- await (0, _fsExtra().writeFile)(uiFile, (await (0, _fsExtra().readFile)(path.join((0, _pathManager().getTemplatePath)("msi"), ASSISTED_UI_FILE_NAME), "utf8")));
209
+ await (0, _fsExtra().writeFile)(uiFile, await (0, _fsExtra().readFile)(path.join((0, _pathManager().getTemplatePath)("msi"), ASSISTED_UI_FILE_NAME), "utf8"));
210
210
  objectFiles.push(ASSISTED_UI_FILE_NAME.replace(".wxs", ".wixobj"));
211
211
  } // noinspection SpellCheckingInspection
212
212
 
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/targets/MsiTarget.ts"],"names":[],"mappings":"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","sourcesContent":["import BluebirdPromise from \"bluebird-lst\"\nimport { Arch, 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-extra\"\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 { 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 ASSISTED_UI_FILE_NAME = \"WixUI_Assisted.wxs\"\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 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 if (commonOptions.isAssisted) {\n // F*** *** *** *** *** *** *** *** *** *** *** *** *** WiX *** *** *** *** *** *** *** *** ***\n // cannot understand how to set MSIINSTALLPERUSER on radio box change. In any case installed per user.\n log.warn(`MSI DOESN'T SUPPORT assisted installer. Please use NSIS instead.`)\n }\n\n const projectFile = stageDir.getTempFile(\"project.wxs\")\n const objectFiles = [\"project.wixobj\"]\n const uiFile = commonOptions.isAssisted ? stageDir.getTempFile(ASSISTED_UI_FILE_NAME) : null\n await writeFile(projectFile, await this.writeManifest(appOutDir, arch, commonOptions))\n if (uiFile !== null) {\n await writeFile(uiFile, await readFile(path.join(getTemplatePath(\"msi\"), ASSISTED_UI_FILE_NAME), \"utf8\"))\n objectFiles.push(ASSISTED_UI_FILE_NAME.replace(\".wxs\", \".wixobj\"))\n }\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 = [\n \"-arch\", arch === Arch.ia32 ? \"x86\" : (arch === Arch.arm64 ? \"arm64\" : \"x64\"),\n `-dappDir=${vm.toVmFile(appOutDir)}`,\n ].concat(this.getCommonWixArgs())\n candleArgs.push(\"project.wxs\")\n if (uiFile !== null) {\n candleArgs.push(ASSISTED_UI_FILE_NAME)\n }\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\", 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 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 compressionLevel: compression === \"store\" ? \"none\" : \"high\",\n version: appInfo.getVersionInWeirdWindowsForm(),\n productName: appInfo.productName,\n upgradeCode: (options.upgradeCode || UUID.v5(appInfo.id, ELECTRON_BUILDER_UPGRADE_CODE_NS_UUID)).toUpperCase(),\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.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 }\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 }\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=\"icon.ico\"/>\\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=\"icon.ico\">\\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 }\n else {\n result += `/>`\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"],"sourceRoot":""}
1
+ {"version":3,"sources":["../../src/targets/MsiTarget.ts"],"names":[],"mappings":"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","sourcesContent":["import BluebirdPromise from \"bluebird-lst\"\nimport { Arch, 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-extra\"\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 { 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 ASSISTED_UI_FILE_NAME = \"WixUI_Assisted.wxs\"\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 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 if (commonOptions.isAssisted) {\n // F*** *** *** *** *** *** *** *** *** *** *** *** *** WiX *** *** *** *** *** *** *** *** ***\n // cannot understand how to set MSIINSTALLPERUSER on radio box change. In any case installed per user.\n log.warn(`MSI DOESN'T SUPPORT assisted installer. Please use NSIS instead.`)\n }\n\n const projectFile = stageDir.getTempFile(\"project.wxs\")\n const objectFiles = [\"project.wixobj\"]\n const uiFile = commonOptions.isAssisted ? stageDir.getTempFile(ASSISTED_UI_FILE_NAME) : null\n await writeFile(projectFile, await this.writeManifest(appOutDir, arch, commonOptions))\n if (uiFile !== null) {\n await writeFile(uiFile, await readFile(path.join(getTemplatePath(\"msi\"), ASSISTED_UI_FILE_NAME), \"utf8\"))\n objectFiles.push(ASSISTED_UI_FILE_NAME.replace(\".wxs\", \".wixobj\"))\n }\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 = [\n \"-arch\", arch === Arch.ia32 ? \"x86\" : (arch === Arch.arm64 ? \"arm64\" : \"x64\"),\n `-dappDir=${vm.toVmFile(appOutDir)}`,\n ].concat(this.getCommonWixArgs())\n candleArgs.push(\"project.wxs\")\n if (uiFile !== null) {\n candleArgs.push(ASSISTED_UI_FILE_NAME)\n }\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\", 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 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 compressionLevel: compression === \"store\" ? \"none\" : \"high\",\n version: appInfo.getVersionInWeirdWindowsForm(),\n productName: appInfo.productName,\n upgradeCode: (options.upgradeCode || UUID.v5(appInfo.id, ELECTRON_BUILDER_UPGRADE_CODE_NS_UUID)).toUpperCase(),\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.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 }\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 }\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=\"icon.ico\"/>\\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=\"icon.ico\">\\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 }\n else {\n result += `/>`\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"],"sourceRoot":""}
@@ -85,7 +85,7 @@ async function tar(compression, format, outFile, dirToArchive, isMacApp, tempDir
85
85
  let lzipPath = "lzip";
86
86
 
87
87
  if (process.platform === "darwin") {
88
- lzipPath = path.join((await (0, _tools().getLinuxToolsPath)()), "bin", lzipPath);
88
+ lzipPath = path.join(await (0, _tools().getLinuxToolsPath)(), "bin", lzipPath);
89
89
  }
90
90
 
91
91
  await (0, _builderUtil().exec)(lzipPath, [compression === "store" ? "-1" : "-9", "--keep"
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/targets/archive.ts"],"names":[],"mappings":"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","sourcesContent":["import { path7za } from \"7zip-bin\"\nimport { debug7z, exec } from \"builder-util\"\nimport { exists, unlinkIfExists } from \"builder-util/out/fs\"\nimport { move } from \"fs-extra\"\nimport * as path from \"path\"\nimport { TmpDir } from \"temp-file\"\nimport { CompressionLevel } from \"../core\"\nimport { getLinuxToolsPath } from \"./tools\"\n\n/** @internal */\nexport async function tar(compression: CompressionLevel | any | any, format: string, outFile: string, dirToArchive: string, isMacApp: boolean, tempDirManager: TmpDir): Promise<void> {\n const tarFile = await tempDirManager.getTempFile({suffix: \".tar\"})\n const tarArgs = debug7zArgs(\"a\")\n tarArgs.push(tarFile)\n tarArgs.push(path.basename(dirToArchive))\n\n await Promise.all([\n exec(path7za, tarArgs, {cwd: path.dirname(dirToArchive)}),\n // remove file before - 7z doesn't overwrite file, but update\n unlinkIfExists(outFile),\n ])\n\n if (!isMacApp) {\n await exec(path7za, [\"rn\", tarFile, path.basename(dirToArchive), path.basename(outFile, `.${format}`)])\n }\n\n if (format === \"tar.lz\") {\n // noinspection SpellCheckingInspection\n let lzipPath = \"lzip\"\n if (process.platform === \"darwin\") {\n lzipPath = path.join(await getLinuxToolsPath(), \"bin\", lzipPath)\n }\n await exec(lzipPath, [compression === \"store\" ? \"-1\" : \"-9\", \"--keep\" /* keep (don't delete) input files */, tarFile])\n // bloody lzip creates file in the same dir where input file with postfix `.lz`, option --output doesn't work\n await move(`${tarFile}.lz`, outFile)\n return\n }\n\n const args = compute7zCompressArgs(format === \"tar.xz\" ? \"xz\" : (format === \"tar.bz2\" ? \"bzip2\" : \"gzip\"), {\n isRegularFile: true,\n method: \"DEFAULT\",\n compression,\n })\n args.push(outFile, tarFile)\n await exec(path7za, args, {\n cwd: path.dirname(dirToArchive),\n }, debug7z.enabled)\n}\n\nexport interface ArchiveOptions {\n compression?: CompressionLevel | null\n\n /**\n * @default false\n */\n withoutDir?: boolean\n\n /**\n * @default true\n */\n solid?: boolean\n\n /**\n * @default true\n */\n isArchiveHeaderCompressed?: boolean\n\n dictSize?: number\n excluded?: Array<string> | null\n\n // DEFAULT allows to disable custom logic and do not pass method switch at all\n method?: \"Copy\" | \"LZMA\" | \"Deflate\" | \"DEFAULT\"\n\n isRegularFile?: boolean\n}\n\nexport function compute7zCompressArgs(format: string, options: ArchiveOptions = {}) {\n let storeOnly = options.compression === \"store\"\n const args = debug7zArgs(\"a\")\n\n let isLevelSet = false\n if (process.env.ELECTRON_BUILDER_COMPRESSION_LEVEL != null) {\n storeOnly = false\n args.push(`-mx=${process.env.ELECTRON_BUILDER_COMPRESSION_LEVEL}`)\n isLevelSet = true\n }\n\n const isZip = format === \"zip\"\n if (!storeOnly) {\n if (isZip && options.compression === \"maximum\") {\n // http://superuser.com/a/742034\n args.push(\"-mfb=258\", \"-mpass=15\")\n }\n\n if (!isLevelSet) {\n // https://github.com/electron-userland/electron-builder/pull/3032\n args.push(\"-mx=\" + ((!isZip || options.compression === \"maximum\") ? \"9\" : \"7\"))\n }\n }\n\n if (options.dictSize != null) {\n args.push(`-md=${options.dictSize}m`)\n }\n\n // https://sevenzip.osdn.jp/chm/cmdline/switches/method.htm#7Z\n // https://stackoverflow.com/questions/27136783/7zip-produces-different-output-from-identical-input\n // tc and ta are off by default, but to be sure, we explicitly set it to off\n // disable \"Stores NTFS timestamps for files: Modification time, Creation time, Last access time.\" to produce the same archive for the same data\n if (!options.isRegularFile) {\n args.push(\"-mtc=off\")\n }\n\n if (format === \"7z\" || format.endsWith(\".7z\")) {\n if (options.solid === false) {\n args.push(\"-ms=off\")\n }\n\n if (options.isArchiveHeaderCompressed === false) {\n args.push(\"-mhc=off\")\n }\n\n // args valid only for 7z\n // -mtm=off disable \"Stores last Modified timestamps for files.\"\n args.push(\"-mtm=off\", \"-mta=off\")\n }\n\n if (options.method != null) {\n if (options.method !== \"DEFAULT\") {\n args.push(`-mm=${options.method}`)\n }\n }\n else if (isZip || storeOnly) {\n args.push(`-mm=${storeOnly ? \"Copy\" : \"Deflate\"}`)\n }\n\n if (isZip) {\n // -mcu switch: 7-Zip uses UTF-8, if there are non-ASCII symbols.\n // because default mode: 7-Zip uses UTF-8, if the local code page doesn't contain required symbols.\n // but archive should be the same regardless where produced\n args.push(\"-mcu\")\n }\n return args\n}\n\n// 7z is very fast, so, use ultra compression\n/** @internal */\nexport async function archive(format: string, outFile: string, dirToArchive: string, options: ArchiveOptions = {}): Promise<string> {\n const args = compute7zCompressArgs(format, options)\n // remove file before - 7z doesn't overwrite file, but update\n await unlinkIfExists(outFile)\n\n args.push(outFile, options.withoutDir ? \".\" : path.basename(dirToArchive))\n if (options.excluded != null) {\n for (const mask of options.excluded) {\n args.push(`-xr!${mask}`)\n }\n }\n\n try {\n await exec(path7za, args, {\n cwd: options.withoutDir ? dirToArchive : path.dirname(dirToArchive),\n }, debug7z.enabled)\n }\n catch (e) {\n if (e.code === \"ENOENT\" && !(await exists(dirToArchive))) {\n throw new Error(`Cannot create archive: \"${dirToArchive}\" doesn't exist`)\n }\n else {\n throw e\n }\n }\n\n return outFile\n}\n\nfunction debug7zArgs(command: \"a\" | \"x\"): Array<string> {\n const args = [command, \"-bd\"]\n if (debug7z.enabled) {\n args.push(\"-bb\")\n }\n return args\n}"],"sourceRoot":""}
1
+ {"version":3,"sources":["../../src/targets/archive.ts"],"names":[],"mappings":"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","sourcesContent":["import { path7za } from \"7zip-bin\"\nimport { debug7z, exec } from \"builder-util\"\nimport { exists, unlinkIfExists } from \"builder-util/out/fs\"\nimport { move } from \"fs-extra\"\nimport * as path from \"path\"\nimport { TmpDir } from \"temp-file\"\nimport { CompressionLevel } from \"../core\"\nimport { getLinuxToolsPath } from \"./tools\"\n\n/** @internal */\nexport async function tar(compression: CompressionLevel | any | any, format: string, outFile: string, dirToArchive: string, isMacApp: boolean, tempDirManager: TmpDir): Promise<void> {\n const tarFile = await tempDirManager.getTempFile({suffix: \".tar\"})\n const tarArgs = debug7zArgs(\"a\")\n tarArgs.push(tarFile)\n tarArgs.push(path.basename(dirToArchive))\n\n await Promise.all([\n exec(path7za, tarArgs, {cwd: path.dirname(dirToArchive)}),\n // remove file before - 7z doesn't overwrite file, but update\n unlinkIfExists(outFile),\n ])\n\n if (!isMacApp) {\n await exec(path7za, [\"rn\", tarFile, path.basename(dirToArchive), path.basename(outFile, `.${format}`)])\n }\n\n if (format === \"tar.lz\") {\n // noinspection SpellCheckingInspection\n let lzipPath = \"lzip\"\n if (process.platform === \"darwin\") {\n lzipPath = path.join(await getLinuxToolsPath(), \"bin\", lzipPath)\n }\n await exec(lzipPath, [compression === \"store\" ? \"-1\" : \"-9\", \"--keep\" /* keep (don't delete) input files */, tarFile])\n // bloody lzip creates file in the same dir where input file with postfix `.lz`, option --output doesn't work\n await move(`${tarFile}.lz`, outFile)\n return\n }\n\n const args = compute7zCompressArgs(format === \"tar.xz\" ? \"xz\" : (format === \"tar.bz2\" ? \"bzip2\" : \"gzip\"), {\n isRegularFile: true,\n method: \"DEFAULT\",\n compression,\n })\n args.push(outFile, tarFile)\n await exec(path7za, args, {\n cwd: path.dirname(dirToArchive),\n }, debug7z.enabled)\n}\n\nexport interface ArchiveOptions {\n compression?: CompressionLevel | null\n\n /**\n * @default false\n */\n withoutDir?: boolean\n\n /**\n * @default true\n */\n solid?: boolean\n\n /**\n * @default true\n */\n isArchiveHeaderCompressed?: boolean\n\n dictSize?: number\n excluded?: Array<string> | null\n\n // DEFAULT allows to disable custom logic and do not pass method switch at all\n method?: \"Copy\" | \"LZMA\" | \"Deflate\" | \"DEFAULT\"\n\n isRegularFile?: boolean\n}\n\nexport function compute7zCompressArgs(format: string, options: ArchiveOptions = {}) {\n let storeOnly = options.compression === \"store\"\n const args = debug7zArgs(\"a\")\n\n let isLevelSet = false\n if (process.env.ELECTRON_BUILDER_COMPRESSION_LEVEL != null) {\n storeOnly = false\n args.push(`-mx=${process.env.ELECTRON_BUILDER_COMPRESSION_LEVEL}`)\n isLevelSet = true\n }\n\n const isZip = format === \"zip\"\n if (!storeOnly) {\n if (isZip && options.compression === \"maximum\") {\n // http://superuser.com/a/742034\n args.push(\"-mfb=258\", \"-mpass=15\")\n }\n\n if (!isLevelSet) {\n // https://github.com/electron-userland/electron-builder/pull/3032\n args.push(\"-mx=\" + ((!isZip || options.compression === \"maximum\") ? \"9\" : \"7\"))\n }\n }\n\n if (options.dictSize != null) {\n args.push(`-md=${options.dictSize}m`)\n }\n\n // https://sevenzip.osdn.jp/chm/cmdline/switches/method.htm#7Z\n // https://stackoverflow.com/questions/27136783/7zip-produces-different-output-from-identical-input\n // tc and ta are off by default, but to be sure, we explicitly set it to off\n // disable \"Stores NTFS timestamps for files: Modification time, Creation time, Last access time.\" to produce the same archive for the same data\n if (!options.isRegularFile) {\n args.push(\"-mtc=off\")\n }\n\n if (format === \"7z\" || format.endsWith(\".7z\")) {\n if (options.solid === false) {\n args.push(\"-ms=off\")\n }\n\n if (options.isArchiveHeaderCompressed === false) {\n args.push(\"-mhc=off\")\n }\n\n // args valid only for 7z\n // -mtm=off disable \"Stores last Modified timestamps for files.\"\n args.push(\"-mtm=off\", \"-mta=off\")\n }\n\n if (options.method != null) {\n if (options.method !== \"DEFAULT\") {\n args.push(`-mm=${options.method}`)\n }\n }\n else if (isZip || storeOnly) {\n args.push(`-mm=${storeOnly ? \"Copy\" : \"Deflate\"}`)\n }\n\n if (isZip) {\n // -mcu switch: 7-Zip uses UTF-8, if there are non-ASCII symbols.\n // because default mode: 7-Zip uses UTF-8, if the local code page doesn't contain required symbols.\n // but archive should be the same regardless where produced\n args.push(\"-mcu\")\n }\n return args\n}\n\n// 7z is very fast, so, use ultra compression\n/** @internal */\nexport async function archive(format: string, outFile: string, dirToArchive: string, options: ArchiveOptions = {}): Promise<string> {\n const args = compute7zCompressArgs(format, options)\n // remove file before - 7z doesn't overwrite file, but update\n await unlinkIfExists(outFile)\n\n args.push(outFile, options.withoutDir ? \".\" : path.basename(dirToArchive))\n if (options.excluded != null) {\n for (const mask of options.excluded) {\n args.push(`-xr!${mask}`)\n }\n }\n\n try {\n await exec(path7za, args, {\n cwd: options.withoutDir ? dirToArchive : path.dirname(dirToArchive),\n }, debug7z.enabled)\n }\n catch (e) {\n if (e.code === \"ENOENT\" && !(await exists(dirToArchive))) {\n throw new Error(`Cannot create archive: \"${dirToArchive}\" doesn't exist`)\n }\n else {\n throw e\n }\n }\n\n return outFile\n}\n\nfunction debug7zArgs(command: \"a\" | \"x\"): Array<string> {\n const args = [command, \"-bd\"]\n if (debug7z.enabled) {\n args.push(\"-bb\")\n }\n return args\n}"],"sourceRoot":""}
@@ -243,7 +243,7 @@ class FpmTarget extends _core().Target {
243
243
  const options = this.options;
244
244
  const synopsis = options.synopsis;
245
245
  const args = ["--architecture", (0, _builderUtil().toLinuxArchString)(arch, target), "--name", appInfo.linuxPackageName, "--after-install", scripts[0], "--after-remove", scripts[1], "--description", (0, _appInfo().smarten)(target === "rpm" ? this.helper.getDescription(options) : `${synopsis || ""}\n ${this.helper.getDescription(options)}`), "--version", appInfo.version, "--package", artifactPath];
246
- (0, _appBuilder().objectToArgs)(args, (await this.computeFpmMetaInfoOptions()));
246
+ (0, _appBuilder().objectToArgs)(args, await this.computeFpmMetaInfoOptions());
247
247
  const packageCategory = options.packageCategory;
248
248
 
249
249
  if (packageCategory != null) {
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/targets/fpm.ts"],"names":[],"mappings":"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","sourcesContent":["import { path7za } from \"7zip-bin\"\nimport { Arch, executeAppBuilder, log, TmpDir, toLinuxArchString, use } from \"builder-util\"\nimport { unlinkIfExists } from \"builder-util/out/fs\"\nimport { ensureDir, outputFile, readFile } from \"fs-extra\"\nimport * as path from \"path\"\nimport { DebOptions, LinuxTargetSpecificOptions } from \"..\"\nimport { smarten } from \"../appInfo\"\nimport { Target } from \"../core\"\nimport * as errorMessages from \"../errorMessages\"\nimport { LinuxPackager } from \"../linuxPackager\"\nimport { objectToArgs } from \"../util/appBuilder\"\nimport { computeEnv } from \"../util/bundledTool\"\nimport { isMacOsSierra } from \"../util/macosVersion\"\nimport { getTemplatePath } from \"../util/pathManager\"\nimport { installPrefix, LinuxTargetHelper } from \"./LinuxTargetHelper\"\nimport { getLinuxToolsPath } from \"./tools\"\n\ninterface FpmOptions {\n maintainer: string | undefined\n vendor: string\n url: string\n}\n\nexport default class FpmTarget extends Target {\n readonly options: LinuxTargetSpecificOptions = {...this.packager.platformSpecificBuildOptions, ...(this.packager.config as any)[this.name]}\n\n private readonly scriptFiles: Promise<Array<string>>\n\n constructor(name: string, private readonly packager: LinuxPackager, private readonly helper: LinuxTargetHelper, readonly outDir: string) {\n super(name, false)\n\n this.scriptFiles = this.createScripts()\n }\n\n private async createScripts(): Promise<Array<string>> {\n const defaultTemplatesDir = getTemplatePath(\"linux\")\n\n const packager = this.packager\n const templateOptions = {\n // old API compatibility\n executable: packager.executableName,\n productFilename: packager.appInfo.productFilename, ...packager.platformSpecificBuildOptions}\n\n function getResource(value: string | null | undefined, defaultFile: string) {\n if (value == null) {\n return path.join(defaultTemplatesDir, defaultFile)\n }\n return path.resolve(packager.projectDir, value)\n }\n\n return await Promise.all<string>([\n writeConfigFile(packager.info.tempDirManager, getResource(this.options.afterInstall, \"after-install.tpl\"), templateOptions),\n writeConfigFile(packager.info.tempDirManager, getResource(this.options.afterRemove, \"after-remove.tpl\"), templateOptions)\n ])\n }\n\n checkOptions(): Promise<any> {\n return this.computeFpmMetaInfoOptions()\n }\n\n private async computeFpmMetaInfoOptions(): Promise<FpmOptions> {\n const packager = this.packager\n const projectUrl = await packager.appInfo.computePackageUrl()\n const errors: Array<string> = []\n if (projectUrl == null) {\n errors.push(\"Please specify project homepage, see https://electron.build/configuration/configuration#Metadata-homepage\")\n }\n\n const options = this.options\n let author = options.maintainer\n if (author == null) {\n const a = packager.info.metadata.author\n if (a == null || a.email == null) {\n errors.push(errorMessages.authorEmailIsMissed)\n }\n else {\n author = `${a.name} <${a.email}>`\n }\n }\n\n if (errors.length > 0) {\n throw new Error(errors.join(\"\\n\\n\"))\n }\n\n return {\n maintainer: author!!,\n url: projectUrl!!,\n vendor: options.vendor || author!!,\n }\n }\n\n async build(appOutDir: string, arch: Arch): Promise<any> {\n const target = this.name\n\n // tslint:disable:no-invalid-template-strings\n let nameFormat = \"${name}-${version}-${arch}.${ext}\"\n let isUseArchIfX64 = false\n if (target === \"deb\") {\n nameFormat = \"${name}_${version}_${arch}.${ext}\"\n isUseArchIfX64 = true\n }\n else if (target === \"rpm\") {\n nameFormat = \"${name}-${version}.${arch}.${ext}\"\n isUseArchIfX64 = true\n }\n\n const packager = this.packager\n const artifactPath = path.join(this.outDir, packager.expandArtifactNamePattern(this.options, target, arch, nameFormat, !isUseArchIfX64))\n\n await packager.info.callArtifactBuildStarted({\n targetPresentableName: target,\n file: artifactPath,\n arch,\n })\n\n await unlinkIfExists(artifactPath)\n if (packager.packagerOptions.prepackaged != null) {\n await ensureDir(this.outDir)\n }\n\n const scripts = await this.scriptFiles\n const appInfo = packager.appInfo\n const options = this.options\n const synopsis = options.synopsis\n const args = [\n \"--architecture\", toLinuxArchString(arch, target),\n \"--name\", appInfo.linuxPackageName,\n \"--after-install\", scripts[0],\n \"--after-remove\", scripts[1],\n \"--description\", smarten(target === \"rpm\" ? this.helper.getDescription(options)! : `${synopsis || \"\"}\\n ${this.helper.getDescription(options)}`),\n \"--version\", appInfo.version,\n \"--package\", artifactPath,\n ]\n\n objectToArgs(args, await this.computeFpmMetaInfoOptions() as any)\n\n const packageCategory = options.packageCategory\n if (packageCategory != null) {\n args.push(\"--category\", packageCategory)\n }\n\n if (target === \"deb\") {\n use((options as DebOptions).priority, it => args.push(\"--deb-priority\", it!))\n }\n else if (target === \"rpm\") {\n if (synopsis != null) {\n args.push(\"--rpm-summary\", smarten(synopsis))\n }\n }\n\n const fpmConfiguration: FpmConfiguration = {\n args, target,\n }\n\n if (options.compression != null) {\n fpmConfiguration.compression = options.compression\n }\n\n // noinspection JSDeprecatedSymbols\n const depends = options.depends\n if (depends != null) {\n if (Array.isArray(depends)) {\n fpmConfiguration.customDepends = depends\n }\n else {\n // noinspection SuspiciousTypeOfGuard\n if (typeof depends === \"string\") {\n fpmConfiguration.customDepends = [depends as string]\n }\n else {\n throw new Error(`depends must be Array or String, but specified as: ${depends}`)\n }\n }\n }\n\n use(packager.info.metadata.license, it => args.push(\"--license\", it!))\n use(appInfo.buildNumber, it => args.push(\"--iteration\", it!))\n\n use(options.fpm, it => args.push(...it as any))\n\n args.push(`${appOutDir}/=${installPrefix}/${appInfo.productFilename}`)\n for (const icon of (await this.helper.icons)) {\n const extWithDot = path.extname(icon.file)\n const sizeName = extWithDot === \".svg\" ? \"scalable\" : `${icon.size}x${icon.size}`\n args.push(`${icon.file}=/usr/share/icons/hicolor/${sizeName}/apps/${packager.executableName}${extWithDot}`)\n }\n\n const mimeTypeFilePath = await this.helper.mimeTypeFiles\n if (mimeTypeFilePath != null) {\n args.push(`${mimeTypeFilePath}=/usr/share/mime/packages/${packager.executableName}.xml`)\n }\n\n const desktopFilePath = await this.helper.writeDesktopEntry(this.options)\n args.push(`${desktopFilePath}=/usr/share/applications/${packager.executableName}.desktop`)\n\n if (packager.packagerOptions.effectiveOptionComputed != null && await packager.packagerOptions.effectiveOptionComputed([args, desktopFilePath])) {\n return\n }\n\n const env = {\n ...process.env,\n SZA_PATH: path7za,\n SZA_COMPRESSION_LEVEL: packager.compression === \"store\" ? \"0\" : \"9\",\n }\n\n // rpmbuild wants directory rpm with some default config files. Even if we can use dylibbundler, path to such config files are not changed (we need to replace in the binary)\n // so, for now, brew install rpm is still required.\n if (target !== \"rpm\" && await isMacOsSierra()) {\n const linuxToolsPath = await getLinuxToolsPath()\n Object.assign(env, {\n PATH: computeEnv(process.env.PATH, [path.join(linuxToolsPath, \"bin\")]),\n DYLD_LIBRARY_PATH: computeEnv(process.env.DYLD_LIBRARY_PATH, [path.join(linuxToolsPath, \"lib\")]),\n })\n }\n\n await executeAppBuilder([\"fpm\", \"--configuration\", JSON.stringify(fpmConfiguration)], undefined, {env})\n\n await packager.dispatchArtifactCreated(artifactPath, this, arch)\n }\n}\n\ninterface FpmConfiguration {\n target: string\n args: Array<string>\n customDepends?: Array<string>\n compression?: string | null\n}\n\nasync function writeConfigFile(tmpDir: TmpDir, templatePath: string, options: any): Promise<string> {\n //noinspection JSUnusedLocalSymbols\n function replacer(match: string, p1: string) {\n if (p1 in options) {\n return options[p1]\n }\n else {\n throw new Error(`Macro ${p1} is not defined`)\n }\n }\n const config = (await readFile(templatePath, \"utf8\"))\n .replace(/\\${([a-zA-Z]+)}/g, replacer)\n .replace(/<%=([a-zA-Z]+)%>/g, (match, p1) => {\n log.warn(\"<%= varName %> is deprecated, please use ${varName} instead\")\n return replacer(match, p1.trim())\n })\n\n const outputPath = await tmpDir.getTempFile({suffix: path.basename(templatePath, \".tpl\")})\n await outputFile(outputPath, config)\n return outputPath\n}\n"],"sourceRoot":""}
1
+ {"version":3,"sources":["../../src/targets/fpm.ts"],"names":[],"mappings":";;;;;;;AAAA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AACA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AACA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AACA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AACA;;AAEA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AACA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AACA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AAEA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AACA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AACA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AACA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AACA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AACA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;;;;;AAQc,MAAO,SAAP,SAAyB,cAAzB,CAA+B;AAK3C,EAAA,WAAA,CAAY,IAAZ,EAA2C,QAA3C,EAAqF,MAArF,EAAyH,MAAzH,EAAuI;AACrI,UAAM,IAAN,EAAY,KAAZ;AADyC,SAAA,QAAA,GAAA,QAAA;AAA0C,SAAA,MAAA,GAAA,MAAA;AAAoC,SAAA,MAAA,GAAA,MAAA;AAJhH,SAAA,OAAA,GAAsC,EAAC,GAAG,KAAK,QAAL,CAAc,4BAAlB;AAAgD,SAAI,KAAK,QAAL,CAAc,MAAd,CAA6B,KAAK,IAAlC;AAApD,KAAtC;AAOP,SAAK,WAAL,GAAmB,KAAK,aAAL,EAAnB;AACD;;AAEO,QAAM,aAAN,GAAmB;AACzB,UAAM,mBAAmB,GAAG,oCAAgB,OAAhB,CAA5B;AAEA,UAAM,QAAQ,GAAG,KAAK,QAAtB;AACA,UAAM,eAAe,GAAG;AACtB;AACA,MAAA,UAAU,EAAE,QAAQ,CAAC,cAFC;AAGtB,MAAA,eAAe,EAAE,QAAQ,CAAC,OAAT,CAAiB,eAHZ;AAG6B,SAAG,QAAQ,CAAC;AAHzC,KAAxB;;AAKA,aAAS,WAAT,CAAqB,KAArB,EAAuD,WAAvD,EAA0E;AACxE,UAAI,KAAK,IAAI,IAAb,EAAmB;AACjB,eAAO,IAAI,CAAC,IAAL,CAAU,mBAAV,EAA+B,WAA/B,CAAP;AACD;;AACD,aAAO,IAAI,CAAC,OAAL,CAAa,QAAQ,CAAC,UAAtB,EAAkC,KAAlC,CAAP;AACD;;AAED,WAAO,MAAM,OAAO,CAAC,GAAR,CAAoB,CAC/B,eAAe,CAAC,QAAQ,CAAC,IAAT,CAAc,cAAf,EAA+B,WAAW,CAAC,KAAK,OAAL,CAAa,YAAd,EAA4B,mBAA5B,CAA1C,EAA4F,eAA5F,CADgB,EAE/B,eAAe,CAAC,QAAQ,CAAC,IAAT,CAAc,cAAf,EAA+B,WAAW,CAAC,KAAK,OAAL,CAAa,WAAd,EAA2B,kBAA3B,CAA1C,EAA0F,eAA1F,CAFgB,CAApB,CAAb;AAID;;AAED,EAAA,YAAY,GAAA;AACV,WAAO,KAAK,yBAAL,EAAP;AACD;;AAEO,QAAM,yBAAN,GAA+B;AACrC,UAAM,QAAQ,GAAG,KAAK,QAAtB;AACA,UAAM,UAAU,GAAG,MAAM,QAAQ,CAAC,OAAT,CAAiB,iBAAjB,EAAzB;AACA,UAAM,MAAM,GAAkB,EAA9B;;AACA,QAAI,UAAU,IAAI,IAAlB,EAAwB;AACtB,MAAA,MAAM,CAAC,IAAP,CAAY,2GAAZ;AACD;;AAED,UAAM,OAAO,GAAG,KAAK,OAArB;AACA,QAAI,MAAM,GAAG,OAAO,CAAC,UAArB;;AACA,QAAI,MAAM,IAAI,IAAd,EAAoB;AAClB,YAAM,CAAC,GAAG,QAAQ,CAAC,IAAT,CAAc,QAAd,CAAuB,MAAjC;;AACA,UAAI,CAAC,IAAI,IAAL,IAAa,CAAC,CAAC,KAAF,IAAW,IAA5B,EAAkC;AAChC,QAAA,MAAM,CAAC,IAAP,CAAY,aAAa,GAAC,mBAA1B;AACD,OAFD,MAGK;AACH,QAAA,MAAM,GAAG,GAAG,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,KAAK,GAA9B;AACD;AACF;;AAED,QAAI,MAAM,CAAC,MAAP,GAAgB,CAApB,EAAuB;AACrB,YAAM,IAAI,KAAJ,CAAU,MAAM,CAAC,IAAP,CAAY,MAAZ,CAAV,CAAN;AACD;;AAED,WAAO;AACL,MAAA,UAAU,EAAE,MADP;AAEL,MAAA,GAAG,EAAE,UAFA;AAGL,MAAA,MAAM,EAAE,OAAO,CAAC,MAAR,IAAkB;AAHrB,KAAP;AAKD;;AAED,QAAM,KAAN,CAAY,SAAZ,EAA+B,IAA/B,EAAyC;AACvC,UAAM,MAAM,GAAG,KAAK,IAApB,CADuC,CAGvC;;AACA,QAAI,UAAU,GAAG,mCAAjB;AACA,QAAI,cAAc,GAAG,KAArB;;AACA,QAAI,MAAM,KAAK,KAAf,EAAsB;AACpB,MAAA,UAAU,GAAG,mCAAb;AACA,MAAA,cAAc,GAAG,IAAjB;AACD,KAHD,MAIK,IAAI,MAAM,KAAK,KAAf,EAAsB;AACzB,MAAA,UAAU,GAAG,mCAAb;AACA,MAAA,cAAc,GAAG,IAAjB;AACD;;AAED,UAAM,QAAQ,GAAG,KAAK,QAAtB;AACA,UAAM,YAAY,GAAG,IAAI,CAAC,IAAL,CAAU,KAAK,MAAf,EAAuB,QAAQ,CAAC,yBAAT,CAAmC,KAAK,OAAxC,EAAiD,MAAjD,EAAyD,IAAzD,EAA+D,UAA/D,EAA2E,CAAC,cAA5E,CAAvB,CAArB;AAEA,UAAM,QAAQ,CAAC,IAAT,CAAc,wBAAd,CAAuC;AAC3C,MAAA,qBAAqB,EAAE,MADoB;AAE3C,MAAA,IAAI,EAAE,YAFqC;AAG3C,MAAA;AAH2C,KAAvC,CAAN;AAMA,UAAM,0BAAe,YAAf,CAAN;;AACA,QAAI,QAAQ,CAAC,eAAT,CAAyB,WAAzB,IAAwC,IAA5C,EAAkD;AAChD,YAAM,0BAAU,KAAK,MAAf,CAAN;AACD;;AAED,UAAM,OAAO,GAAG,MAAM,KAAK,WAA3B;AACA,UAAM,OAAO,GAAG,QAAQ,CAAC,OAAzB;AACA,UAAM,OAAO,GAAG,KAAK,OAArB;AACA,UAAM,QAAQ,GAAG,OAAO,CAAC,QAAzB;AACA,UAAM,IAAI,GAAG,CACX,gBADW,EACO,sCAAkB,IAAlB,EAAwB,MAAxB,CADP,EAEX,QAFW,EAED,OAAO,CAAC,gBAFP,EAGX,iBAHW,EAGQ,OAAO,CAAC,CAAD,CAHf,EAIX,gBAJW,EAIO,OAAO,CAAC,CAAD,CAJd,EAKX,eALW,EAKM,wBAAQ,MAAM,KAAK,KAAX,GAAmB,KAAK,MAAL,CAAY,cAAZ,CAA2B,OAA3B,CAAnB,GAA0D,GAAG,QAAQ,IAAI,EAAE,MAAM,KAAK,MAAL,CAAY,cAAZ,CAA2B,OAA3B,CAAmC,EAA5H,CALN,EAMX,WANW,EAME,OAAO,CAAC,OANV,EAOX,WAPW,EAOE,YAPF,CAAb;AAUA,oCAAa,IAAb,EAAmB,MAAM,KAAK,yBAAL,EAAzB;AAEA,UAAM,eAAe,GAAG,OAAO,CAAC,eAAhC;;AACA,QAAI,eAAe,IAAI,IAAvB,EAA6B;AAC3B,MAAA,IAAI,CAAC,IAAL,CAAU,YAAV,EAAwB,eAAxB;AACD;;AAED,QAAI,MAAM,KAAK,KAAf,EAAsB;AACpB,8BAAK,OAAsB,CAAC,QAA5B,EAAsC,EAAE,IAAI,IAAI,CAAC,IAAL,CAAU,gBAAV,EAA4B,EAA5B,CAA5C;AACD,KAFD,MAGK,IAAI,MAAM,KAAK,KAAf,EAAsB;AACzB,UAAI,QAAQ,IAAI,IAAhB,EAAsB;AACpB,QAAA,IAAI,CAAC,IAAL,CAAU,eAAV,EAA2B,wBAAQ,QAAR,CAA3B;AACD;AACF;;AAED,UAAM,gBAAgB,GAAqB;AACzC,MAAA,IADyC;AACnC,MAAA;AADmC,KAA3C;;AAIA,QAAI,OAAO,CAAC,WAAR,IAAuB,IAA3B,EAAiC;AAC/B,MAAA,gBAAgB,CAAC,WAAjB,GAA+B,OAAO,CAAC,WAAvC;AACD,KAjEsC,CAmEvC;;;AACA,UAAM,OAAO,GAAG,OAAO,CAAC,OAAxB;;AACA,QAAI,OAAO,IAAI,IAAf,EAAqB;AACnB,UAAI,KAAK,CAAC,OAAN,CAAc,OAAd,CAAJ,EAA4B;AAC1B,QAAA,gBAAgB,CAAC,aAAjB,GAAiC,OAAjC;AACD,OAFD,MAGK;AACH;AACA,YAAI,OAAO,OAAP,KAAmB,QAAvB,EAAiC;AAC/B,UAAA,gBAAgB,CAAC,aAAjB,GAAiC,CAAC,OAAD,CAAjC;AACD,SAFD,MAGK;AACH,gBAAM,IAAI,KAAJ,CAAU,sDAAsD,OAAO,EAAvE,CAAN;AACD;AACF;AACF;;AAED,4BAAI,QAAQ,CAAC,IAAT,CAAc,QAAd,CAAuB,OAA3B,EAAoC,EAAE,IAAI,IAAI,CAAC,IAAL,CAAU,WAAV,EAAuB,EAAvB,CAA1C;AACA,4BAAI,OAAO,CAAC,WAAZ,EAAyB,EAAE,IAAI,IAAI,CAAC,IAAL,CAAU,aAAV,EAAyB,EAAzB,CAA/B;AAEA,4BAAI,OAAO,CAAC,GAAZ,EAAiB,EAAE,IAAI,IAAI,CAAC,IAAL,CAAU,GAAG,EAAb,CAAvB;AAEA,IAAA,IAAI,CAAC,IAAL,CAAU,GAAG,SAAS,KAAK,kCAAa,IAAI,OAAO,CAAC,eAAe,EAAnE;;AACA,SAAK,MAAM,IAAX,IAAoB,MAAM,KAAK,MAAL,CAAY,KAAtC,EAA8C;AAC5C,YAAM,UAAU,GAAG,IAAI,CAAC,OAAL,CAAa,IAAI,CAAC,IAAlB,CAAnB;AACA,YAAM,QAAQ,GAAG,UAAU,KAAK,MAAf,GAAwB,UAAxB,GAAqC,GAAG,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,EAA/E;AACA,MAAA,IAAI,CAAC,IAAL,CAAU,GAAG,IAAI,CAAC,IAAI,6BAA6B,QAAQ,SAAS,QAAQ,CAAC,cAAc,GAAG,UAAU,EAAxG;AACD;;AAED,UAAM,gBAAgB,GAAG,MAAM,KAAK,MAAL,CAAY,aAA3C;;AACA,QAAI,gBAAgB,IAAI,IAAxB,EAA8B;AAC5B,MAAA,IAAI,CAAC,IAAL,CAAU,GAAG,gBAAgB,6BAA6B,QAAQ,CAAC,cAAc,MAAjF;AACD;;AAED,UAAM,eAAe,GAAG,MAAM,KAAK,MAAL,CAAY,iBAAZ,CAA8B,KAAK,OAAnC,CAA9B;AACA,IAAA,IAAI,CAAC,IAAL,CAAU,GAAG,eAAe,4BAA4B,QAAQ,CAAC,cAAc,UAA/E;;AAEA,QAAI,QAAQ,CAAC,eAAT,CAAyB,uBAAzB,IAAoD,IAApD,KAA4D,MAAM,QAAQ,CAAC,eAAT,CAAyB,uBAAzB,CAAiD,CAAC,IAAD,EAAO,eAAP,CAAjD,CAAlE,CAAJ,EAAiJ;AAC/I;AACD;;AAED,UAAM,GAAG,GAAG,EACV,GAAG,OAAO,CAAC,GADD;AAEV,MAAA,QAAQ,EAAE,iBAFA;AAGV,MAAA,qBAAqB,EAAE,QAAQ,CAAC,WAAT,KAAyB,OAAzB,GAAmC,GAAnC,GAAyC;AAHtD,KAAZ,CA5GuC,CAkHvC;AACA;;AACA,QAAI,MAAM,KAAK,KAAX,KAAoB,MAAM,oCAA1B,CAAJ,EAA+C;AAC7C,YAAM,cAAc,GAAG,MAAM,iCAA7B;AACA,MAAA,MAAM,CAAC,MAAP,CAAc,GAAd,EAAmB;AACjB,QAAA,IAAI,EAAE,+BAAW,OAAO,CAAC,GAAR,CAAY,IAAvB,EAA6B,CAAC,IAAI,CAAC,IAAL,CAAU,cAAV,EAA0B,KAA1B,CAAD,CAA7B,CADW;AAEjB,QAAA,iBAAiB,EAAE,+BAAW,OAAO,CAAC,GAAR,CAAY,iBAAvB,EAA0C,CAAC,IAAI,CAAC,IAAL,CAAU,cAAV,EAA0B,KAA1B,CAAD,CAA1C;AAFF,OAAnB;AAID;;AAED,UAAM,sCAAkB,CAAC,KAAD,EAAQ,iBAAR,EAA2B,IAAI,CAAC,SAAL,CAAe,gBAAf,CAA3B,CAAlB,EAAgF,SAAhF,EAA2F;AAAC,MAAA;AAAD,KAA3F,CAAN;AAEA,UAAM,QAAQ,CAAC,uBAAT,CAAiC,YAAjC,EAA+C,IAA/C,EAAqD,IAArD,CAAN;AACD;;AAnM0C;;;;AA6M7C,eAAe,eAAf,CAA+B,MAA/B,EAA+C,YAA/C,EAAqE,OAArE,EAAiF;AAC/E;AACA,WAAS,QAAT,CAAkB,KAAlB,EAAiC,EAAjC,EAA2C;AACzC,QAAI,EAAE,IAAI,OAAV,EAAmB;AACjB,aAAO,OAAO,CAAC,EAAD,CAAd;AACD,KAFD,MAGK;AACH,YAAM,IAAI,KAAJ,CAAU,SAAS,EAAE,iBAArB,CAAN;AACD;AACF;;AACD,QAAM,MAAM,GAAG,CAAC,MAAM,yBAAS,YAAT,EAAuB,MAAvB,CAAP,EACZ,OADY,CACJ,kBADI,EACgB,QADhB,EAEZ,OAFY,CAEJ,mBAFI,EAEiB,CAAC,KAAD,EAAQ,EAAR,KAAc;AAC1C,uBAAI,IAAJ,CAAS,6DAAT;;AACA,WAAO,QAAQ,CAAC,KAAD,EAAQ,EAAE,CAAC,IAAH,EAAR,CAAf;AACD,GALY,CAAf;AAOA,QAAM,UAAU,GAAG,MAAM,MAAM,CAAC,WAAP,CAAmB;AAAC,IAAA,MAAM,EAAE,IAAI,CAAC,QAAL,CAAc,YAAd,EAA4B,MAA5B;AAAT,GAAnB,CAAzB;AACA,QAAM,2BAAW,UAAX,EAAuB,MAAvB,CAAN;AACA,SAAO,UAAP;AACD,C","sourcesContent":["import { path7za } from \"7zip-bin\"\nimport { Arch, executeAppBuilder, log, TmpDir, toLinuxArchString, use } from \"builder-util\"\nimport { unlinkIfExists } from \"builder-util/out/fs\"\nimport { ensureDir, outputFile, readFile } from \"fs-extra\"\nimport * as path from \"path\"\nimport { DebOptions, LinuxTargetSpecificOptions } from \"..\"\nimport { smarten } from \"../appInfo\"\nimport { Target } from \"../core\"\nimport * as errorMessages from \"../errorMessages\"\nimport { LinuxPackager } from \"../linuxPackager\"\nimport { objectToArgs } from \"../util/appBuilder\"\nimport { computeEnv } from \"../util/bundledTool\"\nimport { isMacOsSierra } from \"../util/macosVersion\"\nimport { getTemplatePath } from \"../util/pathManager\"\nimport { installPrefix, LinuxTargetHelper } from \"./LinuxTargetHelper\"\nimport { getLinuxToolsPath } from \"./tools\"\n\ninterface FpmOptions {\n maintainer: string | undefined\n vendor: string\n url: string\n}\n\nexport default class FpmTarget extends Target {\n readonly options: LinuxTargetSpecificOptions = {...this.packager.platformSpecificBuildOptions, ...(this.packager.config as any)[this.name]}\n\n private readonly scriptFiles: Promise<Array<string>>\n\n constructor(name: string, private readonly packager: LinuxPackager, private readonly helper: LinuxTargetHelper, readonly outDir: string) {\n super(name, false)\n\n this.scriptFiles = this.createScripts()\n }\n\n private async createScripts(): Promise<Array<string>> {\n const defaultTemplatesDir = getTemplatePath(\"linux\")\n\n const packager = this.packager\n const templateOptions = {\n // old API compatibility\n executable: packager.executableName,\n productFilename: packager.appInfo.productFilename, ...packager.platformSpecificBuildOptions}\n\n function getResource(value: string | null | undefined, defaultFile: string) {\n if (value == null) {\n return path.join(defaultTemplatesDir, defaultFile)\n }\n return path.resolve(packager.projectDir, value)\n }\n\n return await Promise.all<string>([\n writeConfigFile(packager.info.tempDirManager, getResource(this.options.afterInstall, \"after-install.tpl\"), templateOptions),\n writeConfigFile(packager.info.tempDirManager, getResource(this.options.afterRemove, \"after-remove.tpl\"), templateOptions)\n ])\n }\n\n checkOptions(): Promise<any> {\n return this.computeFpmMetaInfoOptions()\n }\n\n private async computeFpmMetaInfoOptions(): Promise<FpmOptions> {\n const packager = this.packager\n const projectUrl = await packager.appInfo.computePackageUrl()\n const errors: Array<string> = []\n if (projectUrl == null) {\n errors.push(\"Please specify project homepage, see https://electron.build/configuration/configuration#Metadata-homepage\")\n }\n\n const options = this.options\n let author = options.maintainer\n if (author == null) {\n const a = packager.info.metadata.author\n if (a == null || a.email == null) {\n errors.push(errorMessages.authorEmailIsMissed)\n }\n else {\n author = `${a.name} <${a.email}>`\n }\n }\n\n if (errors.length > 0) {\n throw new Error(errors.join(\"\\n\\n\"))\n }\n\n return {\n maintainer: author!!,\n url: projectUrl!!,\n vendor: options.vendor || author!!,\n }\n }\n\n async build(appOutDir: string, arch: Arch): Promise<any> {\n const target = this.name\n\n // tslint:disable:no-invalid-template-strings\n let nameFormat = \"${name}-${version}-${arch}.${ext}\"\n let isUseArchIfX64 = false\n if (target === \"deb\") {\n nameFormat = \"${name}_${version}_${arch}.${ext}\"\n isUseArchIfX64 = true\n }\n else if (target === \"rpm\") {\n nameFormat = \"${name}-${version}.${arch}.${ext}\"\n isUseArchIfX64 = true\n }\n\n const packager = this.packager\n const artifactPath = path.join(this.outDir, packager.expandArtifactNamePattern(this.options, target, arch, nameFormat, !isUseArchIfX64))\n\n await packager.info.callArtifactBuildStarted({\n targetPresentableName: target,\n file: artifactPath,\n arch,\n })\n\n await unlinkIfExists(artifactPath)\n if (packager.packagerOptions.prepackaged != null) {\n await ensureDir(this.outDir)\n }\n\n const scripts = await this.scriptFiles\n const appInfo = packager.appInfo\n const options = this.options\n const synopsis = options.synopsis\n const args = [\n \"--architecture\", toLinuxArchString(arch, target),\n \"--name\", appInfo.linuxPackageName,\n \"--after-install\", scripts[0],\n \"--after-remove\", scripts[1],\n \"--description\", smarten(target === \"rpm\" ? this.helper.getDescription(options)! : `${synopsis || \"\"}\\n ${this.helper.getDescription(options)}`),\n \"--version\", appInfo.version,\n \"--package\", artifactPath,\n ]\n\n objectToArgs(args, await this.computeFpmMetaInfoOptions() as any)\n\n const packageCategory = options.packageCategory\n if (packageCategory != null) {\n args.push(\"--category\", packageCategory)\n }\n\n if (target === \"deb\") {\n use((options as DebOptions).priority, it => args.push(\"--deb-priority\", it!))\n }\n else if (target === \"rpm\") {\n if (synopsis != null) {\n args.push(\"--rpm-summary\", smarten(synopsis))\n }\n }\n\n const fpmConfiguration: FpmConfiguration = {\n args, target,\n }\n\n if (options.compression != null) {\n fpmConfiguration.compression = options.compression\n }\n\n // noinspection JSDeprecatedSymbols\n const depends = options.depends\n if (depends != null) {\n if (Array.isArray(depends)) {\n fpmConfiguration.customDepends = depends\n }\n else {\n // noinspection SuspiciousTypeOfGuard\n if (typeof depends === \"string\") {\n fpmConfiguration.customDepends = [depends as string]\n }\n else {\n throw new Error(`depends must be Array or String, but specified as: ${depends}`)\n }\n }\n }\n\n use(packager.info.metadata.license, it => args.push(\"--license\", it!))\n use(appInfo.buildNumber, it => args.push(\"--iteration\", it!))\n\n use(options.fpm, it => args.push(...it as any))\n\n args.push(`${appOutDir}/=${installPrefix}/${appInfo.productFilename}`)\n for (const icon of (await this.helper.icons)) {\n const extWithDot = path.extname(icon.file)\n const sizeName = extWithDot === \".svg\" ? \"scalable\" : `${icon.size}x${icon.size}`\n args.push(`${icon.file}=/usr/share/icons/hicolor/${sizeName}/apps/${packager.executableName}${extWithDot}`)\n }\n\n const mimeTypeFilePath = await this.helper.mimeTypeFiles\n if (mimeTypeFilePath != null) {\n args.push(`${mimeTypeFilePath}=/usr/share/mime/packages/${packager.executableName}.xml`)\n }\n\n const desktopFilePath = await this.helper.writeDesktopEntry(this.options)\n args.push(`${desktopFilePath}=/usr/share/applications/${packager.executableName}.desktop`)\n\n if (packager.packagerOptions.effectiveOptionComputed != null && await packager.packagerOptions.effectiveOptionComputed([args, desktopFilePath])) {\n return\n }\n\n const env = {\n ...process.env,\n SZA_PATH: path7za,\n SZA_COMPRESSION_LEVEL: packager.compression === \"store\" ? \"0\" : \"9\",\n }\n\n // rpmbuild wants directory rpm with some default config files. Even if we can use dylibbundler, path to such config files are not changed (we need to replace in the binary)\n // so, for now, brew install rpm is still required.\n if (target !== \"rpm\" && await isMacOsSierra()) {\n const linuxToolsPath = await getLinuxToolsPath()\n Object.assign(env, {\n PATH: computeEnv(process.env.PATH, [path.join(linuxToolsPath, \"bin\")]),\n DYLD_LIBRARY_PATH: computeEnv(process.env.DYLD_LIBRARY_PATH, [path.join(linuxToolsPath, \"lib\")]),\n })\n }\n\n await executeAppBuilder([\"fpm\", \"--configuration\", JSON.stringify(fpmConfiguration)], undefined, {env})\n\n await packager.dispatchArtifactCreated(artifactPath, this, arch)\n }\n}\n\ninterface FpmConfiguration {\n target: string\n args: Array<string>\n customDepends?: Array<string>\n compression?: string | null\n}\n\nasync function writeConfigFile(tmpDir: TmpDir, templatePath: string, options: any): Promise<string> {\n //noinspection JSUnusedLocalSymbols\n function replacer(match: string, p1: string) {\n if (p1 in options) {\n return options[p1]\n }\n else {\n throw new Error(`Macro ${p1} is not defined`)\n }\n }\n const config = (await readFile(templatePath, \"utf8\"))\n .replace(/\\${([a-zA-Z]+)}/g, replacer)\n .replace(/<%=([a-zA-Z]+)%>/g, (match, p1) => {\n log.warn(\"<%= varName %> is deprecated, please use ${varName} instead\")\n return replacer(match, p1.trim())\n })\n\n const outputPath = await tmpDir.getTempFile({suffix: path.basename(templatePath, \".tpl\")})\n await outputFile(outputPath, config)\n return outputPath\n}\n"],"sourceRoot":""}
@@ -89,6 +89,8 @@ function _fsExtra() {
89
89
 
90
90
  var path = _interopRequireWildcard(require("path"));
91
91
 
92
+ var fs = _interopRequireWildcard(require("fs"));
93
+
92
94
  function _core() {
93
95
  const data = require("../../core");
94
96
 
@@ -429,7 +431,7 @@ class NsisTarget extends _core().Target {
429
431
  defines.UNPACK_DIR_NAME = portableOptions.unpackDirName || (await (0, _builderUtil().executeAppBuilder)(["ksuid"]));
430
432
 
431
433
  if (portableOptions.splashImage != null) {
432
- defines.SPLASH_IMAGE = portableOptions.splashImage;
434
+ defines.SPLASH_IMAGE = path.resolve(packager.projectDir, portableOptions.splashImage);
433
435
  }
434
436
  } else {
435
437
  await this.configureDefines(oneClick, defines);
@@ -746,7 +748,12 @@ class NsisTarget extends _core().Target {
746
748
  }
747
749
 
748
750
  const nsisPath = await (0, _nsisUtil().NSIS_PATH)();
749
- const command = path.join(nsisPath, process.platform === "darwin" ? "mac" : process.platform === "win32" ? "Bin" : "linux", process.platform === "win32" ? "makensis.exe" : "makensis");
751
+ const command = path.join(nsisPath, process.platform === "darwin" ? "mac" : process.platform === "win32" ? "Bin" : "linux", process.platform === "win32" ? "makensis.exe" : "makensis"); // if (process.platform === "win32") {
752
+ // fix for an issue caused by virus scanners, locking the file during write
753
+ // https://github.com/electron-userland/electron-builder/issues/5005
754
+
755
+ await ensureNotBusy(commands["OutFile"].replace(/"/g, "")); // }
756
+
750
757
  await (0, _builderUtil().spawnAndWrite)(command, args, script, {
751
758
  // we use NSIS_CONFIG_CONST_DATA_PATH=no to build makensis on Linux, but in any case it doesn't use stubs as MacOS/Windows version, so, we explicitly set NSISDIR
752
759
  env: { ...process.env,
@@ -769,7 +776,7 @@ class NsisTarget extends _core().Target {
769
776
  const taskManager = new (_builderUtil().AsyncTaskManager)(packager.info.cancellationToken);
770
777
  const pluginArch = this.isUnicodeEnabled ? "x86-unicode" : "x86-ansi";
771
778
  taskManager.add(async () => {
772
- scriptGenerator.addPluginDir(pluginArch, path.join((await nsisResourcePathPromise()), "plugins", pluginArch));
779
+ scriptGenerator.addPluginDir(pluginArch, path.join(await nsisResourcePathPromise(), "plugins", pluginArch));
773
780
  });
774
781
  taskManager.add(async () => {
775
782
  const userPluginDir = path.join(packager.info.buildResourcesDir, pluginArch);
@@ -902,6 +909,38 @@ async function generateForPreCompressed(preCompressedFileExtensions, dir, arch,
902
909
  }
903
910
  }
904
911
 
912
+ async function ensureNotBusy(outFile) {
913
+ function isBusy(wasBusyBefore) {
914
+ return new Promise((resolve, reject) => {
915
+ fs.open(outFile, "r+", (error, fd) => {
916
+ try {
917
+ if (error != null && error.code === "EBUSY") {
918
+ if (!wasBusyBefore) {
919
+ _builderUtil().log.info({}, "output file is locked for writing (maybe by virus scanner) => waiting for unlock...");
920
+ }
921
+
922
+ resolve(false);
923
+ } else if (fd == null) {
924
+ resolve(true);
925
+ } else {
926
+ fs.close(fd, () => resolve(true));
927
+ }
928
+ } catch (error) {
929
+ reject(error);
930
+ }
931
+ });
932
+ }).then(result => {
933
+ if (result) {
934
+ return true;
935
+ } else {
936
+ return new Promise(resolve => setTimeout(resolve, 2000)).then(() => isBusy(true));
937
+ }
938
+ });
939
+ }
940
+
941
+ await isBusy(false);
942
+ }
943
+
905
944
  async function createPackageFileInfo(file) {
906
945
  return {
907
946
  path: file,