app-builder-lib 23.6.0 → 24.0.0-alpha.2
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.
- package/out/ProtonFramework.js +4 -4
- package/out/ProtonFramework.js.map +1 -1
- package/out/appInfo.js +21 -9
- package/out/appInfo.js.map +1 -1
- package/out/asar/asar.d.ts +1 -0
- package/out/asar/asar.js +10 -10
- package/out/asar/asar.js.map +1 -1
- package/out/asar/asarFileChecker.js +2 -2
- package/out/asar/asarFileChecker.js.map +1 -1
- package/out/asar/asarUtil.js +13 -13
- package/out/asar/asarUtil.js.map +1 -1
- package/out/asar/integrity.js +9 -9
- package/out/asar/integrity.js.map +1 -1
- package/out/asar/unpackDetector.js +6 -6
- package/out/asar/unpackDetector.js.map +1 -1
- package/out/binDownload.js +2 -2
- package/out/binDownload.js.map +1 -1
- package/out/codeSign/codesign.js +4 -4
- package/out/codeSign/codesign.js.map +1 -1
- package/out/codeSign/macCodeSign.js +24 -24
- package/out/codeSign/macCodeSign.js.map +1 -1
- package/out/codeSign/windowsCodeSign.js +7 -7
- package/out/codeSign/windowsCodeSign.js.map +1 -1
- package/out/core.js +1 -1
- package/out/core.js.map +1 -1
- package/out/electron/ElectronFramework.js +17 -17
- package/out/electron/ElectronFramework.js.map +1 -1
- package/out/electron/electronMac.js +16 -16
- package/out/electron/electronMac.js.map +1 -1
- package/out/electron/electronVersion.js +5 -5
- package/out/electron/electronVersion.js.map +1 -1
- package/out/fileMatcher.js +11 -11
- package/out/fileMatcher.js.map +1 -1
- package/out/fileTransformer.js +5 -5
- package/out/fileTransformer.js.map +1 -1
- package/out/forge-maker.js +1 -1
- package/out/forge-maker.js.map +1 -1
- package/out/frameworks/LibUiFramework.js +10 -10
- package/out/frameworks/LibUiFramework.js.map +1 -1
- package/out/index.js +3 -3
- package/out/index.js.map +1 -1
- package/out/linuxPackager.js +2 -2
- package/out/linuxPackager.js.map +1 -1
- package/out/macPackager.js +26 -26
- package/out/macPackager.js.map +1 -1
- package/out/options/CommonWindowsInstallerConfiguration.js +3 -3
- package/out/options/CommonWindowsInstallerConfiguration.js.map +1 -1
- package/out/options/macOptions.d.ts +1 -1
- package/out/options/macOptions.js.map +1 -1
- package/out/packager.js +34 -34
- package/out/packager.js.map +1 -1
- package/out/platformPackager.js +39 -39
- package/out/platformPackager.js.map +1 -1
- package/out/presets/rectCra.js +1 -1
- package/out/presets/rectCra.js.map +1 -1
- package/out/publish/BitbucketPublisher.js +5 -5
- package/out/publish/BitbucketPublisher.js.map +1 -1
- package/out/publish/KeygenPublisher.js +7 -7
- package/out/publish/KeygenPublisher.js.map +1 -1
- package/out/publish/PublishManager.d.ts +0 -1
- package/out/publish/PublishManager.js +24 -24
- package/out/publish/PublishManager.js.map +1 -1
- package/out/publish/SnapStorePublisher.js +1 -1
- package/out/publish/SnapStorePublisher.js.map +1 -1
- package/out/publish/s3/BaseS3Publisher.js +3 -3
- package/out/publish/s3/BaseS3Publisher.js.map +1 -1
- package/out/publish/s3/s3Publisher.js +1 -1
- package/out/publish/s3/s3Publisher.js.map +1 -1
- package/out/publish/s3/spacesPublisher.js +2 -2
- package/out/publish/s3/spacesPublisher.js.map +1 -1
- package/out/publish/updateInfoBuilder.js +9 -9
- package/out/publish/updateInfoBuilder.js.map +1 -1
- package/out/remoteBuilder/ProjectInfoManager.js +1 -1
- package/out/remoteBuilder/ProjectInfoManager.js.map +1 -1
- package/out/remoteBuilder/RemoteBuilder.js +3 -3
- package/out/remoteBuilder/RemoteBuilder.js.map +1 -1
- package/out/remoteBuilder/builder-cli.js +3 -3
- package/out/remoteBuilder/builder-cli.js.map +1 -1
- package/out/targets/AppImageTarget.js +6 -6
- package/out/targets/AppImageTarget.js.map +1 -1
- package/out/targets/AppxTarget.js +19 -19
- package/out/targets/AppxTarget.js.map +1 -1
- package/out/targets/ArchiveTarget.js +7 -7
- package/out/targets/ArchiveTarget.js.map +1 -1
- package/out/targets/FlatpakTarget.js +8 -8
- package/out/targets/FlatpakTarget.js.map +1 -1
- package/out/targets/LinuxTargetHelper.js +9 -9
- package/out/targets/LinuxTargetHelper.js.map +1 -1
- package/out/targets/MsiTarget.js +11 -11
- package/out/targets/MsiTarget.js.map +1 -1
- package/out/targets/archive.js +9 -9
- package/out/targets/archive.js.map +1 -1
- package/out/targets/differentialUpdateInfoBuilder.js +2 -2
- package/out/targets/differentialUpdateInfoBuilder.js.map +1 -1
- package/out/targets/fpm.js +17 -17
- package/out/targets/fpm.js.map +1 -1
- package/out/targets/nsis/NsisTarget.js +37 -37
- package/out/targets/nsis/NsisTarget.js.map +1 -1
- package/out/targets/nsis/WebInstallerTarget.js +2 -2
- package/out/targets/nsis/WebInstallerTarget.js.map +1 -1
- package/out/targets/nsis/nsisLang.js +5 -5
- package/out/targets/nsis/nsisLang.js.map +1 -1
- package/out/targets/nsis/nsisLicense.js +2 -2
- package/out/targets/nsis/nsisLicense.js.map +1 -1
- package/out/targets/nsis/nsisUtil.js +5 -5
- package/out/targets/nsis/nsisUtil.js.map +1 -1
- package/out/targets/pkg.js +17 -17
- package/out/targets/pkg.js.map +1 -1
- package/out/targets/snap.js +19 -11
- package/out/targets/snap.js.map +1 -1
- package/out/targets/targetFactory.js +4 -4
- package/out/targets/targetFactory.js.map +1 -1
- package/out/targets/tools.js +1 -1
- package/out/targets/tools.js.map +1 -1
- package/out/util/AppFileWalker.js +2 -2
- package/out/util/AppFileWalker.js.map +1 -1
- package/out/util/NodeModuleCopyHelper.js +3 -3
- package/out/util/NodeModuleCopyHelper.js.map +1 -1
- package/out/util/appBuilder.js +2 -2
- package/out/util/appBuilder.js.map +1 -1
- package/out/util/appFileCopier.d.ts +1 -0
- package/out/util/appFileCopier.js +9 -9
- package/out/util/appFileCopier.js.map +1 -1
- package/out/util/cacheManager.js +5 -5
- package/out/util/cacheManager.js.map +1 -1
- package/out/util/config.js +10 -10
- package/out/util/config.js.map +1 -1
- package/out/util/flags.js +2 -2
- package/out/util/flags.js.map +1 -1
- package/out/util/hash.js +2 -2
- package/out/util/hash.js.map +1 -1
- package/out/util/license.js +1 -1
- package/out/util/license.js.map +1 -1
- package/out/util/macosVersion.js +3 -3
- package/out/util/macosVersion.js.map +1 -1
- package/out/util/normalizePackageData.js +4 -4
- package/out/util/normalizePackageData.js.map +1 -1
- package/out/util/packageDependencies.js +1 -1
- package/out/util/packageDependencies.js.map +1 -1
- package/out/util/packageMetadata.js +6 -6
- package/out/util/packageMetadata.js.map +1 -1
- package/out/util/repositoryInfo.js +2 -2
- package/out/util/repositoryInfo.js.map +1 -1
- package/out/util/yarn.d.ts +1 -1
- package/out/util/yarn.js +27 -38
- package/out/util/yarn.js.map +1 -1
- package/out/version.d.ts +1 -1
- package/out/version.js +1 -1
- package/out/version.js.map +1 -1
- package/out/vm/MonoVm.js +2 -2
- package/out/vm/MonoVm.js.map +1 -1
- package/out/vm/ParallelsVm.js +6 -6
- package/out/vm/ParallelsVm.js.map +1 -1
- package/out/vm/WineVm.js +1 -1
- package/out/vm/WineVm.js.map +1 -1
- package/out/vm/vm.js +2 -2
- package/out/vm/vm.js.map +1 -1
- package/out/winPackager.js +25 -25
- package/out/winPackager.js.map +1 -1
- package/out/wine.js +2 -2
- package/out/wine.js.map +1 -1
- package/package.json +8 -7
- package/scheme.json +2 -2
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AppxTarget.js","sourceRoot":"","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 */, \"/f\", vm.toVmFile(mappingFile), \"/p\", vm.toVmFile(artifactPath)]\n if (packager.compression === \"store\") {\n makeAppXArgs.push(\"/nc\")\n }\n\n const mappingList: Array<Array<string>> = []\n mappingList.push(\n 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\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, [\n \"new\",\n \"/Overwrite\",\n \"/Manifest\",\n vm.toVmFile(manifestFile),\n \"/ProjectRoot\",\n vm.toVmFile(path.dirname(assetRoot)),\n \"/ConfigXml\",\n vm.toVmFile(path.join(getTemplatePath(\"appx\"), \"priconfig.xml\")),\n \"/OutputFile\",\n 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 } 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 = this.options.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\")).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).concat(asArray(this.packager.platformSpecificBuildOptions.protocols))\n\n const fileAssociations = asArray(this.packager.config.fileAssociations).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 && uriSchemes.length === 0 && fileAssociations.length === 0 && 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 } 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 } 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"]}
|
|
1
|
+
{"version":3,"file":"AppxTarget.js","sourceRoot":"","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 */, \"/f\", vm.toVmFile(mappingFile), \"/p\", vm.toVmFile(artifactPath)]\n if (packager.compression === \"store\") {\n makeAppXArgs.push(\"/nc\")\n }\n\n const mappingList: Array<Array<string>> = []\n mappingList.push(\n 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\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, [\n \"new\",\n \"/Overwrite\",\n \"/Manifest\",\n vm.toVmFile(manifestFile),\n \"/ProjectRoot\",\n vm.toVmFile(path.dirname(assetRoot)),\n \"/ConfigXml\",\n vm.toVmFile(path.join(getTemplatePath(\"appx\"), \"priconfig.xml\")),\n \"/OutputFile\",\n 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 } 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 = this.options.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\")).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).concat(asArray(this.packager.platformSpecificBuildOptions.protocols))\n\n const fileAssociations = asArray(this.packager.config.fileAssociations).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 && uriSchemes.length === 0 && fileAssociations.length === 0 && 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 } 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 } 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"]}
|
|
@@ -20,7 +20,7 @@ class ArchiveTarget extends core_1.Target {
|
|
|
20
20
|
const isMac = packager.platform === core_1.Platform.MAC;
|
|
21
21
|
const format = this.name;
|
|
22
22
|
let defaultPattern;
|
|
23
|
-
const defaultArch = builder_util_1.defaultArchFromString(packager.platformSpecificBuildOptions.defaultArch);
|
|
23
|
+
const defaultArch = (0, builder_util_1.defaultArchFromString)(packager.platformSpecificBuildOptions.defaultArch);
|
|
24
24
|
if (packager.platform === core_1.Platform.LINUX) {
|
|
25
25
|
// tslint:disable-next-line:no-invalid-template-strings
|
|
26
26
|
defaultPattern = "${name}-${version}" + (arch === defaultArch ? "" : "-${arch}") + ".${ext}";
|
|
@@ -38,19 +38,19 @@ class ArchiveTarget extends core_1.Target {
|
|
|
38
38
|
});
|
|
39
39
|
let updateInfo = null;
|
|
40
40
|
if (format.startsWith("tar.")) {
|
|
41
|
-
await archive_1.tar(packager.compression, format, artifactPath, appOutDir, isMac, packager.info.tempDirManager);
|
|
41
|
+
await (0, archive_1.tar)(packager.compression, format, artifactPath, appOutDir, isMac, packager.info.tempDirManager);
|
|
42
42
|
}
|
|
43
43
|
else {
|
|
44
44
|
let withoutDir = !isMac;
|
|
45
45
|
let dirToArchive = appOutDir;
|
|
46
46
|
if (isMac) {
|
|
47
47
|
dirToArchive = path.dirname(appOutDir);
|
|
48
|
-
const fileMatchers = fileMatcher_1.getFileMatchers(packager.config, "extraDistFiles", dirToArchive, packager.createGetFileMatchersOptions(this.outDir, arch, packager.platformSpecificBuildOptions));
|
|
48
|
+
const fileMatchers = (0, fileMatcher_1.getFileMatchers)(packager.config, "extraDistFiles", dirToArchive, packager.createGetFileMatchersOptions(this.outDir, arch, packager.platformSpecificBuildOptions));
|
|
49
49
|
if (fileMatchers == null) {
|
|
50
50
|
dirToArchive = appOutDir;
|
|
51
51
|
}
|
|
52
52
|
else {
|
|
53
|
-
await fileMatcher_1.copyFiles(fileMatchers, null, true);
|
|
53
|
+
await (0, fileMatcher_1.copyFiles)(fileMatchers, null, true);
|
|
54
54
|
withoutDir = true;
|
|
55
55
|
}
|
|
56
56
|
}
|
|
@@ -58,13 +58,13 @@ class ArchiveTarget extends core_1.Target {
|
|
|
58
58
|
compression: packager.compression,
|
|
59
59
|
withoutDir,
|
|
60
60
|
};
|
|
61
|
-
await archive_1.archive(format, artifactPath, dirToArchive, archiveOptions);
|
|
61
|
+
await (0, archive_1.archive)(format, artifactPath, dirToArchive, archiveOptions);
|
|
62
62
|
if (this.isWriteUpdateInfo && format === "zip") {
|
|
63
63
|
if (isMac) {
|
|
64
|
-
updateInfo = await differentialUpdateInfoBuilder_1.createBlockmap(artifactPath, this, packager, artifactName);
|
|
64
|
+
updateInfo = await (0, differentialUpdateInfoBuilder_1.createBlockmap)(artifactPath, this, packager, artifactName);
|
|
65
65
|
}
|
|
66
66
|
else {
|
|
67
|
-
updateInfo = await differentialUpdateInfoBuilder_1.appendBlockmap(artifactPath);
|
|
67
|
+
updateInfo = await (0, differentialUpdateInfoBuilder_1.appendBlockmap)(artifactPath);
|
|
68
68
|
}
|
|
69
69
|
}
|
|
70
70
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ArchiveTarget.js","sourceRoot":"","sources":["../../src/targets/ArchiveTarget.ts"],"names":[],"mappings":";;;AAAA,+CAA0D;AAC1D,6BAA4B;AAC5B,kCAAiE;AACjE,gDAA2D;AAE3D,uCAAwC;AACxC,mFAAgF;AAEhF,MAAa,aAAc,SAAQ,aAAM;IAGvC,YAAY,IAAY,EAAW,MAAc,EAAmB,QAA+B,EAAmB,oBAAoB,KAAK;QAC7I,KAAK,CAAC,IAAI,CAAC,CAAA;QADsB,WAAM,GAAN,MAAM,CAAQ;QAAmB,aAAQ,GAAR,QAAQ,CAAuB;QAAmB,sBAAiB,GAAjB,iBAAiB,CAAQ;QAFtI,YAAO,GAA2B,IAAI,CAAC,QAAQ,CAAC,MAAc,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;IAIlF,CAAC;IAED,KAAK,CAAC,KAAK,CAAC,SAAiB,EAAE,IAAU;QACvC,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAA;QAC9B,MAAM,KAAK,GAAG,QAAQ,CAAC,QAAQ,KAAK,eAAQ,CAAC,GAAG,CAAA;QAChD,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAA;QAExB,IAAI,cAAsB,CAAA;QAC1B,MAAM,WAAW,GAAS,oCAAqB,
|
|
1
|
+
{"version":3,"file":"ArchiveTarget.js","sourceRoot":"","sources":["../../src/targets/ArchiveTarget.ts"],"names":[],"mappings":"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","sourcesContent":["import { Arch, defaultArchFromString } from \"builder-util\"\nimport * as path from \"path\"\nimport { Platform, Target, TargetSpecificOptions } from \"../core\"\nimport { copyFiles, getFileMatchers } from \"../fileMatcher\"\nimport { PlatformPackager } from \"../platformPackager\"\nimport { archive, tar } from \"./archive\"\nimport { appendBlockmap, createBlockmap } from \"./differentialUpdateInfoBuilder\"\n\nexport class ArchiveTarget extends Target {\n readonly options: TargetSpecificOptions = (this.packager.config as any)[this.name]\n\n constructor(name: string, readonly outDir: string, private readonly packager: PlatformPackager<any>, private readonly isWriteUpdateInfo = false) {\n super(name)\n }\n\n async build(appOutDir: string, arch: Arch): Promise<any> {\n const packager = this.packager\n const isMac = packager.platform === Platform.MAC\n const format = this.name\n\n let defaultPattern: string\n const defaultArch: Arch = defaultArchFromString(packager.platformSpecificBuildOptions.defaultArch)\n if (packager.platform === Platform.LINUX) {\n // tslint:disable-next-line:no-invalid-template-strings\n defaultPattern = \"${name}-${version}\" + (arch === defaultArch ? \"\" : \"-${arch}\") + \".${ext}\"\n } else {\n // tslint:disable-next-line:no-invalid-template-strings\n defaultPattern = \"${productName}-${version}\" + (arch === defaultArch ? \"\" : \"-${arch}\") + \"-${os}.${ext}\"\n }\n\n const artifactName = packager.expandArtifactNamePattern(this.options, format, arch, defaultPattern, false)\n const artifactPath = path.join(this.outDir, artifactName)\n\n await packager.info.callArtifactBuildStarted({\n targetPresentableName: `${isMac ? \"macOS \" : \"\"}${format}`,\n file: artifactPath,\n arch,\n })\n let updateInfo: any = null\n if (format.startsWith(\"tar.\")) {\n await tar(packager.compression, format, artifactPath, appOutDir, isMac, packager.info.tempDirManager)\n } else {\n let withoutDir = !isMac\n let dirToArchive = appOutDir\n if (isMac) {\n dirToArchive = path.dirname(appOutDir)\n const fileMatchers = getFileMatchers(\n packager.config,\n \"extraDistFiles\",\n dirToArchive,\n packager.createGetFileMatchersOptions(this.outDir, arch, packager.platformSpecificBuildOptions)\n )\n if (fileMatchers == null) {\n dirToArchive = appOutDir\n } else {\n await copyFiles(fileMatchers, null, true)\n withoutDir = true\n }\n }\n\n const archiveOptions = {\n compression: packager.compression,\n withoutDir,\n }\n await archive(format, artifactPath, dirToArchive, archiveOptions)\n\n if (this.isWriteUpdateInfo && format === \"zip\") {\n if (isMac) {\n updateInfo = await createBlockmap(artifactPath, this, packager, artifactName)\n } else {\n updateInfo = await appendBlockmap(artifactPath)\n }\n }\n }\n\n await packager.info.callArtifactBuildCompleted({\n updateInfo,\n file: artifactPath,\n // tslint:disable-next-line:no-invalid-template-strings\n safeArtifactName: packager.computeSafeArtifactName(\n artifactName,\n format,\n arch,\n false,\n packager.platformSpecificBuildOptions.defaultArch,\n defaultPattern.replace(\"${productName}\", \"${name}\")\n ),\n target: this,\n arch,\n packager,\n isWriteUpdateInfo: this.isWriteUpdateInfo,\n })\n }\n}\n"]}
|
|
@@ -32,7 +32,7 @@ class FlatpakTarget extends core_1.Target {
|
|
|
32
32
|
});
|
|
33
33
|
const stageDir = await this.prepareStageDir(arch);
|
|
34
34
|
const { manifest, buildOptions } = this.getFlatpakBuilderOptions(appOutDir, stageDir.dir, artifactName, arch);
|
|
35
|
-
await flatpak_bundler_1.bundle(manifest, buildOptions);
|
|
35
|
+
await (0, flatpak_bundler_1.bundle)(manifest, buildOptions);
|
|
36
36
|
await stageDir.cleanup();
|
|
37
37
|
await packager.info.callArtifactBuildCompleted({
|
|
38
38
|
file: artifactPath,
|
|
@@ -44,15 +44,15 @@ class FlatpakTarget extends core_1.Target {
|
|
|
44
44
|
});
|
|
45
45
|
}
|
|
46
46
|
async prepareStageDir(arch) {
|
|
47
|
-
const stageDir = await targetUtil_1.createStageDir(this, this.packager, arch);
|
|
47
|
+
const stageDir = await (0, targetUtil_1.createStageDir)(this, this.packager, arch);
|
|
48
48
|
await Promise.all([this.createSandboxBinWrapper(stageDir), this.createDesktopFile(stageDir), this.copyLicenseFile(stageDir), this.copyIcons(stageDir)]);
|
|
49
49
|
return stageDir;
|
|
50
50
|
}
|
|
51
51
|
async createSandboxBinWrapper(stageDir) {
|
|
52
52
|
const useWaylandFlags = !!this.options.useWaylandFlags;
|
|
53
53
|
const electronWrapperPath = stageDir.getTempFile(path.join("bin", "electron-wrapper"));
|
|
54
|
-
await fs_extra_1.outputFile(electronWrapperPath, getElectronWrapperScript(this.packager.executableName, useWaylandFlags));
|
|
55
|
-
await fs_extra_1.chmod(electronWrapperPath, 0o755);
|
|
54
|
+
await (0, fs_extra_1.outputFile)(electronWrapperPath, getElectronWrapperScript(this.packager.executableName, useWaylandFlags));
|
|
55
|
+
await (0, fs_extra_1.chmod)(electronWrapperPath, 0o755);
|
|
56
56
|
}
|
|
57
57
|
async createDesktopFile(stageDir) {
|
|
58
58
|
const appIdentifier = this.appId;
|
|
@@ -60,10 +60,10 @@ class FlatpakTarget extends core_1.Target {
|
|
|
60
60
|
await this.helper.writeDesktopEntry(this.options, "electron-wrapper %U", desktopFile, { Icon: appIdentifier });
|
|
61
61
|
}
|
|
62
62
|
async copyLicenseFile(stageDir) {
|
|
63
|
-
const licenseSrc = await license_1.getNotLocalizedLicenseFile(this.options.license, this.packager, ["txt", "html"]);
|
|
63
|
+
const licenseSrc = await (0, license_1.getNotLocalizedLicenseFile)(this.options.license, this.packager, ["txt", "html"]);
|
|
64
64
|
if (licenseSrc) {
|
|
65
65
|
const licenseDst = stageDir.getTempFile(path.join("share", "doc", this.appId, "copyright"));
|
|
66
|
-
await builder_util_1.copyFile(licenseSrc, licenseDst);
|
|
66
|
+
await (0, builder_util_1.copyFile)(licenseSrc, licenseDst);
|
|
67
67
|
}
|
|
68
68
|
}
|
|
69
69
|
async copyIcons(stageDir) {
|
|
@@ -72,14 +72,14 @@ class FlatpakTarget extends core_1.Target {
|
|
|
72
72
|
const extWithDot = path.extname(icon.file);
|
|
73
73
|
const sizeName = extWithDot === ".svg" ? "scalable" : `${icon.size}x${icon.size}`;
|
|
74
74
|
const iconDst = stageDir.getTempFile(path.join("share", "icons", "hicolor", sizeName, "apps", `${this.appId}${extWithDot}`));
|
|
75
|
-
return builder_util_1.copyFile(icon.file, iconDst);
|
|
75
|
+
return (0, builder_util_1.copyFile)(icon.file, iconDst);
|
|
76
76
|
});
|
|
77
77
|
await Promise.all(copyIcons);
|
|
78
78
|
}
|
|
79
79
|
getFlatpakBuilderOptions(appOutDir, stageDir, artifactName, arch) {
|
|
80
80
|
const appIdentifier = this.appId;
|
|
81
81
|
const { executableName } = this.packager;
|
|
82
|
-
const flatpakArch = builder_util_1.toLinuxArchString(arch, "flatpak");
|
|
82
|
+
const flatpakArch = (0, builder_util_1.toLinuxArchString)(arch, "flatpak");
|
|
83
83
|
const manifest = {
|
|
84
84
|
id: appIdentifier,
|
|
85
85
|
command: "electron-wrapper",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FlatpakTarget.js","sourceRoot":"","sources":["../../src/targets/FlatpakTarget.ts"],"names":[],"mappings":"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","sourcesContent":["import { bundle as bundleFlatpak, FlatpakBundlerBuildOptions, FlatpakManifest } from \"@malept/flatpak-bundler\"\nimport { Arch, copyFile, toLinuxArchString } from \"builder-util\"\nimport { chmod, outputFile } from \"fs-extra\"\nimport * as path from \"path\"\nimport { Target } from \"../core\"\nimport { LinuxPackager } from \"../linuxPackager\"\nimport { FlatpakOptions } from \"../options/linuxOptions\"\nimport { getNotLocalizedLicenseFile } from \"../util/license\"\nimport { LinuxTargetHelper } from \"./LinuxTargetHelper\"\nimport { createStageDir, StageDir } from \"./targetUtil\"\n\nexport default class FlatpakTarget extends Target {\n readonly options: FlatpakOptions = {\n ...this.packager.platformSpecificBuildOptions,\n ...(this.packager.config as any)[this.name],\n }\n\n constructor(name: string, private readonly packager: LinuxPackager, private helper: LinuxTargetHelper, readonly outDir: string) {\n super(name)\n }\n\n get appId(): string {\n return filterFlatpakAppIdentifier(this.packager.appInfo.id)\n }\n\n async build(appOutDir: string, arch: Arch): Promise<any> {\n const { packager, options } = this\n const artifactName = packager.expandArtifactNamePattern(options, \"flatpak\", arch, undefined, false)\n const artifactPath = path.join(this.outDir, artifactName)\n await packager.info.callArtifactBuildStarted({\n targetPresentableName: \"flatpak\",\n file: artifactPath,\n arch,\n })\n\n const stageDir = await this.prepareStageDir(arch)\n\n const { manifest, buildOptions } = this.getFlatpakBuilderOptions(appOutDir, stageDir.dir, artifactName, arch)\n await bundleFlatpak(manifest, buildOptions)\n\n await stageDir.cleanup()\n\n await packager.info.callArtifactBuildCompleted({\n file: artifactPath,\n safeArtifactName: packager.computeSafeArtifactName(artifactName, \"flatpak\", arch, false),\n target: this,\n arch,\n packager,\n isWriteUpdateInfo: false,\n })\n }\n\n private async prepareStageDir(arch: Arch): Promise<StageDir> {\n const stageDir = await createStageDir(this, this.packager, arch)\n\n await Promise.all([this.createSandboxBinWrapper(stageDir), this.createDesktopFile(stageDir), this.copyLicenseFile(stageDir), this.copyIcons(stageDir)])\n\n return stageDir\n }\n\n private async createSandboxBinWrapper(stageDir: StageDir) {\n const useWaylandFlags = !!this.options.useWaylandFlags\n const electronWrapperPath = stageDir.getTempFile(path.join(\"bin\", \"electron-wrapper\"))\n await outputFile(electronWrapperPath, getElectronWrapperScript(this.packager.executableName, useWaylandFlags))\n await chmod(electronWrapperPath, 0o755)\n }\n\n private async createDesktopFile(stageDir: StageDir) {\n const appIdentifier = this.appId\n const desktopFile = stageDir.getTempFile(path.join(\"share\", \"applications\", `${appIdentifier}.desktop`))\n await this.helper.writeDesktopEntry(this.options, \"electron-wrapper %U\", desktopFile, { Icon: appIdentifier })\n }\n\n private async copyLicenseFile(stageDir: StageDir) {\n const licenseSrc = await getNotLocalizedLicenseFile(this.options.license, this.packager, [\"txt\", \"html\"])\n if (licenseSrc) {\n const licenseDst = stageDir.getTempFile(path.join(\"share\", \"doc\", this.appId, \"copyright\"))\n await copyFile(licenseSrc, licenseDst)\n }\n }\n\n private async copyIcons(stageDir: StageDir) {\n const icons = await this.helper.icons\n const copyIcons = icons.map(async icon => {\n const extWithDot = path.extname(icon.file)\n const sizeName = extWithDot === \".svg\" ? \"scalable\" : `${icon.size}x${icon.size}`\n const iconDst = stageDir.getTempFile(path.join(\"share\", \"icons\", \"hicolor\", sizeName, \"apps\", `${this.appId}${extWithDot}`))\n\n return copyFile(icon.file, iconDst)\n })\n\n await Promise.all(copyIcons)\n }\n\n private getFlatpakBuilderOptions(appOutDir: string, stageDir: string, artifactName: string, arch: Arch): { manifest: FlatpakManifest; buildOptions: FlatpakBundlerBuildOptions } {\n const appIdentifier = this.appId\n const { executableName } = this.packager\n const flatpakArch = toLinuxArchString(arch, \"flatpak\")\n\n const manifest: FlatpakManifest = {\n id: appIdentifier,\n command: \"electron-wrapper\",\n runtime: this.options.runtime || flatpakBuilderDefaults.runtime,\n runtimeVersion: this.options.runtimeVersion || flatpakBuilderDefaults.runtimeVersion,\n sdk: this.options.sdk || flatpakBuilderDefaults.sdk,\n base: this.options.base || flatpakBuilderDefaults.base,\n baseVersion: this.options.baseVersion || flatpakBuilderDefaults.baseVersion,\n finishArgs: this.options.finishArgs || flatpakBuilderDefaults.finishArgs,\n branch: this.options.branch,\n modules: this.options.modules,\n }\n\n const buildOptions: FlatpakBundlerBuildOptions = {\n baseFlatpakref: `app/${manifest.base}/${flatpakArch}/${manifest.baseVersion}`,\n runtimeFlatpakref: `runtime/${manifest.runtime}/${flatpakArch}/${manifest.runtimeVersion}`,\n sdkFlatpakref: `runtime/${manifest.sdk}/${flatpakArch}/${manifest.runtimeVersion}`,\n arch: flatpakArch as any,\n bundlePath: path.join(this.outDir, artifactName),\n files: [[stageDir, \"/\"], [appOutDir, path.join(\"/lib\", appIdentifier)], ...(this.options.files || [])],\n symlinks: [[path.join(\"/lib\", appIdentifier, executableName), path.join(\"/bin\", executableName)], ...(this.options.symlinks || [])],\n }\n\n return { manifest, buildOptions }\n }\n}\n\nconst flatpakBuilderDefaults: Omit<FlatpakManifest, \"id\" | \"command\"> = {\n runtime: \"org.freedesktop.Platform\",\n runtimeVersion: \"20.08\",\n sdk: \"org.freedesktop.Sdk\",\n base: \"org.electronjs.Electron2.BaseApp\",\n baseVersion: \"20.08\",\n finishArgs: [\n // Wayland/X11 Rendering\n \"--socket=wayland\",\n \"--socket=x11\",\n \"--share=ipc\",\n // Open GL\n \"--device=dri\",\n // Audio output\n \"--socket=pulseaudio\",\n // Read/write home directory access\n \"--filesystem=home\",\n // Allow communication with network\n \"--share=network\",\n // System notifications with libnotify\n \"--talk-name=org.freedesktop.Notifications\",\n ],\n}\n\nfunction getElectronWrapperScript(executableName: string, useWaylandFlags: boolean): string {\n return useWaylandFlags\n ? `#!/bin/sh\n\nexport TMPDIR=\"$XDG_RUNTIME_DIR/app/$FLATPAK_ID\"\n\nif [ \"\\${XDG_SESSION_TYPE}\" == \"wayland\" ]; then\n zypak-wrapper \"${executableName}\" --enable-features=UseOzonePlatform --ozone-platform=wayland \"$@\"\nelse\n zypak-wrapper \"${executableName}\" \"$@\"\nfi\n`\n : `#!/bin/sh\n\nexport TMPDIR=\"$XDG_RUNTIME_DIR/app/$FLATPAK_ID\"\n\nzypak-wrapper \"${executableName}\" \"$@\"\n`\n}\n\nfunction filterFlatpakAppIdentifier(identifier: string) {\n // Remove special characters and allow only alphanumeric (A-Z,a-z,0-9), underscore (_), and period (.)\n // Flatpak documentation: https://docs.flatpak.org/en/latest/conventions.html#application-ids\n return identifier.replace(/-/g, \"_\").replace(/[^a-zA-Z0-9._]/g, \"\")\n}\n"]}
|
|
1
|
+
{"version":3,"file":"FlatpakTarget.js","sourceRoot":"","sources":["../../src/targets/FlatpakTarget.ts"],"names":[],"mappings":"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","sourcesContent":["import { bundle as bundleFlatpak, FlatpakBundlerBuildOptions, FlatpakManifest } from \"@malept/flatpak-bundler\"\nimport { Arch, copyFile, toLinuxArchString } from \"builder-util\"\nimport { chmod, outputFile } from \"fs-extra\"\nimport * as path from \"path\"\nimport { Target } from \"../core\"\nimport { LinuxPackager } from \"../linuxPackager\"\nimport { FlatpakOptions } from \"../options/linuxOptions\"\nimport { getNotLocalizedLicenseFile } from \"../util/license\"\nimport { LinuxTargetHelper } from \"./LinuxTargetHelper\"\nimport { createStageDir, StageDir } from \"./targetUtil\"\n\nexport default class FlatpakTarget extends Target {\n readonly options: FlatpakOptions = {\n ...this.packager.platformSpecificBuildOptions,\n ...(this.packager.config as any)[this.name],\n }\n\n constructor(name: string, private readonly packager: LinuxPackager, private helper: LinuxTargetHelper, readonly outDir: string) {\n super(name)\n }\n\n get appId(): string {\n return filterFlatpakAppIdentifier(this.packager.appInfo.id)\n }\n\n async build(appOutDir: string, arch: Arch): Promise<any> {\n const { packager, options } = this\n const artifactName = packager.expandArtifactNamePattern(options, \"flatpak\", arch, undefined, false)\n const artifactPath = path.join(this.outDir, artifactName)\n await packager.info.callArtifactBuildStarted({\n targetPresentableName: \"flatpak\",\n file: artifactPath,\n arch,\n })\n\n const stageDir = await this.prepareStageDir(arch)\n\n const { manifest, buildOptions } = this.getFlatpakBuilderOptions(appOutDir, stageDir.dir, artifactName, arch)\n await bundleFlatpak(manifest, buildOptions)\n\n await stageDir.cleanup()\n\n await packager.info.callArtifactBuildCompleted({\n file: artifactPath,\n safeArtifactName: packager.computeSafeArtifactName(artifactName, \"flatpak\", arch, false),\n target: this,\n arch,\n packager,\n isWriteUpdateInfo: false,\n })\n }\n\n private async prepareStageDir(arch: Arch): Promise<StageDir> {\n const stageDir = await createStageDir(this, this.packager, arch)\n\n await Promise.all([this.createSandboxBinWrapper(stageDir), this.createDesktopFile(stageDir), this.copyLicenseFile(stageDir), this.copyIcons(stageDir)])\n\n return stageDir\n }\n\n private async createSandboxBinWrapper(stageDir: StageDir) {\n const useWaylandFlags = !!this.options.useWaylandFlags\n const electronWrapperPath = stageDir.getTempFile(path.join(\"bin\", \"electron-wrapper\"))\n await outputFile(electronWrapperPath, getElectronWrapperScript(this.packager.executableName, useWaylandFlags))\n await chmod(electronWrapperPath, 0o755)\n }\n\n private async createDesktopFile(stageDir: StageDir) {\n const appIdentifier = this.appId\n const desktopFile = stageDir.getTempFile(path.join(\"share\", \"applications\", `${appIdentifier}.desktop`))\n await this.helper.writeDesktopEntry(this.options, \"electron-wrapper %U\", desktopFile, { Icon: appIdentifier })\n }\n\n private async copyLicenseFile(stageDir: StageDir) {\n const licenseSrc = await getNotLocalizedLicenseFile(this.options.license, this.packager, [\"txt\", \"html\"])\n if (licenseSrc) {\n const licenseDst = stageDir.getTempFile(path.join(\"share\", \"doc\", this.appId, \"copyright\"))\n await copyFile(licenseSrc, licenseDst)\n }\n }\n\n private async copyIcons(stageDir: StageDir) {\n const icons = await this.helper.icons\n const copyIcons = icons.map(async icon => {\n const extWithDot = path.extname(icon.file)\n const sizeName = extWithDot === \".svg\" ? \"scalable\" : `${icon.size}x${icon.size}`\n const iconDst = stageDir.getTempFile(path.join(\"share\", \"icons\", \"hicolor\", sizeName, \"apps\", `${this.appId}${extWithDot}`))\n\n return copyFile(icon.file, iconDst)\n })\n\n await Promise.all(copyIcons)\n }\n\n private getFlatpakBuilderOptions(appOutDir: string, stageDir: string, artifactName: string, arch: Arch): { manifest: FlatpakManifest; buildOptions: FlatpakBundlerBuildOptions } {\n const appIdentifier = this.appId\n const { executableName } = this.packager\n const flatpakArch = toLinuxArchString(arch, \"flatpak\")\n\n const manifest: FlatpakManifest = {\n id: appIdentifier,\n command: \"electron-wrapper\",\n runtime: this.options.runtime || flatpakBuilderDefaults.runtime,\n runtimeVersion: this.options.runtimeVersion || flatpakBuilderDefaults.runtimeVersion,\n sdk: this.options.sdk || flatpakBuilderDefaults.sdk,\n base: this.options.base || flatpakBuilderDefaults.base,\n baseVersion: this.options.baseVersion || flatpakBuilderDefaults.baseVersion,\n finishArgs: this.options.finishArgs || flatpakBuilderDefaults.finishArgs,\n branch: this.options.branch,\n modules: this.options.modules,\n }\n\n const buildOptions: FlatpakBundlerBuildOptions = {\n baseFlatpakref: `app/${manifest.base}/${flatpakArch}/${manifest.baseVersion}`,\n runtimeFlatpakref: `runtime/${manifest.runtime}/${flatpakArch}/${manifest.runtimeVersion}`,\n sdkFlatpakref: `runtime/${manifest.sdk}/${flatpakArch}/${manifest.runtimeVersion}`,\n arch: flatpakArch as any,\n bundlePath: path.join(this.outDir, artifactName),\n files: [[stageDir, \"/\"], [appOutDir, path.join(\"/lib\", appIdentifier)], ...(this.options.files || [])],\n symlinks: [[path.join(\"/lib\", appIdentifier, executableName), path.join(\"/bin\", executableName)], ...(this.options.symlinks || [])],\n }\n\n return { manifest, buildOptions }\n }\n}\n\nconst flatpakBuilderDefaults: Omit<FlatpakManifest, \"id\" | \"command\"> = {\n runtime: \"org.freedesktop.Platform\",\n runtimeVersion: \"20.08\",\n sdk: \"org.freedesktop.Sdk\",\n base: \"org.electronjs.Electron2.BaseApp\",\n baseVersion: \"20.08\",\n finishArgs: [\n // Wayland/X11 Rendering\n \"--socket=wayland\",\n \"--socket=x11\",\n \"--share=ipc\",\n // Open GL\n \"--device=dri\",\n // Audio output\n \"--socket=pulseaudio\",\n // Read/write home directory access\n \"--filesystem=home\",\n // Allow communication with network\n \"--share=network\",\n // System notifications with libnotify\n \"--talk-name=org.freedesktop.Notifications\",\n ],\n}\n\nfunction getElectronWrapperScript(executableName: string, useWaylandFlags: boolean): string {\n return useWaylandFlags\n ? `#!/bin/sh\n\nexport TMPDIR=\"$XDG_RUNTIME_DIR/app/$FLATPAK_ID\"\n\nif [ \"\\${XDG_SESSION_TYPE}\" == \"wayland\" ]; then\n zypak-wrapper \"${executableName}\" --enable-features=UseOzonePlatform --ozone-platform=wayland \"$@\"\nelse\n zypak-wrapper \"${executableName}\" \"$@\"\nfi\n`\n : `#!/bin/sh\n\nexport TMPDIR=\"$XDG_RUNTIME_DIR/app/$FLATPAK_ID\"\n\nzypak-wrapper \"${executableName}\" \"$@\"\n`\n}\n\nfunction filterFlatpakAppIdentifier(identifier: string) {\n // Remove special characters and allow only alphanumeric (A-Z,a-z,0-9), underscore (_), and period (.)\n // Flatpak documentation: https://docs.flatpak.org/en/latest/conventions.html#application-ids\n return identifier.replace(/-/g, \"_\").replace(/[^a-zA-Z0-9._]/g, \"\")\n}\n"]}
|
|
@@ -36,7 +36,7 @@ class LinuxTargetHelper {
|
|
|
36
36
|
return null;
|
|
37
37
|
}
|
|
38
38
|
const file = await this.packager.getTempFile(".xml");
|
|
39
|
-
await fs_extra_1.outputFile(file, '<?xml version="1.0" encoding="utf-8"?>\n<mime-info xmlns="http://www.freedesktop.org/standards/shared-mime-info">\n' + items.join("\n") + "\n</mime-info>");
|
|
39
|
+
await (0, fs_extra_1.outputFile)(file, '<?xml version="1.0" encoding="utf-8"?>\n<mime-info xmlns="http://www.freedesktop.org/standards/shared-mime-info">\n' + items.join("\n") + "\n</mime-info>");
|
|
40
40
|
return file;
|
|
41
41
|
}
|
|
42
42
|
// must be name without spaces and other special characters, but not product name used
|
|
@@ -46,9 +46,9 @@ class LinuxTargetHelper {
|
|
|
46
46
|
const { platformSpecificBuildOptions, config } = packager;
|
|
47
47
|
const sources = [platformSpecificBuildOptions.icon, (_b = (_a = config.mac) === null || _a === void 0 ? void 0 : _a.icon) !== null && _b !== void 0 ? _b : config.icon].filter(str => !!str);
|
|
48
48
|
// If no explicit sources are defined, fallback to buildResources directory, then default framework icon
|
|
49
|
-
let fallbackSources = [...builder_util_1.asArray(packager.getDefaultFrameworkIcon())];
|
|
49
|
+
let fallbackSources = [...(0, builder_util_1.asArray)(packager.getDefaultFrameworkIcon())];
|
|
50
50
|
const buildResources = (_c = config.directories) === null || _c === void 0 ? void 0 : _c.buildResources;
|
|
51
|
-
if (buildResources && (await builder_util_1.exists(path_1.join(buildResources, "icons")))) {
|
|
51
|
+
if (buildResources && (await (0, builder_util_1.exists)((0, path_1.join)(buildResources, "icons")))) {
|
|
52
52
|
fallbackSources = [buildResources, ...fallbackSources];
|
|
53
53
|
}
|
|
54
54
|
// need to put here and not as default because need to resolve image size
|
|
@@ -62,7 +62,7 @@ class LinuxTargetHelper {
|
|
|
62
62
|
async writeDesktopEntry(targetSpecificOptions, exec, destination, extra) {
|
|
63
63
|
const data = await this.computeDesktopEntry(targetSpecificOptions, exec, extra);
|
|
64
64
|
const file = destination || (await this.packager.getTempFile(`${this.packager.appInfo.productFilename}.desktop`));
|
|
65
|
-
await fs_extra_1.outputFile(file, data);
|
|
65
|
+
await (0, fs_extra_1.outputFile)(file, data);
|
|
66
66
|
return file;
|
|
67
67
|
}
|
|
68
68
|
computeDesktopEntry(targetSpecificOptions, exec, extra) {
|
|
@@ -107,17 +107,17 @@ class LinuxTargetHelper {
|
|
|
107
107
|
...targetSpecificOptions.desktop,
|
|
108
108
|
};
|
|
109
109
|
const description = this.getDescription(targetSpecificOptions);
|
|
110
|
-
if (!builder_util_1.isEmptyOrSpaces(description)) {
|
|
110
|
+
if (!(0, builder_util_1.isEmptyOrSpaces)(description)) {
|
|
111
111
|
desktopMeta.Comment = description;
|
|
112
112
|
}
|
|
113
|
-
const mimeTypes = builder_util_1.asArray(targetSpecificOptions.mimeTypes);
|
|
113
|
+
const mimeTypes = (0, builder_util_1.asArray)(targetSpecificOptions.mimeTypes);
|
|
114
114
|
for (const fileAssociation of packager.fileAssociations) {
|
|
115
115
|
if (fileAssociation.mimeType != null) {
|
|
116
116
|
mimeTypes.push(fileAssociation.mimeType);
|
|
117
117
|
}
|
|
118
118
|
}
|
|
119
|
-
for (const protocol of builder_util_1.asArray(packager.config.protocols).concat(builder_util_1.asArray(packager.platformSpecificBuildOptions.protocols))) {
|
|
120
|
-
for (const scheme of builder_util_1.asArray(protocol.schemes)) {
|
|
119
|
+
for (const protocol of (0, builder_util_1.asArray)(packager.config.protocols).concat((0, builder_util_1.asArray)(packager.platformSpecificBuildOptions.protocols))) {
|
|
120
|
+
for (const scheme of (0, builder_util_1.asArray)(protocol.schemes)) {
|
|
121
121
|
mimeTypes.push(`x-scheme-handler/${scheme}`);
|
|
122
122
|
}
|
|
123
123
|
}
|
|
@@ -125,7 +125,7 @@ class LinuxTargetHelper {
|
|
|
125
125
|
desktopMeta.MimeType = mimeTypes.join(";") + ";";
|
|
126
126
|
}
|
|
127
127
|
let category = targetSpecificOptions.category;
|
|
128
|
-
if (builder_util_1.isEmptyOrSpaces(category)) {
|
|
128
|
+
if ((0, builder_util_1.isEmptyOrSpaces)(category)) {
|
|
129
129
|
const macCategory = (packager.config.mac || {}).category;
|
|
130
130
|
if (macCategory != null) {
|
|
131
131
|
category = macToLinuxCategory[macCategory];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"LinuxTargetHelper.js","sourceRoot":"","sources":["../../src/targets/LinuxTargetHelper.ts"],"names":[],"mappings":"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","sourcesContent":["import { asArray, isEmptyOrSpaces, log, exists } from \"builder-util\"\nimport { outputFile } from \"fs-extra\"\nimport { Lazy } from \"lazy-val\"\nimport { LinuxPackager } from \"../linuxPackager\"\nimport { LinuxTargetSpecificOptions } from \"../options/linuxOptions\"\nimport { IconInfo } from \"../platformPackager\"\nimport { join } from \"path\"\n\nexport const installPrefix = \"/opt\"\n\nexport class LinuxTargetHelper {\n private readonly iconPromise = new Lazy(() => this.computeDesktopIcons())\n\n private readonly mimeTypeFilesPromise = new Lazy(() => this.computeMimeTypeFiles())\n\n maxIconPath: string | null = null\n\n constructor(private packager: LinuxPackager) {}\n\n get icons(): Promise<Array<IconInfo>> {\n return this.iconPromise.value\n }\n\n get mimeTypeFiles(): Promise<string | null> {\n return this.mimeTypeFilesPromise.value\n }\n\n private async computeMimeTypeFiles(): Promise<string | null> {\n const items: Array<string> = []\n for (const fileAssociation of this.packager.fileAssociations) {\n if (!fileAssociation.mimeType) {\n continue\n }\n\n const data = `<mime-type type=\"${fileAssociation.mimeType}\">\n <glob pattern=\"*.${fileAssociation.ext}\"/>\n ${fileAssociation.description ? `<comment>${fileAssociation.description}</comment>` : \"\"}\n <icon name=\"x-office-document\" />\n</mime-type>`\n items.push(data)\n }\n\n if (items.length === 0) {\n return null\n }\n\n const file = await this.packager.getTempFile(\".xml\")\n await outputFile(\n file,\n '<?xml version=\"1.0\" encoding=\"utf-8\"?>\\n<mime-info xmlns=\"http://www.freedesktop.org/standards/shared-mime-info\">\\n' + items.join(\"\\n\") + \"\\n</mime-info>\"\n )\n return file\n }\n\n // must be name without spaces and other special characters, but not product name used\n private async computeDesktopIcons(): Promise<Array<IconInfo>> {\n const packager = this.packager\n const { platformSpecificBuildOptions, config } = packager\n\n const sources = [platformSpecificBuildOptions.icon, config.mac?.icon ?? config.icon].filter(str => !!str) as string[]\n\n // If no explicit sources are defined, fallback to buildResources directory, then default framework icon\n let fallbackSources = [...asArray(packager.getDefaultFrameworkIcon())]\n const buildResources = config.directories?.buildResources\n if (buildResources && (await exists(join(buildResources, \"icons\")))) {\n fallbackSources = [buildResources, ...fallbackSources]\n }\n\n // need to put here and not as default because need to resolve image size\n const result = await packager.resolveIcon(sources, fallbackSources, \"set\")\n this.maxIconPath = result[result.length - 1].file\n return result\n }\n\n getDescription(options: LinuxTargetSpecificOptions) {\n return options.description || this.packager.appInfo.description\n }\n\n async writeDesktopEntry(targetSpecificOptions: LinuxTargetSpecificOptions, exec?: string, destination?: string | null, extra?: { [key: string]: string }): Promise<string> {\n const data = await this.computeDesktopEntry(targetSpecificOptions, exec, extra)\n const file = destination || (await this.packager.getTempFile(`${this.packager.appInfo.productFilename}.desktop`))\n await outputFile(file, data)\n return file\n }\n\n computeDesktopEntry(targetSpecificOptions: LinuxTargetSpecificOptions, exec?: string, extra?: { [key: string]: string }): Promise<string> {\n if (exec != null && exec.length === 0) {\n throw new Error(\"Specified exec is empty\")\n }\n // https://github.com/electron-userland/electron-builder/issues/3418\n if (targetSpecificOptions.desktop != null && targetSpecificOptions.desktop.Exec != null) {\n throw new Error(\"Please specify executable name as linux.executableName instead of linux.desktop.Exec\")\n }\n\n const packager = this.packager\n const appInfo = packager.appInfo\n\n const executableArgs = targetSpecificOptions.executableArgs\n if (exec == null) {\n exec = `${installPrefix}/${appInfo.sanitizedProductName}/${packager.executableName}`\n if (!/^[/0-9A-Za-z._-]+$/.test(exec)) {\n exec = `\"${exec}\"`\n }\n if (executableArgs) {\n exec += \" \"\n exec += executableArgs.join(\" \")\n }\n // https://specifications.freedesktop.org/desktop-entry-spec/desktop-entry-spec-latest.html#exec-variables\n const execCodes = [\"%f\", \"%u\", \"%F\", \"%U\"]\n if (executableArgs == null || executableArgs.findIndex(arg => execCodes.includes(arg)) === -1) {\n exec += \" %U\"\n }\n }\n\n const desktopMeta: any = {\n Name: appInfo.productName,\n Exec: exec,\n Terminal: \"false\",\n Type: \"Application\",\n Icon: packager.executableName,\n // https://askubuntu.com/questions/367396/what-represent-the-startupwmclass-field-of-a-desktop-file\n // must be set to package.json name (because it is Electron set WM_CLASS)\n // to get WM_CLASS of running window: xprop WM_CLASS\n // StartupWMClass doesn't work for unicode\n // https://github.com/electron/electron/blob/2-0-x/atom/browser/native_window_views.cc#L226\n StartupWMClass: appInfo.productName,\n ...extra,\n ...targetSpecificOptions.desktop,\n }\n\n const description = this.getDescription(targetSpecificOptions)\n if (!isEmptyOrSpaces(description)) {\n desktopMeta.Comment = description\n }\n\n const mimeTypes: Array<string> = asArray(targetSpecificOptions.mimeTypes)\n for (const fileAssociation of packager.fileAssociations) {\n if (fileAssociation.mimeType != null) {\n mimeTypes.push(fileAssociation.mimeType)\n }\n }\n\n for (const protocol of asArray(packager.config.protocols).concat(asArray(packager.platformSpecificBuildOptions.protocols))) {\n for (const scheme of asArray(protocol.schemes)) {\n mimeTypes.push(`x-scheme-handler/${scheme}`)\n }\n }\n\n if (mimeTypes.length !== 0) {\n desktopMeta.MimeType = mimeTypes.join(\";\") + \";\"\n }\n\n let category = targetSpecificOptions.category\n if (isEmptyOrSpaces(category)) {\n const macCategory = (packager.config.mac || {}).category\n if (macCategory != null) {\n category = macToLinuxCategory[macCategory]\n }\n\n if (category == null) {\n // https://github.com/develar/onshape-desktop-shell/issues/48\n if (macCategory != null) {\n log.warn({ macCategory }, \"cannot map macOS category to Linux. If possible mapping is known for you, please file issue to add it.\")\n }\n log.warn(\n {\n reason: \"linux.category is not set and cannot map from macOS\",\n docs: \"https://www.electron.build/configuration/linux\",\n },\n 'application Linux category is set to default \"Utility\"'\n )\n category = \"Utility\"\n }\n }\n desktopMeta.Categories = `${category}${category.endsWith(\";\") ? \"\" : \";\"}`\n\n let data = `[Desktop Entry]`\n for (const name of Object.keys(desktopMeta)) {\n data += `\\n${name}=${desktopMeta[name]}`\n }\n data += \"\\n\"\n return Promise.resolve(data)\n }\n}\n\nconst macToLinuxCategory: any = {\n \"public.app-category.graphics-design\": \"Graphics\",\n \"public.app-category.developer-tools\": \"Development\",\n \"public.app-category.education\": \"Education\",\n \"public.app-category.games\": \"Game\",\n \"public.app-category.video\": \"Video;AudioVideo\",\n \"public.app-category.utilities\": \"Utility\",\n \"public.app-category.social-networking\": \"Network;Chat\",\n \"public.app-category.finance\": \"Office;Finance\",\n}\n"]}
|
|
1
|
+
{"version":3,"file":"LinuxTargetHelper.js","sourceRoot":"","sources":["../../src/targets/LinuxTargetHelper.ts"],"names":[],"mappings":"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","sourcesContent":["import { asArray, isEmptyOrSpaces, log, exists } from \"builder-util\"\nimport { outputFile } from \"fs-extra\"\nimport { Lazy } from \"lazy-val\"\nimport { LinuxPackager } from \"../linuxPackager\"\nimport { LinuxTargetSpecificOptions } from \"../options/linuxOptions\"\nimport { IconInfo } from \"../platformPackager\"\nimport { join } from \"path\"\n\nexport const installPrefix = \"/opt\"\n\nexport class LinuxTargetHelper {\n private readonly iconPromise = new Lazy(() => this.computeDesktopIcons())\n\n private readonly mimeTypeFilesPromise = new Lazy(() => this.computeMimeTypeFiles())\n\n maxIconPath: string | null = null\n\n constructor(private packager: LinuxPackager) {}\n\n get icons(): Promise<Array<IconInfo>> {\n return this.iconPromise.value\n }\n\n get mimeTypeFiles(): Promise<string | null> {\n return this.mimeTypeFilesPromise.value\n }\n\n private async computeMimeTypeFiles(): Promise<string | null> {\n const items: Array<string> = []\n for (const fileAssociation of this.packager.fileAssociations) {\n if (!fileAssociation.mimeType) {\n continue\n }\n\n const data = `<mime-type type=\"${fileAssociation.mimeType}\">\n <glob pattern=\"*.${fileAssociation.ext}\"/>\n ${fileAssociation.description ? `<comment>${fileAssociation.description}</comment>` : \"\"}\n <icon name=\"x-office-document\" />\n</mime-type>`\n items.push(data)\n }\n\n if (items.length === 0) {\n return null\n }\n\n const file = await this.packager.getTempFile(\".xml\")\n await outputFile(\n file,\n '<?xml version=\"1.0\" encoding=\"utf-8\"?>\\n<mime-info xmlns=\"http://www.freedesktop.org/standards/shared-mime-info\">\\n' + items.join(\"\\n\") + \"\\n</mime-info>\"\n )\n return file\n }\n\n // must be name without spaces and other special characters, but not product name used\n private async computeDesktopIcons(): Promise<Array<IconInfo>> {\n const packager = this.packager\n const { platformSpecificBuildOptions, config } = packager\n\n const sources = [platformSpecificBuildOptions.icon, config.mac?.icon ?? config.icon].filter(str => !!str) as string[]\n\n // If no explicit sources are defined, fallback to buildResources directory, then default framework icon\n let fallbackSources = [...asArray(packager.getDefaultFrameworkIcon())]\n const buildResources = config.directories?.buildResources\n if (buildResources && (await exists(join(buildResources, \"icons\")))) {\n fallbackSources = [buildResources, ...fallbackSources]\n }\n\n // need to put here and not as default because need to resolve image size\n const result = await packager.resolveIcon(sources, fallbackSources, \"set\")\n this.maxIconPath = result[result.length - 1].file\n return result\n }\n\n getDescription(options: LinuxTargetSpecificOptions) {\n return options.description || this.packager.appInfo.description\n }\n\n async writeDesktopEntry(targetSpecificOptions: LinuxTargetSpecificOptions, exec?: string, destination?: string | null, extra?: { [key: string]: string }): Promise<string> {\n const data = await this.computeDesktopEntry(targetSpecificOptions, exec, extra)\n const file = destination || (await this.packager.getTempFile(`${this.packager.appInfo.productFilename}.desktop`))\n await outputFile(file, data)\n return file\n }\n\n computeDesktopEntry(targetSpecificOptions: LinuxTargetSpecificOptions, exec?: string, extra?: { [key: string]: string }): Promise<string> {\n if (exec != null && exec.length === 0) {\n throw new Error(\"Specified exec is empty\")\n }\n // https://github.com/electron-userland/electron-builder/issues/3418\n if (targetSpecificOptions.desktop != null && targetSpecificOptions.desktop.Exec != null) {\n throw new Error(\"Please specify executable name as linux.executableName instead of linux.desktop.Exec\")\n }\n\n const packager = this.packager\n const appInfo = packager.appInfo\n\n const executableArgs = targetSpecificOptions.executableArgs\n if (exec == null) {\n exec = `${installPrefix}/${appInfo.sanitizedProductName}/${packager.executableName}`\n if (!/^[/0-9A-Za-z._-]+$/.test(exec)) {\n exec = `\"${exec}\"`\n }\n if (executableArgs) {\n exec += \" \"\n exec += executableArgs.join(\" \")\n }\n // https://specifications.freedesktop.org/desktop-entry-spec/desktop-entry-spec-latest.html#exec-variables\n const execCodes = [\"%f\", \"%u\", \"%F\", \"%U\"]\n if (executableArgs == null || executableArgs.findIndex(arg => execCodes.includes(arg)) === -1) {\n exec += \" %U\"\n }\n }\n\n const desktopMeta: any = {\n Name: appInfo.productName,\n Exec: exec,\n Terminal: \"false\",\n Type: \"Application\",\n Icon: packager.executableName,\n // https://askubuntu.com/questions/367396/what-represent-the-startupwmclass-field-of-a-desktop-file\n // must be set to package.json name (because it is Electron set WM_CLASS)\n // to get WM_CLASS of running window: xprop WM_CLASS\n // StartupWMClass doesn't work for unicode\n // https://github.com/electron/electron/blob/2-0-x/atom/browser/native_window_views.cc#L226\n StartupWMClass: appInfo.productName,\n ...extra,\n ...targetSpecificOptions.desktop,\n }\n\n const description = this.getDescription(targetSpecificOptions)\n if (!isEmptyOrSpaces(description)) {\n desktopMeta.Comment = description\n }\n\n const mimeTypes: Array<string> = asArray(targetSpecificOptions.mimeTypes)\n for (const fileAssociation of packager.fileAssociations) {\n if (fileAssociation.mimeType != null) {\n mimeTypes.push(fileAssociation.mimeType)\n }\n }\n\n for (const protocol of asArray(packager.config.protocols).concat(asArray(packager.platformSpecificBuildOptions.protocols))) {\n for (const scheme of asArray(protocol.schemes)) {\n mimeTypes.push(`x-scheme-handler/${scheme}`)\n }\n }\n\n if (mimeTypes.length !== 0) {\n desktopMeta.MimeType = mimeTypes.join(\";\") + \";\"\n }\n\n let category = targetSpecificOptions.category\n if (isEmptyOrSpaces(category)) {\n const macCategory = (packager.config.mac || {}).category\n if (macCategory != null) {\n category = macToLinuxCategory[macCategory]\n }\n\n if (category == null) {\n // https://github.com/develar/onshape-desktop-shell/issues/48\n if (macCategory != null) {\n log.warn({ macCategory }, \"cannot map macOS category to Linux. If possible mapping is known for you, please file issue to add it.\")\n }\n log.warn(\n {\n reason: \"linux.category is not set and cannot map from macOS\",\n docs: \"https://www.electron.build/configuration/linux\",\n },\n 'application Linux category is set to default \"Utility\"'\n )\n category = \"Utility\"\n }\n }\n desktopMeta.Categories = `${category}${category.endsWith(\";\") ? \"\" : \";\"}`\n\n let data = `[Desktop Entry]`\n for (const name of Object.keys(desktopMeta)) {\n data += `\\n${name}=${desktopMeta[name]}`\n }\n data += \"\\n\"\n return Promise.resolve(data)\n }\n}\n\nconst macToLinuxCategory: any = {\n \"public.app-category.graphics-design\": \"Graphics\",\n \"public.app-category.developer-tools\": \"Development\",\n \"public.app-category.education\": \"Education\",\n \"public.app-category.games\": \"Game\",\n \"public.app-category.video\": \"Video;AudioVideo\",\n \"public.app-category.utilities\": \"Utility\",\n \"public.app-category.social-networking\": \"Network;Chat\",\n \"public.app-category.finance\": \"Office;Finance\",\n}\n"]}
|
package/out/targets/MsiTarget.js
CHANGED
|
@@ -20,7 +20,7 @@ const targetUtil_1 = require("./targetUtil");
|
|
|
20
20
|
const ELECTRON_BUILDER_UPGRADE_CODE_NS_UUID = builder_util_runtime_1.UUID.parse("d752fe43-5d44-44d5-9fc9-6dd1bf19d5cc");
|
|
21
21
|
const ROOT_DIR_ID = "APPLICATIONFOLDER";
|
|
22
22
|
const projectTemplate = new lazy_val_1.Lazy(async () => {
|
|
23
|
-
const template = (await promises_1.readFile(path.join(pathManager_1.getTemplatePath("msi"), "template.xml"), "utf8"))
|
|
23
|
+
const template = (await (0, promises_1.readFile)(path.join((0, pathManager_1.getTemplatePath)("msi"), "template.xml"), "utf8"))
|
|
24
24
|
.replace(/{{/g, "<%")
|
|
25
25
|
.replace(/}}/g, "%>")
|
|
26
26
|
.replace(/\${([^}]+)}/g, "<%=$1%>");
|
|
@@ -33,7 +33,7 @@ class MsiTarget extends core_1.Target {
|
|
|
33
33
|
this.packager = packager;
|
|
34
34
|
this.outDir = outDir;
|
|
35
35
|
this.vm = process.platform === "win32" ? new vm_1.VmManager() : new WineVm_1.WineVmManager();
|
|
36
|
-
this.options = builder_util_1.deepAssign(this.packager.platformSpecificBuildOptions, this.packager.config.msi);
|
|
36
|
+
this.options = (0, builder_util_1.deepAssign)(this.packager.platformSpecificBuildOptions, this.packager.config.msi);
|
|
37
37
|
}
|
|
38
38
|
/**
|
|
39
39
|
* A product-specific string that can be used in an [MSI Identifier](https://docs.microsoft.com/en-us/windows/win32/msi/identifier).
|
|
@@ -57,15 +57,15 @@ class MsiTarget extends core_1.Target {
|
|
|
57
57
|
file: artifactPath,
|
|
58
58
|
arch,
|
|
59
59
|
});
|
|
60
|
-
const stageDir = await targetUtil_1.createStageDir(this, packager, arch);
|
|
60
|
+
const stageDir = await (0, targetUtil_1.createStageDir)(this, packager, arch);
|
|
61
61
|
const vm = this.vm;
|
|
62
|
-
const commonOptions = CommonWindowsInstallerConfiguration_1.getEffectiveOptions(this.options, this.packager);
|
|
62
|
+
const commonOptions = (0, CommonWindowsInstallerConfiguration_1.getEffectiveOptions)(this.options, this.packager);
|
|
63
63
|
const projectFile = stageDir.getTempFile("project.wxs");
|
|
64
64
|
const objectFiles = ["project.wixobj"];
|
|
65
|
-
await promises_1.writeFile(projectFile, await this.writeManifest(appOutDir, arch, commonOptions));
|
|
65
|
+
await (0, promises_1.writeFile)(projectFile, await this.writeManifest(appOutDir, arch, commonOptions));
|
|
66
66
|
await packager.info.callMsiProjectCreated(projectFile);
|
|
67
67
|
// noinspection SpellCheckingInspection
|
|
68
|
-
const vendorPath = await binDownload_1.getBinFromUrl("wix", "4.0.0.5512.2", "/X5poahdCc3199Vt6AP7gluTlT1nxi9cbbHhZhCMEu+ngyP1LiBMn+oZX7QAZVaKeBMc2SjVp7fJqNLqsUnPNQ==");
|
|
68
|
+
const vendorPath = await (0, binDownload_1.getBinFromUrl)("wix", "4.0.0.5512.2", "/X5poahdCc3199Vt6AP7gluTlT1nxi9cbbHhZhCMEu+ngyP1LiBMn+oZX7QAZVaKeBMc2SjVp7fJqNLqsUnPNQ==");
|
|
69
69
|
// noinspection SpellCheckingInspection
|
|
70
70
|
const candleArgs = ["-arch", arch === builder_util_1.Arch.ia32 ? "x86" : arch === builder_util_1.Arch.arm64 ? "arm64" : "x64", `-dappDir=${vm.toVmFile(appOutDir)}`].concat(this.getCommonWixArgs());
|
|
71
71
|
candleArgs.push("project.wxs");
|
|
@@ -147,7 +147,7 @@ class MsiTarget extends core_1.Target {
|
|
|
147
147
|
// https://stackoverflow.com/questions/1929038/compilation-error-ice80-the-64bitcomponent-uses-32bitdirectory
|
|
148
148
|
programFilesId: arch === builder_util_1.Arch.x64 ? "ProgramFiles64Folder" : "ProgramFilesFolder",
|
|
149
149
|
// wix in the name because special wix format can be used in the name
|
|
150
|
-
installationDirectoryWixName: targetUtil_1.getWindowsInstallationDirName(appInfo, commonOptions.isAssisted || commonOptions.isPerMachine === true),
|
|
150
|
+
installationDirectoryWixName: (0, targetUtil_1.getWindowsInstallationDirName)(appInfo, commonOptions.isAssisted || commonOptions.isPerMachine === true),
|
|
151
151
|
dirs,
|
|
152
152
|
files,
|
|
153
153
|
});
|
|
@@ -158,8 +158,8 @@ class MsiTarget extends core_1.Target {
|
|
|
158
158
|
const dirNames = new Set();
|
|
159
159
|
const dirs = [];
|
|
160
160
|
const fileSpace = " ".repeat(6);
|
|
161
|
-
const commonOptions = CommonWindowsInstallerConfiguration_1.getEffectiveOptions(this.options, this.packager);
|
|
162
|
-
const files = await bluebird_lst_1.default.map(fs_1.walk(appOutDir), file => {
|
|
161
|
+
const commonOptions = (0, CommonWindowsInstallerConfiguration_1.getEffectiveOptions)(this.options, this.packager);
|
|
162
|
+
const files = await bluebird_lst_1.default.map((0, fs_1.walk)(appOutDir), file => {
|
|
163
163
|
const packagePath = file.substring(appOutDir.length + 1);
|
|
164
164
|
const lastSlash = packagePath.lastIndexOf(path.sep);
|
|
165
165
|
const fileName = lastSlash > 0 ? packagePath.substring(lastSlash + 1) : packagePath;
|
|
@@ -172,7 +172,7 @@ class MsiTarget extends core_1.Target {
|
|
|
172
172
|
// This syntax is a shortcut to defining each directory in an individual Directory element.
|
|
173
173
|
dirName = packagePath.substring(0, lastSlash);
|
|
174
174
|
// https://github.com/electron-userland/electron-builder/issues/3027
|
|
175
|
-
directoryId = "d" + crypto_1.createHash("md5").update(dirName).digest("base64").replace(/\//g, "_").replace(/\+/g, ".").replace(/=+$/, "");
|
|
175
|
+
directoryId = "d" + (0, crypto_1.createHash)("md5").update(dirName).digest("base64").replace(/\//g, "_").replace(/\+/g, ".").replace(/=+$/, "");
|
|
176
176
|
if (!dirNames.has(dirName)) {
|
|
177
177
|
dirNames.add(dirName);
|
|
178
178
|
dirs.push(`<Directory Id="${directoryId}" Name="${ROOT_DIR_ID}:\\${dirName.replace(/\//g, "\\")}\\"/>`);
|
|
@@ -220,7 +220,7 @@ class MsiTarget extends core_1.Target {
|
|
|
220
220
|
const fileAssociations = this.packager.fileAssociations;
|
|
221
221
|
if (isMainExecutable && fileAssociations.length !== 0) {
|
|
222
222
|
for (const item of fileAssociations) {
|
|
223
|
-
const extensions = builder_util_1.asArray(item.ext).map(platformPackager_1.normalizeExt);
|
|
223
|
+
const extensions = (0, builder_util_1.asArray)(item.ext).map(platformPackager_1.normalizeExt);
|
|
224
224
|
for (const ext of extensions) {
|
|
225
225
|
result += `${fileSpace} <ProgId Id="${this.productMsiIdPrefix}.${ext}" Advertise="yes" Icon="${this.iconId}" ${item.description ? `Description="${item.description}"` : ""}>\n`;
|
|
226
226
|
result += `${fileSpace} <Extension Id="${ext}" Advertise="yes">\n`;
|