diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/wix/WixToolset.Core/ExtensibilityServices/BackendHelper.cs | 11 | ||||
| -rw-r--r-- | src/wix/test/WixToolsetTest.CoreIntegration/VersionFixture.cs | 56 |
2 files changed, 60 insertions, 7 deletions
diff --git a/src/wix/WixToolset.Core/ExtensibilityServices/BackendHelper.cs b/src/wix/WixToolset.Core/ExtensibilityServices/BackendHelper.cs index 43f7aa01..988ad60a 100644 --- a/src/wix/WixToolset.Core/ExtensibilityServices/BackendHelper.cs +++ b/src/wix/WixToolset.Core/ExtensibilityServices/BackendHelper.cs | |||
| @@ -120,16 +120,13 @@ namespace WixToolset.Core.ExtensibilityServices | |||
| 120 | { | 120 | { |
| 121 | if (WixVersion.TryParse(version, out var wixVersion) && wixVersion.HasMajor && wixVersion.Major < 256 && wixVersion.Minor < 256 && wixVersion.Patch < 65536 && wixVersion.Labels == null && String.IsNullOrEmpty(wixVersion.Metadata)) | 121 | if (WixVersion.TryParse(version, out var wixVersion) && wixVersion.HasMajor && wixVersion.Major < 256 && wixVersion.Minor < 256 && wixVersion.Patch < 65536 && wixVersion.Labels == null && String.IsNullOrEmpty(wixVersion.Metadata)) |
| 122 | { | 122 | { |
| 123 | parsedVersion = $"{wixVersion.Major}.{wixVersion.Minor}"; | 123 | if (strict) |
| 124 | |||
| 125 | if (strict || wixVersion.HasPatch) | ||
| 126 | { | 124 | { |
| 127 | parsedVersion += $".{wixVersion.Patch}"; | 125 | parsedVersion = $"{wixVersion.Major}.{wixVersion.Minor}.{wixVersion.Patch}"; |
| 128 | } | 126 | } |
| 129 | 127 | else | |
| 130 | if (!strict && wixVersion.HasRevision) | ||
| 131 | { | 128 | { |
| 132 | parsedVersion += $".{wixVersion.Revision}"; | 129 | parsedVersion = wixVersion.Prefix.HasValue ? version.Substring(1) : version; |
| 133 | } | 130 | } |
| 134 | 131 | ||
| 135 | return true; | 132 | return true; |
diff --git a/src/wix/test/WixToolsetTest.CoreIntegration/VersionFixture.cs b/src/wix/test/WixToolsetTest.CoreIntegration/VersionFixture.cs index cf8466aa..4934933f 100644 --- a/src/wix/test/WixToolsetTest.CoreIntegration/VersionFixture.cs +++ b/src/wix/test/WixToolsetTest.CoreIntegration/VersionFixture.cs | |||
| @@ -41,6 +41,62 @@ namespace WixToolsetTest.CoreIntegration | |||
| 41 | } | 41 | } |
| 42 | 42 | ||
| 43 | [Fact] | 43 | [Fact] |
| 44 | public void CanBuildMsiWithInsignificantZeroesVersion() | ||
| 45 | { | ||
| 46 | var folder = TestData.Get(@"TestData"); | ||
| 47 | |||
| 48 | using (var fs = new DisposableFileSystem()) | ||
| 49 | { | ||
| 50 | var baseFolder = fs.GetFolder(); | ||
| 51 | var intermediateFolder = Path.Combine(baseFolder, "obj"); | ||
| 52 | var msiPath = Path.Combine(baseFolder, "bin", "test1.msi"); | ||
| 53 | |||
| 54 | var result = WixRunner.Execute(new[] | ||
| 55 | { | ||
| 56 | "build", | ||
| 57 | Path.Combine(folder, "Version", "PackageWithReplaceableVersion.wxs"), | ||
| 58 | "-bindpath", Path.Combine(folder, "SingleFile", "data"), | ||
| 59 | "-intermediateFolder", intermediateFolder, | ||
| 60 | "-d", "Version=0001.002.0003.04", | ||
| 61 | "-o", msiPath | ||
| 62 | }); | ||
| 63 | |||
| 64 | result.AssertSuccess(); | ||
| 65 | |||
| 66 | var productVersion = GetProductVersionFromMsi(msiPath); | ||
| 67 | Assert.Equal("0001.002.0003.04", productVersion); | ||
| 68 | } | ||
| 69 | } | ||
| 70 | |||
| 71 | [Fact] | ||
| 72 | public void CanBuildMsiWithPrefixedInsignificantZeroesVersion() | ||
| 73 | { | ||
| 74 | var folder = TestData.Get(@"TestData"); | ||
| 75 | |||
| 76 | using (var fs = new DisposableFileSystem()) | ||
| 77 | { | ||
| 78 | var baseFolder = fs.GetFolder(); | ||
| 79 | var intermediateFolder = Path.Combine(baseFolder, "obj"); | ||
| 80 | var msiPath = Path.Combine(baseFolder, "bin", "test1.msi"); | ||
| 81 | |||
| 82 | var result = WixRunner.Execute(new[] | ||
| 83 | { | ||
| 84 | "build", | ||
| 85 | Path.Combine(folder, "Version", "PackageWithReplaceableVersion.wxs"), | ||
| 86 | "-bindpath", Path.Combine(folder, "SingleFile", "data"), | ||
| 87 | "-intermediateFolder", intermediateFolder, | ||
| 88 | "-d", "Version=v01.002.0003.000004", | ||
| 89 | "-o", msiPath | ||
| 90 | }); | ||
| 91 | |||
| 92 | result.AssertSuccess(); | ||
| 93 | |||
| 94 | var productVersion = GetProductVersionFromMsi(msiPath); | ||
| 95 | Assert.Equal("01.002.0003.000004", productVersion); | ||
| 96 | } | ||
| 97 | } | ||
| 98 | |||
| 99 | [Fact] | ||
| 44 | public void CanBuildMsiWithPrefixedVersionBindVariable() | 100 | public void CanBuildMsiWithPrefixedVersionBindVariable() |
| 45 | { | 101 | { |
| 46 | var folder = TestData.Get(@"TestData"); | 102 | var folder = TestData.Get(@"TestData"); |
