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
{