From 958e88d6ed5365a7cfb0cebe190889cf0992ab0c Mon Sep 17 00:00:00 2001 From: evshiron Date: Fri, 14 Apr 2017 00:47:17 +0800 Subject: [PATCH] feat(nsis-gen): custom icons for installer and uninstaller --- docs/Options.md | 2 ++ src/lib/Builder.ts | 9 +++++++++ src/lib/config/NsisConfig.ts | 3 +++ src/lib/nsis-gen/NsisComposer.ts | 14 ++++++++++++++ 4 files changed, 28 insertions(+) diff --git a/docs/Options.md b/docs/Options.md index 1271fff..b50da05 100644 --- a/docs/Options.md +++ b/docs/Options.md @@ -46,6 +46,8 @@ Currently noop. Name | Type | Description --- | --- | --- +icon | string | .ico icon file for NSIS installers. Defaults to `undefined`. +unIcon | string | .ico icon file for NSIS uninstallers. Defaults to `undefined`. languages | string[] | Languages for NSIS installers. Multiple languages will result in a language selection dialog on startup. Defaults to `[ 'English' ]`. diffUpdaters | boolean | Whether to build diff updaters. Defaults to `false`. hashCalculation | boolean | Whether to calculate hashes for installers and updaters. Defaults to `true`. diff --git a/src/lib/Builder.ts b/src/lib/Builder.ts index 264826f..ab225ee 100644 --- a/src/lib/Builder.ts +++ b/src/lib/Builder.ts @@ -412,6 +412,9 @@ export class Builder { version: fixWindowsVersion(config.win.productVersion), copyright: config.win.versionStrings.LegalCopyright, + icon: config.nsis.icon, + unIcon: config.nsis.unIcon, + // Compression. compression: 'lzma', solid: true, @@ -534,6 +537,9 @@ export class Builder { version: fixWindowsVersion(config.win.productVersion), copyright: config.win.versionStrings.LegalCopyright, + icon: config.nsis.icon, + unIcon: config.nsis.unIcon, + // Compression. compression: 'lzma', solid: true, @@ -595,6 +601,9 @@ export class Builder { version: fixWindowsVersion(config.win.productVersion), copyright: config.win.versionStrings.LegalCopyright, + icon: config.nsis.icon, + unIcon: config.nsis.unIcon, + // Compression. compression: 'lzma', solid: true, diff --git a/src/lib/config/NsisConfig.ts b/src/lib/config/NsisConfig.ts index 9e17830..741b23f 100644 --- a/src/lib/config/NsisConfig.ts +++ b/src/lib/config/NsisConfig.ts @@ -1,6 +1,9 @@ export class NsisConfig { + public icon: string = undefined; + public unIcon: string = undefined; + public languages: string[] = [ 'English' ]; public diffUpdaters: boolean = false; diff --git a/src/lib/nsis-gen/NsisComposer.ts b/src/lib/nsis-gen/NsisComposer.ts index 271a5c8..eae7846 100644 --- a/src/lib/nsis-gen/NsisComposer.ts +++ b/src/lib/nsis-gen/NsisComposer.ts @@ -14,6 +14,9 @@ export interface INsisComposerOptions { version: string; copyright: string; + icon: string; + unIcon: string; + // Compression. compression: 'zlib' | 'bzip2' | 'lzma'; solid: boolean; @@ -95,6 +98,17 @@ ${ NsisComposer.DIVIDER } Name "${ this.options.appName }" Caption "${ this.options.appName }" BrandingText "${ this.options.appName } ${ this.fixedVersion }" +${ + this.options.icon + ? `Icon "${ win32.normalize(resolve(this.options.icon)) }"` + : '' +} +${ + this.options.unIcon + ? `UninstallIcon "${ win32.normalize(resolve(this.options.unIcon)) }"` + : '' +} + SetCompressor ${ this.options.solid ? '/SOLID' : '' } ${ this.options.compression } OutFile "${ win32.normalize(resolve(this.options.output)) }"