aboutsummaryrefslogtreecommitdiff
path: root/src/WixToolset.Core.WindowsInstaller/Bind/AssignMediaCommand.cs
diff options
context:
space:
mode:
authorRob Mensching <rob@firegiant.com>2021-03-26 12:59:03 -0700
committerRob Mensching <rob@firegiant.com>2021-04-02 14:58:00 -0700
commit9cca339473d77c7036035f949239f5231c325968 (patch)
tree342399ad52d1eb8102be17c71a12242c566fca25 /src/WixToolset.Core.WindowsInstaller/Bind/AssignMediaCommand.cs
parent67bcf306aa020c5480b6dd28eab5db3d49264585 (diff)
downloadwix-9cca339473d77c7036035f949239f5231c325968.tar.gz
wix-9cca339473d77c7036035f949239f5231c325968.tar.bz2
wix-9cca339473d77c7036035f949239f5231c325968.zip
Integrate the IntermediateSection and IntermediateSymbol mutable changes
Diffstat (limited to 'src/WixToolset.Core.WindowsInstaller/Bind/AssignMediaCommand.cs')
-rw-r--r--src/WixToolset.Core.WindowsInstaller/Bind/AssignMediaCommand.cs32
1 files changed, 12 insertions, 20 deletions
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
86 86
87 this.UncompressedFileFacades = Array.Empty<IFileFacade>(); 87 this.UncompressedFileFacades = Array.Empty<IFileFacade>();
88 } 88 }
89 else if (mediaTemplateSymbols.Count == 0)
90 {
91 var filesByCabinetMedia = new Dictionary<MediaSymbol, List<IFileFacade>>();
92
93 var uncompressedFiles = new List<IFileFacade>();
94
95 this.ManuallyAssignFiles(mediaSymbols, filesByCabinetMedia, uncompressedFiles);
96
97 this.FileFacadesByCabinetMedia = filesByCabinetMedia.ToDictionary(kvp => kvp.Key, kvp => (IEnumerable<IFileFacade>)kvp.Value);
98
99 this.UncompressedFileFacades = uncompressedFiles;
100 }
101 else 89 else
102 { 90 {
103 var filesByCabinetMedia = new Dictionary<MediaSymbol, List<IFileFacade>>(); 91 var filesByCabinetMedia = new Dictionary<MediaSymbol, List<IFileFacade>>();
104
105 var uncompressedFiles = new List<IFileFacade>(); 92 var uncompressedFiles = new List<IFileFacade>();
106 93
107 this.AutoAssignFiles(mediaSymbols, filesByCabinetMedia, uncompressedFiles); 94 if (mediaTemplateSymbols.Count > 0)
95 {
96 this.AutoAssignFiles(mediaTemplateSymbols, mediaSymbols, filesByCabinetMedia, uncompressedFiles);
97 }
98 else
99 {
100 this.ManuallyAssignFiles(mediaSymbols, filesByCabinetMedia, uncompressedFiles);
101 }
108 102
109 this.FileFacadesByCabinetMedia = filesByCabinetMedia.ToDictionary(kvp => kvp.Key, kvp => (IEnumerable<IFileFacade>)kvp.Value); 103 this.FileFacadesByCabinetMedia = filesByCabinetMedia.ToDictionary(kvp => kvp.Key, kvp => (IEnumerable<IFileFacade>)kvp.Value);
110 104
@@ -115,7 +109,7 @@ namespace WixToolset.Core.WindowsInstaller.Bind
115 /// <summary> 109 /// <summary>
116 /// Assign files to cabinets based on MediaTemplate authoring. 110 /// Assign files to cabinets based on MediaTemplate authoring.
117 /// </summary> 111 /// </summary>
118 private void AutoAssignFiles(List<MediaSymbol> mediaTable, Dictionary<MediaSymbol, List<IFileFacade>> filesByCabinetMedia, List<IFileFacade> uncompressedFiles) 112 private void AutoAssignFiles(List<WixMediaTemplateSymbol> mediaTemplateTable, List<MediaSymbol> mediaSymbols, Dictionary<MediaSymbol, List<IFileFacade>> filesByCabinetMedia, List<IFileFacade> uncompressedFiles)
119 { 113 {
120 const int MaxCabIndex = 999; 114 const int MaxCabIndex = 999;
121 115
@@ -126,13 +120,11 @@ namespace WixToolset.Core.WindowsInstaller.Bind
126 120
127 MediaSymbol currentMediaRow = null; 121 MediaSymbol currentMediaRow = null;
128 122
129 var mediaTemplateTable = this.Section.Symbols.OfType<WixMediaTemplateSymbol>();
130
131 // Remove all previous media symbols since they will be replaced with 123 // Remove all previous media symbols since they will be replaced with
132 // media template. 124 // media template.
133 foreach (var mediaSymbol in mediaTable) 125 foreach (var mediaSymbol in mediaSymbols)
134 { 126 {
135 this.Section.Symbols.Remove(mediaSymbol); 127 this.Section.RemoveSymbol(mediaSymbol);
136 } 128 }
137 129
138 // Auto assign files to cabinets based on maximum uncompressed media size 130 // Auto assign files to cabinets based on maximum uncompressed media size
@@ -218,7 +210,7 @@ namespace WixToolset.Core.WindowsInstaller.Bind
218 } 210 }
219 211
220 // If there are uncompressed files and no MediaRow, create a default one. 212 // If there are uncompressed files and no MediaRow, create a default one.
221 if (uncompressedFiles.Count > 0 && !this.Section.Symbols.OfType<MediaSymbol>().Any()) 213 if (uncompressedFiles.Count > 0 && mediaSymbolsByDiskId.Count == 0)
222 { 214 {
223 var defaultMediaRow = this.Section.AddSymbol(new MediaSymbol(null, new Identifier(AccessModifier.Section, 1)) 215 var defaultMediaRow = this.Section.AddSymbol(new MediaSymbol(null, new Identifier(AccessModifier.Section, 1))
224 { 216 {