Skip to content

Commit

Permalink
fix(deployment): NSIS Web Installer update info is not generated #1207
Browse files Browse the repository at this point in the history
  • Loading branch information
develar committed Feb 12, 2017
1 parent 5352b8c commit 9f7c825
Show file tree
Hide file tree
Showing 15 changed files with 37 additions and 18 deletions.
4 changes: 3 additions & 1 deletion packages/electron-builder-core/src/core.ts
Original file line number Diff line number Diff line change
Expand Up @@ -78,7 +78,9 @@ export class Platform {
}

export abstract class Target {
constructor(public readonly name: string, public readonly isAsyncSupported: boolean = true) {
abstract readonly outDir: string

constructor(readonly name: string, readonly isAsyncSupported: boolean = true) {
}

abstract build(appOutDir: string, arch: Arch): Promise<any>
Expand Down
10 changes: 8 additions & 2 deletions packages/electron-builder-http/src/CancellationToken.ts
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,7 @@ import { EventEmitter } from "events"
import BluebirdPromise from "bluebird-lst-c"

export class CancellationToken extends EventEmitter {
private _cancelled = false

private _cancelled: boolean
get cancelled(): boolean {
return this._cancelled || (this._parent != null && this._parent.cancelled)
}
Expand All @@ -13,6 +12,13 @@ export class CancellationToken extends EventEmitter {
this._parent = value
}

// babel cannot compile ... correctly for super calls
constructor() {
super()

this._cancelled = false
}

cancel() {
this._cancelled = true
this.emit("cancel")
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ const SW_SHA2 = "e96a109d4641ebb85d163eaefe7770b165ebc25d1cc77c5179f021b232fc373
export default class SquirrelWindowsTarget extends Target {
private readonly options: SquirrelWindowsOptions = Object.assign({}, this.packager.platformSpecificBuildOptions, this.packager.config.squirrelWindows)

constructor(private readonly packager: WinPackager, private readonly outDir: string) {
constructor(private readonly packager: WinPackager, readonly outDir: string) {
super("squirrel")
}

Expand Down
4 changes: 2 additions & 2 deletions packages/electron-builder/src/macPackager.ts
Original file line number Diff line number Diff line change
Expand Up @@ -52,11 +52,11 @@ export default class MacPackager extends PlatformPackager<MacOptions> {
break

case "dmg":
mapper("dmg", () => new DmgTarget(this))
mapper("dmg", outDir => new DmgTarget(this, outDir))
break

case "pkg":
mapper("pkg", () => new PkgTarget(this))
mapper("pkg", outDir => new PkgTarget(this, outDir))
break

default:
Expand Down
13 changes: 9 additions & 4 deletions packages/electron-builder/src/publish/PublishManager.ts
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ import { GenericServerOptions, GithubOptions, PublishConfiguration, S3Options, U
import { asArray, debug, isEmptyOrSpaces } from "electron-builder-util"
import { log } from "electron-builder-util/out/log"
import { throwError } from "electron-builder-util/out/promise"
import { createReadStream, outputJson, writeFile } from "fs-extra-p"
import { createReadStream, outputJson, writeFile, ensureDir } from "fs-extra-p"
import isCi from "is-ci"
import { safeDump } from "js-yaml"
import * as path from "path"
Expand All @@ -14,7 +14,6 @@ import { Macros, PlatformSpecificBuildOptions } from "../metadata"
import { Packager } from "../packager"
import { ArtifactCreated, BuildInfo } from "../packagerApi"
import { PlatformPackager } from "../platformPackager"
import { ArchiveTarget } from "../targets/ArchiveTarget"
import { BintrayPublisher } from "electron-builder-publisher/out/BintrayPublisher"
import { GitHubPublisher } from "electron-builder-publisher/out/gitHubPublisher"
import { getCiTag, getResolvedPublishConfig } from "./publisher"
Expand Down Expand Up @@ -124,7 +123,7 @@ export class PublishManager implements PublishContext {
}

if (target != null && event.file != null && !this.cancellationToken.cancelled) {
if ((packager.platform === Platform.MAC && target.name === "zip") || (packager.platform === Platform.WINDOWS && target.name === "nsis")) {
if ((packager.platform === Platform.MAC && target.name === "zip") || (packager.platform === Platform.WINDOWS && (target.name === "nsis") || target.name.startsWith("nsis-"))) {
this.addTask(writeUpdateInfo(event, publishConfigs))
}
}
Expand Down Expand Up @@ -207,7 +206,13 @@ async function writeUpdateInfo(event: ArtifactCreated, _publishConfigs: Array<Pu
if (publishConfigs == null || publishConfigs.length === 0) {
return
}
const outDir = (<ArchiveTarget>event.target).outDir

const target = event.target!
let outDir = target.outDir
if (target!.name.startsWith("nsis-")) {
outDir = path.join(outDir, target.name)
await ensureDir(outDir)
}

for (const publishConfig of publishConfigs) {
const isGitHub = publishConfig.provider === "github"
Expand Down
2 changes: 1 addition & 1 deletion packages/electron-builder/src/targets/ArchiveTarget.ts
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ import * as path from "path"
import { tar, archive } from "./archive"

export class ArchiveTarget extends Target {
constructor(name: string, public readonly outDir: string, private readonly packager: PlatformPackager<any>) {
constructor(name: string, readonly outDir: string, private readonly packager: PlatformPackager<any>) {
super(name)
}

Expand Down
2 changes: 1 addition & 1 deletion packages/electron-builder/src/targets/appImage.ts
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@ export default class AppImageTarget extends Target {
private readonly options: AppImageOptions = Object.assign({}, this.packager.platformSpecificBuildOptions, (<any>this.packager.config)[this.name])
private readonly desktopEntry: Promise<string>

constructor(ignored: string, private packager: LinuxPackager, private helper: LinuxTargetHelper, private outDir: string) {
constructor(ignored: string, private readonly packager: LinuxPackager, private readonly helper: LinuxTargetHelper, readonly outDir: string) {
super("appImage")

// we add X-AppImage-BuildId to ensure that new desktop file will be installed
Expand Down
2 changes: 1 addition & 1 deletion packages/electron-builder/src/targets/appx.ts
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ import { copyDir } from "electron-builder-util/out/fs"
export default class AppXTarget extends Target {
private readonly options: AppXOptions = Object.assign({}, this.packager.platformSpecificBuildOptions, this.packager.config.appx)

constructor(private readonly packager: WinPackager, private readonly outDir: string) {
constructor(private readonly packager: WinPackager, readonly outDir: string) {
super("appx")

const osVersion = release()
Expand Down
2 changes: 1 addition & 1 deletion packages/electron-builder/src/targets/dmg.ts
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ import { exists, statOrNull } from "electron-builder-util/out/fs"
export class DmgTarget extends Target {
private helperDir = path.join(__dirname, "..", "..", "templates", "dmg")

constructor(private packager: PlatformPackager<MacOptions>) {
constructor(private readonly packager: PlatformPackager<MacOptions>, readonly outDir: string) {
super("dmg")
}

Expand Down
2 changes: 1 addition & 1 deletion packages/electron-builder/src/targets/fpm.ts
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,7 @@ export default class FpmTarget extends Target {
private readonly scriptFiles: Promise<Array<string>>
private readonly desktopEntry: Promise<string>

constructor(name: string, private packager: LinuxPackager, private helper: LinuxTargetHelper, private outDir: string) {
constructor(name: string, private readonly packager: LinuxPackager, private readonly helper: LinuxTargetHelper, readonly outDir: string) {
super(name, false)

this.scriptFiles = this.createScripts()
Expand Down
2 changes: 1 addition & 1 deletion packages/electron-builder/src/targets/nsis.ts
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,7 @@ export default class NsisTarget extends Target {

private readonly nsisTemplatesDir = path.join(__dirname, "..", "..", "templates", "nsis")

constructor(private packager: WinPackager, private outDir: string, targetName: string) {
constructor(private packager: WinPackager, readonly outDir: string, targetName: string) {
super(targetName)

let options = this.packager.config.nsis || Object.create(null)
Expand Down
2 changes: 1 addition & 1 deletion packages/electron-builder/src/targets/pkg.ts
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ export class PkgTarget extends Target {
private readonly options: PkgOptions = this.packager.config.pkg || Object.create(null)
private readonly installLocation = this.options.installLocation || "/Applications"

constructor(private packager: MacPackager) {
constructor(private readonly packager: MacPackager, readonly outDir: string) {
super("pkg")
}

Expand Down
2 changes: 1 addition & 1 deletion packages/electron-builder/src/targets/snap.ts
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ import { Target, Arch, toLinuxArchString } from "electron-builder-core"
export default class SnapTarget extends Target {
private readonly options: SnapOptions = Object.assign({}, this.packager.platformSpecificBuildOptions, (<any>this.packager.config)[this.name])

constructor(name: string, private packager: LinuxPackager, private helper: LinuxTargetHelper, private outDir: string) {
constructor(name: string, private readonly packager: LinuxPackager, private readonly helper: LinuxTargetHelper, readonly outDir: string) {
super(name)
}

Expand Down
4 changes: 4 additions & 0 deletions packages/electron-builder/src/targets/targetFactory.ts
Original file line number Diff line number Diff line change
Expand Up @@ -54,6 +54,10 @@ export function createCommonTarget(target: string, outDir: string, packager: Pla
}

export class NoOpTarget extends Target {
get outDir(): string {
throw new Error("NoOpTarget")
}

async build(appOutDir: string, arch: Arch): Promise<any> {
// no build
}
Expand Down
2 changes: 2 additions & 0 deletions test/out/windows/__snapshots__/nsisTest.js.snap
Original file line number Diff line number Diff line change
Expand Up @@ -114,6 +114,8 @@ exports[`test web installer 1`] = `
Array [
"Test App ßW Web Setup 1.1.0.exe",
"TestApp-1.1.0-x64.nsis.7z",
"latest.yml",
"latest.yml",
]
`;

Expand Down

0 comments on commit 9f7c825

Please sign in to comment.