app-builder-lib 21.1.6 → 22.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/electron-osx-sign/util-provisioning-profiles.js +17 -5
- package/out/appInfo.d.ts +10 -10
- package/out/asar/asar.js +3 -1
- package/out/asar/asar.js.map +1 -1
- package/out/asar/asarUtil.js +3 -1
- package/out/asar/asarUtil.js.map +1 -1
- package/out/asar/integrity.js +3 -1
- package/out/asar/integrity.js.map +1 -1
- package/out/asar/unpackDetector.js +3 -1
- package/out/asar/unpackDetector.js.map +1 -1
- package/out/codeSign/codesign.js +3 -1
- package/out/codeSign/codesign.js.map +1 -1
- package/out/codeSign/macCodeSign.js +3 -1
- package/out/codeSign/macCodeSign.js.map +1 -1
- package/out/codeSign/windowsCodeSign.js +7 -5
- package/out/codeSign/windowsCodeSign.js.map +1 -1
- package/out/electron/ElectronFramework.d.ts +1 -1
- package/out/electron/ElectronFramework.js +3 -1
- package/out/electron/ElectronFramework.js.map +1 -1
- package/out/electron/electronMac.js +52 -8
- package/out/electron/electronMac.js.map +1 -1
- package/out/electron/electronVersion.js +3 -1
- package/out/electron/electronVersion.js.map +1 -1
- package/out/fileMatcher.js +3 -1
- package/out/fileMatcher.js.map +1 -1
- package/out/fileTransformer.js +3 -1
- package/out/fileTransformer.js.map +1 -1
- package/out/forge-maker.js +3 -1
- package/out/forge-maker.js.map +1 -1
- package/out/frameworks/LibUiFramework.js +3 -1
- package/out/frameworks/LibUiFramework.js.map +1 -1
- package/out/linuxPackager.d.ts +1 -1
- package/out/macPackager.d.ts +2 -1
- package/out/macPackager.js +18 -8
- package/out/macPackager.js.map +1 -1
- package/out/options/SnapOptions.d.ts +5 -0
- package/out/options/linuxOptions.d.ts +4 -0
- package/out/options/pkgOptions.d.ts +4 -0
- package/out/packager.d.ts +11 -11
- package/out/packager.js +5 -3
- package/out/packager.js.map +1 -1
- package/out/platformPackager.d.ts +10 -10
- package/out/platformPackager.js +3 -1
- package/out/platformPackager.js.map +1 -1
- package/out/presets/rectCra.js +3 -1
- package/out/presets/rectCra.js.map +1 -1
- package/out/publish/PublishManager.d.ts +2 -0
- package/out/publish/PublishManager.js +5 -3
- package/out/publish/PublishManager.js.map +1 -1
- package/out/publish/SnapStorePublisher.js +3 -1
- package/out/publish/SnapStorePublisher.js.map +1 -1
- package/out/publish/s3/BaseS3Publisher.js +3 -1
- package/out/publish/s3/BaseS3Publisher.js.map +1 -1
- package/out/publish/updateInfoBuilder.js +4 -2
- package/out/publish/updateInfoBuilder.js.map +1 -1
- package/out/remoteBuilder/ProjectInfoManager.js +3 -1
- package/out/remoteBuilder/ProjectInfoManager.js.map +1 -1
- package/out/remoteBuilder/RemoteBuilder.js +4 -2
- package/out/remoteBuilder/RemoteBuilder.js.map +1 -1
- package/out/remoteBuilder/builder-cli.js +4 -2
- package/out/remoteBuilder/builder-cli.js.map +1 -1
- package/out/targets/AppImageTarget.js +4 -2
- package/out/targets/AppImageTarget.js.map +1 -1
- package/out/targets/AppxTarget.js +19 -3
- package/out/targets/AppxTarget.js.map +1 -1
- package/out/targets/ArchiveTarget.js +3 -1
- package/out/targets/ArchiveTarget.js.map +1 -1
- package/out/targets/LinuxTargetHelper.d.ts +2 -2
- package/out/targets/LinuxTargetHelper.js +8 -2
- package/out/targets/LinuxTargetHelper.js.map +1 -1
- package/out/targets/MsiTarget.js +5 -3
- package/out/targets/MsiTarget.js.map +1 -1
- package/out/targets/archive.js +3 -1
- package/out/targets/archive.js.map +1 -1
- package/out/targets/differentialUpdateInfoBuilder.js +4 -2
- package/out/targets/differentialUpdateInfoBuilder.js.map +1 -1
- package/out/targets/fpm.js +5 -3
- package/out/targets/fpm.js.map +1 -1
- package/out/targets/nsis/NsisTarget.d.ts +5 -5
- package/out/targets/nsis/NsisTarget.js +24 -11
- package/out/targets/nsis/NsisTarget.js.map +1 -1
- package/out/targets/nsis/WebInstallerTarget.d.ts +2 -2
- package/out/targets/nsis/nsisLang.js +3 -1
- package/out/targets/nsis/nsisLang.js.map +1 -1
- package/out/targets/nsis/nsisLicense.js +3 -1
- package/out/targets/nsis/nsisLicense.js.map +1 -1
- package/out/targets/nsis/nsisOptions.d.ts +4 -0
- package/out/targets/nsis/nsisUtil.d.ts +3 -0
- package/out/targets/nsis/nsisUtil.js +195 -4
- package/out/targets/nsis/nsisUtil.js.map +1 -1
- package/out/targets/pkg.js +15 -2
- package/out/targets/pkg.js.map +1 -1
- package/out/targets/snap.js +10 -3
- package/out/targets/snap.js.map +1 -1
- package/out/targets/targetFactory.d.ts +1 -1
- package/out/targets/targetUtil.js +3 -1
- package/out/targets/targetUtil.js.map +1 -1
- package/out/util/AppFileWalker.js +3 -1
- package/out/util/AppFileWalker.js.map +1 -1
- package/out/util/NodeModuleCopyHelper.js +3 -1
- package/out/util/NodeModuleCopyHelper.js.map +1 -1
- package/out/util/appBuilder.js +1 -1
- package/out/util/appBuilder.js.map +1 -1
- package/out/util/appFileCopier.js +15 -18
- package/out/util/appFileCopier.js.map +1 -1
- package/out/util/bundledTool.js +1 -1
- package/out/util/bundledTool.js.map +1 -1
- package/out/util/cacheManager.js +3 -1
- package/out/util/cacheManager.js.map +1 -1
- package/out/util/config.js +4 -2
- package/out/util/config.js.map +1 -1
- package/out/util/filter.js +3 -1
- package/out/util/filter.js.map +1 -1
- package/out/util/hash.js +1 -1
- package/out/util/hash.js.map +1 -1
- package/out/util/license.js +3 -1
- package/out/util/license.js.map +1 -1
- package/out/util/macosVersion.js +3 -1
- package/out/util/macosVersion.js.map +1 -1
- package/out/util/packageMetadata.js +3 -1
- package/out/util/packageMetadata.js.map +1 -1
- package/out/util/pathManager.js +3 -1
- package/out/util/pathManager.js.map +1 -1
- package/out/util/repositoryInfo.js +3 -1
- package/out/util/repositoryInfo.js.map +1 -1
- package/out/util/yarn.js +14 -4
- package/out/util/yarn.js.map +1 -1
- package/out/vm/WineVm.js +3 -1
- package/out/vm/WineVm.js.map +1 -1
- package/out/vm/vm.d.ts +1 -1
- package/out/vm/vm.js +3 -1
- package/out/vm/vm.js.map +1 -1
- package/out/winPackager.d.ts +2 -2
- package/out/winPackager.js +4 -2
- package/out/winPackager.js.map +1 -1
- package/package.json +9 -9
- package/scheme.json +155 -1
- package/templates/linux/after-install.tpl +4 -1
- package/templates/nsis/assistedInstaller.nsh +6 -0
- package/templates/nsis/common.nsh +16 -7
- package/templates/nsis/include/extractAppPackage.nsh +46 -12
- package/templates/nsis/include/installer.nsh +43 -28
- package/templates/nsis/include/webPackage.nsh +19 -7
- package/templates/nsis/messages.yml +1 -1
- package/templates/nsis/multiUser.nsh +1 -1
- package/templates/nsis/portable.nsi +48 -11
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/targets/differentialUpdateInfoBuilder.ts"],"names":[],"mappings":";;;;;;;;;;;AAAA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AAEA;;AAGA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA
|
|
1
|
+
{"version":3,"sources":["../../src/targets/differentialUpdateInfoBuilder.ts"],"names":[],"mappings":";;;;;;;;;;;AAAA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AAEA;;AAGA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;;;;;AAGO,MAAM,qBAAqB,GAAG,WAA9B;;;AAED,SAAU,mCAAV,CAA8C,YAA9C,EAAoE,YAApE,EAAqH;AACzH,MAAI,YAAY,IAAI,IAApB,EAA0B;AACxB,WAAO,IAAP;AACD;;AAED,QAAM,IAAI,GAAG,MAAM,CAAC,IAAP,CAAY,YAAZ,CAAb;;AACA,MAAI,IAAI,CAAC,MAAL,IAAe,CAAnB,EAAsB;AACpB,WAAO,IAAP;AACD;;AAED,QAAM,QAAQ,GAAwC,EAAtD;;AACA,OAAK,MAAM,IAAX,IAAmB,IAAnB,EAAyB;AACvB,UAAM,eAAe,GAAG,YAAY,CAAC,IAAD,CAApC;AACA,UAAM,IAAI,GAAG,IAAI,CAAC,QAAL,CAAc,eAAe,CAAC,IAA9B,CAAb;AACA,IAAA,QAAQ,CAAC,IAAD,CAAR,GAAiB,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,EAAA,EACZ,eADY,CAAA,EACG;AAClB,MAAA,IAAI,EAAE,IADY;AAElB;AACA,MAAA;AAHkB,KADH,CAAjB;AAMD;;AACD,SAAO;AAAC,IAAA;AAAD,GAAP;AACD;;AAEK,SAAU,wCAAV,CAAmD,cAAnD,EAAiF;AACrF;;;;;;;;;;;;;;AAqBA,EAAA,cAAc,CAAC,QAAf,GAA0B,CAA1B,CAtBqF,CAuBrF;;AACA,EAAA,cAAc,CAAC,KAAf,GAAuB,KAAvB,CAxBqF,CAyBrF;;AACA,EAAA,cAAc,CAAC,WAAf,GAA6B,QAA7B;AACA,SAAO,cAAP;AACD;;AAEM,eAAe,cAAf,CAA8B,IAA9B,EAA0C;AAC/C,qBAAI,IAAJ,CAAS;AAAC,IAAA,IAAI,EAAE,mBAAI,QAAJ,CAAa,IAAb;AAAP,GAAT,EAAqC,6BAArC;;AACA,SAAO,MAAM,2CAA4C,CAAC,UAAD,EAAa,SAAb,EAAwB,IAAxB,EAA8B,eAA9B,EAA+C,SAA/C,CAA5C,CAAb;AACD;;AAEM,eAAe,cAAf,CAA8B,IAA9B,EAA4C,MAA5C,EAA4D,QAA5D,EAA6F,gBAA7F,EAA4H;AACjI,QAAM,YAAY,GAAG,GAAG,IAAI,GAAG,qBAAqB,EAApD;;AACA,qBAAI,IAAJ,CAAS;AAAC,IAAA,YAAY,EAAE,mBAAI,QAAJ,CAAa,YAAb;AAAf,GAAT,EAAqD,oBAArD;;AACA,QAAM,UAAU,GAAG,MAAM,2CAA4C,CAAC,UAAD,EAAa,SAAb,EAAwB,IAAxB,EAA8B,UAA9B,EAA0C,YAA1C,CAA5C,CAAzB;AACA,QAAM,QAAQ,CAAC,IAAT,CAAc,0BAAd,CAAyC;AAC7C,IAAA,IAAI,EAAE,YADuC;AAE7C,IAAA,gBAAgB,EAAE,gBAAgB,IAAI,IAApB,GAA2B,IAA3B,GAAkC,GAAG,gBAAgB,GAAG,qBAAqB,EAFlD;AAG7C,IAAA,MAH6C;AAI7C,IAAA,IAAI,EAAE,IAJuC;AAK7C,IAAA,QAL6C;AAM7C,IAAA;AAN6C,GAAzC,CAAN;AAQA,SAAO,UAAP;AACD,C","sourcesContent":["import { log } from \"builder-util\"\nimport { BlockMapDataHolder, PackageFileInfo } from \"builder-util-runtime\"\nimport * as path from \"path\"\nimport { Target } from \"../core\"\nimport { PlatformPackager } from \"../platformPackager\"\nimport { executeAppBuilderAsJson } from \"../util/appBuilder\"\nimport { ArchiveOptions } from \"./archive\"\n\nexport const BLOCK_MAP_FILE_SUFFIX = \".blockmap\"\n\nexport function createNsisWebDifferentialUpdateInfo(artifactPath: string, packageFiles: { [arch: string]: PackageFileInfo }) {\n if (packageFiles == null) {\n return null\n }\n\n const keys = Object.keys(packageFiles)\n if (keys.length <= 0) {\n return null\n }\n\n const packages: { [arch: string]: PackageFileInfo } = {}\n for (const arch of keys) {\n const packageFileInfo = packageFiles[arch]\n const file = path.basename(packageFileInfo.path)\n packages[arch] = {\n ...packageFileInfo,\n path: file,\n // https://github.com/electron-userland/electron-builder/issues/2583\n file,\n } as any\n }\n return {packages}\n}\n\nexport function configureDifferentialAwareArchiveOptions(archiveOptions: ArchiveOptions): ArchiveOptions {\n /*\n * dict size 64 MB: Full: 33,744.88 KB, To download: 17,630.3 KB (52%)\n * dict size 16 MB: Full: 33,936.84 KB, To download: 16,175.9 KB (48%)\n * dict size 8 MB: Full: 34,187.59 KB, To download: 8,229.9 KB (24%)\n * dict size 4 MB: Full: 34,628.73 KB, To download: 3,782.97 KB (11%)\n\n as we can see, if file changed in one place, all block is invalidated (and update size approximately equals to dict size)\n\n 1 MB is used:\n\n 1MB:\n\n 2018/01/11 11:54:41:0045 File has 59 changed blocks\n 2018/01/11 11:54:41:0050 Full: 71,588.59 KB, To download: 1,243.39 KB (2%)\n\n 4MB:\n\n 2018/01/11 11:31:43:0440 Full: 70,303.55 KB, To download: 4,843.27 KB (7%)\n 2018/01/11 11:31:43:0435 File has 234 changed blocks\n\n */\n archiveOptions.dictSize = 1\n // solid compression leads to a lot of changed blocks\n archiveOptions.solid = false\n // do not allow to change compression level to avoid different packages\n archiveOptions.compression = \"normal\"\n return archiveOptions\n}\n\nexport async function appendBlockmap(file: string): Promise<BlockMapDataHolder> {\n log.info({file: log.filePath(file)}, \"building embedded block map\")\n return await executeAppBuilderAsJson<BlockMapDataHolder>([\"blockmap\", \"--input\", file, \"--compression\", \"deflate\"])\n}\n\nexport async function createBlockmap(file: string, target: Target, packager: PlatformPackager<any>, safeArtifactName: string | null): Promise<BlockMapDataHolder> {\n const blockMapFile = `${file}${BLOCK_MAP_FILE_SUFFIX}`\n log.info({blockMapFile: log.filePath(blockMapFile)}, \"building block map\")\n const updateInfo = await executeAppBuilderAsJson<BlockMapDataHolder>([\"blockmap\", \"--input\", file, \"--output\", blockMapFile])\n await packager.info.callArtifactBuildCompleted({\n file: blockMapFile,\n safeArtifactName: safeArtifactName == null ? null : `${safeArtifactName}${BLOCK_MAP_FILE_SUFFIX}`,\n target,\n arch: null,\n packager,\n updateInfo,\n })\n return updateInfo\n}"],"sourceRoot":""}
|
package/out/targets/fpm.js
CHANGED
|
@@ -137,7 +137,9 @@ function _tools() {
|
|
|
137
137
|
return data;
|
|
138
138
|
}
|
|
139
139
|
|
|
140
|
-
function
|
|
140
|
+
function _getRequireWildcardCache() { if (typeof WeakMap !== "function") return null; var cache = new WeakMap(); _getRequireWildcardCache = function () { return cache; }; return cache; }
|
|
141
|
+
|
|
142
|
+
function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
|
|
141
143
|
|
|
142
144
|
class FpmTarget extends _core().Target {
|
|
143
145
|
constructor(name, packager, helper, outDir) {
|
|
@@ -145,7 +147,7 @@ class FpmTarget extends _core().Target {
|
|
|
145
147
|
this.packager = packager;
|
|
146
148
|
this.helper = helper;
|
|
147
149
|
this.outDir = outDir;
|
|
148
|
-
this.options = Object.assign({}, this.packager.platformSpecificBuildOptions, this.packager.config[this.name]);
|
|
150
|
+
this.options = Object.assign(Object.assign({}, this.packager.platformSpecificBuildOptions), this.packager.config[this.name]);
|
|
149
151
|
this.scriptFiles = this.createScripts();
|
|
150
152
|
}
|
|
151
153
|
|
|
@@ -302,7 +304,7 @@ class FpmTarget extends _core().Target {
|
|
|
302
304
|
return;
|
|
303
305
|
}
|
|
304
306
|
|
|
305
|
-
const env = Object.assign({}, process.env, {
|
|
307
|
+
const env = Object.assign(Object.assign({}, process.env), {
|
|
306
308
|
SZA_PATH: _zipBin().path7za,
|
|
307
309
|
SZA_COMPRESSION_LEVEL: packager.compression === "store" ? "0" : "9"
|
|
308
310
|
}); // 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)
|
package/out/targets/fpm.js.map
CHANGED
|
@@ -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,GAAO,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,EAAA,EAAmC,KAAK,QAAL,CAAc,4BAAjD,CAAA,EAAmF,KAAK,QAAL,CAAc,MAAd,CAA6B,KAAK,IAAlC,CAAnF,CAAP;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,GAAA,MAAA,CAAA,MAAA,CAAA;AACnB;AACA,MAAA,UAAU,EAAE,QAAQ,CAAC,cAFF;AAGnB,MAAA,eAAe,EAAE,QAAQ,CAAC,OAAT,CAAiB;AAHf,KAAA,EAGmC,QAAQ,CAAC,4BAH5C,CAArB;;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,GAAmB,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,GAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,EAAA,EACJ,OAAO,CAAC,GADJ,CAAA,EACO;AACd,MAAA,QAAQ,EAAE,iBADI;AAEd,MAAA,qBAAqB,EAAE,QAAQ,CAAC,WAAT,KAAyB,OAAzB,GAAmC,GAAnC,GAAyC;AAFlD,KADP,CAAT,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":""}
|
|
@@ -13,17 +13,17 @@ export declare class NsisTarget extends Target {
|
|
|
13
13
|
readonly archs: Map<Arch, string>;
|
|
14
14
|
constructor(packager: WinPackager, outDir: string, targetName: string, packageHelper: AppPackageHelper);
|
|
15
15
|
build(appOutDir: string, arch: Arch): Promise<void>;
|
|
16
|
-
|
|
16
|
+
get isBuildDifferentialAware(): boolean;
|
|
17
17
|
private getPreCompressedFileExtensions;
|
|
18
18
|
/** @private */
|
|
19
19
|
buildAppPackage(appOutDir: string, arch: Arch): Promise<PackageFileInfo>;
|
|
20
20
|
finishBuild(): Promise<any>;
|
|
21
|
-
protected
|
|
22
|
-
private
|
|
21
|
+
protected get installerFilenamePattern(): string;
|
|
22
|
+
private get isPortable();
|
|
23
23
|
private buildInstaller;
|
|
24
24
|
protected generateGitHubInstallerName(): string;
|
|
25
|
-
private
|
|
26
|
-
|
|
25
|
+
private get isUnicodeEnabled();
|
|
26
|
+
get isWebInstaller(): boolean;
|
|
27
27
|
private computeScriptAndSignUninstaller;
|
|
28
28
|
private computeVersionKey;
|
|
29
29
|
protected configureDefines(oneClick: boolean, defines: any): Promise<any>;
|
|
@@ -229,7 +229,9 @@ function _nsisUtil() {
|
|
|
229
229
|
return data;
|
|
230
230
|
}
|
|
231
231
|
|
|
232
|
-
function
|
|
232
|
+
function _getRequireWildcardCache() { if (typeof WeakMap !== "function") return null; var cache = new WeakMap(); _getRequireWildcardCache = function () { return cache; }; return cache; }
|
|
233
|
+
|
|
234
|
+
function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
|
|
233
235
|
|
|
234
236
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
235
237
|
|
|
@@ -299,7 +301,7 @@ class NsisTarget extends _core().Target {
|
|
|
299
301
|
|
|
300
302
|
if (isBuildDifferentialAware && this.isWebInstaller) {
|
|
301
303
|
const data = await (0, _differentialUpdateInfoBuilder().appendBlockmap)(archiveFile);
|
|
302
|
-
return Object.assign({}, data, {
|
|
304
|
+
return Object.assign(Object.assign({}, data), {
|
|
303
305
|
path: archiveFile
|
|
304
306
|
});
|
|
305
307
|
} else {
|
|
@@ -368,7 +370,7 @@ class NsisTarget extends _core().Target {
|
|
|
368
370
|
};
|
|
369
371
|
|
|
370
372
|
if (uninstallAppKey !== guid) {
|
|
371
|
-
defines.UNINSTALL_REGISTRY_KEY_2 = `Software\\Microsoft\\Windows\\CurrentVersion\\Uninstall
|
|
373
|
+
defines.UNINSTALL_REGISTRY_KEY_2 = `Software\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\${guid}`;
|
|
372
374
|
}
|
|
373
375
|
|
|
374
376
|
const commands = {
|
|
@@ -394,7 +396,7 @@ class NsisTarget extends _core().Target {
|
|
|
394
396
|
|
|
395
397
|
if (this.isPortable && options.useZip) {
|
|
396
398
|
for (const [arch, dir] of this.archs.entries()) {
|
|
397
|
-
defines[arch === _builderUtil().Arch.x64 ? "APP_DIR_64" : "APP_DIR_32"] = dir;
|
|
399
|
+
defines[arch === _builderUtil().Arch.x64 ? "APP_DIR_64" : arch === _builderUtil().Arch.arm64 ? "APP_DIR_ARM64" : "APP_DIR_32"] = dir;
|
|
398
400
|
}
|
|
399
401
|
} else if (USE_NSIS_BUILT_IN_COMPRESSOR && this.archs.size === 1) {
|
|
400
402
|
defines.APP_BUILD_DIR = this.archs.get(this.archs.keys().next().value);
|
|
@@ -402,7 +404,7 @@ class NsisTarget extends _core().Target {
|
|
|
402
404
|
await _bluebirdLst().default.map(this.archs.keys(), async arch => {
|
|
403
405
|
const fileInfo = await this.packageHelper.packArch(arch, this);
|
|
404
406
|
const file = fileInfo.path;
|
|
405
|
-
const defineKey = arch === _builderUtil().Arch.x64 ? "APP_64" : "APP_32";
|
|
407
|
+
const defineKey = arch === _builderUtil().Arch.x64 ? "APP_64" : arch === _builderUtil().Arch.arm64 ? "APP_ARM64" : "APP_32";
|
|
406
408
|
defines[defineKey] = file;
|
|
407
409
|
defines[`${defineKey}_NAME`] = path.basename(file); // nsis expect a hexadecimal string
|
|
408
410
|
|
|
@@ -433,6 +435,10 @@ class NsisTarget extends _core().Target {
|
|
|
433
435
|
const portableOptions = options;
|
|
434
436
|
defines.REQUEST_EXECUTION_LEVEL = portableOptions.requestExecutionLevel || "user";
|
|
435
437
|
defines.UNPACK_DIR_NAME = portableOptions.unpackDirName || (await (0, _builderUtil().executeAppBuilder)(["ksuid"]));
|
|
438
|
+
|
|
439
|
+
if (portableOptions.splashImage != null) {
|
|
440
|
+
defines.SPLASH_IMAGE = portableOptions.splashImage;
|
|
441
|
+
}
|
|
436
442
|
} else {
|
|
437
443
|
await this.configureDefines(oneClick, defines);
|
|
438
444
|
}
|
|
@@ -526,13 +532,20 @@ class NsisTarget extends _core().Target {
|
|
|
526
532
|
await this.executeMakensis(defines, commands, sharedHeader + (await this.computeFinalScript(script, false))); // http://forums.winamp.com/showthread.php?p=3078545
|
|
527
533
|
|
|
528
534
|
if ((0, _macosVersion().isMacOsCatalina)()) {
|
|
529
|
-
|
|
535
|
+
try {
|
|
536
|
+
_nsisUtil().UninstallerReader.exec(installerPath, uninstallerPath);
|
|
537
|
+
} catch (error) {
|
|
538
|
+
_builderUtil().log.warn("packager.vm is used: " + error.message);
|
|
530
539
|
|
|
531
|
-
|
|
540
|
+
const vm = await packager.vm.value;
|
|
541
|
+
await vm.exec(installerPath, []); // Parallels VM can exit after command execution, but NSIS continue to be running
|
|
532
542
|
|
|
533
|
-
|
|
534
|
-
|
|
535
|
-
await
|
|
543
|
+
let i = 0;
|
|
544
|
+
|
|
545
|
+
while (!(await (0, _fs().exists)(uninstallerPath)) && i++ < 100) {
|
|
546
|
+
// noinspection JSUnusedLocalSymbols
|
|
547
|
+
await new Promise((resolve, _reject) => setTimeout(resolve, 300));
|
|
548
|
+
}
|
|
536
549
|
}
|
|
537
550
|
} else {
|
|
538
551
|
await (0, _wine().execWine)(installerPath);
|
|
@@ -723,7 +736,7 @@ class NsisTarget extends _core().Target {
|
|
|
723
736
|
const command = path.join(nsisPath, process.platform === "darwin" ? "mac" : process.platform === "win32" ? "Bin" : "linux", process.platform === "win32" ? "makensis.exe" : "makensis");
|
|
724
737
|
await (0, _builderUtil().spawnAndWrite)(command, args, script, {
|
|
725
738
|
// 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
|
|
726
|
-
env: Object.assign({}, process.env, {
|
|
739
|
+
env: Object.assign(Object.assign({}, process.env), {
|
|
727
740
|
NSISDIR: nsisPath
|
|
728
741
|
}),
|
|
729
742
|
cwd: _nsisUtil().nsisTemplatesDir
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/targets/nsis/NsisTarget.ts"],"names":[],"mappings":"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","sourcesContent":["import { path7za } from \"7zip-bin\"\nimport BluebirdPromise from \"bluebird-lst\"\nimport { executeAppBuilder, Arch, asArray, AsyncTaskManager, getPlatformIconFileName, InvalidConfigurationError, log, spawnAndWrite, use, exec } from \"builder-util\"\nimport { PackageFileInfo, UUID, CURRENT_APP_PACKAGE_FILE_NAME, CURRENT_APP_INSTALLER_FILE_NAME } from \"builder-util-runtime\"\nimport { getBinFromUrl } from \"../../binDownload\"\nimport { statOrNull, walk, exists } from \"builder-util/out/fs\"\nimport { hashFile } from \"../../util/hash\"\nimport _debug from \"debug\"\nimport { readFile, stat, unlink } from \"fs-extra\"\nimport { Lazy } from \"lazy-val\"\nimport * as path from \"path\"\nimport { Target } from \"../../core\"\nimport { DesktopShortcutCreationPolicy, getEffectiveOptions } from \"../../options/CommonWindowsInstallerConfiguration\"\nimport { computeSafeArtifactNameIfNeeded, normalizeExt } from \"../../platformPackager\"\nimport { isMacOsCatalina } from \"../../util/macosVersion\"\nimport { time } from \"../../util/timer\"\nimport { execWine } from \"../../wine\"\nimport { WinPackager } from \"../../winPackager\"\nimport { archive, ArchiveOptions } from \"../archive\"\nimport { appendBlockmap, configureDifferentialAwareArchiveOptions, createBlockmap, createNsisWebDifferentialUpdateInfo } from \"../differentialUpdateInfoBuilder\"\nimport { getWindowsInstallationDirName } from \"../targetUtil\"\nimport { addCustomMessageFileInclude, createAddLangsMacro, LangConfigurator } from \"./nsisLang\"\nimport { computeLicensePage } from \"./nsisLicense\"\nimport { NsisOptions, PortableOptions } from \"./nsisOptions\"\nimport { NsisScriptGenerator } from \"./nsisScriptGenerator\"\nimport { AppPackageHelper, NSIS_PATH, nsisTemplatesDir } from \"./nsisUtil\"\n\nconst debug = _debug(\"electron-builder:nsis\")\n\n// noinspection SpellCheckingInspection\nconst ELECTRON_BUILDER_NS_UUID = UUID.parse(\"50e065bc-3134-11e6-9bab-38c9862bdaf3\")\n\n// noinspection SpellCheckingInspection\nconst nsisResourcePathPromise = new Lazy(() => getBinFromUrl(\"nsis-resources\", \"3.4.1\", \"Dqd6g+2buwwvoG1Vyf6BHR1b+25QMmPcwZx40atOT57gH27rkjOei1L0JTldxZu4NFoEmW4kJgZ3DlSWVON3+Q==\"))\n\nconst USE_NSIS_BUILT_IN_COMPRESSOR = false\n\nexport class NsisTarget extends Target {\n readonly options: NsisOptions\n\n /** @private */\n readonly archs: Map<Arch, string> = new Map()\n\n constructor(readonly packager: WinPackager, readonly outDir: string, targetName: string, protected readonly packageHelper: AppPackageHelper) {\n super(targetName)\n\n this.packageHelper.refCount++\n\n this.options = targetName === \"portable\" ? Object.create(null) : {\n preCompressedFileExtensions: [\".avi\", \".mov\", \".m4v\", \".mp4\", \".m4p\", \".qt\", \".mkv\", \".webm\", \".vmdk\"],\n ...this.packager.config.nsis,\n }\n\n if (targetName !== \"nsis\") {\n Object.assign(this.options, (this.packager.config as any)[targetName === \"nsis-web\" ? \"nsisWeb\" : targetName])\n }\n\n const deps = packager.info.metadata.dependencies\n if (deps != null && deps[\"electron-squirrel-startup\"] != null) {\n log.warn('\"electron-squirrel-startup\" dependency is not required for NSIS')\n }\n }\n\n async build(appOutDir: string, arch: Arch) {\n this.archs.set(arch, appOutDir)\n }\n\n get isBuildDifferentialAware() {\n return !this.isPortable && this.options.differentialPackage !== false\n }\n\n private getPreCompressedFileExtensions(): Array<string> | null {\n const result = this.isWebInstaller ? null : this.options.preCompressedFileExtensions\n return result == null ? null : asArray(result).map(it => it.startsWith(\".\") ? it : `.${it}`)\n }\n\n /** @private */\n async buildAppPackage(appOutDir: string, arch: Arch): Promise<PackageFileInfo> {\n const options = this.options\n const packager = this.packager\n\n const isBuildDifferentialAware = this.isBuildDifferentialAware\n const format = !isBuildDifferentialAware && options.useZip ? \"zip\" : \"7z\"\n const archiveFile = path.join(this.outDir, `${packager.appInfo.sanitizedName}-${packager.appInfo.version}-${Arch[arch]}.nsis.${format}`)\n const preCompressedFileExtensions = this.getPreCompressedFileExtensions()\n const archiveOptions: ArchiveOptions = {\n withoutDir: true,\n compression: packager.compression,\n excluded: preCompressedFileExtensions == null ? null : preCompressedFileExtensions.map(it => `*${it}`)\n }\n\n const timer = time(`nsis package, ${Arch[arch]}`)\n await archive(format, archiveFile, appOutDir, isBuildDifferentialAware ? configureDifferentialAwareArchiveOptions(archiveOptions) : archiveOptions)\n timer.end()\n\n if (isBuildDifferentialAware && this.isWebInstaller) {\n const data = await appendBlockmap(archiveFile)\n return {\n ...data,\n path: archiveFile,\n }\n }\n else {\n return await createPackageFileInfo(archiveFile)\n }\n }\n\n async finishBuild(): Promise<any> {\n try {\n await this.buildInstaller()\n }\n finally {\n await this.packageHelper.finishBuild()\n }\n }\n\n protected get installerFilenamePattern(): string {\n // tslint:disable:no-invalid-template-strings\n return \"${productName} \" + (this.isPortable ? \"\" : \"Setup \") + \"${version}.${ext}\"\n }\n\n private get isPortable() {\n return this.name === \"portable\"\n }\n\n private async buildInstaller(): Promise<any> {\n const packager = this.packager\n const appInfo = packager.appInfo\n const options = this.options\n const installerFilename = packager.expandArtifactNamePattern(options, \"exe\", null, this.installerFilenamePattern)\n const oneClick = options.oneClick !== false\n const installerPath = path.join(this.outDir, installerFilename)\n\n const logFields: any = {\n target: this.name,\n file: log.filePath(installerPath),\n archs: Array.from(this.archs.keys()).map(it => Arch[it]).join(\", \"),\n }\n const isPerMachine = options.perMachine === true\n if (!this.isPortable) {\n logFields.oneClick = oneClick\n logFields.perMachine = isPerMachine\n }\n\n await packager.info.callArtifactBuildStarted({\n targetPresentableName: this.name,\n file: installerPath,\n arch: null,\n }, logFields)\n\n const guid = options.guid || UUID.v5(appInfo.id, ELECTRON_BUILDER_NS_UUID)\n const uninstallAppKey = guid.replace(/\\\\/g, \" - \")\n const defines: any = {\n APP_ID: appInfo.id,\n APP_GUID: guid,\n // Windows bug - entry in Software\\Microsoft\\Windows\\CurrentVersion\\Uninstall cannot have \\ symbols (dir)\n UNINSTALL_APP_KEY: uninstallAppKey,\n PRODUCT_NAME: appInfo.productName,\n PRODUCT_FILENAME: appInfo.productFilename,\n APP_FILENAME: getWindowsInstallationDirName(appInfo, !oneClick || isPerMachine),\n APP_DESCRIPTION: appInfo.description,\n VERSION: appInfo.version,\n\n PROJECT_DIR: packager.projectDir,\n BUILD_RESOURCES_DIR: packager.info.buildResourcesDir,\n\n APP_PACKAGE_NAME: appInfo.name\n }\n if (uninstallAppKey !== guid) {\n defines.UNINSTALL_REGISTRY_KEY_2 = `Software\\\\Microsoft\\\\Windows\\\\CurrentVersion\\\\Uninstall\\\\{${guid}}`\n }\n\n const commands: any = {\n OutFile: `\"${installerPath}\"`,\n VIProductVersion: appInfo.getVersionInWeirdWindowsForm(),\n VIAddVersionKey: this.computeVersionKey(),\n Unicode: this.isUnicodeEnabled,\n }\n\n const isPortable = this.isPortable\n const iconPath = (isPortable ? null : await packager.getResource(options.installerIcon, \"installerIcon.ico\")) || await packager.getIconPath()\n if (iconPath != null) {\n if (isPortable) {\n commands.Icon = `\"${iconPath}\"`\n }\n else {\n defines.MUI_ICON = iconPath\n defines.MUI_UNICON = iconPath\n }\n }\n\n const packageFiles: { [arch: string]: PackageFileInfo } = {}\n let estimatedSize = 0\n if (this.isPortable && options.useZip) {\n for (const [arch, dir] of this.archs.entries()) {\n defines[arch === Arch.x64 ? \"APP_DIR_64\" : \"APP_DIR_32\"] = dir\n }\n }\n else if (USE_NSIS_BUILT_IN_COMPRESSOR && this.archs.size === 1) {\n defines.APP_BUILD_DIR = this.archs.get(this.archs.keys().next().value)\n }\n else {\n await BluebirdPromise.map(this.archs.keys(), async arch => {\n const fileInfo = await this.packageHelper.packArch(arch, this)\n const file = fileInfo.path\n const defineKey = arch === Arch.x64 ? \"APP_64\" : \"APP_32\"\n defines[defineKey] = file\n defines[`${defineKey}_NAME`] = path.basename(file)\n // nsis expect a hexadecimal string\n defines[`${defineKey}_HASH`] = Buffer.from(fileInfo.sha512, \"base64\").toString(\"hex\").toUpperCase()\n\n if (this.isWebInstaller) {\n await packager.dispatchArtifactCreated(file, this, arch)\n packageFiles[Arch[arch]] = fileInfo\n }\n\n const archiveInfo = (await exec(path7za, [\"l\", file])).trim()\n // after adding blockmap data will be \"Warnings: 1\" in the end of output\n const match = archiveInfo.match(/(\\d+)\\s+\\d+\\s+\\d+\\s+files/)\n if (match == null) {\n log.warn({output: archiveInfo}, \"cannot compute size of app package\")\n }\n else {\n estimatedSize += parseInt(match[1], 10)\n }\n })\n }\n\n this.configureDefinesForAllTypeOfInstaller(defines)\n if (isPortable) {\n const portableOptions = options as PortableOptions\n defines.REQUEST_EXECUTION_LEVEL = portableOptions.requestExecutionLevel || \"user\"\n defines.UNPACK_DIR_NAME = portableOptions.unpackDirName || (await executeAppBuilder([\"ksuid\"]))\n }\n else {\n await this.configureDefines(oneClick, defines)\n }\n\n if (estimatedSize !== 0) {\n // in kb\n defines.ESTIMATED_SIZE = Math.round(estimatedSize / 1024)\n }\n\n if (packager.compression === \"store\") {\n commands.SetCompress = \"off\"\n }\n else {\n // difference - 33.540 vs 33.601, only 61 KB (but zip is faster to decompress)\n // do not use /SOLID - \"With solid compression, files are uncompressed to temporary file before they are copied to their final destination\",\n // it is not good for portable installer (where built-in NSIS compression is used). http://forums.winamp.com/showpost.php?p=2982902&postcount=6\n commands.SetCompressor = \"zlib\"\n if (!this.isWebInstaller) {\n defines.COMPRESS = \"auto\"\n }\n }\n\n debug(defines)\n debug(commands)\n\n if (packager.packagerOptions.effectiveOptionComputed != null && await packager.packagerOptions.effectiveOptionComputed([defines, commands])) {\n return\n }\n\n const sharedHeader = await this.computeCommonInstallerScriptHeader()\n const script = isPortable ? await readFile(path.join(nsisTemplatesDir, \"portable.nsi\"), \"utf8\") : await this.computeScriptAndSignUninstaller(defines, commands, installerPath, sharedHeader)\n await this.executeMakensis(defines, commands, sharedHeader + await this.computeFinalScript(script, true))\n await Promise.all<any>([packager.sign(installerPath), defines.UNINSTALLER_OUT_FILE == null ? Promise.resolve() : unlink(defines.UNINSTALLER_OUT_FILE)])\n\n const safeArtifactName = computeSafeArtifactNameIfNeeded(installerFilename, () => this.generateGitHubInstallerName())\n let updateInfo: any\n if (this.isWebInstaller) {\n updateInfo = createNsisWebDifferentialUpdateInfo(installerPath, packageFiles)\n }\n else if (this.isBuildDifferentialAware) {\n updateInfo = await createBlockmap(installerPath, this, packager, safeArtifactName)\n }\n\n if (updateInfo != null && isPerMachine && oneClick) {\n updateInfo.isAdminRightsRequired = true\n }\n\n await packager.info.callArtifactBuildCompleted({\n file: installerPath,\n updateInfo,\n target: this,\n packager,\n arch: this.archs.size === 1 ? this.archs.keys().next().value : null,\n safeArtifactName,\n isWriteUpdateInfo: !this.isPortable,\n })\n }\n\n protected generateGitHubInstallerName() {\n const appInfo = this.packager.appInfo\n const classifier = appInfo.name.toLowerCase() === appInfo.name ? \"setup-\" : \"Setup-\"\n return `${appInfo.name}-${this.isPortable ? \"\" : classifier}${appInfo.version}.exe`\n }\n\n private get isUnicodeEnabled() {\n return this.options.unicode !== false\n }\n\n get isWebInstaller(): boolean {\n return false\n }\n\n private async computeScriptAndSignUninstaller(defines: any, commands: any, installerPath: string, sharedHeader: string) {\n const packager = this.packager\n const customScriptPath = await packager.getResource(this.options.script, \"installer.nsi\")\n const script = await readFile(customScriptPath || path.join(nsisTemplatesDir, \"installer.nsi\"), \"utf8\")\n\n if (customScriptPath != null) {\n log.info({reason: \"custom NSIS script is used\"}, \"uninstaller is not signed by electron-builder\")\n return script\n }\n\n // https://github.com/electron-userland/electron-builder/issues/2103\n // it is more safe and reliable to write uninstaller to our out dir\n const uninstallerPath = path.join(this.outDir, `__uninstaller-${this.name}-${this.packager.appInfo.sanitizedName}.exe`)\n const isWin = process.platform === \"win32\"\n defines.BUILD_UNINSTALLER = null\n defines.UNINSTALLER_OUT_FILE = isWin ? uninstallerPath : path.win32.join(\"Z:\", uninstallerPath)\n await this.executeMakensis(defines, commands, sharedHeader + await this.computeFinalScript(script, false))\n\n // http://forums.winamp.com/showthread.php?p=3078545\n if (isMacOsCatalina()) {\n (await packager.vm.value).exec(installerPath, [])\n\n // Parallels VM can exit after command execution, but NSIS continue to be running\n let i = 0\n while (!(await exists(uninstallerPath)) && i++ < 100) {\n // noinspection JSUnusedLocalSymbols\n await new Promise((resolve, _reject) => setTimeout(resolve, 300))\n }\n }\n else {\n await execWine(installerPath)\n }\n await packager.sign(uninstallerPath, \" Signing NSIS uninstaller\")\n\n delete defines.BUILD_UNINSTALLER\n // platform-specific path, not wine\n defines.UNINSTALLER_OUT_FILE = uninstallerPath\n return script\n }\n\n private computeVersionKey() {\n // Error: invalid VIProductVersion format, should be X.X.X.X\n // so, we must strip beta\n const localeId = this.options.language || \"1033\"\n const appInfo = this.packager.appInfo\n const versionKey = [\n `/LANG=${localeId} ProductName \"${appInfo.productName}\"`,\n `/LANG=${localeId} ProductVersion \"${appInfo.version}\"`,\n `/LANG=${localeId} LegalCopyright \"${appInfo.copyright}\"`,\n `/LANG=${localeId} FileDescription \"${appInfo.description}\"`,\n `/LANG=${localeId} FileVersion \"${appInfo.buildVersion}\"`,\n ]\n use(this.packager.platformSpecificBuildOptions.legalTrademarks, it => versionKey.push(`/LANG=${localeId} LegalTrademarks \"${it}\"`))\n use(appInfo.companyName, it => versionKey.push(`/LANG=${localeId} CompanyName \"${it}\"`))\n return versionKey\n }\n\n protected configureDefines(oneClick: boolean, defines: any): Promise<any> {\n const packager = this.packager\n const options = this.options\n\n const asyncTaskManager = new AsyncTaskManager(packager.info.cancellationToken)\n\n if (oneClick) {\n defines.ONE_CLICK = null\n\n if (options.runAfterFinish !== false) {\n defines.RUN_AFTER_FINISH = null\n }\n\n asyncTaskManager.add(async () => {\n const installerHeaderIcon = await packager.getResource(options.installerHeaderIcon, \"installerHeaderIcon.ico\")\n if (installerHeaderIcon != null) {\n defines.HEADER_ICO = installerHeaderIcon\n }\n })\n }\n else {\n if (options.runAfterFinish === false) {\n defines.HIDE_RUN_AFTER_FINISH = null\n }\n\n asyncTaskManager.add(async () => {\n const installerHeader = await packager.getResource(options.installerHeader, \"installerHeader.bmp\")\n if (installerHeader != null) {\n defines.MUI_HEADERIMAGE = null\n defines.MUI_HEADERIMAGE_RIGHT = null\n defines.MUI_HEADERIMAGE_BITMAP = installerHeader\n }\n })\n\n asyncTaskManager.add(async () => {\n const bitmap = (await packager.getResource(options.installerSidebar, \"installerSidebar.bmp\")) || \"${NSISDIR}\\\\Contrib\\\\Graphics\\\\Wizard\\\\nsis3-metro.bmp\"\n defines.MUI_WELCOMEFINISHPAGE_BITMAP = bitmap\n defines.MUI_UNWELCOMEFINISHPAGE_BITMAP = (await packager.getResource(options.uninstallerSidebar, \"uninstallerSidebar.bmp\")) || bitmap\n })\n\n if (options.allowElevation !== false) {\n defines.MULTIUSER_INSTALLMODE_ALLOW_ELEVATION = null\n }\n }\n\n if (options.perMachine === true) {\n defines.INSTALL_MODE_PER_ALL_USERS = null\n }\n\n if (!oneClick || options.perMachine === true) {\n defines.INSTALL_MODE_PER_ALL_USERS_REQUIRED = null\n }\n\n if (options.allowToChangeInstallationDirectory) {\n if (oneClick) {\n throw new InvalidConfigurationError(\"allowToChangeInstallationDirectory makes sense only for assisted installer (please set oneClick to false)\")\n }\n defines.allowToChangeInstallationDirectory = null\n }\n\n const commonOptions = getEffectiveOptions(options, packager)\n\n if (commonOptions.menuCategory != null) {\n defines.MENU_FILENAME = commonOptions.menuCategory\n }\n\n defines.SHORTCUT_NAME = commonOptions.shortcutName\n\n if (options.deleteAppDataOnUninstall) {\n defines.DELETE_APP_DATA_ON_UNINSTALL = null\n }\n\n asyncTaskManager.add(async () => {\n const uninstallerIcon = await packager.getResource(options.uninstallerIcon, \"uninstallerIcon.ico\")\n if (uninstallerIcon != null) {\n // we don't need to copy MUI_UNICON (defaults to app icon), so, we have 2 defines\n defines.UNINSTALLER_ICON = uninstallerIcon\n defines.MUI_UNICON = uninstallerIcon\n }\n })\n\n defines.UNINSTALL_DISPLAY_NAME = packager.expandMacro(options.uninstallDisplayName || \"${productName} ${version}\", null, {}, false)\n if (commonOptions.isCreateDesktopShortcut === DesktopShortcutCreationPolicy.NEVER) {\n defines.DO_NOT_CREATE_DESKTOP_SHORTCUT = null\n }\n if (commonOptions.isCreateDesktopShortcut === DesktopShortcutCreationPolicy.ALWAYS) {\n defines.RECREATE_DESKTOP_SHORTCUT = null\n }\n if (!commonOptions.isCreateStartMenuShortcut) {\n defines.DO_NOT_CREATE_START_MENU_SHORTCUT = null\n }\n\n if (options.displayLanguageSelector === true) {\n defines.DISPLAY_LANG_SELECTOR = null\n }\n\n return asyncTaskManager.awaitTasks()\n }\n\n private configureDefinesForAllTypeOfInstaller(defines: any) {\n const appInfo = this.packager.appInfo\n const companyName = appInfo.companyName\n if (companyName != null) {\n defines.COMPANY_NAME = companyName\n }\n\n // electron uses product file name as app data, define it as well to remove on uninstall\n if (defines.APP_FILENAME !== appInfo.productFilename) {\n defines.APP_PRODUCT_FILENAME = appInfo.productFilename\n }\n\n if (this.isWebInstaller) {\n defines.APP_PACKAGE_STORE_FILE = `${appInfo.updaterCacheDirName}\\\\${CURRENT_APP_PACKAGE_FILE_NAME}`\n }\n else {\n defines.APP_INSTALLER_STORE_FILE = `${appInfo.updaterCacheDirName}\\\\${CURRENT_APP_INSTALLER_FILE_NAME}`\n }\n\n if (!this.isWebInstaller && defines.APP_BUILD_DIR == null) {\n const options = this.options\n if (options.useZip) {\n defines.ZIP_COMPRESSION = null\n }\n\n defines.COMPRESSION_METHOD = options.useZip ? \"zip\" : \"7z\"\n }\n }\n\n private async executeMakensis(defines: any, commands: any, script: string) {\n const args: Array<string> = (this.options.warningsAsErrors === false) ? [] : [\"-WX\"]\n for (const name of Object.keys(defines)) {\n const value = defines[name]\n if (value == null) {\n args.push(`-D${name}`)\n }\n else {\n args.push(`-D${name}=${value}`)\n }\n }\n\n for (const name of Object.keys(commands)) {\n const value = commands[name]\n if (Array.isArray(value)) {\n for (const c of value) {\n args.push(`-X${name} ${c}`)\n }\n }\n else {\n args.push(`-X${name} ${value}`)\n }\n }\n\n args.push(\"-\")\n\n if (this.packager.debugLogger.isEnabled) {\n this.packager.debugLogger.add(\"nsis.script\", script)\n }\n\n const nsisPath = await NSIS_PATH.value\n const command = path.join(nsisPath, process.platform === \"darwin\" ? \"mac\" : (process.platform === \"win32\" ? \"Bin\" : \"linux\"), process.platform === \"win32\" ? \"makensis.exe\" : \"makensis\")\n await spawnAndWrite(command, args, script, {\n // we use NSIS_CONFIG_CONST_DATA_PATH=no to build makensis on Linux, but in any case it doesn't use stubs as MacOS/Windows version, so, we explicitly set NSISDIR\n env: {...process.env, NSISDIR: nsisPath},\n cwd: nsisTemplatesDir,\n })\n }\n\n private async computeCommonInstallerScriptHeader() {\n const packager = this.packager\n const options = this.options\n const scriptGenerator = new NsisScriptGenerator()\n const langConfigurator = new LangConfigurator(options)\n\n scriptGenerator.include(path.join(nsisTemplatesDir, \"include\", \"StdUtils.nsh\"))\n\n const includeDir = path.join(nsisTemplatesDir, \"include\")\n scriptGenerator.addIncludeDir(includeDir)\n scriptGenerator.flags([\"updated\", \"force-run\", \"keep-shortcuts\", \"no-desktop-shortcut\", \"delete-app-data\", \"allusers\", \"currentuser\"])\n\n createAddLangsMacro(scriptGenerator, langConfigurator)\n\n const taskManager = new AsyncTaskManager(packager.info.cancellationToken)\n\n const pluginArch = this.isUnicodeEnabled ? \"x86-unicode\" : \"x86-ansi\"\n taskManager.add(async () => {\n scriptGenerator.addPluginDir(pluginArch, path.join(await nsisResourcePathPromise.value, \"plugins\", pluginArch))\n })\n\n taskManager.add(async () => {\n const userPluginDir = path.join(packager.info.buildResourcesDir, pluginArch)\n const stat = await statOrNull(userPluginDir)\n if (stat != null && stat.isDirectory()) {\n scriptGenerator.addPluginDir(pluginArch, userPluginDir)\n }\n })\n\n taskManager.addTask(addCustomMessageFileInclude(\"messages.yml\", packager, scriptGenerator, langConfigurator))\n\n if (!this.isPortable) {\n if (options.oneClick === false) {\n taskManager.addTask(addCustomMessageFileInclude(\"assistedMessages.yml\", packager, scriptGenerator, langConfigurator))\n }\n\n taskManager.add(async () => {\n const customInclude = await packager.getResource(this.options.include, \"installer.nsh\")\n if (customInclude != null) {\n scriptGenerator.addIncludeDir(packager.info.buildResourcesDir)\n scriptGenerator.include(customInclude)\n }\n })\n }\n\n await taskManager.awaitTasks()\n return scriptGenerator.build()\n }\n\n private async computeFinalScript(originalScript: string, isInstaller: boolean) {\n const packager = this.packager\n const options = this.options\n const langConfigurator = new LangConfigurator(options)\n\n const scriptGenerator = new NsisScriptGenerator()\n const taskManager = new AsyncTaskManager(packager.info.cancellationToken)\n\n if (isInstaller) {\n // http://stackoverflow.com/questions/997456/nsis-license-file-based-on-language-selection\n taskManager.add(() => computeLicensePage(packager, options, scriptGenerator, langConfigurator.langs))\n }\n\n await taskManager.awaitTasks()\n\n if (this.isPortable) {\n return scriptGenerator.build() + originalScript\n }\n\n const preCompressedFileExtensions = this.getPreCompressedFileExtensions()\n if (preCompressedFileExtensions != null && preCompressedFileExtensions.length !== 0) {\n for (const [arch, dir] of this.archs.entries()) {\n await generateForPreCompressed(preCompressedFileExtensions, dir, arch, scriptGenerator)\n }\n }\n\n const fileAssociations = packager.fileAssociations\n if (fileAssociations.length !== 0) {\n\n scriptGenerator.include(path.join(path.join(nsisTemplatesDir, \"include\"), \"FileAssociation.nsh\"))\n if (isInstaller) {\n const registerFileAssociationsScript = new NsisScriptGenerator()\n for (const item of fileAssociations) {\n const extensions = asArray(item.ext).map(normalizeExt)\n for (const ext of extensions) {\n const customIcon = await packager.getResource(getPlatformIconFileName(item.icon, false), `${extensions[0]}.ico`)\n let installedIconPath = \"$appExe,0\"\n if (customIcon != null) {\n installedIconPath = `$INSTDIR\\\\resources\\\\${path.basename(customIcon)}`\n registerFileAssociationsScript.file(installedIconPath, customIcon)\n }\n\n const icon = `\"${installedIconPath}\"`\n const commandText = `\"Open with ${packager.appInfo.productName}\"`\n const command = '\"$appExe $\\\\\"%1$\\\\\"\"'\n registerFileAssociationsScript.insertMacro(\"APP_ASSOCIATE\", `\"${ext}\" \"${item.name || ext}\" \"${item.description || \"\"}\" ${icon} ${commandText} ${command}`)\n }\n }\n scriptGenerator.macro(\"registerFileAssociations\", registerFileAssociationsScript)\n }\n else {\n const unregisterFileAssociationsScript = new NsisScriptGenerator()\n for (const item of fileAssociations) {\n for (const ext of asArray(item.ext)) {\n unregisterFileAssociationsScript.insertMacro(\"APP_UNASSOCIATE\", `\"${normalizeExt(ext)}\" \"${item.name || ext}\"`)\n }\n }\n scriptGenerator.macro(\"unregisterFileAssociations\", unregisterFileAssociationsScript)\n }\n }\n\n return scriptGenerator.build() + originalScript\n }\n}\n\nasync function generateForPreCompressed(preCompressedFileExtensions: Array<string>, dir: string, arch: Arch, scriptGenerator: NsisScriptGenerator) {\n const resourcesDir = path.join(dir, \"resources\")\n const dirInfo = await statOrNull(resourcesDir)\n if (dirInfo == null || !dirInfo.isDirectory()) {\n return\n }\n\n const nodeModules = `${path.sep}node_modules`\n const preCompressedAssets = await walk(resourcesDir, (file, stat) => {\n if (stat.isDirectory()) {\n return !file.endsWith(nodeModules)\n }\n else {\n return preCompressedFileExtensions.some(it => file.endsWith(it))\n }\n })\n\n if (preCompressedAssets.length !== 0) {\n const macro = new NsisScriptGenerator()\n for (const file of preCompressedAssets) {\n macro.file(`$INSTDIR\\\\${path.relative(dir, file).replace(/\\//g, \"\\\\\")}`, file)\n }\n scriptGenerator.macro(`customFiles_${Arch[arch]}`, macro)\n }\n}\n\nasync function createPackageFileInfo(file: string): Promise<PackageFileInfo> {\n return {\n path: file,\n size: (await stat(file)).size,\n sha512: await hashFile(file),\n }\n}"],"sourceRoot":""}
|
|
1
|
+
{"version":3,"sources":["../../../src/targets/nsis/NsisTarget.ts"],"names":[],"mappings":"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","sourcesContent":["import { path7za } from \"7zip-bin\"\nimport BluebirdPromise from \"bluebird-lst\"\nimport { executeAppBuilder, Arch, asArray, AsyncTaskManager, getPlatformIconFileName, InvalidConfigurationError, log, spawnAndWrite, use, exec } from \"builder-util\"\nimport { PackageFileInfo, UUID, CURRENT_APP_PACKAGE_FILE_NAME, CURRENT_APP_INSTALLER_FILE_NAME } from \"builder-util-runtime\"\nimport { getBinFromUrl } from \"../../binDownload\"\nimport { statOrNull, walk, exists } from \"builder-util/out/fs\"\nimport { hashFile } from \"../../util/hash\"\nimport _debug from \"debug\"\nimport { readFile, stat, unlink } from \"fs-extra\"\nimport { Lazy } from \"lazy-val\"\nimport * as path from \"path\"\nimport { Target } from \"../../core\"\nimport { DesktopShortcutCreationPolicy, getEffectiveOptions } from \"../../options/CommonWindowsInstallerConfiguration\"\nimport { computeSafeArtifactNameIfNeeded, normalizeExt } from \"../../platformPackager\"\nimport { isMacOsCatalina } from \"../../util/macosVersion\"\nimport { time } from \"../../util/timer\"\nimport { execWine } from \"../../wine\"\nimport { WinPackager } from \"../../winPackager\"\nimport { archive, ArchiveOptions } from \"../archive\"\nimport { appendBlockmap, configureDifferentialAwareArchiveOptions, createBlockmap, createNsisWebDifferentialUpdateInfo } from \"../differentialUpdateInfoBuilder\"\nimport { getWindowsInstallationDirName } from \"../targetUtil\"\nimport { addCustomMessageFileInclude, createAddLangsMacro, LangConfigurator } from \"./nsisLang\"\nimport { computeLicensePage } from \"./nsisLicense\"\nimport { NsisOptions, PortableOptions } from \"./nsisOptions\"\nimport { NsisScriptGenerator } from \"./nsisScriptGenerator\"\nimport { AppPackageHelper, NSIS_PATH, nsisTemplatesDir, UninstallerReader } from \"./nsisUtil\"\n\nconst debug = _debug(\"electron-builder:nsis\")\n\n// noinspection SpellCheckingInspection\nconst ELECTRON_BUILDER_NS_UUID = UUID.parse(\"50e065bc-3134-11e6-9bab-38c9862bdaf3\")\n\n// noinspection SpellCheckingInspection\nconst nsisResourcePathPromise = new Lazy(() => getBinFromUrl(\"nsis-resources\", \"3.4.1\", \"Dqd6g+2buwwvoG1Vyf6BHR1b+25QMmPcwZx40atOT57gH27rkjOei1L0JTldxZu4NFoEmW4kJgZ3DlSWVON3+Q==\"))\n\nconst USE_NSIS_BUILT_IN_COMPRESSOR = false\n\nexport class NsisTarget extends Target {\n readonly options: NsisOptions\n\n /** @private */\n readonly archs: Map<Arch, string> = new Map()\n\n constructor(readonly packager: WinPackager, readonly outDir: string, targetName: string, protected readonly packageHelper: AppPackageHelper) {\n super(targetName)\n\n this.packageHelper.refCount++\n\n this.options = targetName === \"portable\" ? Object.create(null) : {\n preCompressedFileExtensions: [\".avi\", \".mov\", \".m4v\", \".mp4\", \".m4p\", \".qt\", \".mkv\", \".webm\", \".vmdk\"],\n ...this.packager.config.nsis,\n }\n\n if (targetName !== \"nsis\") {\n Object.assign(this.options, (this.packager.config as any)[targetName === \"nsis-web\" ? \"nsisWeb\" : targetName])\n }\n\n const deps = packager.info.metadata.dependencies\n if (deps != null && deps[\"electron-squirrel-startup\"] != null) {\n log.warn('\"electron-squirrel-startup\" dependency is not required for NSIS')\n }\n }\n\n async build(appOutDir: string, arch: Arch) {\n this.archs.set(arch, appOutDir)\n }\n\n get isBuildDifferentialAware() {\n return !this.isPortable && this.options.differentialPackage !== false\n }\n\n private getPreCompressedFileExtensions(): Array<string> | null {\n const result = this.isWebInstaller ? null : this.options.preCompressedFileExtensions\n return result == null ? null : asArray(result).map(it => it.startsWith(\".\") ? it : `.${it}`)\n }\n\n /** @private */\n async buildAppPackage(appOutDir: string, arch: Arch): Promise<PackageFileInfo> {\n const options = this.options\n const packager = this.packager\n\n const isBuildDifferentialAware = this.isBuildDifferentialAware\n const format = !isBuildDifferentialAware && options.useZip ? \"zip\" : \"7z\"\n const archiveFile = path.join(this.outDir, `${packager.appInfo.sanitizedName}-${packager.appInfo.version}-${Arch[arch]}.nsis.${format}`)\n const preCompressedFileExtensions = this.getPreCompressedFileExtensions()\n const archiveOptions: ArchiveOptions = {\n withoutDir: true,\n compression: packager.compression,\n excluded: preCompressedFileExtensions == null ? null : preCompressedFileExtensions.map(it => `*${it}`)\n }\n\n const timer = time(`nsis package, ${Arch[arch]}`)\n await archive(format, archiveFile, appOutDir, isBuildDifferentialAware ? configureDifferentialAwareArchiveOptions(archiveOptions) : archiveOptions)\n timer.end()\n\n if (isBuildDifferentialAware && this.isWebInstaller) {\n const data = await appendBlockmap(archiveFile)\n return {\n ...data,\n path: archiveFile,\n }\n }\n else {\n return await createPackageFileInfo(archiveFile)\n }\n }\n\n async finishBuild(): Promise<any> {\n try {\n await this.buildInstaller()\n }\n finally {\n await this.packageHelper.finishBuild()\n }\n }\n\n protected get installerFilenamePattern(): string {\n // tslint:disable:no-invalid-template-strings\n return \"${productName} \" + (this.isPortable ? \"\" : \"Setup \") + \"${version}.${ext}\"\n }\n\n private get isPortable() {\n return this.name === \"portable\"\n }\n\n private async buildInstaller(): Promise<any> {\n const packager = this.packager\n const appInfo = packager.appInfo\n const options = this.options\n const installerFilename = packager.expandArtifactNamePattern(options, \"exe\", null, this.installerFilenamePattern)\n const oneClick = options.oneClick !== false\n const installerPath = path.join(this.outDir, installerFilename)\n\n const logFields: any = {\n target: this.name,\n file: log.filePath(installerPath),\n archs: Array.from(this.archs.keys()).map(it => Arch[it]).join(\", \"),\n }\n const isPerMachine = options.perMachine === true\n if (!this.isPortable) {\n logFields.oneClick = oneClick\n logFields.perMachine = isPerMachine\n }\n\n await packager.info.callArtifactBuildStarted({\n targetPresentableName: this.name,\n file: installerPath,\n arch: null,\n }, logFields)\n\n const guid = options.guid || UUID.v5(appInfo.id, ELECTRON_BUILDER_NS_UUID)\n const uninstallAppKey = guid.replace(/\\\\/g, \" - \")\n const defines: any = {\n APP_ID: appInfo.id,\n APP_GUID: guid,\n // Windows bug - entry in Software\\Microsoft\\Windows\\CurrentVersion\\Uninstall cannot have \\ symbols (dir)\n UNINSTALL_APP_KEY: uninstallAppKey,\n PRODUCT_NAME: appInfo.productName,\n PRODUCT_FILENAME: appInfo.productFilename,\n APP_FILENAME: getWindowsInstallationDirName(appInfo, !oneClick || isPerMachine),\n APP_DESCRIPTION: appInfo.description,\n VERSION: appInfo.version,\n\n PROJECT_DIR: packager.projectDir,\n BUILD_RESOURCES_DIR: packager.info.buildResourcesDir,\n\n APP_PACKAGE_NAME: appInfo.name\n }\n if (uninstallAppKey !== guid) {\n defines.UNINSTALL_REGISTRY_KEY_2 = `Software\\\\Microsoft\\\\Windows\\\\CurrentVersion\\\\Uninstall\\\\${guid}`\n }\n\n const commands: any = {\n OutFile: `\"${installerPath}\"`,\n VIProductVersion: appInfo.getVersionInWeirdWindowsForm(),\n VIAddVersionKey: this.computeVersionKey(),\n Unicode: this.isUnicodeEnabled,\n }\n\n const isPortable = this.isPortable\n const iconPath = (isPortable ? null : await packager.getResource(options.installerIcon, \"installerIcon.ico\")) || await packager.getIconPath()\n if (iconPath != null) {\n if (isPortable) {\n commands.Icon = `\"${iconPath}\"`\n }\n else {\n defines.MUI_ICON = iconPath\n defines.MUI_UNICON = iconPath\n }\n }\n\n const packageFiles: { [arch: string]: PackageFileInfo } = {}\n let estimatedSize = 0\n if (this.isPortable && options.useZip) {\n for (const [arch, dir] of this.archs.entries()) {\n defines[arch === Arch.x64 ? \"APP_DIR_64\" : (arch === Arch.arm64 ? \"APP_DIR_ARM64\" : \"APP_DIR_32\")] = dir\n }\n }\n else if (USE_NSIS_BUILT_IN_COMPRESSOR && this.archs.size === 1) {\n defines.APP_BUILD_DIR = this.archs.get(this.archs.keys().next().value)\n }\n else {\n await BluebirdPromise.map(this.archs.keys(), async arch => {\n const fileInfo = await this.packageHelper.packArch(arch, this)\n const file = fileInfo.path\n const defineKey = arch === Arch.x64 ? \"APP_64\" : (arch === Arch.arm64 ? \"APP_ARM64\" : \"APP_32\")\n defines[defineKey] = file\n defines[`${defineKey}_NAME`] = path.basename(file)\n // nsis expect a hexadecimal string\n defines[`${defineKey}_HASH`] = Buffer.from(fileInfo.sha512, \"base64\").toString(\"hex\").toUpperCase()\n\n if (this.isWebInstaller) {\n await packager.dispatchArtifactCreated(file, this, arch)\n packageFiles[Arch[arch]] = fileInfo\n }\n\n const archiveInfo = (await exec(path7za, [\"l\", file])).trim()\n // after adding blockmap data will be \"Warnings: 1\" in the end of output\n const match = archiveInfo.match(/(\\d+)\\s+\\d+\\s+\\d+\\s+files/)\n if (match == null) {\n log.warn({output: archiveInfo}, \"cannot compute size of app package\")\n }\n else {\n estimatedSize += parseInt(match[1], 10)\n }\n })\n }\n\n this.configureDefinesForAllTypeOfInstaller(defines)\n if (isPortable) {\n const portableOptions = options as PortableOptions\n defines.REQUEST_EXECUTION_LEVEL = portableOptions.requestExecutionLevel || \"user\"\n defines.UNPACK_DIR_NAME = portableOptions.unpackDirName || (await executeAppBuilder([\"ksuid\"]))\n\n if (portableOptions.splashImage != null) {\n defines.SPLASH_IMAGE = portableOptions.splashImage\n }\n }\n else {\n await this.configureDefines(oneClick, defines)\n }\n\n if (estimatedSize !== 0) {\n // in kb\n defines.ESTIMATED_SIZE = Math.round(estimatedSize / 1024)\n }\n\n if (packager.compression === \"store\") {\n commands.SetCompress = \"off\"\n }\n else {\n // difference - 33.540 vs 33.601, only 61 KB (but zip is faster to decompress)\n // do not use /SOLID - \"With solid compression, files are uncompressed to temporary file before they are copied to their final destination\",\n // it is not good for portable installer (where built-in NSIS compression is used). http://forums.winamp.com/showpost.php?p=2982902&postcount=6\n commands.SetCompressor = \"zlib\"\n if (!this.isWebInstaller) {\n defines.COMPRESS = \"auto\"\n }\n }\n\n debug(defines)\n debug(commands)\n\n if (packager.packagerOptions.effectiveOptionComputed != null && await packager.packagerOptions.effectiveOptionComputed([defines, commands])) {\n return\n }\n\n const sharedHeader = await this.computeCommonInstallerScriptHeader()\n const script = isPortable ? await readFile(path.join(nsisTemplatesDir, \"portable.nsi\"), \"utf8\") : await this.computeScriptAndSignUninstaller(defines, commands, installerPath, sharedHeader)\n await this.executeMakensis(defines, commands, sharedHeader + await this.computeFinalScript(script, true))\n await Promise.all<any>([packager.sign(installerPath), defines.UNINSTALLER_OUT_FILE == null ? Promise.resolve() : unlink(defines.UNINSTALLER_OUT_FILE)])\n\n const safeArtifactName = computeSafeArtifactNameIfNeeded(installerFilename, () => this.generateGitHubInstallerName())\n let updateInfo: any\n if (this.isWebInstaller) {\n updateInfo = createNsisWebDifferentialUpdateInfo(installerPath, packageFiles)\n }\n else if (this.isBuildDifferentialAware) {\n updateInfo = await createBlockmap(installerPath, this, packager, safeArtifactName)\n }\n\n if (updateInfo != null && isPerMachine && oneClick) {\n updateInfo.isAdminRightsRequired = true\n }\n\n await packager.info.callArtifactBuildCompleted({\n file: installerPath,\n updateInfo,\n target: this,\n packager,\n arch: this.archs.size === 1 ? this.archs.keys().next().value : null,\n safeArtifactName,\n isWriteUpdateInfo: !this.isPortable,\n })\n }\n\n protected generateGitHubInstallerName() {\n const appInfo = this.packager.appInfo\n const classifier = appInfo.name.toLowerCase() === appInfo.name ? \"setup-\" : \"Setup-\"\n return `${appInfo.name}-${this.isPortable ? \"\" : classifier}${appInfo.version}.exe`\n }\n\n private get isUnicodeEnabled() {\n return this.options.unicode !== false\n }\n\n get isWebInstaller(): boolean {\n return false\n }\n\n private async computeScriptAndSignUninstaller(defines: any, commands: any, installerPath: string, sharedHeader: string) {\n const packager = this.packager\n const customScriptPath = await packager.getResource(this.options.script, \"installer.nsi\")\n const script = await readFile(customScriptPath || path.join(nsisTemplatesDir, \"installer.nsi\"), \"utf8\")\n\n if (customScriptPath != null) {\n log.info({reason: \"custom NSIS script is used\"}, \"uninstaller is not signed by electron-builder\")\n return script\n }\n\n // https://github.com/electron-userland/electron-builder/issues/2103\n // it is more safe and reliable to write uninstaller to our out dir\n const uninstallerPath = path.join(this.outDir, `__uninstaller-${this.name}-${this.packager.appInfo.sanitizedName}.exe`)\n const isWin = process.platform === \"win32\"\n defines.BUILD_UNINSTALLER = null\n defines.UNINSTALLER_OUT_FILE = isWin ? uninstallerPath : path.win32.join(\"Z:\", uninstallerPath)\n await this.executeMakensis(defines, commands, sharedHeader + await this.computeFinalScript(script, false))\n\n // http://forums.winamp.com/showthread.php?p=3078545\n if (isMacOsCatalina()) {\n try {\n UninstallerReader.exec(installerPath, uninstallerPath)\n }\n catch (error) {\n log.warn(\"packager.vm is used: \" + error.message)\n\n const vm = await packager.vm.value\n await vm.exec(installerPath, [])\n // Parallels VM can exit after command execution, but NSIS continue to be running\n let i = 0\n while (!(await exists(uninstallerPath)) && i++ < 100) {\n // noinspection JSUnusedLocalSymbols\n await new Promise((resolve, _reject) => setTimeout(resolve, 300))\n }\n }\n }\n else {\n await execWine(installerPath)\n }\n await packager.sign(uninstallerPath, \" Signing NSIS uninstaller\")\n\n delete defines.BUILD_UNINSTALLER\n // platform-specific path, not wine\n defines.UNINSTALLER_OUT_FILE = uninstallerPath\n return script\n }\n\n private computeVersionKey() {\n // Error: invalid VIProductVersion format, should be X.X.X.X\n // so, we must strip beta\n const localeId = this.options.language || \"1033\"\n const appInfo = this.packager.appInfo\n const versionKey = [\n `/LANG=${localeId} ProductName \"${appInfo.productName}\"`,\n `/LANG=${localeId} ProductVersion \"${appInfo.version}\"`,\n `/LANG=${localeId} LegalCopyright \"${appInfo.copyright}\"`,\n `/LANG=${localeId} FileDescription \"${appInfo.description}\"`,\n `/LANG=${localeId} FileVersion \"${appInfo.buildVersion}\"`,\n ]\n use(this.packager.platformSpecificBuildOptions.legalTrademarks, it => versionKey.push(`/LANG=${localeId} LegalTrademarks \"${it}\"`))\n use(appInfo.companyName, it => versionKey.push(`/LANG=${localeId} CompanyName \"${it}\"`))\n return versionKey\n }\n\n protected configureDefines(oneClick: boolean, defines: any): Promise<any> {\n const packager = this.packager\n const options = this.options\n\n const asyncTaskManager = new AsyncTaskManager(packager.info.cancellationToken)\n\n if (oneClick) {\n defines.ONE_CLICK = null\n\n if (options.runAfterFinish !== false) {\n defines.RUN_AFTER_FINISH = null\n }\n\n asyncTaskManager.add(async () => {\n const installerHeaderIcon = await packager.getResource(options.installerHeaderIcon, \"installerHeaderIcon.ico\")\n if (installerHeaderIcon != null) {\n defines.HEADER_ICO = installerHeaderIcon\n }\n })\n }\n else {\n if (options.runAfterFinish === false) {\n defines.HIDE_RUN_AFTER_FINISH = null\n }\n\n asyncTaskManager.add(async () => {\n const installerHeader = await packager.getResource(options.installerHeader, \"installerHeader.bmp\")\n if (installerHeader != null) {\n defines.MUI_HEADERIMAGE = null\n defines.MUI_HEADERIMAGE_RIGHT = null\n defines.MUI_HEADERIMAGE_BITMAP = installerHeader\n }\n })\n\n asyncTaskManager.add(async () => {\n const bitmap = (await packager.getResource(options.installerSidebar, \"installerSidebar.bmp\")) || \"${NSISDIR}\\\\Contrib\\\\Graphics\\\\Wizard\\\\nsis3-metro.bmp\"\n defines.MUI_WELCOMEFINISHPAGE_BITMAP = bitmap\n defines.MUI_UNWELCOMEFINISHPAGE_BITMAP = (await packager.getResource(options.uninstallerSidebar, \"uninstallerSidebar.bmp\")) || bitmap\n })\n\n if (options.allowElevation !== false) {\n defines.MULTIUSER_INSTALLMODE_ALLOW_ELEVATION = null\n }\n }\n\n if (options.perMachine === true) {\n defines.INSTALL_MODE_PER_ALL_USERS = null\n }\n\n if (!oneClick || options.perMachine === true) {\n defines.INSTALL_MODE_PER_ALL_USERS_REQUIRED = null\n }\n\n if (options.allowToChangeInstallationDirectory) {\n if (oneClick) {\n throw new InvalidConfigurationError(\"allowToChangeInstallationDirectory makes sense only for assisted installer (please set oneClick to false)\")\n }\n defines.allowToChangeInstallationDirectory = null\n }\n\n const commonOptions = getEffectiveOptions(options, packager)\n\n if (commonOptions.menuCategory != null) {\n defines.MENU_FILENAME = commonOptions.menuCategory\n }\n\n defines.SHORTCUT_NAME = commonOptions.shortcutName\n\n if (options.deleteAppDataOnUninstall) {\n defines.DELETE_APP_DATA_ON_UNINSTALL = null\n }\n\n asyncTaskManager.add(async () => {\n const uninstallerIcon = await packager.getResource(options.uninstallerIcon, \"uninstallerIcon.ico\")\n if (uninstallerIcon != null) {\n // we don't need to copy MUI_UNICON (defaults to app icon), so, we have 2 defines\n defines.UNINSTALLER_ICON = uninstallerIcon\n defines.MUI_UNICON = uninstallerIcon\n }\n })\n\n defines.UNINSTALL_DISPLAY_NAME = packager.expandMacro(options.uninstallDisplayName || \"${productName} ${version}\", null, {}, false)\n if (commonOptions.isCreateDesktopShortcut === DesktopShortcutCreationPolicy.NEVER) {\n defines.DO_NOT_CREATE_DESKTOP_SHORTCUT = null\n }\n if (commonOptions.isCreateDesktopShortcut === DesktopShortcutCreationPolicy.ALWAYS) {\n defines.RECREATE_DESKTOP_SHORTCUT = null\n }\n if (!commonOptions.isCreateStartMenuShortcut) {\n defines.DO_NOT_CREATE_START_MENU_SHORTCUT = null\n }\n\n if (options.displayLanguageSelector === true) {\n defines.DISPLAY_LANG_SELECTOR = null\n }\n\n return asyncTaskManager.awaitTasks()\n }\n\n private configureDefinesForAllTypeOfInstaller(defines: any) {\n const appInfo = this.packager.appInfo\n const companyName = appInfo.companyName\n if (companyName != null) {\n defines.COMPANY_NAME = companyName\n }\n\n // electron uses product file name as app data, define it as well to remove on uninstall\n if (defines.APP_FILENAME !== appInfo.productFilename) {\n defines.APP_PRODUCT_FILENAME = appInfo.productFilename\n }\n\n if (this.isWebInstaller) {\n defines.APP_PACKAGE_STORE_FILE = `${appInfo.updaterCacheDirName}\\\\${CURRENT_APP_PACKAGE_FILE_NAME}`\n }\n else {\n defines.APP_INSTALLER_STORE_FILE = `${appInfo.updaterCacheDirName}\\\\${CURRENT_APP_INSTALLER_FILE_NAME}`\n }\n\n if (!this.isWebInstaller && defines.APP_BUILD_DIR == null) {\n const options = this.options\n if (options.useZip) {\n defines.ZIP_COMPRESSION = null\n }\n\n defines.COMPRESSION_METHOD = options.useZip ? \"zip\" : \"7z\"\n }\n }\n\n private async executeMakensis(defines: any, commands: any, script: string) {\n const args: Array<string> = (this.options.warningsAsErrors === false) ? [] : [\"-WX\"]\n for (const name of Object.keys(defines)) {\n const value = defines[name]\n if (value == null) {\n args.push(`-D${name}`)\n }\n else {\n args.push(`-D${name}=${value}`)\n }\n }\n\n for (const name of Object.keys(commands)) {\n const value = commands[name]\n if (Array.isArray(value)) {\n for (const c of value) {\n args.push(`-X${name} ${c}`)\n }\n }\n else {\n args.push(`-X${name} ${value}`)\n }\n }\n\n args.push(\"-\")\n\n if (this.packager.debugLogger.isEnabled) {\n this.packager.debugLogger.add(\"nsis.script\", script)\n }\n\n const nsisPath = await NSIS_PATH.value\n const command = path.join(nsisPath, process.platform === \"darwin\" ? \"mac\" : (process.platform === \"win32\" ? \"Bin\" : \"linux\"), process.platform === \"win32\" ? \"makensis.exe\" : \"makensis\")\n await spawnAndWrite(command, args, script, {\n // we use NSIS_CONFIG_CONST_DATA_PATH=no to build makensis on Linux, but in any case it doesn't use stubs as MacOS/Windows version, so, we explicitly set NSISDIR\n env: {...process.env, NSISDIR: nsisPath},\n cwd: nsisTemplatesDir,\n })\n }\n\n private async computeCommonInstallerScriptHeader() {\n const packager = this.packager\n const options = this.options\n const scriptGenerator = new NsisScriptGenerator()\n const langConfigurator = new LangConfigurator(options)\n\n scriptGenerator.include(path.join(nsisTemplatesDir, \"include\", \"StdUtils.nsh\"))\n\n const includeDir = path.join(nsisTemplatesDir, \"include\")\n scriptGenerator.addIncludeDir(includeDir)\n scriptGenerator.flags([\"updated\", \"force-run\", \"keep-shortcuts\", \"no-desktop-shortcut\", \"delete-app-data\", \"allusers\", \"currentuser\"])\n\n createAddLangsMacro(scriptGenerator, langConfigurator)\n\n const taskManager = new AsyncTaskManager(packager.info.cancellationToken)\n\n const pluginArch = this.isUnicodeEnabled ? \"x86-unicode\" : \"x86-ansi\"\n taskManager.add(async () => {\n scriptGenerator.addPluginDir(pluginArch, path.join(await nsisResourcePathPromise.value, \"plugins\", pluginArch))\n })\n\n taskManager.add(async () => {\n const userPluginDir = path.join(packager.info.buildResourcesDir, pluginArch)\n const stat = await statOrNull(userPluginDir)\n if (stat != null && stat.isDirectory()) {\n scriptGenerator.addPluginDir(pluginArch, userPluginDir)\n }\n })\n\n taskManager.addTask(addCustomMessageFileInclude(\"messages.yml\", packager, scriptGenerator, langConfigurator))\n\n if (!this.isPortable) {\n if (options.oneClick === false) {\n taskManager.addTask(addCustomMessageFileInclude(\"assistedMessages.yml\", packager, scriptGenerator, langConfigurator))\n }\n\n taskManager.add(async () => {\n const customInclude = await packager.getResource(this.options.include, \"installer.nsh\")\n if (customInclude != null) {\n scriptGenerator.addIncludeDir(packager.info.buildResourcesDir)\n scriptGenerator.include(customInclude)\n }\n })\n }\n\n await taskManager.awaitTasks()\n return scriptGenerator.build()\n }\n\n private async computeFinalScript(originalScript: string, isInstaller: boolean) {\n const packager = this.packager\n const options = this.options\n const langConfigurator = new LangConfigurator(options)\n\n const scriptGenerator = new NsisScriptGenerator()\n const taskManager = new AsyncTaskManager(packager.info.cancellationToken)\n\n if (isInstaller) {\n // http://stackoverflow.com/questions/997456/nsis-license-file-based-on-language-selection\n taskManager.add(() => computeLicensePage(packager, options, scriptGenerator, langConfigurator.langs))\n }\n\n await taskManager.awaitTasks()\n\n if (this.isPortable) {\n return scriptGenerator.build() + originalScript\n }\n\n const preCompressedFileExtensions = this.getPreCompressedFileExtensions()\n if (preCompressedFileExtensions != null && preCompressedFileExtensions.length !== 0) {\n for (const [arch, dir] of this.archs.entries()) {\n await generateForPreCompressed(preCompressedFileExtensions, dir, arch, scriptGenerator)\n }\n }\n\n const fileAssociations = packager.fileAssociations\n if (fileAssociations.length !== 0) {\n\n scriptGenerator.include(path.join(path.join(nsisTemplatesDir, \"include\"), \"FileAssociation.nsh\"))\n if (isInstaller) {\n const registerFileAssociationsScript = new NsisScriptGenerator()\n for (const item of fileAssociations) {\n const extensions = asArray(item.ext).map(normalizeExt)\n for (const ext of extensions) {\n const customIcon = await packager.getResource(getPlatformIconFileName(item.icon, false), `${extensions[0]}.ico`)\n let installedIconPath = \"$appExe,0\"\n if (customIcon != null) {\n installedIconPath = `$INSTDIR\\\\resources\\\\${path.basename(customIcon)}`\n registerFileAssociationsScript.file(installedIconPath, customIcon)\n }\n\n const icon = `\"${installedIconPath}\"`\n const commandText = `\"Open with ${packager.appInfo.productName}\"`\n const command = '\"$appExe $\\\\\"%1$\\\\\"\"'\n registerFileAssociationsScript.insertMacro(\"APP_ASSOCIATE\", `\"${ext}\" \"${item.name || ext}\" \"${item.description || \"\"}\" ${icon} ${commandText} ${command}`)\n }\n }\n scriptGenerator.macro(\"registerFileAssociations\", registerFileAssociationsScript)\n }\n else {\n const unregisterFileAssociationsScript = new NsisScriptGenerator()\n for (const item of fileAssociations) {\n for (const ext of asArray(item.ext)) {\n unregisterFileAssociationsScript.insertMacro(\"APP_UNASSOCIATE\", `\"${normalizeExt(ext)}\" \"${item.name || ext}\"`)\n }\n }\n scriptGenerator.macro(\"unregisterFileAssociations\", unregisterFileAssociationsScript)\n }\n }\n\n return scriptGenerator.build() + originalScript\n }\n}\n\nasync function generateForPreCompressed(preCompressedFileExtensions: Array<string>, dir: string, arch: Arch, scriptGenerator: NsisScriptGenerator) {\n const resourcesDir = path.join(dir, \"resources\")\n const dirInfo = await statOrNull(resourcesDir)\n if (dirInfo == null || !dirInfo.isDirectory()) {\n return\n }\n\n const nodeModules = `${path.sep}node_modules`\n const preCompressedAssets = await walk(resourcesDir, (file, stat) => {\n if (stat.isDirectory()) {\n return !file.endsWith(nodeModules)\n }\n else {\n return preCompressedFileExtensions.some(it => file.endsWith(it))\n }\n })\n\n if (preCompressedAssets.length !== 0) {\n const macro = new NsisScriptGenerator()\n for (const file of preCompressedAssets) {\n macro.file(`$INSTDIR\\\\${path.relative(dir, file).replace(/\\//g, \"\\\\\")}`, file)\n }\n scriptGenerator.macro(`customFiles_${Arch[arch]}`, macro)\n }\n}\n\nasync function createPackageFileInfo(file: string): Promise<PackageFileInfo> {\n return {\n path: file,\n size: (await stat(file)).size,\n sha512: await hashFile(file),\n }\n}\n"],"sourceRoot":""}
|
|
@@ -4,8 +4,8 @@ import { AppPackageHelper } from "./nsisUtil";
|
|
|
4
4
|
/** @private */
|
|
5
5
|
export declare class WebInstallerTarget extends NsisTarget {
|
|
6
6
|
constructor(packager: WinPackager, outDir: string, targetName: string, packageHelper: AppPackageHelper);
|
|
7
|
-
|
|
7
|
+
get isWebInstaller(): boolean;
|
|
8
8
|
protected configureDefines(oneClick: boolean, defines: any): Promise<any>;
|
|
9
|
-
protected
|
|
9
|
+
protected get installerFilenamePattern(): string;
|
|
10
10
|
protected generateGitHubInstallerName(): string;
|
|
11
11
|
}
|
|
@@ -61,7 +61,9 @@ function _nsisUtil() {
|
|
|
61
61
|
return data;
|
|
62
62
|
}
|
|
63
63
|
|
|
64
|
-
function
|
|
64
|
+
function _getRequireWildcardCache() { if (typeof WeakMap !== "function") return null; var cache = new WeakMap(); _getRequireWildcardCache = function () { return cache; }; return cache; }
|
|
65
|
+
|
|
66
|
+
function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
|
|
65
67
|
|
|
66
68
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
67
69
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/targets/nsis/nsisLang.ts"],"names":[],"mappings":";;;;;;;;;AAAA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AACA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AACA;;AACA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AACA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AACA;;AAIA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA
|
|
1
|
+
{"version":3,"sources":["../../../src/targets/nsis/nsisLang.ts"],"names":[],"mappings":"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","sourcesContent":["import { asArray } from \"builder-util\"\nimport { bundledLanguages, langIdToName, lcid, toLangWithRegion } from \"../../util/langs\"\nimport _debug from \"debug\"\nimport { outputFile, readFile } from \"fs-extra\"\nimport { safeLoad } from \"js-yaml\"\nimport * as path from \"path\"\nimport { PlatformPackager } from \"../../platformPackager\"\nimport { NsisOptions } from \"./nsisOptions\"\nimport { NsisScriptGenerator } from \"./nsisScriptGenerator\"\nimport { nsisTemplatesDir } from \"./nsisUtil\"\n\nconst debug = _debug(\"electron-builder:nsis\")\n\nexport class LangConfigurator {\n readonly isMultiLang: boolean\n readonly langs: Array<string>\n\n constructor(options: NsisOptions) {\n const rawList = options.installerLanguages\n\n if (options.unicode === false || rawList === null || (Array.isArray(rawList) && rawList.length === 0)) {\n this.isMultiLang = false\n }\n else {\n this.isMultiLang = options.multiLanguageInstaller !== false\n }\n\n if (this.isMultiLang) {\n this.langs = rawList == null ? bundledLanguages.slice() : asArray(rawList)\n .map(it => toLangWithRegion(it.replace(\"-\", \"_\")))\n }\n else {\n this.langs = [\"en_US\"]\n }\n }\n}\n\nexport function createAddLangsMacro(scriptGenerator: NsisScriptGenerator, langConfigurator: LangConfigurator) {\n const result: Array<string> = []\n for (const langWithRegion of langConfigurator.langs) {\n let name: string\n if (langWithRegion === \"zh_CN\") {\n name = \"SimpChinese\"\n }\n else if (langWithRegion === \"zh_TW\") {\n name = \"TradChinese\"\n }\n else if (langWithRegion === \"nb_NO\") {\n name = \"Norwegian\"\n }\n else if (langWithRegion === \"pt_BR\") {\n name = \"PortugueseBR\"\n }\n else {\n const lang = langWithRegion.substring(0, langWithRegion.indexOf(\"_\"))\n name = (langIdToName as any)[lang]\n if (name == null) {\n throw new Error(`Language name is unknown for ${lang}`)\n }\n\n if (name === \"Spanish\") {\n name = \"SpanishInternational\"\n }\n }\n result.push(`!insertmacro MUI_LANGUAGE \"${name}\"`)\n }\n\n scriptGenerator.macro(\"addLangs\", result)\n}\n\nasync function writeCustomLangFile(data: string, packager: PlatformPackager<any>) {\n const file = await packager.getTempFile(\"messages.nsh\")\n await outputFile(file, data)\n return file\n}\n\nexport async function addCustomMessageFileInclude(input: string, packager: PlatformPackager<any>, scriptGenerator: NsisScriptGenerator, langConfigurator: LangConfigurator) {\n const data = safeLoad(await readFile(path.join(nsisTemplatesDir, input), \"utf-8\"))\n const instructions = computeCustomMessageTranslations(data, langConfigurator).join(\"\\n\")\n debug(instructions)\n scriptGenerator.include(await writeCustomLangFile(instructions, packager))\n}\n\nfunction computeCustomMessageTranslations(messages: any, langConfigurator: LangConfigurator): Array<string> {\n const result: Array<string> = []\n const includedLangs = new Set(langConfigurator.langs)\n for (const messageId of Object.keys(messages)) {\n const langToTranslations = messages[messageId]\n const unspecifiedLangs = new Set(langConfigurator.langs)\n for (const lang of Object.keys(langToTranslations)) {\n const langWithRegion = toLangWithRegion(lang)\n\n if (!includedLangs.has(langWithRegion)) {\n continue\n }\n\n const value = langToTranslations[lang]\n if (value == null) {\n throw new Error(`${messageId} not specified for ${lang}`)\n }\n\n result.push(`LangString ${messageId} ${lcid[langWithRegion]} \"${value.replace(/\\n/g, \"$\\\\r$\\\\n\")}\"`)\n unspecifiedLangs.delete(langWithRegion)\n }\n\n if (langConfigurator.isMultiLang) {\n const defaultTranslation = langToTranslations.en.replace(/\\n/g, \"$\\\\r$\\\\n\")\n for (const langWithRegion of unspecifiedLangs) {\n result.push(`LangString ${messageId} ${lcid[langWithRegion]} \"${defaultTranslation}\"`)\n }\n }\n }\n return result\n}"],"sourceRoot":""}
|
|
@@ -37,7 +37,9 @@ function _nsisUtil() {
|
|
|
37
37
|
return data;
|
|
38
38
|
}
|
|
39
39
|
|
|
40
|
-
function
|
|
40
|
+
function _getRequireWildcardCache() { if (typeof WeakMap !== "function") return null; var cache = new WeakMap(); _getRequireWildcardCache = function () { return cache; }; return cache; }
|
|
41
|
+
|
|
42
|
+
function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
|
|
41
43
|
|
|
42
44
|
async function computeLicensePage(packager, options, scriptGenerator, languages) {
|
|
43
45
|
const license = await (0, _license().getNotLocalizedLicenseFile)(options.license, packager);
|