From c92494afeefdb226c19c89ff1ffa20b541e50b31 Mon Sep 17 00:00:00 2001 From: Rob Mensching Date: Sat, 28 Dec 2024 17:41:00 -0800 Subject: Fix WixPackageSymbol Attributes, Scope, UpgradeStrategy fields --- .../WixToolset.Data/Symbols/WixPackageSymbol.cs | 28 ++++++++++++++++------ src/wix/WixToolset.Core/Compiler_Package.cs | 14 +++++------ 2 files changed, 27 insertions(+), 15 deletions(-) diff --git a/src/api/wix/WixToolset.Data/Symbols/WixPackageSymbol.cs b/src/api/wix/WixToolset.Data/Symbols/WixPackageSymbol.cs index 4a112266..9601ec7a 100644 --- a/src/api/wix/WixToolset.Data/Symbols/WixPackageSymbol.cs +++ b/src/api/wix/WixToolset.Data/Symbols/WixPackageSymbol.cs @@ -18,6 +18,8 @@ namespace WixToolset.Data new IntermediateFieldDefinition(nameof(WixPackageSymbolFields.Manufacturer), IntermediateFieldType.String), new IntermediateFieldDefinition(nameof(WixPackageSymbolFields.Attributes), IntermediateFieldType.Number), new IntermediateFieldDefinition(nameof(WixPackageSymbolFields.Codepage), IntermediateFieldType.String), + new IntermediateFieldDefinition(nameof(WixPackageSymbolFields.Scope), IntermediateFieldType.Number), + new IntermediateFieldDefinition(nameof(WixPackageSymbolFields.UpgradeStrategy), IntermediateFieldType.Number), }, typeof(WixPackageSymbol)); } @@ -37,19 +39,27 @@ namespace WixToolset.Data.Symbols Manufacturer, Attributes, Codepage, + Scope, + UpgradeStrategy, } [Flags] public enum WixPackageAttributes { None = 0x0, - PerMachine = 0x1, + } + + public enum WixPackageScope + { + PerMachine, + PerUser, + PerUserOrMachine, } public enum WixPackageUpgradeStrategy { - None = 0x0, - MajorUpgrade = 0x1, + None, + MajorUpgrade, } public class WixPackageSymbol : IntermediateSymbol @@ -112,12 +122,16 @@ namespace WixToolset.Data.Symbols set => this.Set((int)WixPackageSymbolFields.Codepage, value); } - public WixPackageUpgradeStrategy UpgradeStrategy + public WixPackageScope Scope { - get => (WixPackageUpgradeStrategy)this.Fields[(int)WixPackageSymbolFields.Attributes].AsNumber(); - set => this.Set((int)WixPackageSymbolFields.Attributes, (int)value); + get => (WixPackageScope)this.Fields[(int)WixPackageSymbolFields.Scope].AsNumber(); + set => this.Set((int)WixPackageSymbolFields.Scope, (int)value); } - public bool PerMachine => (this.Attributes & WixPackageAttributes.PerMachine) == WixPackageAttributes.PerMachine; + public WixPackageUpgradeStrategy UpgradeStrategy + { + get => (WixPackageUpgradeStrategy)this.Fields[(int)WixPackageSymbolFields.UpgradeStrategy].AsNumber(); + set => this.Set((int)WixPackageSymbolFields.UpgradeStrategy, (int)value); + } } } diff --git a/src/wix/WixToolset.Core/Compiler_Package.cs b/src/wix/WixToolset.Core/Compiler_Package.cs index 479a1ab3..b84c5fae 100644 --- a/src/wix/WixToolset.Core/Compiler_Package.cs +++ b/src/wix/WixToolset.Core/Compiler_Package.cs @@ -30,8 +30,7 @@ namespace WixToolset.Core string codepage = null; var productCode = "*"; string productLanguage = null; - var isPerMachine = true; - var isPerUserOrMachine = false; + var scope = WixPackageScope.PerMachine; string upgradeCode = null; string manufacturer = null; string version = null; @@ -91,12 +90,11 @@ namespace WixToolset.Core // handled below after we create the section. break; case "perUser": - isPerMachine = false; + scope = WixPackageScope.PerUser; sourceBits |= 8; break; case "perUserOrMachine": - isPerMachine = false; - isPerUserOrMachine = true; + scope = WixPackageScope.PerUserOrMachine; break; default: this.Core.Write(ErrorMessages.IllegalAttributeValue(sourceLineNumbers, node.Name.LocalName, attrib.Name.LocalName, installScope, "perMachine", "perUser", "perUserOrMachine")); @@ -191,12 +189,12 @@ namespace WixToolset.Core this.AddProperty(sourceLineNumbers, new Identifier(AccessModifier.Global, "UpgradeCode"), upgradeCode, false, false, false, true); } - if (isPerUserOrMachine) + if (scope == WixPackageScope.PerUserOrMachine) { this.AddProperty(sourceLineNumbers, new Identifier(AccessModifier.Global, "ALLUSERS"), "2", false, false, false, false); this.AddProperty(sourceLineNumbers, new Identifier(AccessModifier.Global, "MSIINSTALLPERUSER"), "1", false, false, false, false); } - else if (isPerMachine) + else if (scope == WixPackageScope.PerMachine) { this.AddProperty(sourceLineNumbers, new Identifier(AccessModifier.Global, "ALLUSERS"), "1", false, false, false, false); } @@ -402,8 +400,8 @@ namespace WixToolset.Core Language = productLanguage, Version = version, Manufacturer = manufacturer, - Attributes = isPerMachine ? WixPackageAttributes.PerMachine : WixPackageAttributes.None, Codepage = codepage, + Scope = scope, UpgradeStrategy = upgradeStrategy, }); -- cgit v1.2.3-55-g6feb