From 870d523687cbeeab3432abdb5a07a5250c5e1bc4 Mon Sep 17 00:00:00 2001 From: Bob Arnson Date: Tue, 26 Jan 2021 11:39:56 -0500 Subject: Add DefaultCompressionLevel support. --- .../Bundles/CreateContainerCommand.cs | 2 +- src/WixToolset.Core/CommandLine/BuildCommand.cs | 20 +++++++++++++++++++- src/WixToolset.Core/Compiler.cs | 2 +- src/WixToolset.Core/Compiler_2.cs | 2 +- 4 files changed, 22 insertions(+), 4 deletions(-) diff --git a/src/WixToolset.Core.Burn/Bundles/CreateContainerCommand.cs b/src/WixToolset.Core.Burn/Bundles/CreateContainerCommand.cs index a23a116b..8f361626 100644 --- a/src/WixToolset.Core.Burn/Bundles/CreateContainerCommand.cs +++ b/src/WixToolset.Core.Burn/Bundles/CreateContainerCommand.cs @@ -64,7 +64,7 @@ namespace WixToolset.Core.Burn.Bundles files.AddRange(this.Payloads.Select(p => new CabinetCompressFile(p.SourceFile.Path, p.EmbeddedId))); var cab = new Cabinet(cabinetPath); - cab.Compress(files, this.CompressionLevel ?? Data.CompressionLevel.Mszip); + cab.Compress(files, this.CompressionLevel ?? Data.CompressionLevel.Medium); // Now that the container is created, set the outputs of the command. var fileInfo = new FileInfo(cabinetPath); diff --git a/src/WixToolset.Core/CommandLine/BuildCommand.cs b/src/WixToolset.Core/CommandLine/BuildCommand.cs index 065467bd..2216a80f 100644 --- a/src/WixToolset.Core/CommandLine/BuildCommand.cs +++ b/src/WixToolset.Core/CommandLine/BuildCommand.cs @@ -50,6 +50,8 @@ namespace WixToolset.Core.CommandLine private string OutputFile { get; set; } + private CompressionLevel? DefaultCompressionLevel { get; set; } + private string ContentsFile { get; set; } private string OutputsFile { get; set; } @@ -82,6 +84,8 @@ namespace WixToolset.Core.CommandLine this.BuiltOutputsFile = this.commandLine.BuiltOutputsFile; + this.DefaultCompressionLevel = this.commandLine.DefaultCompressionLevel; + var preprocessorVariables = this.commandLine.GatherPreprocessorVariables(); var sourceFiles = this.commandLine.GatherSourceFiles(this.IntermediateFolder); @@ -335,7 +339,7 @@ namespace WixToolset.Core.CommandLine //context.CabbingThreadCount = this.CabbingThreadCount; context.CabCachePath = cabCachePath; context.Codepage = resolveResult.Codepage; - //context.DefaultCompressionLevel = this.DefaultCompressionLevel; + context.DefaultCompressionLevel = this.DefaultCompressionLevel; context.DelayedFields = resolveResult.DelayedFields; context.ExpectedEmbeddedFiles = resolveResult.ExpectedEmbeddedFiles; context.Extensions = this.ExtensionManager.GetServices(); @@ -529,6 +533,8 @@ namespace WixToolset.Core.CommandLine public string OutputType { get; private set; } + public CompressionLevel? DefaultCompressionLevel { get; private set; } + public string ContentsFile { get; private set; } public string OutputsFile { get; private set; } @@ -611,6 +617,18 @@ namespace WixToolset.Core.CommandLine parser.GetNextArgumentOrError(arg, this.Defines); return true; + case "dcl": + case "defaultcompressionlevel": + { + var value = parser.GetNextArgumentOrError(arg); + if (Enum.TryParse(value, true, out CompressionLevel compressionLevel)) + { + this.DefaultCompressionLevel = compressionLevel; + return true; + } + return false; + } + case "i": case "includepath": parser.GetNextArgumentOrError(arg, this.IncludeSearchPaths); diff --git a/src/WixToolset.Core/Compiler.cs b/src/WixToolset.Core/Compiler.cs index 14b28034..003617cc 100644 --- a/src/WixToolset.Core/Compiler.cs +++ b/src/WixToolset.Core/Compiler.cs @@ -7319,7 +7319,7 @@ namespace WixToolset.Core string volumeLabel = null; int? maximumUncompressedMediaSize = null; int? maximumCabinetSizeForLargeFileSplitting = null; - CompressionLevel? compressionLevel = null; // this defaults to mszip in Binder + CompressionLevel? compressionLevel = null; // this defaults to 'medium' in the MSI and Burn backends var embedCab = patch ? YesNoType.Yes : YesNoType.NotSet; diff --git a/src/WixToolset.Core/Compiler_2.cs b/src/WixToolset.Core/Compiler_2.cs index af56f0ef..f5f450cb 100644 --- a/src/WixToolset.Core/Compiler_2.cs +++ b/src/WixToolset.Core/Compiler_2.cs @@ -4958,7 +4958,7 @@ namespace WixToolset.Core case "": break; default: - this.Core.Write(ErrorMessages.IllegalAttributeValue(sourceLineNumbers, node.Name.LocalName, attribute.Name.LocalName, compressionLevel, "high", "low", "medium", "mszip", "none")); + this.Core.Write(ErrorMessages.IllegalCompressionLevel(sourceLineNumbers, compressionLevel)); break; } -- cgit v1.2.3-55-g6feb