Add preprocessor variables with WiX version info.
$(sys.WIXMAJORVERSION) $(sys.WIXVERSION)
Bob Arnson committed
Nov 6, 2019 at 18:17 UTC
58cd3477c3ae3d7880991ee1651a862a45371e08
3 files changed
+41
-2
src/WixToolset.Core/ExtensibilityServices/PreprocessHelper.cs
+6
@@ -248,6 +248,12 @@ namespace WixToolset.Core.ExtensibilityServices
248
throw new ArgumentException("Unknown platform enumeration '{0}' encountered.", context.Platform.ToString());
249
}
250
251
+ case "WIXMAJORVERSION":
252
+ return ThisAssembly.AssemblyFileVersion.Split('.')[0];
253
+
254
+ case "WIXVERSION":
255
+ return ThisAssembly.AssemblyFileVersion;
256
+
257
default:
258
return null;
259
}
src/test/WixToolsetTest.CoreIntegration/PreprocessorFixture.cs
+31
-2
@@ -7,6 +7,7 @@ namespace WixToolsetTest.CoreIntegration
7
using WixBuildTools.TestSupport;
8
using WixToolset.Core;
9
using WixToolset.Core.TestPackage;
10
+ using WixToolset.Data;
11
using WixToolset.Extensibility.Data;
12
using Xunit;
13
@@ -61,8 +62,36 @@ namespace WixToolsetTest.CoreIntegration
62
63
result.AssertSuccess();
64
64
- var warnings = result.Messages.Where(message => message.Id == 1118);
65
- Assert.Single(warnings);
65
+ var warning = result.Messages.Where(message => message.Id == (int)WarningMessages.Ids.VariableDeclarationCollision);
66
+ Assert.Single(warning);
67
+ }
68
+ }
69
+
70
+ [Fact]
71
+ public void WixVersionVariablesWork()
72
+ {
73
+ var folder = TestData.Get(@"TestData\Variables");
74
+
75
+ using (var fs = new DisposableFileSystem())
76
+ {
77
+ var baseFolder = fs.GetFolder();
78
+ var intermediateFolder = Path.Combine(baseFolder, "obj");
79
+
80
+ var result = WixRunner.Execute(new[]
81
+ {
82
+ "build",
83
+ Path.Combine(folder, "Package.wxs"),
84
+ Path.Combine(folder, "PackageComponents.wxs"),
85
+ "-loc", Path.Combine(folder, "Package.en-us.wxl"),
86
+ "-bindpath", Path.Combine(folder, "data"),
87
+ "-intermediateFolder", intermediateFolder,
88
+ "-o", Path.Combine(baseFolder, @"bin\test.msi")
89
+ });
90
+
91
+ result.AssertSuccess();
92
+
93
+ var warning = result.Messages.Where(message => message.Id == (int)WarningMessages.Ids.PreprocessorWarning);
94
+ Assert.Single(warning);
95
}
96
}
97
src/test/WixToolsetTest.CoreIntegration/TestData/Variables/Package.wxs
+4
@@ -6,6 +6,10 @@
6
<?define Bar = "Bar" ?>
7
<?define Bar = "Baz" ?>
8
9
+<?if $(sys.WIXMAJORVERSION) >= 4 AND $(sys.WIXMAJORVERSION) < 5 ?>
10
+ <?warning WiX v4 is in effect! ?>
11
+<?endif?>
12
+
13
<Wix xmlns="http://wixtoolset.org/schemas/v4/wxs">
14
<Product Id="*" Name="MsiPackage" Language="1033" Version="1.0.0.0" Manufacturer="Example Corporation" UpgradeCode="047730a5-30fe-4a62-a520-da9381b8226a">
15
<Package InstallerVersion="200" Compressed="no" InstallScope="perMachine" />