From f5bda6af2abbcf7e4792d299b86bfcec713fc6c2 Mon Sep 17 00:00:00 2001 From: Sean Hall Date: Mon, 20 Mar 2023 18:16:42 -0500 Subject: Fix bug when parsing bal prereq attributes. 7287 --- .../test/WixToolsetTest.Bal/InternalUIBAFixture.cs | 45 ++++++++++++++++++++++ .../TestData/WixIuiBa/UrlPrereqPackage.wxs | 19 +++++++++ src/ext/Bal/wixext/BalCompiler.cs | 2 +- 3 files changed, 65 insertions(+), 1 deletion(-) create mode 100644 src/ext/Bal/test/WixToolsetTest.Bal/TestData/WixIuiBa/UrlPrereqPackage.wxs diff --git a/src/ext/Bal/test/WixToolsetTest.Bal/InternalUIBAFixture.cs b/src/ext/Bal/test/WixToolsetTest.Bal/InternalUIBAFixture.cs index b7609d19..314bcd35 100644 --- a/src/ext/Bal/test/WixToolsetTest.Bal/InternalUIBAFixture.cs +++ b/src/ext/Bal/test/WixToolsetTest.Bal/InternalUIBAFixture.cs @@ -50,6 +50,51 @@ namespace WixToolsetTest.Bal } } + [Fact] + public void CanBuildUsingWixIuiBaWithUrlPrereqPackage() + { + using (var fs = new DisposableFileSystem()) + { + var baseFolder = fs.GetFolder(); + var bundleFile = Path.Combine(baseFolder, "bin", "test.exe"); + var bundleSourceFolder = TestData.Get(@"TestData\WixIuiBa"); + var intermediateFolder = Path.Combine(baseFolder, "obj"); + var baFolderPath = Path.Combine(baseFolder, "ba"); + var extractFolderPath = Path.Combine(baseFolder, "extract"); + + var compileResult = WixRunner.Execute(new[] + { + "build", + Path.Combine(bundleSourceFolder, "UrlPrereqPackage.wxs"), + "-ext", TestData.Get(@"WixToolset.Bal.wixext.dll"), + "-intermediateFolder", intermediateFolder, + "-bindpath", TestData.Get(@"TestData\WixStdBa\Data"), + "-o", bundleFile, + }); + compileResult.AssertSuccess(); + + Assert.True(File.Exists(bundleFile)); + + var extractResult = BundleExtractor.ExtractBAContainer(null, bundleFile, baFolderPath, extractFolderPath); + extractResult.AssertSuccess(); + + var balPackageInfos = extractResult.GetBADataTestXmlLines("/ba:BootstrapperApplicationData/ba:WixBalPackageInfo"); + WixAssert.CompareLineByLine(new string[] + { + "", + }, balPackageInfos); + + var mbaPrereqInfos = extractResult.GetBADataTestXmlLines("/ba:BootstrapperApplicationData/ba:WixMbaPrereqInformation"); + WixAssert.CompareLineByLine(new[] + { + "", + }, mbaPrereqInfos); + + Assert.True(File.Exists(Path.Combine(baFolderPath, "mbapreq.thm"))); + Assert.True(File.Exists(Path.Combine(baFolderPath, "mbapreq.wxl"))); + } + } + [Fact] public void CanBuildUsingWixIuiBaWithImplicitPrimaryPackage() { diff --git a/src/ext/Bal/test/WixToolsetTest.Bal/TestData/WixIuiBa/UrlPrereqPackage.wxs b/src/ext/Bal/test/WixToolsetTest.Bal/TestData/WixIuiBa/UrlPrereqPackage.wxs new file mode 100644 index 00000000..0c68908c --- /dev/null +++ b/src/ext/Bal/test/WixToolsetTest.Bal/TestData/WixIuiBa/UrlPrereqPackage.wxs @@ -0,0 +1,19 @@ + + + + + + + + + + + + diff --git a/src/ext/Bal/wixext/BalCompiler.cs b/src/ext/Bal/wixext/BalCompiler.cs index 731943ee..72883bdf 100644 --- a/src/ext/Bal/wixext/BalCompiler.cs +++ b/src/ext/Bal/wixext/BalCompiler.cs @@ -358,7 +358,7 @@ namespace WixToolset.Bal if (prereqAttribute != null && YesNoType.Yes == this.ParseHelper.GetAttributeYesNoValue(sourceLineNumbers, prereqAttribute)) { - if (!this.prereqInfoSymbolsByPackageId.TryGetValue(packageId, out _)) + if (!this.prereqInfoSymbolsByPackageId.TryGetValue(packageId, out prereqInfo)) { prereqInfo = section.AddSymbol(new WixMbaPrereqInformationSymbol(sourceLineNumbers, new Identifier(AccessModifier.Global, packageId)) { -- cgit v1.2.3-55-g6feb