diff --git a/src/makers/darwin/dmg.js b/src/makers/darwin/dmg.js index e95e242acd..8ffeb75d0c 100644 --- a/src/makers/darwin/dmg.js +++ b/src/makers/darwin/dmg.js @@ -3,13 +3,14 @@ import path from 'path'; import pify from 'pify'; import { ensureFile } from '../../util/ensure-output'; +import configFn from '../../util/config-fn'; export default async (dir, appName, targetArch, forgeConfig, packageJSON) => { // eslint-disable-line const outPath = path.resolve(dir, '../make', `${appName}.dmg`); await ensureFile(outPath); const dmgConfig = Object.assign({ overwrite: true, - }, forgeConfig.electronInstallerDMG, { + }, configFn(forgeConfig.electronInstallerDMG, targetArch), { appPath: path.resolve(dir, `${appName}.app`), name: appName, out: path.dirname(outPath), diff --git a/src/makers/linux/deb.js b/src/makers/linux/deb.js index 38a3fa96b7..f9ee06a4b5 100644 --- a/src/makers/linux/deb.js +++ b/src/makers/linux/deb.js @@ -3,6 +3,7 @@ import path from 'path'; import pify from 'pify'; import { ensureFile } from '../../util/ensure-output'; +import configFn from '../../util/config-fn'; function debianArch(nodeArch) { switch (nodeArch) { @@ -24,7 +25,7 @@ export default async (dir, appName, targetArch, forgeConfig, packageJSON) => { / dest: path.dirname(outPath), src: dir, }; - const debianConfig = Object.assign({}, forgeConfig.electronInstallerDebian, debianDefaults); + const debianConfig = Object.assign({}, configFn(forgeConfig.electronInstallerDebian, targetArch), debianDefaults); await pify(installer)(debianConfig); return [outPath]; diff --git a/src/makers/linux/flatpak.js b/src/makers/linux/flatpak.js index b57fc30f0c..a2d40a1ae2 100644 --- a/src/makers/linux/flatpak.js +++ b/src/makers/linux/flatpak.js @@ -3,6 +3,7 @@ import path from 'path'; import pify from 'pify'; import { ensureFile } from '../../util/ensure-output'; +import configFn from '../../util/config-fn'; function flatpakArch(nodeArch) { switch (nodeArch) { @@ -24,7 +25,7 @@ export default async (dir, appName, targetArch, forgeConfig, packageJSON) => { / dest: path.dirname(outPath), src: dir, }; - const flatpakConfig = Object.assign({}, forgeConfig.electronInstallerFlatpak, flatpakDefaults); + const flatpakConfig = Object.assign({}, configFn(forgeConfig.electronInstallerFlatpak, targetArch), flatpakDefaults); await pify(installer)(flatpakConfig); return [outPath]; diff --git a/src/makers/linux/rpm.js b/src/makers/linux/rpm.js index 9a36a710b1..0396b9f6ea 100644 --- a/src/makers/linux/rpm.js +++ b/src/makers/linux/rpm.js @@ -3,6 +3,7 @@ import path from 'path'; import pify from 'pify'; import { ensureFile } from '../../util/ensure-output'; +import configFn from '../../util/config-fn'; function rpmArch(nodeArch) { switch (nodeArch) { @@ -24,7 +25,7 @@ export default async (dir, appName, targetArch, forgeConfig, packageJSON) => { / dest: path.dirname(outPath), src: dir, }; - const rpmConfig = Object.assign({}, forgeConfig.electronInstallerRedhat, rpmDefaults); + const rpmConfig = Object.assign({}, configFn(forgeConfig.electronInstallerRedhat, targetArch), rpmDefaults); await pify(installer)(rpmConfig); return [outPath]; diff --git a/src/makers/win32/appx.js b/src/makers/win32/appx.js index 6919f11b7f..96849908fb 100644 --- a/src/makers/win32/appx.js +++ b/src/makers/win32/appx.js @@ -4,6 +4,7 @@ import path from 'path'; import { spawnPromise, findActualExecutable } from 'spawn-rx'; import { ensureDirectory } from '../../util/ensure-output'; +import configFn from '../../util/config-fn'; // NB: This is not a typo, we require AppXs to be built on 64-bit // but if we're running in a 32-bit node.js process, we're going to @@ -57,7 +58,7 @@ export default async (dir, appName, targetArch, forgeConfig, packageJSON) => { / packageDescription: packageJSON.description || appName, packageExecutable: `app\\${appName}.exe`, windowsKit: path.dirname(findSdkTool('makeappx.exe')), - }, forgeConfig.windowsStoreConfig, { + }, configFn(forgeConfig.windowsStoreConfig, targetArch), { inputDirectory: dir, outputDirectory: outPath, }); diff --git a/src/makers/win32/squirrel.js b/src/makers/win32/squirrel.js index 5b357075fb..7d29c2b88e 100644 --- a/src/makers/win32/squirrel.js +++ b/src/makers/win32/squirrel.js @@ -3,6 +3,7 @@ import fs from 'fs-promise'; import path from 'path'; import { ensureDirectory } from '../../util/ensure-output'; +import configFn from '../../util/config-fn'; export default async (dir, appName, targetArch, forgeConfig, packageJSON) => { // eslint-disable-line const outPath = path.resolve(dir, `../make/squirrel.windows/${targetArch}`); @@ -12,10 +13,11 @@ export default async (dir, appName, targetArch, forgeConfig, packageJSON) => { / name: appName, noMsi: true, exe: `${appName}.exe`, - }, forgeConfig.electronWinstallerConfig, { + }, configFn(forgeConfig.electronWinstallerConfig, targetArch), { appDirectory: dir, outputDirectory: outPath, }); + await createWindowsInstaller(winstallerConfig); const artifacts = [ path.resolve(outPath, 'RELEASES'), diff --git a/src/util/config-fn.js b/src/util/config-fn.js new file mode 100644 index 0000000000..39f6341275 --- /dev/null +++ b/src/util/config-fn.js @@ -0,0 +1,6 @@ +export default (configObject, ...args) => { + if (typeof configObject === 'function') { + return configObject(...args); + } + return configObject; +};