Add DefaultCompressionLevel support.
Bob Arnson committed
Jan 26, 2021 at 11:39 UTC
870d523687cbeeab3432abdb5a07a5250c5e1bc4
4 files changed
+22
-4
src/WixToolset.Core.Burn/Bundles/CreateContainerCommand.cs
+1
-1
@@ -64,7 +64,7 @@ namespace WixToolset.Core.Burn.Bundles
64
files.AddRange(this.Payloads.Select(p => new CabinetCompressFile(p.SourceFile.Path, p.EmbeddedId)));
65
66
var cab = new Cabinet(cabinetPath);
67
- cab.Compress(files, this.CompressionLevel ?? Data.CompressionLevel.Mszip);
67
+ cab.Compress(files, this.CompressionLevel ?? Data.CompressionLevel.Medium);
68
69
// Now that the container is created, set the outputs of the command.
70
var fileInfo = new FileInfo(cabinetPath);
src/WixToolset.Core/CommandLine/BuildCommand.cs
+19
-1
@@ -50,6 +50,8 @@ namespace WixToolset.Core.CommandLine
50
51
private string OutputFile { get; set; }
52
53
+ private CompressionLevel? DefaultCompressionLevel { get; set; }
54
+
55
private string ContentsFile { get; set; }
56
57
private string OutputsFile { get; set; }
@@ -82,6 +84,8 @@ namespace WixToolset.Core.CommandLine
84
85
this.BuiltOutputsFile = this.commandLine.BuiltOutputsFile;
86
87
+ this.DefaultCompressionLevel = this.commandLine.DefaultCompressionLevel;
88
+
89
var preprocessorVariables = this.commandLine.GatherPreprocessorVariables();
90
91
var sourceFiles = this.commandLine.GatherSourceFiles(this.IntermediateFolder);
@@ -335,7 +339,7 @@ namespace WixToolset.Core.CommandLine
339
//context.CabbingThreadCount = this.CabbingThreadCount;
340
context.CabCachePath = cabCachePath;
341
context.Codepage = resolveResult.Codepage;
338
- //context.DefaultCompressionLevel = this.DefaultCompressionLevel;
342
+ context.DefaultCompressionLevel = this.DefaultCompressionLevel;
343
context.DelayedFields = resolveResult.DelayedFields;
344
context.ExpectedEmbeddedFiles = resolveResult.ExpectedEmbeddedFiles;
345
context.Extensions = this.ExtensionManager.GetServices<IBinderExtension>();
@@ -529,6 +533,8 @@ namespace WixToolset.Core.CommandLine
533
534
public string OutputType { get; private set; }
535
536
+ public CompressionLevel? DefaultCompressionLevel { get; private set; }
537
+
538
public string ContentsFile { get; private set; }
539
540
public string OutputsFile { get; private set; }
@@ -611,6 +617,18 @@ namespace WixToolset.Core.CommandLine
617
parser.GetNextArgumentOrError(arg, this.Defines);
618
return true;
619
620
+ case "dcl":
621
+ case "defaultcompressionlevel":
622
+ {
623
+ var value = parser.GetNextArgumentOrError(arg);
624
+ if (Enum.TryParse(value, true, out CompressionLevel compressionLevel))
625
+ {
626
+ this.DefaultCompressionLevel = compressionLevel;
627
+ return true;
628
+ }
629
+ return false;
630
+ }
631
+
632
case "i":
633
case "includepath":
634
parser.GetNextArgumentOrError(arg, this.IncludeSearchPaths);
src/WixToolset.Core/Compiler.cs
+1
-1
@@ -7319,7 +7319,7 @@ namespace WixToolset.Core
7319
string volumeLabel = null;
7320
int? maximumUncompressedMediaSize = null;
7321
int? maximumCabinetSizeForLargeFileSplitting = null;
7322
- CompressionLevel? compressionLevel = null; // this defaults to mszip in Binder
7322
+ CompressionLevel? compressionLevel = null; // this defaults to 'medium' in the MSI and Burn backends
7323
7324
var embedCab = patch ? YesNoType.Yes : YesNoType.NotSet;
7325
src/WixToolset.Core/Compiler_2.cs
+1
-1
@@ -4958,7 +4958,7 @@ namespace WixToolset.Core
4958
case "":
4959
break;
4960
default:
4961
- this.Core.Write(ErrorMessages.IllegalAttributeValue(sourceLineNumbers, node.Name.LocalName, attribute.Name.LocalName, compressionLevel, "high", "low", "medium", "mszip", "none"));
4961
+ this.Core.Write(ErrorMessages.IllegalCompressionLevel(sourceLineNumbers, compressionLevel));
4962
break;
4963
}
4964