aboutsummaryrefslogtreecommitdiff
path: root/src/WixToolset.Core.WindowsInstaller/Bind/CreateCabinetsCommand.cs
diff options
context:
space:
mode:
Diffstat (limited to 'src/WixToolset.Core.WindowsInstaller/Bind/CreateCabinetsCommand.cs')
-rw-r--r--src/WixToolset.Core.WindowsInstaller/Bind/CreateCabinetsCommand.cs41
1 files changed, 22 insertions, 19 deletions
diff --git a/src/WixToolset.Core.WindowsInstaller/Bind/CreateCabinetsCommand.cs b/src/WixToolset.Core.WindowsInstaller/Bind/CreateCabinetsCommand.cs
index 0aa50bd9..28e7f6df 100644
--- a/src/WixToolset.Core.WindowsInstaller/Bind/CreateCabinetsCommand.cs
+++ b/src/WixToolset.Core.WindowsInstaller/Bind/CreateCabinetsCommand.cs
@@ -16,6 +16,7 @@ namespace WixToolset.Core.WindowsInstaller.Bind
16 using WixToolset.Data.WindowsInstaller; 16 using WixToolset.Data.WindowsInstaller;
17 using WixToolset.Data.WindowsInstaller.Rows; 17 using WixToolset.Data.WindowsInstaller.Rows;
18 using WixToolset.Extensibility; 18 using WixToolset.Extensibility;
19 using WixToolset.Extensibility.Services;
19 20
20 /// <summary> 21 /// <summary>
21 /// Creates cabinet files. 22 /// Creates cabinet files.
@@ -45,6 +46,8 @@ namespace WixToolset.Core.WindowsInstaller.Bind
45 46
46 public string CabCachePath { private get; set; } 47 public string CabCachePath { private get; set; }
47 48
49 public IMessaging Messaging { private get; set; }
50
48 public string TempFilesLocation { private get; set; } 51 public string TempFilesLocation { private get; set; }
49 52
50 /// <summary> 53 /// <summary>
@@ -85,7 +88,7 @@ namespace WixToolset.Core.WindowsInstaller.Bind
85 this.SetCabbingThreadCount(); 88 this.SetCabbingThreadCount();
86 89
87 // Send Binder object to Facilitate NewCabNamesCallBack Callback 90 // Send Binder object to Facilitate NewCabNamesCallBack Callback
88 CabinetBuilder cabinetBuilder = new CabinetBuilder(this.CabbingThreadCount, Marshal.GetFunctionPointerForDelegate(this.newCabNamesCallBack)); 91 CabinetBuilder cabinetBuilder = new CabinetBuilder(this.Messaging, this.CabbingThreadCount, Marshal.GetFunctionPointerForDelegate(this.newCabNamesCallBack));
89 92
90 // Supply Compile MediaTemplate Attributes to Cabinet Builder 93 // Supply Compile MediaTemplate Attributes to Cabinet Builder
91 this.GetMediaTemplateAttributes(out var MaximumCabinetSizeForLargeFileSplitting, out var MaximumUncompressedMediaSize); 94 this.GetMediaTemplateAttributes(out var MaximumCabinetSizeForLargeFileSplitting, out var MaximumUncompressedMediaSize);
@@ -120,14 +123,14 @@ namespace WixToolset.Core.WindowsInstaller.Bind
120 } 123 }
121 124
122 // stop processing if an error previously occurred 125 // stop processing if an error previously occurred
123 if (Messaging.Instance.EncounteredError) 126 if (this.Messaging.EncounteredError)
124 { 127 {
125 return; 128 return;
126 } 129 }
127 130
128 // create queued cabinets with multiple threads 131 // create queued cabinets with multiple threads
129 cabinetBuilder.CreateQueuedCabinets(); 132 cabinetBuilder.CreateQueuedCabinets();
130 if (Messaging.Instance.EncounteredError) 133 if (this.Messaging.EncounteredError)
131 { 134 {
132 return; 135 return;
133 } 136 }
@@ -152,7 +155,7 @@ namespace WixToolset.Core.WindowsInstaller.Bind
152 155
153 if (0 >= this.CabbingThreadCount) 156 if (0 >= this.CabbingThreadCount)
154 { 157 {
155 throw new WixException(WixErrors.IllegalEnvironmentVariable("NUMBER_OF_PROCESSORS", numberOfProcessors)); 158 throw new WixException(ErrorMessages.IllegalEnvironmentVariable("NUMBER_OF_PROCESSORS", numberOfProcessors));
156 } 159 }
157 } 160 }
158 else // default to 1 if the environment variable is not set 161 else // default to 1 if the environment variable is not set
@@ -160,15 +163,15 @@ namespace WixToolset.Core.WindowsInstaller.Bind
160 this.CabbingThreadCount = 1; 163 this.CabbingThreadCount = 1;
161 } 164 }
162 165
163 Messaging.Instance.OnMessage(WixVerboses.SetCabbingThreadCount(this.CabbingThreadCount.ToString())); 166 this.Messaging.Write(VerboseMessages.SetCabbingThreadCount(this.CabbingThreadCount.ToString()));
164 } 167 }
165 catch (ArgumentException) 168 catch (ArgumentException)
166 { 169 {
167 throw new WixException(WixErrors.IllegalEnvironmentVariable("NUMBER_OF_PROCESSORS", numberOfProcessors)); 170 throw new WixException(ErrorMessages.IllegalEnvironmentVariable("NUMBER_OF_PROCESSORS", numberOfProcessors));
168 } 171 }
169 catch (FormatException) 172 catch (FormatException)
170 { 173 {
171 throw new WixException(WixErrors.IllegalEnvironmentVariable("NUMBER_OF_PROCESSORS", numberOfProcessors)); 174 throw new WixException(ErrorMessages.IllegalEnvironmentVariable("NUMBER_OF_PROCESSORS", numberOfProcessors));
172 } 175 }
173 } 176 }
174 } 177 }
@@ -202,11 +205,11 @@ namespace WixToolset.Core.WindowsInstaller.Bind
202 // If building a patch, remind them to run -p for torch. 205 // If building a patch, remind them to run -p for torch.
203 if (OutputType.Patch == output.Type) 206 if (OutputType.Patch == output.Type)
204 { 207 {
205 Messaging.Instance.OnMessage(WixWarnings.EmptyCabinet(mediaRow.SourceLineNumbers, cabinetName, true)); 208 this.Messaging.Write(WarningMessages.EmptyCabinet(mediaRow.SourceLineNumbers, cabinetName, true));
206 } 209 }
207 else 210 else
208 { 211 {
209 Messaging.Instance.OnMessage(WixWarnings.EmptyCabinet(mediaRow.SourceLineNumbers, cabinetName)); 212 this.Messaging.Write(WarningMessages.EmptyCabinet(mediaRow.SourceLineNumbers, cabinetName));
210 } 213 }
211 } 214 }
212 215
@@ -223,7 +226,7 @@ namespace WixToolset.Core.WindowsInstaller.Bind
223 } 226 }
224 else // reuse the cabinet from the cabinet cache. 227 else // reuse the cabinet from the cabinet cache.
225 { 228 {
226 Messaging.Instance.OnMessage(WixVerboses.ReusingCabCache(mediaRow.SourceLineNumbers, mediaRow.Cabinet, resolvedCabinet.Path)); 229 this.Messaging.Write(VerboseMessages.ReusingCabCache(mediaRow.SourceLineNumbers, mediaRow.Cabinet, resolvedCabinet.Path));
227 230
228 try 231 try
229 { 232 {
@@ -237,7 +240,7 @@ namespace WixToolset.Core.WindowsInstaller.Bind
237 } 240 }
238 catch (Exception e) 241 catch (Exception e)
239 { 242 {
240 Messaging.Instance.OnMessage(WixWarnings.CannotUpdateCabCache(mediaRow.SourceLineNumbers, resolvedCabinet.Path, e.Message)); 243 this.Messaging.Write(WarningMessages.CannotUpdateCabCache(mediaRow.SourceLineNumbers, resolvedCabinet.Path, e.Message));
241 } 244 }
242 } 245 }
243 246
@@ -303,7 +306,7 @@ namespace WixToolset.Core.WindowsInstaller.Bind
303 if (!mutex.WaitOne(0, false)) // Check if you can get the lock 306 if (!mutex.WaitOne(0, false)) // Check if you can get the lock
304 { 307 {
305 // Cound not get the Lock 308 // Cound not get the Lock
306 Messaging.Instance.OnMessage(WixVerboses.CabinetsSplitInParallel()); 309 this.Messaging.Write(VerboseMessages.CabinetsSplitInParallel());
307 mutex.WaitOne(); // Wait on other thread 310 mutex.WaitOne(); // Wait on other thread
308 } 311 }
309 312
@@ -333,7 +336,7 @@ namespace WixToolset.Core.WindowsInstaller.Bind
333 // Check if File Transfer was added 336 // Check if File Transfer was added
334 if (!transferAdded) 337 if (!transferAdded)
335 { 338 {
336 throw new WixException(WixErrors.SplitCabinetCopyRegistrationFailed(newCabinetName, firstCabinetName)); 339 throw new WixException(ErrorMessages.SplitCabinetCopyRegistrationFailed(newCabinetName, firstCabinetName));
337 } 340 }
338 341
339 // Add the new Cabinets to media table using LastSequence of Base Cabinet 342 // Add the new Cabinets to media table using LastSequence of Base Cabinet
@@ -365,14 +368,14 @@ namespace WixToolset.Core.WindowsInstaller.Bind
365 if (newCabinetName.Equals(mediaRow.Cabinet, StringComparison.InvariantCultureIgnoreCase)) 368 if (newCabinetName.Equals(mediaRow.Cabinet, StringComparison.InvariantCultureIgnoreCase))
366 { 369 {
367 // Name Collision of generated Split Cabinet Name and user Specified Cab name for current row 370 // Name Collision of generated Split Cabinet Name and user Specified Cab name for current row
368 throw new WixException(WixErrors.SplitCabinetNameCollision(newCabinetName, firstCabinetName)); 371 throw new WixException(ErrorMessages.SplitCabinetNameCollision(newCabinetName, firstCabinetName));
369 } 372 }
370 } 373 }
371 374
372 // Check if the last Split Cabinet was found in the Media Table 375 // Check if the last Split Cabinet was found in the Media Table
373 if (!lastSplitCabinetFound) 376 if (!lastSplitCabinetFound)
374 { 377 {
375 throw new WixException(WixErrors.SplitCabinetInsertionFailed(newCabinetName, firstCabinetName, lastCabinetOfThisSequence)); 378 throw new WixException(ErrorMessages.SplitCabinetInsertionFailed(newCabinetName, firstCabinetName, lastCabinetOfThisSequence));
376 } 379 }
377 380
378 // The new Row has to be inserted just after the last cab in this cabinet split chain according to DiskID Sort 381 // The new Row has to be inserted just after the last cab in this cabinet split chain according to DiskID Sort
@@ -454,11 +457,11 @@ namespace WixToolset.Core.WindowsInstaller.Bind
454 } 457 }
455 catch (FormatException) 458 catch (FormatException)
456 { 459 {
457 throw new WixException(WixErrors.IllegalEnvironmentVariable("WIX_MCSLFS", mcslfsString)); 460 throw new WixException(ErrorMessages.IllegalEnvironmentVariable("WIX_MCSLFS", mcslfsString));
458 } 461 }
459 catch (OverflowException) 462 catch (OverflowException)
460 { 463 {
461 throw new WixException(WixErrors.MaximumCabinetSizeForLargeFileSplittingTooLarge(null, maxCabSizeForLargeFileInMB, MaxValueOfMaxCabSizeForLargeFileSplitting)); 464 throw new WixException(ErrorMessages.MaximumCabinetSizeForLargeFileSplittingTooLarge(null, maxCabSizeForLargeFileInMB, MaxValueOfMaxCabSizeForLargeFileSplitting));
462 } 465 }
463 466
464 try 467 try
@@ -476,11 +479,11 @@ namespace WixToolset.Core.WindowsInstaller.Bind
476 } 479 }
477 catch (FormatException) 480 catch (FormatException)
478 { 481 {
479 throw new WixException(WixErrors.IllegalEnvironmentVariable("WIX_MUMS", mumsString)); 482 throw new WixException(ErrorMessages.IllegalEnvironmentVariable("WIX_MUMS", mumsString));
480 } 483 }
481 catch (OverflowException) 484 catch (OverflowException)
482 { 485 {
483 throw new WixException(WixErrors.MaximumUncompressedMediaSizeTooLarge(null, maxPreCompressedSizeInMB)); 486 throw new WixException(ErrorMessages.MaximumUncompressedMediaSizeTooLarge(null, maxPreCompressedSizeInMB));
484 } 487 }
485 488
486 maxCabSizeForLargeFileSplitting = maxCabSizeForLargeFileInMB; 489 maxCabSizeForLargeFileSplitting = maxCabSizeForLargeFileInMB;