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" />