@joebigelow / wix-1 / commits / 41cf53b5

Re-enable insignificant zeros in PackageVersion

Closes 8589

Rob Mensching committed Jul 12, 2024 at 01:17 UTC 41cf53b5ce33d297f70d29bc39eac4bce6a2c28e
2 files changed +60 -7
src/wix/WixToolset.Core/ExtensibilityServices/BackendHelper.cs
+4 -7
@@ -120,16 +120,13 @@ namespace WixToolset.Core.ExtensibilityServices
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))
122 {
123 - parsedVersion = $"{wixVersion.Major}.{wixVersion.Minor}";
124 -
125 - if (strict || wixVersion.HasPatch)
123 + if (strict)
124 {
127 - parsedVersion += $".{wixVersion.Patch}";
125 + parsedVersion = $"{wixVersion.Major}.{wixVersion.Minor}.{wixVersion.Patch}";
126 }
129 -
130 - if (!strict && wixVersion.HasRevision)
127 + else
128 {
132 - parsedVersion += $".{wixVersion.Revision}";
129 + parsedVersion = wixVersion.Prefix.HasValue ? version.Substring(1) : version;
130 }
131
132 return true;
src/wix/test/WixToolsetTest.CoreIntegration/VersionFixture.cs
+56
@@ -40,6 +40,62 @@ namespace WixToolsetTest.CoreIntegration
40 }
41 }
42
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]
100 public void CanBuildMsiWithPrefixedVersionBindVariable()
101 {