From 7c7d8269c4edce3307fdc9a1e93eb07f44f4b95b Mon Sep 17 00:00:00 2001 From: Rob Mensching Date: Fri, 12 Jul 2024 01:17:15 -0700 Subject: Re-enable insignificant zeros in PackageVersion Closes 8589 --- .../ExtensibilityServices/BackendHelper.cs | 11 ++--- .../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 { 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)) { - parsedVersion = $"{wixVersion.Major}.{wixVersion.Minor}"; - - if (strict || wixVersion.HasPatch) + if (strict) { - parsedVersion += $".{wixVersion.Patch}"; + parsedVersion = $"{wixVersion.Major}.{wixVersion.Minor}.{wixVersion.Patch}"; } - - if (!strict && wixVersion.HasRevision) + else { - parsedVersion += $".{wixVersion.Revision}"; + parsedVersion = wixVersion.Prefix.HasValue ? version.Substring(1) : version; } 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 @@ -40,6 +40,62 @@ namespace WixToolsetTest.CoreIntegration } } + [Fact] + public void CanBuildMsiWithInsignificantZeroesVersion() + { + var folder = TestData.Get(@"TestData"); + + using (var fs = new DisposableFileSystem()) + { + var baseFolder = fs.GetFolder(); + var intermediateFolder = Path.Combine(baseFolder, "obj"); + var msiPath = Path.Combine(baseFolder, "bin", "test1.msi"); + + var result = WixRunner.Execute(new[] + { + "build", + Path.Combine(folder, "Version", "PackageWithReplaceableVersion.wxs"), + "-bindpath", Path.Combine(folder, "SingleFile", "data"), + "-intermediateFolder", intermediateFolder, + "-d", "Version=0001.002.0003.04", + "-o", msiPath + }); + + result.AssertSuccess(); + + var productVersion = GetProductVersionFromMsi(msiPath); + Assert.Equal("0001.002.0003.04", productVersion); + } + } + + [Fact] + public void CanBuildMsiWithPrefixedInsignificantZeroesVersion() + { + var folder = TestData.Get(@"TestData"); + + using (var fs = new DisposableFileSystem()) + { + var baseFolder = fs.GetFolder(); + var intermediateFolder = Path.Combine(baseFolder, "obj"); + var msiPath = Path.Combine(baseFolder, "bin", "test1.msi"); + + var result = WixRunner.Execute(new[] + { + "build", + Path.Combine(folder, "Version", "PackageWithReplaceableVersion.wxs"), + "-bindpath", Path.Combine(folder, "SingleFile", "data"), + "-intermediateFolder", intermediateFolder, + "-d", "Version=v01.002.0003.000004", + "-o", msiPath + }); + + result.AssertSuccess(); + + var productVersion = GetProductVersionFromMsi(msiPath); + Assert.Equal("01.002.0003.000004", productVersion); + } + } + [Fact] public void CanBuildMsiWithPrefixedVersionBindVariable() { -- cgit v1.2.3-55-g6feb