@joebigelow / wix-1 / commits / 58cd3477

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" />