aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSean Hall <r.sean.hall@gmail.com>2023-03-20 18:16:42 -0500
committerSean Hall <r.sean.hall@gmail.com>2023-03-30 20:03:07 -0500
commitf5bda6af2abbcf7e4792d299b86bfcec713fc6c2 (patch)
tree00ee96cb6090b83ce2d91dd960b8d0da161e376d
parent648b838dfcc8f6ed269964fc3791f9f8a27561c4 (diff)
downloadwix-f5bda6af2abbcf7e4792d299b86bfcec713fc6c2.tar.gz
wix-f5bda6af2abbcf7e4792d299b86bfcec713fc6c2.tar.bz2
wix-f5bda6af2abbcf7e4792d299b86bfcec713fc6c2.zip
Fix bug when parsing bal prereq attributes.
7287
-rw-r--r--src/ext/Bal/test/WixToolsetTest.Bal/InternalUIBAFixture.cs45
-rw-r--r--src/ext/Bal/test/WixToolsetTest.Bal/TestData/WixIuiBa/UrlPrereqPackage.wxs19
-rw-r--r--src/ext/Bal/wixext/BalCompiler.cs2
3 files changed, 65 insertions, 1 deletions
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
@@ -51,6 +51,51 @@ namespace WixToolsetTest.Bal
51 } 51 }
52 52
53 [Fact] 53 [Fact]
54 public void CanBuildUsingWixIuiBaWithUrlPrereqPackage()
55 {
56 using (var fs = new DisposableFileSystem())
57 {
58 var baseFolder = fs.GetFolder();
59 var bundleFile = Path.Combine(baseFolder, "bin", "test.exe");
60 var bundleSourceFolder = TestData.Get(@"TestData\WixIuiBa");
61 var intermediateFolder = Path.Combine(baseFolder, "obj");
62 var baFolderPath = Path.Combine(baseFolder, "ba");
63 var extractFolderPath = Path.Combine(baseFolder, "extract");
64
65 var compileResult = WixRunner.Execute(new[]
66 {
67 "build",
68 Path.Combine(bundleSourceFolder, "UrlPrereqPackage.wxs"),
69 "-ext", TestData.Get(@"WixToolset.Bal.wixext.dll"),
70 "-intermediateFolder", intermediateFolder,
71 "-bindpath", TestData.Get(@"TestData\WixStdBa\Data"),
72 "-o", bundleFile,
73 });
74 compileResult.AssertSuccess();
75
76 Assert.True(File.Exists(bundleFile));
77
78 var extractResult = BundleExtractor.ExtractBAContainer(null, bundleFile, baFolderPath, extractFolderPath);
79 extractResult.AssertSuccess();
80
81 var balPackageInfos = extractResult.GetBADataTestXmlLines("/ba:BootstrapperApplicationData/ba:WixBalPackageInfo");
82 WixAssert.CompareLineByLine(new string[]
83 {
84 "<WixBalPackageInfo PackageId='test.msi' PrimaryPackageType='default' />",
85 }, balPackageInfos);
86
87 var mbaPrereqInfos = extractResult.GetBADataTestXmlLines("/ba:BootstrapperApplicationData/ba:WixMbaPrereqInformation");
88 WixAssert.CompareLineByLine(new[]
89 {
90 "<WixMbaPrereqInformation PackageId='wixnative.exe' LicenseUrl='https://www.mysite.com/prereqterms' />",
91 }, mbaPrereqInfos);
92
93 Assert.True(File.Exists(Path.Combine(baFolderPath, "mbapreq.thm")));
94 Assert.True(File.Exists(Path.Combine(baFolderPath, "mbapreq.wxl")));
95 }
96 }
97
98 [Fact]
54 public void CanBuildUsingWixIuiBaWithImplicitPrimaryPackage() 99 public void CanBuildUsingWixIuiBaWithImplicitPrimaryPackage()
55 { 100 {
56 using (var fs = new DisposableFileSystem()) 101 using (var fs = new DisposableFileSystem())
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 @@
1<?xml version="1.0" encoding="utf-8"?>
2<Wix xmlns="http://wixtoolset.org/schemas/v4/wxs"
3 xmlns:bal="http://wixtoolset.org/schemas/v4/wxs/bal">
4 <Bundle Name="WixIuiBa" Version="1.0.0.0" Manufacturer="Example Corporation" UpgradeCode="{5C7B7C41-B3A9-4FFF-952A-B6D68320B9B4}">
5 <BootstrapperApplication>
6 <bal:WixInternalUIBootstrapperApplication />
7 </BootstrapperApplication>
8 <Chain>
9 <ExePackage
10 Permanent="yes"
11 DetectCondition="none"
12 SourceFile="runtimes\win-x86\native\wixnative.exe"
13 bal:PrereqPackage="yes"
14 bal:PrereqLicenseUrl="https://www.mysite.com/prereqterms"
15 />
16 <MsiPackage SourceFile="test.msi" bal:PrimaryPackageType="default" />
17 </Chain>
18 </Bundle>
19</Wix>
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
358 358
359 if (prereqAttribute != null && YesNoType.Yes == this.ParseHelper.GetAttributeYesNoValue(sourceLineNumbers, prereqAttribute)) 359 if (prereqAttribute != null && YesNoType.Yes == this.ParseHelper.GetAttributeYesNoValue(sourceLineNumbers, prereqAttribute))
360 { 360 {
361 if (!this.prereqInfoSymbolsByPackageId.TryGetValue(packageId, out _)) 361 if (!this.prereqInfoSymbolsByPackageId.TryGetValue(packageId, out prereqInfo))
362 { 362 {
363 prereqInfo = section.AddSymbol(new WixMbaPrereqInformationSymbol(sourceLineNumbers, new Identifier(AccessModifier.Global, packageId)) 363 prereqInfo = section.AddSymbol(new WixMbaPrereqInformationSymbol(sourceLineNumbers, new Identifier(AccessModifier.Global, packageId))
364 { 364 {