diff options
Diffstat (limited to 'src/wix/WixToolset.Core.WindowsInstaller/Bind/CreateCabinetsCommand.cs')
-rw-r--r-- | src/wix/WixToolset.Core.WindowsInstaller/Bind/CreateCabinetsCommand.cs | 17 |
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 | { |