From 760e7ebaa490ea6e1a20c9e127de5024d44a3fea Mon Sep 17 00:00:00 2001 From: Rob Mensching Date: Thu, 7 Dec 2017 17:04:21 -0800 Subject: Fix handling of MediaTemplate/@CompressionLevel --- .../Bind/CreateOutputFromIRCommand.cs | 40 +++++++++++++++------- .../ProgramFixture.cs | 2 +- 2 files changed, 29 insertions(+), 13 deletions(-) diff --git a/src/WixToolset.Core.WindowsInstaller/Bind/CreateOutputFromIRCommand.cs b/src/WixToolset.Core.WindowsInstaller/Bind/CreateOutputFromIRCommand.cs index 4e053c12..0642d217 100644 --- a/src/WixToolset.Core.WindowsInstaller/Bind/CreateOutputFromIRCommand.cs +++ b/src/WixToolset.Core.WindowsInstaller/Bind/CreateOutputFromIRCommand.cs @@ -66,6 +66,10 @@ namespace WixToolset.Core.WindowsInstaller.Bind // Ignored. break; + case TupleDefinitionType.WixMediaTemplate: + this.AddWixMediaTemplateTuple((WixMediaTemplateTuple)tuple, output); + break; + case TupleDefinitionType.MustBeFromAnExtension: this.AddTupleFromExtension(tuple, output); break; @@ -126,11 +130,11 @@ namespace WixToolset.Core.WindowsInstaller.Bind row.Value = tuple.Value; } - private void AddWixActionTuple(WixActionTuple actionRow, Output output) + private void AddWixActionTuple(WixActionTuple tuple, Output output) { // Get the table definition for the action (and ensure the proper table exists for a module). TableDefinition sequenceTableDefinition = null; - switch (actionRow.SequenceTable) + switch (tuple.SequenceTable) { case SequenceTable.AdminExecuteSequence: if (OutputType.Module == output.Type) @@ -191,31 +195,43 @@ namespace WixToolset.Core.WindowsInstaller.Bind // create the action sequence row in the output var sequenceTable = output.EnsureTable(sequenceTableDefinition); - var row = sequenceTable.CreateRow(actionRow.SourceLineNumbers); + var row = sequenceTable.CreateRow(tuple.SourceLineNumbers); if (SectionType.Module == this.Section.Type) { - row[0] = actionRow.Action; - if (0 != actionRow.Sequence) + row[0] = tuple.Action; + if (0 != tuple.Sequence) { - row[1] = actionRow.Sequence; + row[1] = tuple.Sequence; } else { - bool after = (null == actionRow.Before); - row[2] = after ? actionRow.After : actionRow.Before; + bool after = (null == tuple.Before); + row[2] = after ? tuple.After : tuple.Before; row[3] = after ? 1 : 0; } - row[4] = actionRow.Condition; + row[4] = tuple.Condition; } else { - row[0] = actionRow.Action; - row[1] = actionRow.Condition; - row[2] = actionRow.Sequence; + row[0] = tuple.Action; + row[1] = tuple.Condition; + row[2] = tuple.Sequence; } } + private void AddWixMediaTemplateTuple(WixMediaTemplateTuple tuple, Output output) + { + var table = output.EnsureTable(this.TableDefinitions["WixMediaTemplate"]); + var row = (WixMediaTemplateRow)table.CreateRow(tuple.SourceLineNumbers); + row.CabinetTemplate = tuple.CabinetTemplate; + row.CompressionLevel = tuple.CompressionLevel; + row.DiskPrompt = tuple.DiskPrompt; + row.VolumeLabel = tuple.VolumeLabel; + row.MaximumUncompressedMediaSize = tuple.MaximumUncompressedMediaSize; + row.MaximumCabinetSizeForLargeFileSplitting = tuple.MaximumCabinetSizeForLargeFileSplitting; + } + private void AddTupleFromExtension(IntermediateTuple tuple, Output output) { foreach (var extension in this.BackendExtensions) diff --git a/src/test/WixToolsetTest.CoreIntegration/ProgramFixture.cs b/src/test/WixToolsetTest.CoreIntegration/ProgramFixture.cs index 8c603588..62920142 100644 --- a/src/test/WixToolsetTest.CoreIntegration/ProgramFixture.cs +++ b/src/test/WixToolsetTest.CoreIntegration/ProgramFixture.cs @@ -73,7 +73,7 @@ namespace WixToolsetTest.CoreIntegration Assert.Equal(0, result); Assert.True(File.Exists(Path.Combine(intermediateFolder, @"bin\test.msi"))); - Assert.True(File.Exists(Path.Combine(intermediateFolder, @"bin\example.cab"))); + Assert.True(File.Exists(Path.Combine(intermediateFolder, @"bin\cab1.cab"))); Assert.True(File.Exists(Path.Combine(intermediateFolder, @"bin\test.wixpdb"))); var intermediate = Intermediate.Load(Path.Combine(intermediateFolder, @"bin\test.wir")); -- cgit v1.2.3-55-g6feb