|
1 | 1 | import { isEmptyOrSpaces, log } from "builder-util"
|
2 |
| -import { prerelease, SemVer } from "semver" |
| 2 | +import { prerelease } from "semver" |
3 | 3 | import { PlatformSpecificBuildOptions } from "./options/PlatformSpecificBuildOptions"
|
4 | 4 | import { Packager } from "./packager"
|
5 | 5 | import { expandMacro } from "./util/macroExpander"
|
@@ -76,13 +76,25 @@ export class AppInfo {
|
76 | 76 | }
|
77 | 77 |
|
78 | 78 | getVersionInWeirdWindowsForm(isSetBuildNumber = true): string {
|
79 |
| - const parsedVersion = new SemVer(this.version) |
| 79 | + const [major, maybe_minor, maybe_patch] = this.version.split(".").map(versionPart => parseInt(versionPart)) |
| 80 | + // The major component must be present. Here it can be either NaN or undefined, which |
| 81 | + // both returns true from isNaN. |
| 82 | + if (isNaN(major)) { |
| 83 | + throw new Error(`Invalid major number in: ${this.version}`) |
| 84 | + } |
| 85 | + // Allow missing version parts. Minor and patch can be left out and default to zero |
| 86 | + const minor = maybe_minor ?? 0 |
| 87 | + const patch = maybe_patch ?? 0 |
| 88 | + // ... but reject non-integer version parts. '1.a' is not going to fly |
| 89 | + if (isNaN(minor) || isNaN(patch)) { |
| 90 | + throw new Error(`Invalid minor or patch number in: ${this.version}`) |
| 91 | + } |
80 | 92 | // https://github.com/electron-userland/electron-builder/issues/2635#issuecomment-371792272
|
81 | 93 | let buildNumber = isSetBuildNumber ? this.buildNumber : null
|
82 | 94 | if (buildNumber == null || !/^\d+$/.test(buildNumber)) {
|
83 | 95 | buildNumber = "0"
|
84 | 96 | }
|
85 |
| - return `${parsedVersion.major}.${parsedVersion.minor}.${parsedVersion.patch}.${buildNumber}` |
| 97 | + return `${major}.${minor}.${patch}.${buildNumber}` |
86 | 98 | }
|
87 | 99 |
|
88 | 100 | private get notNullDevMetadata() {
|
|
0 commit comments