From 9cca339473d77c7036035f949239f5231c325968 Mon Sep 17 00:00:00 2001 From: Rob Mensching Date: Fri, 26 Mar 2021 12:59:03 -0700 Subject: Integrate the IntermediateSection and IntermediateSymbol mutable changes --- .../Bind/AssignMediaCommand.cs | 32 ++++++++-------------- 1 file changed, 12 insertions(+), 20 deletions(-) (limited to 'src/WixToolset.Core.WindowsInstaller/Bind/AssignMediaCommand.cs') diff --git a/src/WixToolset.Core.WindowsInstaller/Bind/AssignMediaCommand.cs b/src/WixToolset.Core.WindowsInstaller/Bind/AssignMediaCommand.cs index d7faa382..cfa84629 100644 --- a/src/WixToolset.Core.WindowsInstaller/Bind/AssignMediaCommand.cs +++ b/src/WixToolset.Core.WindowsInstaller/Bind/AssignMediaCommand.cs @@ -86,25 +86,19 @@ namespace WixToolset.Core.WindowsInstaller.Bind this.UncompressedFileFacades = Array.Empty(); } - else if (mediaTemplateSymbols.Count == 0) - { - var filesByCabinetMedia = new Dictionary>(); - - var uncompressedFiles = new List(); - - this.ManuallyAssignFiles(mediaSymbols, filesByCabinetMedia, uncompressedFiles); - - this.FileFacadesByCabinetMedia = filesByCabinetMedia.ToDictionary(kvp => kvp.Key, kvp => (IEnumerable)kvp.Value); - - this.UncompressedFileFacades = uncompressedFiles; - } else { var filesByCabinetMedia = new Dictionary>(); - var uncompressedFiles = new List(); - this.AutoAssignFiles(mediaSymbols, filesByCabinetMedia, uncompressedFiles); + if (mediaTemplateSymbols.Count > 0) + { + this.AutoAssignFiles(mediaTemplateSymbols, mediaSymbols, filesByCabinetMedia, uncompressedFiles); + } + else + { + this.ManuallyAssignFiles(mediaSymbols, filesByCabinetMedia, uncompressedFiles); + } this.FileFacadesByCabinetMedia = filesByCabinetMedia.ToDictionary(kvp => kvp.Key, kvp => (IEnumerable)kvp.Value); @@ -115,7 +109,7 @@ namespace WixToolset.Core.WindowsInstaller.Bind /// /// Assign files to cabinets based on MediaTemplate authoring. /// - private void AutoAssignFiles(List mediaTable, Dictionary> filesByCabinetMedia, List uncompressedFiles) + private void AutoAssignFiles(List mediaTemplateTable, List mediaSymbols, Dictionary> filesByCabinetMedia, List uncompressedFiles) { const int MaxCabIndex = 999; @@ -126,13 +120,11 @@ namespace WixToolset.Core.WindowsInstaller.Bind MediaSymbol currentMediaRow = null; - var mediaTemplateTable = this.Section.Symbols.OfType(); - // Remove all previous media symbols since they will be replaced with // media template. - foreach (var mediaSymbol in mediaTable) + foreach (var mediaSymbol in mediaSymbols) { - this.Section.Symbols.Remove(mediaSymbol); + this.Section.RemoveSymbol(mediaSymbol); } // Auto assign files to cabinets based on maximum uncompressed media size @@ -218,7 +210,7 @@ namespace WixToolset.Core.WindowsInstaller.Bind } // If there are uncompressed files and no MediaRow, create a default one. - if (uncompressedFiles.Count > 0 && !this.Section.Symbols.OfType().Any()) + if (uncompressedFiles.Count > 0 && mediaSymbolsByDiskId.Count == 0) { var defaultMediaRow = this.Section.AddSymbol(new MediaSymbol(null, new Identifier(AccessModifier.Section, 1)) { -- cgit v1.2.3-55-g6feb