@joebigelow / wix / commits / b1e662bd

Fix cab creation using explicit Media element

Rob Mensching committed Dec 6, 2017 at 11:40 UTC b1e662bd480241ea914f0f3d6bd174d9ffd03f5f
4 files changed +13 -15
src/WixToolset.Core.WindowsInstaller/Bind/AssignMediaCommand.cs
+4 -4
@@ -58,7 +58,7 @@ namespace WixToolset.Core.WindowsInstaller.Bind
58 var mediaTemplateTable = this.Section.Tuples.OfType<WixMediaTemplateTuple>().ToList();
59
60 // If both tables are authored, it is an error.
61 - if ((mediaTemplateTable != null && mediaTemplateTable.Count > 0) && (mediaTable != null && mediaTable.Count > 1))
61 + if (mediaTemplateTable.Count > 0 && mediaTable.Count > 1)
62 {
63 throw new WixException(WixErrors.MediaTableCollision(null));
64 }
@@ -73,7 +73,7 @@ namespace WixToolset.Core.WindowsInstaller.Bind
73
74 filesByCabinetMedia.Add(mergeModuleMediaRow, new List<FileFacade>(this.FileFacades));
75 }
76 - else if (null == mediaTemplateTable)
76 + else if (mediaTemplateTable.Count == 0)
77 {
78 this.ManuallyAssignFiles(mediaTable, this.FileFacades, filesByCabinetMedia, mediaRows, uncompressedFiles);
79 }
@@ -266,8 +266,8 @@ namespace WixToolset.Core.WindowsInstaller.Bind
266 // When building a product, if the current file is not to be compressed or if
267 // the package set not to be compressed, don't cab it.
268 if (SectionType.Product == this.Section.Type &&
269 - (!facade.File.Compressed.Value ||
270 - (!facade.File.Compressed.HasValue && !this.FilesCompressed)))
269 + ((!facade.File.Compressed.HasValue && !this.FilesCompressed) ||
270 + (facade.File.Compressed.HasValue && !facade.File.Compressed.Value)))
271 {
272 uncompressedFiles.Add(facade);
273 }
src/WixToolset.Core/Compiler.cs
+1 -2
@@ -7361,8 +7361,7 @@ namespace WixToolset.Core
7361 // add the row to the section
7362 if (!this.Core.EncounteredError)
7363 {
7364 - var mediaRow = (MediaTuple)this.Core.CreateRow(sourceLineNumbers, TupleDefinitionType.Media);
7365 - mediaRow.DiskId = id;
7364 + var mediaRow = (MediaTuple)this.Core.CreateRow(sourceLineNumbers, TupleDefinitionType.Media, new Identifier(id, AccessModifier.Public));
7365 mediaRow.LastSequence = 0; // this is set in the binder
7366 mediaRow.DiskPrompt = diskPrompt;
7367 mediaRow.Cabinet = cabinet;
src/test/WixToolsetTest.CoreIntegration/ProgramFixture.cs
+7 -7
@@ -40,9 +40,9 @@ namespace WixToolsetTest.CoreIntegration
40 Assert.True(File.Exists(Path.Combine(intermediateFolder, @"bin\MsiPackage\test.txt")));
41
42 var intermediate = Intermediate.Load(Path.Combine(intermediateFolder, @"bin\test.wir"));
43 - Assert.Single(intermediate.Sections);
43 + var section = intermediate.Sections.Single();
44
45 - var wixFile = intermediate.Sections.SelectMany(s => s.Tuples).OfType<WixFileTuple>().Single();
45 + var wixFile = section.Tuples.OfType<WixFileTuple>().Single();
46 Assert.Equal(Path.Combine(folder, @"data\test.txt"), wixFile[WixFileTupleFields.Source].AsPath().Path);
47 Assert.Equal(@"test.txt", wixFile[WixFileTupleFields.Source].PreviousValue.AsPath().Path);
48 }
@@ -72,13 +72,13 @@ namespace WixToolsetTest.CoreIntegration
72 Assert.Equal(0, result);
73
74 Assert.True(File.Exists(Path.Combine(intermediateFolder, @"bin\test.msi")));
75 + Assert.True(File.Exists(Path.Combine(intermediateFolder, @"bin\example.cab")));
76 Assert.True(File.Exists(Path.Combine(intermediateFolder, @"bin\test.wixpdb")));
76 - Assert.True(File.Exists(Path.Combine(intermediateFolder, @"bin\MsiPackage\test.txt")));
77
78 var intermediate = Intermediate.Load(Path.Combine(intermediateFolder, @"bin\test.wir"));
79 - Assert.Single(intermediate.Sections);
79 + var section = intermediate.Sections.Single();
80
81 - var wixFile = intermediate.Sections.SelectMany(s => s.Tuples).OfType<WixFileTuple>().Single();
81 + var wixFile = section.Tuples.OfType<WixFileTuple>().Single();
82 Assert.Equal(Path.Combine(folder, @"data\test.txt"), wixFile[WixFileTupleFields.Source].AsPath().Path);
83 Assert.Equal(@"test.txt", wixFile[WixFileTupleFields.Source].PreviousValue.AsPath().Path);
84 }
@@ -110,9 +110,9 @@ namespace WixToolsetTest.CoreIntegration
110 Assert.True(File.Exists(Path.Combine(intermediateFolder, @"bin\test.wixpdb")));
111
112 var intermediate = Intermediate.Load(Path.Combine(intermediateFolder, @"bin\test.wir"));
113 - Assert.Single(intermediate.Sections);
113 + var section = intermediate.Sections.Single();
114
115 - var wixFile = intermediate.Sections.SelectMany(s => s.Tuples).OfType<WixFileTuple>().Single();
115 + var wixFile = section.Tuples.OfType<WixFileTuple>().Single();
116 Assert.Equal(Path.Combine(folder, @"data\test.txt"), wixFile[WixFileTupleFields.Source].AsPath().Path);
117 Assert.Equal(@"test.txt", wixFile[WixFileTupleFields.Source].PreviousValue.AsPath().Path);
118 }
src/test/WixToolsetTest.CoreIntegration/TestData/SingleFileCompressed/Package.wxs
+1 -2
@@ -4,8 +4,7 @@
4 <Package InstallerVersion="200" Compressed="yes" InstallScope="perMachine" />
5
6 <MajorUpgrade DowngradeErrorMessage="!(loc.DowngradeError)" />
7 - <!--<MediaTemplate />-->
8 - <Media Id="1" />
7 + <Media Id="1" Cabinet="example.cab" />
8
9 <Feature Id="ProductFeature" Title="!(loc.FeatureTitle)">
10 <ComponentGroupRef Id="ProductComponents" />