From a962b626a238dab205c7d0dccd52120081ccf5d3 Mon Sep 17 00:00:00 2001 From: Rob Mensching Date: Sun, 16 May 2021 21:53:08 -0700 Subject: Update package Cache attribute to new attribute values Closes wixtoolset/issues#5125 --- src/api/wix/WixToolset.Data/BundleCacheType.cs | 19 +++ .../Symbols/WixBundlePackageSymbol.cs | 4 +- src/api/wix/WixToolset.Data/YesNoAlwaysType.cs | 25 ---- src/ext/NetFx/wixlib/NetCore3.1.12_x64.wxs | 6 +- src/ext/NetFx/wixlib/NetCore3.1.12_x86.wxs | 6 +- src/ext/NetFx/wixlib/NetFx452.wxs | 4 +- src/ext/NetFx/wixlib/NetFx46.wxs | 4 +- src/ext/NetFx/wixlib/NetFx461.wxs | 4 +- src/ext/NetFx/wixlib/NetFx462.wxs | 2 +- src/ext/NetFx/wixlib/NetFx472.wxs | 4 +- src/ext/NetFx/wixlib/NetFx48.wxs | 4 +- .../DependencyTests/BundleAv1/BundleAv1.wxs | 2 +- .../BundleAv1_0_1/BundleAv1_0_1.wxs | 2 +- .../TestData/DependencyTests/BundleB/BundleB.wxs | 2 +- .../TestData/DependencyTests/BundleD/BundleD.wxs | 2 +- .../TestData/DependencyTests/BundleE/BundleE.wxs | 2 +- .../BundleF_AddOnA/BundleF_AddOn.wxs | 2 +- .../TestData/PrereqBaTests/BundleA/BundleA.wxs | 2 +- src/wix/WixToolset.Converters/WixConverter.cs | 44 +++++- ...CreateBootstrapperApplicationManifestCommand.cs | 6 +- .../Bundles/CreateBurnManifestCommand.cs | 6 +- src/wix/WixToolset.Core/Compiler_Bundle.cs | 22 ++- src/wix/heat/Serialize/wix.cs | 112 ++++++++------- .../BundleCacheFixture.cs | 154 +++++++++++++++++++++ 24 files changed, 311 insertions(+), 129 deletions(-) create mode 100644 src/api/wix/WixToolset.Data/BundleCacheType.cs delete mode 100644 src/api/wix/WixToolset.Data/YesNoAlwaysType.cs create mode 100644 src/wix/test/WixToolsetTest.Converters/BundleCacheFixture.cs (limited to 'src') diff --git a/src/api/wix/WixToolset.Data/BundleCacheType.cs b/src/api/wix/WixToolset.Data/BundleCacheType.cs new file mode 100644 index 00000000..7d297d4b --- /dev/null +++ b/src/api/wix/WixToolset.Data/BundleCacheType.cs @@ -0,0 +1,19 @@ +// Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information. + +namespace WixToolset.Data +{ + /// + /// Keep, Remove, Force xml simple type. + /// + public enum BundleCacheType + { + /// The keep value. + Keep, + + /// The remove value. + Remove, + + /// The force value. + Force, + } +} diff --git a/src/api/wix/WixToolset.Data/Symbols/WixBundlePackageSymbol.cs b/src/api/wix/WixToolset.Data/Symbols/WixBundlePackageSymbol.cs index cbe7f761..3d1a6ce8 100644 --- a/src/api/wix/WixToolset.Data/Symbols/WixBundlePackageSymbol.cs +++ b/src/api/wix/WixToolset.Data/Symbols/WixBundlePackageSymbol.cs @@ -117,9 +117,9 @@ namespace WixToolset.Data.Symbols set => this.Set((int)WixBundlePackageSymbolFields.InstallCondition, value); } - public YesNoAlwaysType Cache + public BundleCacheType? Cache { - get => Enum.TryParse((string)this.Fields[(int)WixBundlePackageSymbolFields.Cache], true, out YesNoAlwaysType value) ? value : YesNoAlwaysType.NotSet; + get => Enum.TryParse((string)this.Fields[(int)WixBundlePackageSymbolFields.Cache], true, out BundleCacheType value) ? value : (BundleCacheType?)null; set => this.Set((int)WixBundlePackageSymbolFields.Cache, value.ToString().ToLowerInvariant()); } diff --git a/src/api/wix/WixToolset.Data/YesNoAlwaysType.cs b/src/api/wix/WixToolset.Data/YesNoAlwaysType.cs deleted file mode 100644 index 3b4ca5d7..00000000 --- a/src/api/wix/WixToolset.Data/YesNoAlwaysType.cs +++ /dev/null @@ -1,25 +0,0 @@ -// Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information. - -namespace WixToolset.Data -{ - /// - /// Yes, No, Always xml simple type. - /// - public enum YesNoAlwaysType - { - /// Not a valid yes, no or always value. - IllegalValue = -2, - - /// Value not set; equivalent to null for reference types. - NotSet = -1, - - /// The no value. - No, - - /// The yes value. - Yes, - - /// The always value. - Always, - } -} diff --git a/src/ext/NetFx/wixlib/NetCore3.1.12_x64.wxs b/src/ext/NetFx/wixlib/NetCore3.1.12_x64.wxs index d3e87d2a..ee15852f 100644 --- a/src/ext/NetFx/wixlib/NetCore3.1.12_x64.wxs +++ b/src/ext/NetFx/wixlib/NetCore3.1.12_x64.wxs @@ -20,7 +20,7 @@ - + @@ -35,7 +35,7 @@ - + @@ -50,7 +50,7 @@ - + diff --git a/src/ext/NetFx/wixlib/NetCore3.1.12_x86.wxs b/src/ext/NetFx/wixlib/NetCore3.1.12_x86.wxs index e97b3144..909380d5 100644 --- a/src/ext/NetFx/wixlib/NetCore3.1.12_x86.wxs +++ b/src/ext/NetFx/wixlib/NetCore3.1.12_x86.wxs @@ -20,7 +20,7 @@ - + @@ -35,7 +35,7 @@ - + @@ -50,7 +50,7 @@ - + diff --git a/src/ext/NetFx/wixlib/NetFx452.wxs b/src/ext/NetFx/wixlib/NetFx452.wxs index 6c55a563..e0b2f0f2 100644 --- a/src/ext/NetFx/wixlib/NetFx452.wxs +++ b/src/ext/NetFx/wixlib/NetFx452.wxs @@ -31,7 +31,7 @@ - + @@ -53,7 +53,7 @@ - + diff --git a/src/ext/NetFx/wixlib/NetFx46.wxs b/src/ext/NetFx/wixlib/NetFx46.wxs index 99560a98..535747e0 100644 --- a/src/ext/NetFx/wixlib/NetFx46.wxs +++ b/src/ext/NetFx/wixlib/NetFx46.wxs @@ -32,7 +32,7 @@ - + @@ -54,7 +54,7 @@ - + diff --git a/src/ext/NetFx/wixlib/NetFx461.wxs b/src/ext/NetFx/wixlib/NetFx461.wxs index d47e75bd..e89bf7be 100644 --- a/src/ext/NetFx/wixlib/NetFx461.wxs +++ b/src/ext/NetFx/wixlib/NetFx461.wxs @@ -31,7 +31,7 @@ - + @@ -53,7 +53,7 @@ - + diff --git a/src/ext/NetFx/wixlib/NetFx462.wxs b/src/ext/NetFx/wixlib/NetFx462.wxs index b5e4b533..9ae5ad31 100644 --- a/src/ext/NetFx/wixlib/NetFx462.wxs +++ b/src/ext/NetFx/wixlib/NetFx462.wxs @@ -31,7 +31,7 @@ - + diff --git a/src/ext/NetFx/wixlib/NetFx472.wxs b/src/ext/NetFx/wixlib/NetFx472.wxs index c54e7957..3a8009e5 100644 --- a/src/ext/NetFx/wixlib/NetFx472.wxs +++ b/src/ext/NetFx/wixlib/NetFx472.wxs @@ -29,7 +29,7 @@ - + @@ -51,7 +51,7 @@ - + diff --git a/src/ext/NetFx/wixlib/NetFx48.wxs b/src/ext/NetFx/wixlib/NetFx48.wxs index be307219..ef8f2f54 100644 --- a/src/ext/NetFx/wixlib/NetFx48.wxs +++ b/src/ext/NetFx/wixlib/NetFx48.wxs @@ -29,7 +29,7 @@ - + @@ -51,7 +51,7 @@ - + diff --git a/src/test/burn/TestData/DependencyTests/BundleAv1/BundleAv1.wxs b/src/test/burn/TestData/DependencyTests/BundleAv1/BundleAv1.wxs index 9218e823..3a15fdbb 100644 --- a/src/test/burn/TestData/DependencyTests/BundleAv1/BundleAv1.wxs +++ b/src/test/burn/TestData/DependencyTests/BundleAv1/BundleAv1.wxs @@ -8,7 +8,7 @@ - - - - + diff --git a/src/test/burn/TestData/DependencyTests/BundleE/BundleE.wxs b/src/test/burn/TestData/DependencyTests/BundleE/BundleE.wxs index 204e66ab..03b3538b 100644 --- a/src/test/burn/TestData/DependencyTests/BundleE/BundleE.wxs +++ b/src/test/burn/TestData/DependencyTests/BundleE/BundleE.wxs @@ -9,7 +9,7 @@ - diff --git a/src/test/burn/TestData/DependencyTests/BundleF_AddOnA/BundleF_AddOn.wxs b/src/test/burn/TestData/DependencyTests/BundleF_AddOnA/BundleF_AddOn.wxs index c8ca4a3f..30fba657 100644 --- a/src/test/burn/TestData/DependencyTests/BundleF_AddOnA/BundleF_AddOn.wxs +++ b/src/test/burn/TestData/DependencyTests/BundleF_AddOnA/BundleF_AddOn.wxs @@ -9,7 +9,7 @@ - - + diff --git a/src/wix/WixToolset.Converters/WixConverter.cs b/src/wix/WixToolset.Converters/WixConverter.cs index e42d0605..a343f35a 100644 --- a/src/wix/WixToolset.Converters/WixConverter.cs +++ b/src/wix/WixToolset.Converters/WixConverter.cs @@ -224,7 +224,7 @@ namespace WixToolset.Converters { WixConverter.ModuleElementName, this.ConvertModuleElement }, { WixConverter.MsiPackageElementName, this.ConvertWindowsInstallerPackageElement }, { WixConverter.MspPackageElementName, this.ConvertWindowsInstallerPackageElement }, - { WixConverter.MsuPackageElementName, this.ConvertSuppressSignatureValidation }, + { WixConverter.MsuPackageElementName, this.ConvertMsuPackageElement }, { WixConverter.OldProvidesElementName, this.ConvertProvidesElement }, { WixConverter.OldRequiresElementName, this.ConvertRequiresElement }, { WixConverter.OldRequiresRefElementName, this.ConvertRequiresRefElement }, @@ -1114,6 +1114,8 @@ namespace WixToolset.Converters { this.ConvertSuppressSignatureValidation(element); + this.UpdatePackageCacheAttribute(element); + foreach (var attributeName in new[] { "InstallCommand", "RepairCommand", "UninstallCommand" }) { var newName = attributeName.Replace("Command", "Arguments"); @@ -1180,6 +1182,13 @@ namespace WixToolset.Converters } } + private void ConvertMsuPackageElement(XElement element) + { + this.ConvertSuppressSignatureValidation(element); + + this.UpdatePackageCacheAttribute(element); + } + private void ConvertProductElement(XElement element) { var id = element.Attribute("Id"); @@ -1589,6 +1598,8 @@ namespace WixToolset.Converters { this.ConvertSuppressSignatureValidation(element); + this.UpdatePackageCacheAttribute(element); + if (null != element.Attribute("DisplayInternalUI")) { this.OnError(ConverterTestType.DisplayInternalUiNotConvertable, element, "The DisplayInternalUI functionality has fundamentally changed and requires BootstrapperApplication support."); @@ -1792,6 +1803,32 @@ namespace WixToolset.Converters } } + private void UpdatePackageCacheAttribute(XElement element) + { + var cacheAttribute = element.Attribute("Cache"); + var cacheValue = cacheAttribute?.Value; + string replacement = null; + + switch (cacheValue) + { + case "yes": + replacement = "keep"; + break; + case "no": + replacement = "remove"; + break; + case "always": + replacement = "force"; + break; + } + + if (!String.IsNullOrEmpty(replacement) && + this.OnError(ConverterTestType.BundlePackageCacheAttributeValueObsolete, element, "The chain package element 'Cache' attribute contains obsolete '{0}' value. The value should be '{1}' instead.", cacheValue, replacement)) + { + cacheAttribute.SetValue(replacement); + } + } + private string UpdateWin64ValueToBitnessValue(XAttribute xWin64Attribute) { var value = xWin64Attribute.Value ?? String.Empty; @@ -2430,6 +2467,11 @@ namespace WixToolset.Converters /// Naked custom action and property references replaced with WixUtilExtension elements. /// UtilReferencesReplaced, + + /// + /// Cache attribute value updated. + /// + BundlePackageCacheAttributeValueObsolete, } } } diff --git a/src/wix/WixToolset.Core.Burn/Bundles/CreateBootstrapperApplicationManifestCommand.cs b/src/wix/WixToolset.Core.Burn/Bundles/CreateBootstrapperApplicationManifestCommand.cs index a0ee606d..04b6b89b 100644 --- a/src/wix/WixToolset.Core.Burn/Bundles/CreateBootstrapperApplicationManifestCommand.cs +++ b/src/wix/WixToolset.Core.Burn/Bundles/CreateBootstrapperApplicationManifestCommand.cs @@ -166,13 +166,13 @@ namespace WixToolset.Core.Burn.Bundles switch (package.PackageSymbol.Cache) { - case YesNoAlwaysType.No: + case BundleCacheType.Remove: writer.WriteAttributeString("Cache", "remove"); break; - case YesNoAlwaysType.Yes: + case BundleCacheType.Keep: writer.WriteAttributeString("Cache", "keep"); break; - case YesNoAlwaysType.Always: + case BundleCacheType.Force: writer.WriteAttributeString("Cache", "force"); break; } diff --git a/src/wix/WixToolset.Core.Burn/Bundles/CreateBurnManifestCommand.cs b/src/wix/WixToolset.Core.Burn/Bundles/CreateBurnManifestCommand.cs index 5655d23d..e95fee54 100644 --- a/src/wix/WixToolset.Core.Burn/Bundles/CreateBurnManifestCommand.cs +++ b/src/wix/WixToolset.Core.Burn/Bundles/CreateBurnManifestCommand.cs @@ -331,13 +331,13 @@ namespace WixToolset.Core.Burn.Bundles switch (package.PackageSymbol.Cache) { - case YesNoAlwaysType.No: + case BundleCacheType.Remove: writer.WriteAttributeString("Cache", "remove"); break; - case YesNoAlwaysType.Yes: + case BundleCacheType.Keep: writer.WriteAttributeString("Cache", "keep"); break; - case YesNoAlwaysType.Always: + case BundleCacheType.Force: writer.WriteAttributeString("Cache", "force"); break; } diff --git a/src/wix/WixToolset.Core/Compiler_Bundle.cs b/src/wix/WixToolset.Core/Compiler_Bundle.cs index 6d2e75f7..1ca3fb00 100644 --- a/src/wix/WixToolset.Core/Compiler_Bundle.cs +++ b/src/wix/WixToolset.Core/Compiler_Bundle.cs @@ -1967,7 +1967,7 @@ namespace WixToolset.Core }; string after = null; string installCondition = null; - var cache = YesNoAlwaysType.Yes; // the default is to cache everything in tradeoff for stability over disk space. + var cache = BundleCacheType.Keep; // the default is to cache everything in tradeoff for stability over disk space. string cacheId = null; string description = null; string displayName = null; @@ -2028,19 +2028,19 @@ namespace WixToolset.Core var value = this.Core.GetAttributeValue(sourceLineNumbers, attrib); switch (value) { - case "always": - cache = YesNoAlwaysType.Always; + case "force": + cache = BundleCacheType.Force; break; - case "yes": - cache = YesNoAlwaysType.Yes; + case "keep": + cache = BundleCacheType.Keep; break; - case "no": - cache = YesNoAlwaysType.No; + case "remove": + cache = BundleCacheType.Remove; break; case "": break; default: - this.Core.Write(ErrorMessages.IllegalAttributeValue(sourceLineNumbers, node.Name.LocalName, attrib.Name.LocalName, value, "always", "yes", "no")); + this.Core.Write(ErrorMessages.IllegalAttributeValue(sourceLineNumbers, node.Name.LocalName, attrib.Name.LocalName, value, "force", "keep", "remove")); break; } break; @@ -2316,6 +2316,7 @@ namespace WixToolset.Core Type = packageType, Attributes = attributes, InstallCondition = installCondition, + Cache = cache, CacheId = cacheId, Description = description, DisplayName = displayName, @@ -2323,11 +2324,6 @@ namespace WixToolset.Core RollbackLogPathVariable = rollbackPathVariable, }); - if (YesNoAlwaysType.NotSet != cache) - { - chainPackageSymbol.Cache = cache; - } - if (YesNoType.NotSet != vital) { chainPackageSymbol.Vital = (vital == YesNoType.Yes); diff --git a/src/wix/heat/Serialize/wix.cs b/src/wix/heat/Serialize/wix.cs index e5a81cd0..b881fb92 100644 --- a/src/wix/heat/Serialize/wix.cs +++ b/src/wix/heat/Serialize/wix.cs @@ -253,46 +253,45 @@ namespace WixToolset.Harvesters.Serialize } return true; } - + /// - /// Parses a YesNoAlwaysType from a string. + /// Parses a BundleCacheType from a string. /// - public static YesNoAlwaysType ParseYesNoAlwaysType(string value) + public static BundleCacheType ParseBundleCacheType(string value) { - YesNoAlwaysType parsedValue; - Enums.TryParseYesNoAlwaysType(value, out parsedValue); + Enums.TryBundleCacheType(value, out var parsedValue); return parsedValue; } /// /// Tries to parse a YesNoAlwaysType from a string. /// - public static bool TryParseYesNoAlwaysType(string value, out YesNoAlwaysType parsedValue) + public static bool TryBundleCacheType(string value, out BundleCacheType parsedValue) { - parsedValue = YesNoAlwaysType.NotSet; + parsedValue = BundleCacheType.NotSet; if (string.IsNullOrEmpty(value)) { return false; } - if (("always" == value)) + + if (("force" == value)) { - parsedValue = YesNoAlwaysType.always; + parsedValue = BundleCacheType.force; } else { - if (("no" == value)) + if (("remove" == value)) { - parsedValue = YesNoAlwaysType.no; + parsedValue = BundleCacheType.remove; } else { - if (("yes" == value)) + if (("keep" == value)) { - parsedValue = YesNoAlwaysType.yes; + parsedValue = BundleCacheType.keep; } else { - parsedValue = YesNoAlwaysType.IllegalValue; return false; } } @@ -656,18 +655,15 @@ namespace WixToolset.Harvesters.Serialize /// Values of this type will either be "always", "yes", or "no". /// [GeneratedCode("WixBuildTools.XsdGen", "4.0.0.0")] - public enum YesNoAlwaysType + public enum BundleCacheType { - - IllegalValue = int.MaxValue, - NotSet = -1, - always, + force, - no, + remove, - yes, + keep, } /// @@ -3732,7 +3728,7 @@ namespace WixToolset.Harvesters.Serialize private bool installConditionFieldSet; - private YesNoAlwaysType cacheField; + private BundleCacheType cacheField; private bool cacheFieldSet; @@ -3939,7 +3935,7 @@ namespace WixToolset.Harvesters.Serialize /// /// Whether to cache the package. The default is "yes". /// - public YesNoAlwaysType Cache + public BundleCacheType Cache { get { @@ -4285,17 +4281,17 @@ namespace WixToolset.Harvesters.Serialize } if (this.cacheFieldSet) { - if ((this.cacheField == YesNoAlwaysType.always)) + if ((this.cacheField == BundleCacheType.force)) { - writer.WriteAttributeString("Cache", "always"); + writer.WriteAttributeString("Cache", "force"); } - if ((this.cacheField == YesNoAlwaysType.no)) + if ((this.cacheField == BundleCacheType.remove)) { - writer.WriteAttributeString("Cache", "no"); + writer.WriteAttributeString("Cache", "remove"); } - if ((this.cacheField == YesNoAlwaysType.yes)) + if ((this.cacheField == BundleCacheType.keep)) { - writer.WriteAttributeString("Cache", "yes"); + writer.WriteAttributeString("Cache", "keep"); } } if (this.cacheIdFieldSet) @@ -4463,7 +4459,7 @@ namespace WixToolset.Harvesters.Serialize } if (("Cache" == name)) { - this.cacheField = Enums.ParseYesNoAlwaysType(value); + this.cacheField = Enums.ParseBundleCacheType(value); this.cacheFieldSet = true; } if (("CacheId" == name)) @@ -4571,7 +4567,7 @@ namespace WixToolset.Harvesters.Serialize private bool installConditionFieldSet; - private YesNoAlwaysType cacheField; + private BundleCacheType cacheField; private bool cacheFieldSet; @@ -4767,9 +4763,9 @@ namespace WixToolset.Harvesters.Serialize } /// - /// Whether to cache the package. The default is "yes". + /// Whether to cache the package. The default is "keep". /// - public YesNoAlwaysType Cache + public BundleCacheType Cache { get { @@ -5073,17 +5069,17 @@ namespace WixToolset.Harvesters.Serialize } if (this.cacheFieldSet) { - if ((this.cacheField == YesNoAlwaysType.always)) + if ((this.cacheField == BundleCacheType.force)) { - writer.WriteAttributeString("Cache", "always"); + writer.WriteAttributeString("Cache", "force"); } - if ((this.cacheField == YesNoAlwaysType.no)) + if ((this.cacheField == BundleCacheType.remove)) { - writer.WriteAttributeString("Cache", "no"); + writer.WriteAttributeString("Cache", "remove"); } - if ((this.cacheField == YesNoAlwaysType.yes)) + if ((this.cacheField == BundleCacheType.keep)) { - writer.WriteAttributeString("Cache", "yes"); + writer.WriteAttributeString("Cache", "keep"); } } if (this.cacheIdFieldSet) @@ -5233,7 +5229,7 @@ namespace WixToolset.Harvesters.Serialize } if (("Cache" == name)) { - this.cacheField = Enums.ParseYesNoAlwaysType(value); + this.cacheField = Enums.ParseBundleCacheType(value); this.cacheFieldSet = true; } if (("CacheId" == name)) @@ -5331,7 +5327,7 @@ namespace WixToolset.Harvesters.Serialize private bool installConditionFieldSet; - private YesNoAlwaysType cacheField; + private BundleCacheType cacheField; private bool cacheFieldSet; @@ -5529,7 +5525,7 @@ namespace WixToolset.Harvesters.Serialize /// /// Whether to cache the package. The default is "yes". /// - public YesNoAlwaysType Cache + public BundleCacheType Cache { get { @@ -5838,17 +5834,17 @@ namespace WixToolset.Harvesters.Serialize } if (this.cacheFieldSet) { - if ((this.cacheField == YesNoAlwaysType.always)) + if ((this.cacheField == BundleCacheType.force)) { - writer.WriteAttributeString("Cache", "always"); + writer.WriteAttributeString("Cache", "force"); } - if ((this.cacheField == YesNoAlwaysType.no)) + if ((this.cacheField == BundleCacheType.remove)) { - writer.WriteAttributeString("Cache", "no"); + writer.WriteAttributeString("Cache", "remove"); } - if ((this.cacheField == YesNoAlwaysType.yes)) + if ((this.cacheField == BundleCacheType.keep)) { - writer.WriteAttributeString("Cache", "yes"); + writer.WriteAttributeString("Cache", "keep"); } } if (this.cacheIdFieldSet) @@ -5980,7 +5976,7 @@ namespace WixToolset.Harvesters.Serialize } if (("Cache" == name)) { - this.cacheField = Enums.ParseYesNoAlwaysType(value); + this.cacheField = Enums.ParseBundleCacheType(value); this.cacheFieldSet = true; } if (("CacheId" == name)) @@ -6078,7 +6074,7 @@ namespace WixToolset.Harvesters.Serialize private bool installConditionFieldSet; - private YesNoAlwaysType cacheField; + private BundleCacheType cacheField; private bool cacheFieldSet; @@ -6294,7 +6290,7 @@ namespace WixToolset.Harvesters.Serialize /// /// Whether to cache the package. The default is "yes". /// - public YesNoAlwaysType Cache + public BundleCacheType Cache { get { @@ -6675,17 +6671,17 @@ namespace WixToolset.Harvesters.Serialize } if (this.cacheFieldSet) { - if ((this.cacheField == YesNoAlwaysType.always)) + if ((this.cacheField == BundleCacheType.force)) { - writer.WriteAttributeString("Cache", "always"); + writer.WriteAttributeString("Cache", "force"); } - if ((this.cacheField == YesNoAlwaysType.no)) + if ((this.cacheField == BundleCacheType.remove)) { - writer.WriteAttributeString("Cache", "no"); + writer.WriteAttributeString("Cache", "remove"); } - if ((this.cacheField == YesNoAlwaysType.yes)) + if ((this.cacheField == BundleCacheType.keep)) { - writer.WriteAttributeString("Cache", "yes"); + writer.WriteAttributeString("Cache", "keep"); } } if (this.cacheIdFieldSet) @@ -6855,7 +6851,7 @@ namespace WixToolset.Harvesters.Serialize } if (("Cache" == name)) { - this.cacheField = Enums.ParseYesNoAlwaysType(value); + this.cacheField = Enums.ParseBundleCacheType(value); this.cacheFieldSet = true; } if (("CacheId" == name)) diff --git a/src/wix/test/WixToolsetTest.Converters/BundleCacheFixture.cs b/src/wix/test/WixToolsetTest.Converters/BundleCacheFixture.cs new file mode 100644 index 00000000..d1ba0cbf --- /dev/null +++ b/src/wix/test/WixToolsetTest.Converters/BundleCacheFixture.cs @@ -0,0 +1,154 @@ +// Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information. + +namespace WixToolsetTest.Converters +{ + using System; + using System.Xml.Linq; + using WixBuildTools.TestSupport; + using WixToolset.Converters; + using WixToolsetTest.Converters.Mocks; + using Xunit; + + public class BundleCacheFixture : BaseConverterFixture + { + [Fact] + public void CanConvertExeAlwaysCache() + { + var parse = String.Join(Environment.NewLine, + "", + " ", + " ", + " ", + " ", + " ", + ""); + + var expected = new[] + { + "", + " ", + " ", + " ", + " ", + " ", + "" + }; + + var document = XDocument.Parse(parse, LoadOptions.PreserveWhitespace | LoadOptions.SetLineInfo); + + var messaging = new MockMessaging(); + var converter = new WixConverter(messaging, 2, null, null); + + var errors = converter.ConvertDocument(document); + Assert.Equal(4, errors); + + var actualLines = UnformattedDocumentLines(document); + WixAssert.CompareLineByLine(expected, actualLines); + } + + [Fact] + public void CanConvertMsiNoCache() + { + var parse = String.Join(Environment.NewLine, + "", + " ", + " ", + " ", + " ", + " ", + ""); + + var expected = new[] + { + "", + " ", + " ", + " ", + " ", + " ", + "" + }; + + var document = XDocument.Parse(parse, LoadOptions.PreserveWhitespace | LoadOptions.SetLineInfo); + + var messaging = new MockMessaging(); + var converter = new WixConverter(messaging, 2, null, null); + + var errors = converter.ConvertDocument(document); + Assert.Equal(1, errors); + + var actualLines = UnformattedDocumentLines(document); + WixAssert.CompareLineByLine(expected, actualLines); + } + + [Fact] + public void CanConvertMspYesCache() + { + var parse = String.Join(Environment.NewLine, + "", + " ", + " ", + " ", + " ", + " ", + ""); + + var expected = new[] + { + "", + " ", + " ", + " ", + " ", + " ", + "" + }; + + var document = XDocument.Parse(parse, LoadOptions.PreserveWhitespace | LoadOptions.SetLineInfo); + + var messaging = new MockMessaging(); + var converter = new WixConverter(messaging, 2, null, null); + + var errors = converter.ConvertDocument(document); + Assert.Equal(1, errors); + + var actualLines = UnformattedDocumentLines(document); + WixAssert.CompareLineByLine(expected, actualLines); + } + + [Fact] + public void CanConvertMsuYesCache() + { + var parse = String.Join(Environment.NewLine, + "", + " ", + " ", + " ", + " ", + " ", + ""); + + var expected = new[] + { + "", + " ", + " ", + " ", + " ", + " ", + "" + }; + + var document = XDocument.Parse(parse, LoadOptions.PreserveWhitespace | LoadOptions.SetLineInfo); + + var messaging = new MockMessaging(); + var converter = new WixConverter(messaging, 2, null, null); + + var errors = converter.ConvertDocument(document); + Assert.Equal(1, errors); + + var actualLines = UnformattedDocumentLines(document); + WixAssert.CompareLineByLine(expected, actualLines); + } + } +} -- cgit v1.2.3-55-g6feb