diff options
author | Sean Hall <r.sean.hall@gmail.com> | 2023-03-20 18:16:42 -0500 |
---|---|---|
committer | Sean Hall <r.sean.hall@gmail.com> | 2023-03-30 20:03:07 -0500 |
commit | f5bda6af2abbcf7e4792d299b86bfcec713fc6c2 (patch) | |
tree | 00ee96cb6090b83ce2d91dd960b8d0da161e376d | |
parent | 648b838dfcc8f6ed269964fc3791f9f8a27561c4 (diff) | |
download | wix-f5bda6af2abbcf7e4792d299b86bfcec713fc6c2.tar.gz wix-f5bda6af2abbcf7e4792d299b86bfcec713fc6c2.tar.bz2 wix-f5bda6af2abbcf7e4792d299b86bfcec713fc6c2.zip |
Fix bug when parsing bal prereq attributes.
7287
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 | { |