aboutsummaryrefslogtreecommitdiff
path: root/src/wix/WixToolset.Core.WindowsInstaller/Bind/CreateCabinetsCommand.cs
diff options
context:
space:
mode:
Diffstat (limited to 'src/wix/WixToolset.Core.WindowsInstaller/Bind/CreateCabinetsCommand.cs')
-rw-r--r--src/wix/WixToolset.Core.WindowsInstaller/Bind/CreateCabinetsCommand.cs17
1 files changed, 5 insertions, 12 deletions
diff --git a/src/wix/WixToolset.Core.WindowsInstaller/Bind/CreateCabinetsCommand.cs b/src/wix/WixToolset.Core.WindowsInstaller/Bind/CreateCabinetsCommand.cs
index 6ed107d5..1ed2ba79 100644
--- a/src/wix/WixToolset.Core.WindowsInstaller/Bind/CreateCabinetsCommand.cs
+++ b/src/wix/WixToolset.Core.WindowsInstaller/Bind/CreateCabinetsCommand.cs
@@ -95,6 +95,8 @@ namespace WixToolset.Core.WindowsInstaller.Bind
95 95
96 var cabinetBuilder = new CabinetBuilder(this.Messaging, this.CabbingThreadCount, maximumCabinetSizeForLargeFileSplitting, maximumUncompressedMediaSize); 96 var cabinetBuilder = new CabinetBuilder(this.Messaging, this.CabbingThreadCount, maximumCabinetSizeForLargeFileSplitting, maximumUncompressedMediaSize);
97 97
98 var hashesByFileId = this.Section.Symbols.OfType<MsiFileHashSymbol>().ToDictionary(s => s.Id.Id);
99
98 foreach (var entry in this.FileFacadesByCabinet) 100 foreach (var entry in this.FileFacadesByCabinet)
99 { 101 {
100 var mediaSymbol = entry.Key; 102 var mediaSymbol = entry.Key;
@@ -102,7 +104,7 @@ namespace WixToolset.Core.WindowsInstaller.Bind
102 var compressionLevel = mediaSymbol.CompressionLevel ?? this.DefaultCompressionLevel ?? CompressionLevel.Medium; 104 var compressionLevel = mediaSymbol.CompressionLevel ?? this.DefaultCompressionLevel ?? CompressionLevel.Medium;
103 var cabinetDir = this.ResolveMedia(mediaSymbol, mediaSymbol.Layout, this.LayoutDirectory); 105 var cabinetDir = this.ResolveMedia(mediaSymbol, mediaSymbol.Layout, this.LayoutDirectory);
104 106
105 var cabinetWorkItem = this.CreateCabinetWorkItem(this.Data, cabinetDir, mediaSymbol, compressionLevel, files); 107 var cabinetWorkItem = this.CreateCabinetWorkItem(this.Data, cabinetDir, mediaSymbol, compressionLevel, files, hashesByFileId);
106 if (null != cabinetWorkItem) 108 if (null != cabinetWorkItem)
107 { 109 {
108 cabinetBuilder.Enqueue(cabinetWorkItem); 110 cabinetBuilder.Enqueue(cabinetWorkItem);
@@ -140,16 +142,7 @@ namespace WixToolset.Core.WindowsInstaller.Bind
140 return cabbingThreadCount; 142 return cabbingThreadCount;
141 } 143 }
142 144
143 /// <summary> 145 private CabinetWorkItem CreateCabinetWorkItem(WindowsInstallerData data, string cabinetDir, MediaSymbol mediaSymbol, CompressionLevel compressionLevel, IEnumerable<IFileFacade> fileFacades, Dictionary<string, MsiFileHashSymbol> hashesByFileId)
144 /// Creates a work item to create a cabinet.
145 /// </summary>
146 /// <param name="data">Windows Installer data for the current database.</param>
147 /// <param name="cabinetDir">Directory to create cabinet in.</param>
148 /// <param name="mediaSymbol">Media symbol containing information about the cabinet.</param>
149 /// <param name="compressionLevel">Desired compression level.</param>
150 /// <param name="fileFacades">Collection of files in this cabinet.</param>
151 /// <returns>created CabinetWorkItem object</returns>
152 private CabinetWorkItem CreateCabinetWorkItem(WindowsInstallerData data, string cabinetDir, MediaSymbol mediaSymbol, CompressionLevel compressionLevel, IEnumerable<IFileFacade> fileFacades)
153 { 146 {
154 CabinetWorkItem cabinetWorkItem = null; 147 CabinetWorkItem cabinetWorkItem = null;
155 148
@@ -171,7 +164,7 @@ namespace WixToolset.Core.WindowsInstaller.Bind
171 if (CabinetBuildOption.BuildAndCopy == resolvedCabinet.BuildOption || CabinetBuildOption.BuildAndMove == resolvedCabinet.BuildOption) 164 if (CabinetBuildOption.BuildAndCopy == resolvedCabinet.BuildOption || CabinetBuildOption.BuildAndMove == resolvedCabinet.BuildOption)
172 { 165 {
173 // Default to the threshold for best smartcabbing (makes smallest cabinet). 166 // Default to the threshold for best smartcabbing (makes smallest cabinet).
174 cabinetWorkItem = new CabinetWorkItem(mediaSymbol.SourceLineNumbers, mediaSymbol.DiskId, resolvedCabinet.Path, fileFacades, maxThreshold: 0, compressionLevel: compressionLevel, modularizationSuffix: this.ModularizationSuffix); 167 cabinetWorkItem = new CabinetWorkItem(mediaSymbol.SourceLineNumbers, mediaSymbol.DiskId, resolvedCabinet.Path, fileFacades, hashesByFileId, maxThreshold: 0, compressionLevel: compressionLevel, modularizationSuffix: this.ModularizationSuffix);
175 } 168 }
176 else // reuse the cabinet from the cabinet cache. 169 else // reuse the cabinet from the cabinet cache.
177 { 170 {