From 3efe3f3a8682f333741b3c52e10eea2297f43dc9 Mon Sep 17 00:00:00 2001 From: Rob Mensching Date: Thu, 9 Mar 2023 03:43:57 -0800 Subject: Prevent direct references to platform neutral WixUI Fixes 7265 --- .../test/WixToolsetTest.UI/UIExtensionFixture.cs | 68 +++++++++++++++------- 1 file changed, 46 insertions(+), 22 deletions(-) (limited to 'src/ext/UI/test/WixToolsetTest.UI/UIExtensionFixture.cs') diff --git a/src/ext/UI/test/WixToolsetTest.UI/UIExtensionFixture.cs b/src/ext/UI/test/WixToolsetTest.UI/UIExtensionFixture.cs index e1f18be5..7f9b7313 100644 --- a/src/ext/UI/test/WixToolsetTest.UI/UIExtensionFixture.cs +++ b/src/ext/UI/test/WixToolsetTest.UI/UIExtensionFixture.cs @@ -2,11 +2,10 @@ namespace WixToolsetTest.UI { - using System; using System.IO; using System.Linq; - using WixInternal.TestSupport; using WixInternal.Core.TestPackage; + using WixInternal.TestSupport; using WixToolset.Data.WindowsInstaller; using WixToolset.UI; using Xunit; @@ -16,8 +15,8 @@ namespace WixToolsetTest.UI [Fact] public void CanBuildUsingWixUIAdvanced() { - var folder = TestData.Get(@"TestData\WixUI_Advanced"); - var bindFolder = TestData.Get(@"TestData\data"); + var folder = TestData.Get(@"TestData", "WixUI_Advanced"); + var bindFolder = TestData.Get(@"TestData", "data"); var build = new Builder(folder, typeof(UIExtensionFactory), new[] { bindFolder }); var results = build.BuildAndQuery(Build, "Binary", "Dialog", "CustomAction", "ControlEvent"); @@ -52,8 +51,8 @@ namespace WixToolsetTest.UI [Fact] public void CanBuildUsingWixUIAdvancedX64() { - var folder = TestData.Get(@"TestData\WixUI_Advanced"); - var bindFolder = TestData.Get(@"TestData\data"); + var folder = TestData.Get(@"TestData", "WixUI_Advanced"); + var bindFolder = TestData.Get(@"TestData", "data"); var build = new Builder(folder, typeof(UIExtensionFactory), new[] { bindFolder }); var results = build.BuildAndQuery(BuildX64, "Binary", "Dialog", "CustomAction", "ControlEvent"); @@ -88,8 +87,8 @@ namespace WixToolsetTest.UI [Fact] public void CanBuildUsingWixUIAdvancedARM64() { - var folder = TestData.Get(@"TestData\WixUI_Advanced"); - var bindFolder = TestData.Get(@"TestData\data"); + var folder = TestData.Get(@"TestData", "WixUI_Advanced"); + var bindFolder = TestData.Get(@"TestData", "data"); var build = new Builder(folder, typeof(UIExtensionFactory), new[] { bindFolder }); var results = build.BuildAndQuery(BuildARM64, "Binary", "Dialog", "CustomAction", "ControlEvent"); @@ -124,8 +123,8 @@ namespace WixToolsetTest.UI [Fact] public void CanBuildUsingWixUIFeatureTree() { - var folder = TestData.Get(@"TestData\WixUI_FeatureTree"); - var bindFolder = TestData.Get(@"TestData\data"); + var folder = TestData.Get(@"TestData", "WixUI_FeatureTree"); + var bindFolder = TestData.Get(@"TestData", "data"); var build = new Builder(folder, typeof(UIExtensionFactory), new[] { bindFolder }); var results = build.BuildAndQuery(BuildX64, "Binary", "Dialog", "CustomAction", "ControlEvent"); @@ -155,8 +154,8 @@ namespace WixToolsetTest.UI [Fact] public void CanBuildUsingWixUIInstallDir() { - var folder = TestData.Get(@"TestData\WixUI_InstallDir"); - var bindFolder = TestData.Get(@"TestData\data"); + var folder = TestData.Get(@"TestData", "WixUI_InstallDir"); + var bindFolder = TestData.Get(@"TestData", "data"); var build = new Builder(folder, typeof(UIExtensionFactory), new[] { bindFolder }); var results = build.BuildAndQuery(Build, "Binary", "Dialog", "CustomAction", "Property", "ControlEvent"); @@ -191,8 +190,8 @@ namespace WixToolsetTest.UI [Fact] public void CanBuildUsingWixUIMinimal() { - var folder = TestData.Get(@"TestData\WixUI_Minimal"); - var bindFolder = TestData.Get(@"TestData\data"); + var folder = TestData.Get(@"TestData", "WixUI_Minimal"); + var bindFolder = TestData.Get(@"TestData", "data"); var build = new Builder(folder, typeof(UIExtensionFactory), new[] { bindFolder }); var results = build.BuildAndQuery(Build, "Binary", "Dialog", "CustomAction", "ControlEvent"); @@ -220,8 +219,8 @@ namespace WixToolsetTest.UI [Fact] public void CanBuildUsingWixUIMinimalInKazakh() { - var folder = TestData.Get(@"TestData\WixUI_Minimal"); - var bindFolder = TestData.Get(@"TestData\data"); + var folder = TestData.Get(@"TestData", "WixUI_Minimal"); + var bindFolder = TestData.Get(@"TestData", "data"); var build = new Builder(folder, typeof(UIExtensionFactory), new[] { bindFolder }); var results = build.BuildAndQuery(BuildInKazakh, "Dialog"); @@ -232,8 +231,8 @@ namespace WixToolsetTest.UI [Fact] public void CanBuildUsingWixUIMinimalAndReadPdb() { - var folder = TestData.Get(@"TestData\WixUI_Minimal"); - var bindFolder = TestData.Get(@"TestData\data"); + var folder = TestData.Get(@"TestData", "WixUI_Minimal"); + var bindFolder = TestData.Get(@"TestData", "data"); using (var fs = new DisposableFileSystem()) { @@ -258,8 +257,8 @@ namespace WixToolsetTest.UI [Fact] public void CanBuildUsingWixUIMondo() { - var folder = TestData.Get(@"TestData\WixUI_Mondo"); - var bindFolder = TestData.Get(@"TestData\data"); + var folder = TestData.Get(@"TestData", "WixUI_Mondo"); + var bindFolder = TestData.Get(@"TestData", "data"); var build = new Builder(folder, typeof(UIExtensionFactory), new[] { bindFolder }); var results = build.BuildAndQuery(Build, "Binary", "Dialog", "CustomAction", "ControlEvent"); @@ -292,8 +291,8 @@ namespace WixToolsetTest.UI [Fact] public void CanBuildUsingWixUIMondoLocalized() { - var folder = TestData.Get(@"TestData\WixUI_Mondo"); - var bindFolder = TestData.Get(@"TestData\data"); + var folder = TestData.Get(@"TestData", "WixUI_Mondo"); + var bindFolder = TestData.Get(@"TestData", "data"); var build = new Builder(folder, typeof(UIExtensionFactory), new[] { bindFolder }); var results = build.BuildAndQuery(BuildInGerman, "Control"); @@ -303,6 +302,31 @@ namespace WixToolsetTest.UI }, results.Where(s => s.StartsWith("Control:ErrorDlg\tY")).Select(s => s.Split('\t')[9]).ToArray()); } + [Fact] + public void CannotBuildWithV3LikeUIRef() + { + var folder = TestData.Get(@"TestData", "InvalidUIRef"); + + using (var fs = new DisposableFileSystem()) + { + var intermediateFolder = fs.GetFolder(); + var outputPath = Path.Combine(intermediateFolder, "bin", "test.msi"); + + var args = new[] + { + "build", + Path.Combine(folder, "Package.wxs"), + "-ext", typeof(UIExtensionFactory).Assembly.Location, + "-intermediateFolder", intermediateFolder, + "-o", outputPath, + }; + + var results = WixRunner.Execute(args); + var message = results.Messages.Single(); + Assert.Equal("The identifier 'WixUI:WixUI_Mondo' is inaccessible due to its protection level.", message.ToString()); + } + } + private static void Build(string[] args) { var result = WixRunner.Execute(args) -- cgit v1.2.3-55-g6feb