浏览代码

feat(nsis-gen): custom icons for installer and uninstaller

evshiron 8 年之前
父节点
当前提交
958e88d6ed
共有 4 个文件被更改,包括 28 次插入0 次删除
  1. 2 0
      docs/Options.md
  2. 9 0
      src/lib/Builder.ts
  3. 3 0
      src/lib/config/NsisConfig.ts
  4. 14 0
      src/lib/nsis-gen/NsisComposer.ts

+ 2 - 0
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`.

+ 9 - 0
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,

+ 3 - 0
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;

+ 14 - 0
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)) }"