소스 검색

fix(Builder): convert semver to windows version when needed

evshiron 8 년 전
부모
커밋
bd99c60326
3개의 변경된 파일13개의 추가작업 그리고 12개의 파일을 삭제
  1. 5 5
      src/lib/Builder.ts
  2. 2 7
      src/lib/nsis-gen/NsisComposer.ts
  3. 6 0
      src/lib/util/index.ts

+ 5 - 5
src/lib/Builder.ts

@@ -14,7 +14,7 @@ import { FFmpegDownloader } from './FFmpegDownloader';
 import { BuildConfig } from './config';
 import { NsisVersionInfo } from './common';
 import { NsisComposer, NsisDiffer, nsisBuild } from './nsis-gen';
-import { mergeOptions, findExecutable, findFFmpeg, findRuntimeRoot, findExcludableDependencies, tmpName, tmpFile, tmpDir, copyFileAsync, extractGeneric, compress } from './util';
+import { mergeOptions, findExecutable, findFFmpeg, findRuntimeRoot, findExcludableDependencies, tmpName, tmpFile, tmpDir, fixWindowsVersion, copyFileAsync, extractGeneric, compress } from './util';
 
 interface IBuilderOptions {
     win?: boolean;
@@ -119,8 +119,8 @@ export class Builder {
             const path = join(targetDir, './nw.exe');
 
             const rc = {
-                'product-version': config.win.productVersion,
-                'file-version': config.win.fileVersion,
+                'product-version': fixWindowsVersion(config.win.productVersion),
+                'file-version': fixWindowsVersion(config.win.fileVersion),
                 'version-string': config.win.versionStrings,
                 'icon': config.win.icon,
             };
@@ -349,7 +349,7 @@ export class Builder {
             appName: config.win.versionStrings.ProductName,
             companyName: config.win.versionStrings.CompanyName,
             description: config.win.versionStrings.FileDescription,
-            version: config.win.productVersion,
+            version: fixWindowsVersion(config.win.productVersion),
             copyright: config.win.versionStrings.LegalCopyright,
 
             // Compression.
@@ -469,7 +469,7 @@ export class Builder {
             appName: config.win.versionStrings.ProductName,
             companyName: config.win.versionStrings.CompanyName,
             description: config.win.versionStrings.FileDescription,
-            version: config.win.productVersion,
+            version: fixWindowsVersion(config.win.productVersion),
             copyright: config.win.versionStrings.LegalCopyright,
 
             // Compression.

+ 2 - 7
src/lib/nsis-gen/NsisComposer.ts

@@ -3,7 +3,7 @@ import { relative, resolve, win32 } from 'path';
 
 import { readdirAsync, lstatAsync } from 'fs-extra-promise';
 
-const globby = require('globby');
+import { fixWindowsVersion } from '../util';
 
 export interface INsisComposerOptions {
 
@@ -57,7 +57,7 @@ export class NsisComposer {
         this.options.solid = this.options.solid ? true : false;
         this.options.languages = this.options.languages && this.options.languages.length > 0 ? this.options.languages : [ 'English' ];
 
-        this.fixedVersion = this.fixVersion(this.options.version);
+        this.fixedVersion = fixWindowsVersion(this.options.version);
 
     }
 
@@ -227,9 +227,4 @@ FILE /r .\\*.*`;
 
     }
 
-    protected fixVersion(version: string) {
-        // Fix "invalid VIProductVersion format, should be X.X.X.X" for semver.
-        return /^\d+\.\d+\.\d+$/.test(this.options.version) ? `${ this.options.version }.0` : this.options.version;
-    }
-
 }

+ 6 - 0
src/lib/util/index.ts

@@ -223,6 +223,12 @@ export function tmpDir(options: any = {}): Promise<{
     });
 }
 
+export function fixWindowsVersion(version: string, build: number = 0) {
+    return /^\d+\.\d+\.\d+$/.test(version)
+    ? `${ version }.${ build }`
+    : version;
+}
+
 export async function copyFileAsync(src: string, dest: string) {
 
     const stats = await lstatAsync(src);