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>