@joebigelow / wix / commits / 12db1999

SlipstreamMsp belongs under the MsiPackage, not the MspPackage.

Sean Hall committed Feb 10, 2021 at 16:12 UTC 12db1999ea040ea0b1a51b1dfb5c5f92fc8087c4
3 files changed +38 -1
src/WixToolset.Core.Burn/Bundles/CreateBurnManifestCommand.cs
+1 -1
@@ -332,7 +332,7 @@ namespace WixToolset.Core.Burn.Bundles
332 var msiPropertiesByPackage = this.Section.Symbols.OfType<WixBundleMsiPropertySymbol>().ToLookup(r => r.PackageRef);
333 var payloadsByPackage = this.Payloads.Values.ToLookup(p => p.PackageRef);
334 var relatedPackagesByPackage = this.Section.Symbols.OfType<WixBundleRelatedPackageSymbol>().ToLookup(r => r.PackageRef);
335 - var slipstreamMspsByPackage = this.Section.Symbols.OfType<WixBundleSlipstreamMspSymbol>().ToLookup(r => r.MspPackageRef);
335 + var slipstreamMspsByPackage = this.Section.Symbols.OfType<WixBundleSlipstreamMspSymbol>().ToLookup(r => r.TargetPackageRef);
336 var exitCodesByPackage = this.Section.Symbols.OfType<WixBundlePackageExitCodeSymbol>().ToLookup(r => r.ChainPackageId);
337 var commandLinesByPackage = this.Section.Symbols.OfType<WixBundlePackageCommandLineSymbol>().ToLookup(r => r.WixBundlePackageRef);
338
src/test/WixToolsetTest.CoreIntegration/PatchFixture.cs
+27
@@ -83,6 +83,33 @@ namespace WixToolsetTest.CoreIntegration
83 }
84 }
85
86 + [Fact]
87 + public void CanBuildBundleWithSlipstreamPatch()
88 + {
89 + var folder = TestData.Get(@"TestData\PatchSingle");
90 +
91 + using (var fs = new DisposableFileSystem())
92 + {
93 + var tempFolder = fs.GetFolder();
94 +
95 + var baselinePdb = BuildMsi("Baseline.msi", folder, tempFolder, "1.0.0", "1.0.0", "1.0.0");
96 + var update1Pdb = BuildMsi("Update.msi", folder, tempFolder, "1.0.1", "1.0.1", "1.0.1");
97 + var patchPdb = BuildMsp("Patch1.msp", folder, tempFolder, "1.0.1");
98 + var bundleAPdb = BuildBundle("BundleA.exe", Path.Combine(folder, "BundleA"), tempFolder);
99 +
100 + using (var wixOutput = WixOutput.Read(bundleAPdb))
101 + {
102 + var manifestData = wixOutput.GetData(BurnConstants.BurnManifestWixOutputStreamName);
103 + var doc = new XmlDocument();
104 + doc.LoadXml(manifestData);
105 + var nsmgr = BundleExtractor.GetBurnNamespaceManager(doc, "w");
106 + var slipstreamMspNodes = doc.SelectNodes("/w:BurnManifest/w:Chain/w:MsiPackage/w:SlipstreamMsp", nsmgr);
107 + Assert.Equal(1, slipstreamMspNodes.Count);
108 + Assert.Equal("<SlipstreamMsp Id='PatchA' />", slipstreamMspNodes[0].GetTestXml());
109 + }
110 + }
111 + }
112 +
113 private static void VerifyPatchTargetCodes(string pdbPath, string[] expected)
114 {
115 using (var wixOutput = WixOutput.Read(pdbPath))
src/test/WixToolsetTest.CoreIntegration/TestData/PatchSingle/BundleA/Bundle.wxs new
+10
@@ -0,0 +1,10 @@
1 +<Wix xmlns="http://wixtoolset.org/schemas/v4/wxs">
2 + <Fragment>
3 + <PackageGroup Id="BundlePackages">
4 + <MsiPackage Id="PackageA" SourceFile="Baseline.msi">
5 + <SlipstreamMsp Id="PatchA" />
6 + </MsiPackage>
7 + <MspPackage Id="PatchA" SourceFile="Patch1.msp" />
8 + </PackageGroup>
9 + </Fragment>
10 +</Wix>