From be43682720cf9c238aa1efba5940b8e2279c5bc4 Mon Sep 17 00:00:00 2001 From: Sean Hall Date: Wed, 13 Apr 2022 10:13:10 -0500 Subject: Try to improve fields of bundle symbols. --- .../Symbols/WixApprovedExeForElevationSymbol.cs | 16 ++- .../Symbols/WixBundleBundlePackageSymbol.cs | 17 --- .../Symbols/WixBundleExePackageSymbol.cs | 16 ++- .../Symbols/WixBundleMsiFeatureSymbol.cs | 1 + .../Symbols/WixBundleMsiPackageSymbol.cs | 37 +++++- .../Symbols/WixBundleMspPackageSymbol.cs | 24 +++- .../Symbols/WixBundlePackageSymbol.cs | 96 +++++++++++---- .../Symbols/WixBundlePatchTargetCodeSymbol.cs | 22 +++- .../Symbols/WixBundlePayloadSymbol.cs | 39 ++++-- .../Symbols/WixBundleRelatedPackageSymbol.cs | 64 +++++++++- .../Symbols/WixBundleRollbackBoundarySymbol.cs | 62 +++++++--- .../wix/WixToolset.Data/Symbols/WixBundleSymbol.cs | 65 ++++++++-- .../WixToolset.Data/Symbols/WixBundleTagSymbol.cs | 14 ++- .../Symbols/WixBundleUpdateSymbol.cs | 16 ++- .../Symbols/WixBundleVariableSymbol.cs | 48 ++++++-- .../wix/WixToolset.Data/Symbols/WixChainSymbol.cs | 48 +++++++- .../Symbols/WixComponentSearchSymbol.cs | 19 ++- .../WixToolset.Data/Symbols/WixFileSearchSymbol.cs | 133 ++++++++++++++++++++- .../Symbols/WixProductSearchSymbol.cs | 43 ++++++- .../Symbols/WixRegistrySearchSymbol.cs | 55 ++++++++- 20 files changed, 709 insertions(+), 126 deletions(-) (limited to 'src/api') diff --git a/src/api/wix/WixToolset.Data/Symbols/WixApprovedExeForElevationSymbol.cs b/src/api/wix/WixToolset.Data/Symbols/WixApprovedExeForElevationSymbol.cs index 04c6e712..1813ce5a 100644 --- a/src/api/wix/WixToolset.Data/Symbols/WixApprovedExeForElevationSymbol.cs +++ b/src/api/wix/WixToolset.Data/Symbols/WixApprovedExeForElevationSymbol.cs @@ -66,6 +66,20 @@ namespace WixToolset.Data.Symbols set => this.Set((int)WixApprovedExeForElevationSymbolFields.Attributes, (int)value); } - public bool Win64 => (this.Attributes & WixApprovedExeForElevationAttributes.Win64) == WixApprovedExeForElevationAttributes.Win64; + public bool Win64 + { + get { return this.Attributes.HasFlag(WixApprovedExeForElevationAttributes.Win64); } + set + { + if (value) + { + this.Attributes |= WixApprovedExeForElevationAttributes.Win64; + } + else + { + this.Attributes &= ~WixApprovedExeForElevationAttributes.Win64; + } + } + } } } diff --git a/src/api/wix/WixToolset.Data/Symbols/WixBundleBundlePackageSymbol.cs b/src/api/wix/WixToolset.Data/Symbols/WixBundleBundlePackageSymbol.cs index dcf59e28..24e63881 100644 --- a/src/api/wix/WixToolset.Data/Symbols/WixBundleBundlePackageSymbol.cs +++ b/src/api/wix/WixToolset.Data/Symbols/WixBundleBundlePackageSymbol.cs @@ -40,7 +40,6 @@ namespace WixToolset.Data.Symbols { None = 0, SupportsBurnProtocol = 1, - Win64 = 2, } public class WixBundleBundlePackageSymbol : IntermediateSymbol @@ -106,21 +105,5 @@ namespace WixToolset.Data.Symbols } } } - - public bool Win64 - { - get { return this.Attributes.HasFlag(WixBundleBundlePackageAttributes.Win64); } - set - { - if (value) - { - this.Attributes |= WixBundleBundlePackageAttributes.Win64; - } - else - { - this.Attributes &= ~WixBundleBundlePackageAttributes.Win64; - } - } - } } } diff --git a/src/api/wix/WixToolset.Data/Symbols/WixBundleExePackageSymbol.cs b/src/api/wix/WixToolset.Data/Symbols/WixBundleExePackageSymbol.cs index fc891f13..6cf200c2 100644 --- a/src/api/wix/WixToolset.Data/Symbols/WixBundleExePackageSymbol.cs +++ b/src/api/wix/WixToolset.Data/Symbols/WixBundleExePackageSymbol.cs @@ -90,7 +90,21 @@ namespace WixToolset.Data.Symbols set => this.Set((int)WixBundleExePackageSymbolFields.ExeProtocol, value); } - public bool IsBundle => this.Attributes.HasFlag(WixBundleExePackageAttributes.Bundle); + public bool IsBundle + { + get { return this.Attributes.HasFlag(WixBundleExePackageAttributes.Bundle); } + set + { + if (value) + { + this.Attributes |= WixBundleExePackageAttributes.Bundle; + } + else + { + this.Attributes &= ~WixBundleExePackageAttributes.Bundle; + } + } + } public bool Repairable => this.RepairCommand != null; diff --git a/src/api/wix/WixToolset.Data/Symbols/WixBundleMsiFeatureSymbol.cs b/src/api/wix/WixToolset.Data/Symbols/WixBundleMsiFeatureSymbol.cs index f81da5b8..829e81c0 100644 --- a/src/api/wix/WixToolset.Data/Symbols/WixBundleMsiFeatureSymbol.cs +++ b/src/api/wix/WixToolset.Data/Symbols/WixBundleMsiFeatureSymbol.cs @@ -107,6 +107,7 @@ namespace WixToolset.Data.Symbols set => this.Set((int)WixBundleMsiFeatureSymbolFields.Directory, value); } + // Passthrough for Attributes column of Feature table. public int Attributes { get => (int)this.Fields[(int)WixBundleMsiFeatureSymbolFields.Attributes]; diff --git a/src/api/wix/WixToolset.Data/Symbols/WixBundleMsiPackageSymbol.cs b/src/api/wix/WixToolset.Data/Symbols/WixBundleMsiPackageSymbol.cs index 21735f64..74d39c6c 100644 --- a/src/api/wix/WixToolset.Data/Symbols/WixBundleMsiPackageSymbol.cs +++ b/src/api/wix/WixToolset.Data/Symbols/WixBundleMsiPackageSymbol.cs @@ -40,7 +40,8 @@ namespace WixToolset.Data.Symbols [Flags] public enum WixBundleMsiPackageAttributes { - EnableFeatureSelection = 0x4, + None = 0x0, + EnableFeatureSelection = 0x1, ForcePerMachine = 0x2, } @@ -98,8 +99,36 @@ namespace WixToolset.Data.Symbols set => this.Set((int)WixBundleMsiPackageSymbolFields.Manufacturer, value); } - public bool EnableFeatureSelection => (this.Attributes & WixBundleMsiPackageAttributes.EnableFeatureSelection) == WixBundleMsiPackageAttributes.EnableFeatureSelection; + public bool EnableFeatureSelection + { + get { return this.Attributes.HasFlag(WixBundleMsiPackageAttributes.EnableFeatureSelection); } + set + { + if (value) + { + this.Attributes |= WixBundleMsiPackageAttributes.EnableFeatureSelection; + } + else + { + this.Attributes &= ~WixBundleMsiPackageAttributes.EnableFeatureSelection; + } + } + } - public bool ForcePerMachine => (this.Attributes & WixBundleMsiPackageAttributes.ForcePerMachine) == WixBundleMsiPackageAttributes.ForcePerMachine; + public bool ForcePerMachine + { + get { return this.Attributes.HasFlag(WixBundleMsiPackageAttributes.ForcePerMachine); } + set + { + if (value) + { + this.Attributes |= WixBundleMsiPackageAttributes.ForcePerMachine; + } + else + { + this.Attributes &= ~WixBundleMsiPackageAttributes.ForcePerMachine; + } + } + } } -} \ No newline at end of file +} diff --git a/src/api/wix/WixToolset.Data/Symbols/WixBundleMspPackageSymbol.cs b/src/api/wix/WixToolset.Data/Symbols/WixBundleMspPackageSymbol.cs index 3784c2ff..46d604a8 100644 --- a/src/api/wix/WixToolset.Data/Symbols/WixBundleMspPackageSymbol.cs +++ b/src/api/wix/WixToolset.Data/Symbols/WixBundleMspPackageSymbol.cs @@ -34,8 +34,8 @@ namespace WixToolset.Data.Symbols [Flags] public enum WixBundleMspPackageAttributes { - Slipstream = 0x2, - TargetUnspecified = 0x4, + None = 0x0, + Slipstream = 0x1, } public class WixBundleMspPackageSymbol : IntermediateSymbol @@ -74,8 +74,20 @@ namespace WixToolset.Data.Symbols set => this.Set((int)WixBundleMspPackageSymbolFields.PatchXml, value); } - public bool Slipstream => (this.Attributes & WixBundleMspPackageAttributes.Slipstream) == WixBundleMspPackageAttributes.Slipstream; - - public bool TargetUnspecified => (this.Attributes & WixBundleMspPackageAttributes.TargetUnspecified) == WixBundleMspPackageAttributes.TargetUnspecified; + public bool Slipstream + { + get { return this.Attributes.HasFlag(WixBundleMspPackageAttributes.Slipstream); } + set + { + if (value) + { + this.Attributes |= WixBundleMspPackageAttributes.Slipstream; + } + else + { + this.Attributes &= ~WixBundleMspPackageAttributes.Slipstream; + } + } + } } -} \ No newline at end of file +} diff --git a/src/api/wix/WixToolset.Data/Symbols/WixBundlePackageSymbol.cs b/src/api/wix/WixToolset.Data/Symbols/WixBundlePackageSymbol.cs index e68a9d09..6afe657e 100644 --- a/src/api/wix/WixToolset.Data/Symbols/WixBundlePackageSymbol.cs +++ b/src/api/wix/WixToolset.Data/Symbols/WixBundlePackageSymbol.cs @@ -16,8 +16,7 @@ namespace WixToolset.Data new IntermediateFieldDefinition(nameof(WixBundlePackageSymbolFields.InstallCondition), IntermediateFieldType.String), new IntermediateFieldDefinition(nameof(WixBundlePackageSymbolFields.Cache), IntermediateFieldType.String), new IntermediateFieldDefinition(nameof(WixBundlePackageSymbolFields.CacheId), IntermediateFieldType.String), - new IntermediateFieldDefinition(nameof(WixBundlePackageSymbolFields.Vital), IntermediateFieldType.Bool), - new IntermediateFieldDefinition(nameof(WixBundlePackageSymbolFields.PerMachine), IntermediateFieldType.String), + new IntermediateFieldDefinition(nameof(WixBundlePackageSymbolFields.PerMachine), IntermediateFieldType.Bool), new IntermediateFieldDefinition(nameof(WixBundlePackageSymbolFields.LogPathVariable), IntermediateFieldType.String), new IntermediateFieldDefinition(nameof(WixBundlePackageSymbolFields.RollbackLogPathVariable), IntermediateFieldType.String), new IntermediateFieldDefinition(nameof(WixBundlePackageSymbolFields.Size), IntermediateFieldType.LargeNumber), @@ -28,7 +27,6 @@ namespace WixToolset.Data new IntermediateFieldDefinition(nameof(WixBundlePackageSymbolFields.Description), IntermediateFieldType.String), new IntermediateFieldDefinition(nameof(WixBundlePackageSymbolFields.RollbackBoundaryRef), IntermediateFieldType.String), new IntermediateFieldDefinition(nameof(WixBundlePackageSymbolFields.RollbackBoundaryBackwardRef), IntermediateFieldType.String), - new IntermediateFieldDefinition(nameof(WixBundlePackageSymbolFields.Win64), IntermediateFieldType.Bool), }, typeof(WixBundlePackageSymbol)); } @@ -46,7 +44,6 @@ namespace WixToolset.Data.Symbols InstallCondition, Cache, CacheId, - Vital, PerMachine, LogPathVariable, RollbackLogPathVariable, @@ -58,7 +55,6 @@ namespace WixToolset.Data.Symbols Description, RollbackBoundaryRef, RollbackBoundaryBackwardRef, - Win64, } /// @@ -66,6 +62,7 @@ namespace WixToolset.Data.Symbols /// public enum WixBundlePackageType { + NotSet = -1, Bundle, Exe, Msi, @@ -76,10 +73,11 @@ namespace WixToolset.Data.Symbols [Flags] public enum WixBundlePackageAttributes { + None = 0x0, Permanent = 0x1, Visible = 0x2, - PerMachine = 0x4, - Win64 = 0x8, + Win64 = 0x4, + Vital = 0x8, } public class WixBundlePackageSymbol : IntermediateSymbol @@ -96,7 +94,15 @@ namespace WixToolset.Data.Symbols public WixBundlePackageType Type { - get => (WixBundlePackageType)Enum.Parse(typeof(WixBundlePackageType), (string)this.Fields[(int)WixBundlePackageSymbolFields.Type], true); + get + { + if (Enum.TryParse((string)this.Fields[(int)WixBundlePackageSymbolFields.Type], true, out WixBundlePackageType value)) + { + return value; + } + + return WixBundlePackageType.NotSet; + } set => this.Set((int)WixBundlePackageSymbolFields.Type, value.ToString()); } @@ -130,16 +136,10 @@ namespace WixToolset.Data.Symbols set => this.Set((int)WixBundlePackageSymbolFields.CacheId, value); } - public bool? Vital - { - get => (bool?)this.Fields[(int)WixBundlePackageSymbolFields.Vital]; - set => this.Set((int)WixBundlePackageSymbolFields.Vital, value); - } - - public YesNoDefaultType PerMachine + public bool? PerMachine { - get => Enum.TryParse((string)this.Fields[(int)WixBundlePackageSymbolFields.PerMachine], true, out YesNoDefaultType value) ? value : YesNoDefaultType.NotSet; - set => this.Set((int)WixBundlePackageSymbolFields.PerMachine, value.ToString().ToLowerInvariant()); + get => (bool?)this.Fields[(int)WixBundlePackageSymbolFields.PerMachine]; + set => this.Set((int)WixBundlePackageSymbolFields.PerMachine, value); } public string LogPathVariable @@ -202,12 +202,68 @@ namespace WixToolset.Data.Symbols set => this.Set((int)WixBundlePackageSymbolFields.RollbackBoundaryBackwardRef, value); } + public bool Permanent + { + get { return this.Attributes.HasFlag(WixBundlePackageAttributes.Permanent); } + set + { + if (value) + { + this.Attributes |= WixBundlePackageAttributes.Permanent; + } + else + { + this.Attributes &= ~WixBundlePackageAttributes.Permanent; + } + } + } + + public bool Visible + { + get { return this.Attributes.HasFlag(WixBundlePackageAttributes.Visible); } + set + { + if (value) + { + this.Attributes |= WixBundlePackageAttributes.Visible; + } + else + { + this.Attributes &= ~WixBundlePackageAttributes.Visible; + } + } + } + public bool Win64 { - get => (bool)this.Fields[(int)WixBundlePackageSymbolFields.Win64]; - set => this.Set((int)WixBundlePackageSymbolFields.Win64, value); + get { return this.Attributes.HasFlag(WixBundlePackageAttributes.Win64); } + set + { + if (value) + { + this.Attributes |= WixBundlePackageAttributes.Win64; + } + else + { + this.Attributes &= ~WixBundlePackageAttributes.Win64; + } + } } - public bool Permanent => (this.Attributes & WixBundlePackageAttributes.Permanent) == WixBundlePackageAttributes.Permanent; + public bool Vital + { + get { return this.Attributes.HasFlag(WixBundlePackageAttributes.Vital); } + set + { + if (value) + { + this.Attributes |= WixBundlePackageAttributes.Vital; + } + else + { + this.Attributes &= ~WixBundlePackageAttributes.Vital; + } + } + } } } diff --git a/src/api/wix/WixToolset.Data/Symbols/WixBundlePatchTargetCodeSymbol.cs b/src/api/wix/WixToolset.Data/Symbols/WixBundlePatchTargetCodeSymbol.cs index b1aa9c77..85f50602 100644 --- a/src/api/wix/WixToolset.Data/Symbols/WixBundlePatchTargetCodeSymbol.cs +++ b/src/api/wix/WixToolset.Data/Symbols/WixBundlePatchTargetCodeSymbol.cs @@ -13,6 +13,7 @@ namespace WixToolset.Data new IntermediateFieldDefinition(nameof(WixBundlePatchTargetCodeSymbolFields.PackageRef), IntermediateFieldType.String), new IntermediateFieldDefinition(nameof(WixBundlePatchTargetCodeSymbolFields.TargetCode), IntermediateFieldType.String), new IntermediateFieldDefinition(nameof(WixBundlePatchTargetCodeSymbolFields.Attributes), IntermediateFieldType.Number), + new IntermediateFieldDefinition(nameof(WixBundlePatchTargetCodeSymbolFields.Type), IntermediateFieldType.Number), }, typeof(WixBundlePatchTargetCodeSymbol)); } @@ -27,22 +28,31 @@ namespace WixToolset.Data.Symbols PackageRef, TargetCode, Attributes, + Type, } [Flags] public enum WixBundlePatchTargetCodeAttributes : int { None = 0, + } + + public enum WixBundlePatchTargetCodeType + { + /// + /// The transform has no specific target. + /// + Unspecified, /// /// The transform targets a specific ProductCode. /// - TargetsProductCode = 1, + ProductCode, /// /// The transform targets a specific UpgradeCode. /// - TargetsUpgradeCode = 2, + UpgradeCode, } public class WixBundlePatchTargetCodeSymbol : IntermediateSymbol @@ -75,8 +85,10 @@ namespace WixToolset.Data.Symbols set => this.Set((int)WixBundlePatchTargetCodeSymbolFields.Attributes, (int)value); } - public bool TargetsProductCode => (this.Attributes & WixBundlePatchTargetCodeAttributes.TargetsProductCode) == WixBundlePatchTargetCodeAttributes.TargetsProductCode; - - public bool TargetsUpgradeCode => (this.Attributes & WixBundlePatchTargetCodeAttributes.TargetsUpgradeCode) == WixBundlePatchTargetCodeAttributes.TargetsUpgradeCode; + public WixBundlePatchTargetCodeType Type + { + get => (WixBundlePatchTargetCodeType)this.Fields[(int)WixBundlePatchTargetCodeSymbolFields.Type].AsNumber(); + set => this.Set((int)WixBundlePatchTargetCodeSymbolFields.Type, (int)value); + } } } diff --git a/src/api/wix/WixToolset.Data/Symbols/WixBundlePayloadSymbol.cs b/src/api/wix/WixToolset.Data/Symbols/WixBundlePayloadSymbol.cs index be581fb3..ed2060b3 100644 --- a/src/api/wix/WixToolset.Data/Symbols/WixBundlePayloadSymbol.cs +++ b/src/api/wix/WixToolset.Data/Symbols/WixBundlePayloadSymbol.cs @@ -10,6 +10,7 @@ namespace WixToolset.Data SymbolDefinitionType.WixBundlePayload, new[] { + new IntermediateFieldDefinition(nameof(WixBundlePayloadSymbolFields.Attributes), IntermediateFieldType.Number), new IntermediateFieldDefinition(nameof(WixBundlePayloadSymbolFields.Name), IntermediateFieldType.String), new IntermediateFieldDefinition(nameof(WixBundlePayloadSymbolFields.SourceFile), IntermediateFieldType.Path), new IntermediateFieldDefinition(nameof(WixBundlePayloadSymbolFields.DownloadUrl), IntermediateFieldType.String), @@ -21,7 +22,6 @@ namespace WixToolset.Data new IntermediateFieldDefinition(nameof(WixBundlePayloadSymbolFields.Version), IntermediateFieldType.String), new IntermediateFieldDefinition(nameof(WixBundlePayloadSymbolFields.Hash), IntermediateFieldType.String), new IntermediateFieldDefinition(nameof(WixBundlePayloadSymbolFields.ContainerRef), IntermediateFieldType.String), - new IntermediateFieldDefinition(nameof(WixBundlePayloadSymbolFields.ContentFile), IntermediateFieldType.Bool), new IntermediateFieldDefinition(nameof(WixBundlePayloadSymbolFields.EmbeddedId), IntermediateFieldType.String), new IntermediateFieldDefinition(nameof(WixBundlePayloadSymbolFields.LayoutOnly), IntermediateFieldType.Bool), new IntermediateFieldDefinition(nameof(WixBundlePayloadSymbolFields.Packaging), IntermediateFieldType.Number), @@ -39,6 +39,7 @@ namespace WixToolset.Data.Symbols public enum WixBundlePayloadSymbolFields { + Attributes, Name, SourceFile, DownloadUrl, @@ -50,7 +51,6 @@ namespace WixToolset.Data.Symbols Version, Hash, ContainerRef, - ContentFile, EmbeddedId, LayoutOnly, Packaging, @@ -59,6 +59,13 @@ namespace WixToolset.Data.Symbols CertificateThumbprint, } + [Flags] + public enum WixBundlePayloadAttributes + { + None = 0x0, + ContentFile = 0x1, + } + public class WixBundlePayloadSymbol : IntermediateSymbol { public WixBundlePayloadSymbol() : base(SymbolDefinitions.WixBundlePayload, null, null) @@ -71,6 +78,12 @@ namespace WixToolset.Data.Symbols public IntermediateField this[WixBundlePayloadSymbolFields index] => this.Fields[(int)index]; + public WixBundlePayloadAttributes Attributes + { + get => (WixBundlePayloadAttributes)this.Fields[(int)WixBundlePayloadSymbolFields.Attributes].AsNumber(); + set => this.Set((int)WixBundlePayloadSymbolFields.Attributes, (int)value); + } + public string Name { get => (string)this.Fields[(int)WixBundlePayloadSymbolFields.Name]; @@ -137,12 +150,6 @@ namespace WixToolset.Data.Symbols set => this.Set((int)WixBundlePayloadSymbolFields.ContainerRef, value); } - public bool ContentFile - { - get => (bool)this.Fields[(int)WixBundlePayloadSymbolFields.ContentFile]; - set => this.Set((int)WixBundlePayloadSymbolFields.ContentFile, value); - } - public string EmbeddedId { get => (string)this.Fields[(int)WixBundlePayloadSymbolFields.EmbeddedId]; @@ -178,5 +185,21 @@ namespace WixToolset.Data.Symbols get => (string)this.Fields[(int)WixBundlePayloadSymbolFields.CertificateThumbprint]; set => this.Set((int)WixBundlePayloadSymbolFields.CertificateThumbprint, value); } + + public bool ContentFile + { + get { return this.Attributes.HasFlag(WixBundlePayloadAttributes.ContentFile); } + set + { + if (value) + { + this.Attributes |= WixBundlePayloadAttributes.ContentFile; + } + else + { + this.Attributes &= ~WixBundlePayloadAttributes.ContentFile; + } + } + } } } diff --git a/src/api/wix/WixToolset.Data/Symbols/WixBundleRelatedPackageSymbol.cs b/src/api/wix/WixToolset.Data/Symbols/WixBundleRelatedPackageSymbol.cs index 7bd67b7f..77789048 100644 --- a/src/api/wix/WixToolset.Data/Symbols/WixBundleRelatedPackageSymbol.cs +++ b/src/api/wix/WixToolset.Data/Symbols/WixBundleRelatedPackageSymbol.cs @@ -93,12 +93,68 @@ namespace WixToolset.Data.Symbols set => this.Set((int)WixBundleRelatedPackageSymbolFields.Attributes, (int)value); } - public bool MinInclusive => (this.Attributes & WixBundleRelatedPackageAttributes.MinInclusive) == WixBundleRelatedPackageAttributes.MinInclusive; + public bool MinInclusive + { + get { return this.Attributes.HasFlag(WixBundleRelatedPackageAttributes.MinInclusive); } + set + { + if (value) + { + this.Attributes |= WixBundleRelatedPackageAttributes.MinInclusive; + } + else + { + this.Attributes &= ~WixBundleRelatedPackageAttributes.MinInclusive; + } + } + } - public bool MaxInclusive => (this.Attributes & WixBundleRelatedPackageAttributes.MaxInclusive) == WixBundleRelatedPackageAttributes.MaxInclusive; + public bool MaxInclusive + { + get { return this.Attributes.HasFlag(WixBundleRelatedPackageAttributes.MaxInclusive); } + set + { + if (value) + { + this.Attributes |= WixBundleRelatedPackageAttributes.MaxInclusive; + } + else + { + this.Attributes &= ~WixBundleRelatedPackageAttributes.MaxInclusive; + } + } + } - public bool OnlyDetect => (this.Attributes & WixBundleRelatedPackageAttributes.OnlyDetect) == WixBundleRelatedPackageAttributes.OnlyDetect; + public bool OnlyDetect + { + get { return this.Attributes.HasFlag(WixBundleRelatedPackageAttributes.OnlyDetect); } + set + { + if (value) + { + this.Attributes |= WixBundleRelatedPackageAttributes.OnlyDetect; + } + else + { + this.Attributes &= ~WixBundleRelatedPackageAttributes.OnlyDetect; + } + } + } - public bool LangInclusive => (this.Attributes & WixBundleRelatedPackageAttributes.LangInclusive) == WixBundleRelatedPackageAttributes.LangInclusive; + public bool LangInclusive + { + get { return this.Attributes.HasFlag(WixBundleRelatedPackageAttributes.LangInclusive); } + set + { + if (value) + { + this.Attributes |= WixBundleRelatedPackageAttributes.LangInclusive; + } + else + { + this.Attributes &= ~WixBundleRelatedPackageAttributes.LangInclusive; + } + } + } } } diff --git a/src/api/wix/WixToolset.Data/Symbols/WixBundleRollbackBoundarySymbol.cs b/src/api/wix/WixToolset.Data/Symbols/WixBundleRollbackBoundarySymbol.cs index 1f91cef2..a75e388b 100644 --- a/src/api/wix/WixToolset.Data/Symbols/WixBundleRollbackBoundarySymbol.cs +++ b/src/api/wix/WixToolset.Data/Symbols/WixBundleRollbackBoundarySymbol.cs @@ -10,8 +10,7 @@ namespace WixToolset.Data SymbolDefinitionType.WixBundleRollbackBoundary, new[] { - new IntermediateFieldDefinition(nameof(WixBundleRollbackBoundarySymbolFields.Vital), IntermediateFieldType.Number), - new IntermediateFieldDefinition(nameof(WixBundleRollbackBoundarySymbolFields.Transaction), IntermediateFieldType.Number), + new IntermediateFieldDefinition(nameof(WixBundleSymbolFields.Attributes), IntermediateFieldType.Number), new IntermediateFieldDefinition(nameof(WixBundlePackageSymbolFields.LogPathVariable), IntermediateFieldType.String), }, typeof(WixBundleRollbackBoundarySymbol)); @@ -20,13 +19,22 @@ namespace WixToolset.Data namespace WixToolset.Data.Symbols { + using System; + public enum WixBundleRollbackBoundarySymbolFields { - Vital, - Transaction, + Attributes, LogPathVariable, } + [Flags] + public enum WixBundleRollbackBoundaryAttributes + { + None = 0x0, + Vital = 0x1, + Transaction = 0x2, + } + public class WixBundleRollbackBoundarySymbol : IntermediateSymbol { public WixBundleRollbackBoundarySymbol() : base(SymbolDefinitions.WixBundleRollbackBoundary, null, null) @@ -39,16 +47,10 @@ namespace WixToolset.Data.Symbols public IntermediateField this[WixBundleRollbackBoundarySymbolFields index] => this.Fields[(int)index]; - public bool? Vital + public WixBundleRollbackBoundaryAttributes Attributes { - get => (bool?)this.Fields[(int)WixBundleRollbackBoundarySymbolFields.Vital]; - set => this.Set((int)WixBundleRollbackBoundarySymbolFields.Vital, value); - } - - public bool? Transaction - { - get => (bool?)this.Fields[(int)WixBundleRollbackBoundarySymbolFields.Transaction]; - set => this.Set((int)WixBundleRollbackBoundarySymbolFields.Transaction, value); + get => (WixBundleRollbackBoundaryAttributes)this.Fields[(int)WixBundleRollbackBoundarySymbolFields.Attributes].AsNumber(); + set => this.Set((int)WixBundleRollbackBoundarySymbolFields.Attributes, (int)value); } public string LogPathVariable @@ -56,5 +58,37 @@ namespace WixToolset.Data.Symbols get => (string)this.Fields[(int)WixBundleRollbackBoundarySymbolFields.LogPathVariable]; set => this.Set((int)WixBundleRollbackBoundarySymbolFields.LogPathVariable, value); } + + public bool Vital + { + get { return this.Attributes.HasFlag(WixBundleRollbackBoundaryAttributes.Vital); } + set + { + if (value) + { + this.Attributes |= WixBundleRollbackBoundaryAttributes.Vital; + } + else + { + this.Attributes &= ~WixBundleRollbackBoundaryAttributes.Vital; + } + } + } + + public bool Transaction + { + get { return this.Attributes.HasFlag(WixBundleRollbackBoundaryAttributes.Transaction); } + set + { + if (value) + { + this.Attributes |= WixBundleRollbackBoundaryAttributes.Transaction; + } + else + { + this.Attributes &= ~WixBundleRollbackBoundaryAttributes.Transaction; + } + } + } } -} \ No newline at end of file +} diff --git a/src/api/wix/WixToolset.Data/Symbols/WixBundleSymbol.cs b/src/api/wix/WixToolset.Data/Symbols/WixBundleSymbol.cs index 72192c15..c4db0c21 100644 --- a/src/api/wix/WixToolset.Data/Symbols/WixBundleSymbol.cs +++ b/src/api/wix/WixToolset.Data/Symbols/WixBundleSymbol.cs @@ -34,6 +34,7 @@ namespace WixToolset.Data new IntermediateFieldDefinition(nameof(WixBundleSymbolFields.ProviderKey), IntermediateFieldType.String), new IntermediateFieldDefinition(nameof(WixBundleSymbolFields.InProgressName), IntermediateFieldType.String), new IntermediateFieldDefinition(nameof(WixBundleSymbolFields.CommandLineVariables), IntermediateFieldType.String), + new IntermediateFieldDefinition(nameof(WixBundleSymbolFields.DisableModify), IntermediateFieldType.String), }, typeof(WixBundleSymbol)); } @@ -69,16 +70,15 @@ namespace WixToolset.Data.Symbols ProviderKey, InProgressName, CommandLineVariables, + DisableModify, } [Flags] public enum WixBundleAttributes { None = 0x0, - DisableModify = 0x1, - DisableRemove = 0x2, - SingleChangeUninstallButton = 0x4, - PerMachine = 0x8, + DisableRemove = 0x1, + PerMachine = 0x2, } public enum WixBundleCommandLineVariables @@ -87,6 +87,13 @@ namespace WixToolset.Data.Symbols CaseSensitive, } + public enum WixBundleModifyType + { + Allowed = 0, + Disabled = 1, + SingleChangeUninstallButton = 2, + } + public class WixBundleSymbol : IntermediateSymbol { public WixBundleSymbol() : base(SymbolDefinitions.WixBundle, null, null) @@ -243,14 +250,52 @@ namespace WixToolset.Data.Symbols set => this.Set((int)WixBundleSymbolFields.CommandLineVariables, (int)value); } - public PackagingType DefaultPackagingType => (this.Compressed.HasValue && !this.Compressed.Value) ? PackagingType.External : PackagingType.Embedded; - - public bool DisableModify => (this.Attributes & WixBundleAttributes.DisableModify) == WixBundleAttributes.DisableModify; + public WixBundleModifyType DisableModify + { + get + { + if (Enum.TryParse((string)this.Fields[(int)WixBundleSymbolFields.DisableModify], true, out WixBundleModifyType value)) + { + return value; + } + + return WixBundleModifyType.Allowed; + } + set => this.Set((int)WixBundleSymbolFields.DisableModify, value.ToString().ToLowerInvariant()); + } - public bool DisableRemove => (this.Attributes & WixBundleAttributes.DisableRemove) == WixBundleAttributes.DisableRemove; + public PackagingType DefaultPackagingType => (this.Compressed.HasValue && !this.Compressed.Value) ? PackagingType.External : PackagingType.Embedded; - public bool PerMachine => (this.Attributes & WixBundleAttributes.PerMachine) == WixBundleAttributes.PerMachine; + public bool DisableRemove + { + get { return this.Attributes.HasFlag(WixBundleAttributes.DisableRemove); } + set + { + if (value) + { + this.Attributes |= WixBundleAttributes.DisableRemove; + } + else + { + this.Attributes &= ~WixBundleAttributes.DisableRemove; + } + } + } - public bool SingleChangeUninstallButton => (this.Attributes & WixBundleAttributes.SingleChangeUninstallButton) == WixBundleAttributes.SingleChangeUninstallButton; + public bool PerMachine + { + get { return this.Attributes.HasFlag(WixBundleAttributes.PerMachine); } + set + { + if (value) + { + this.Attributes |= WixBundleAttributes.PerMachine; + } + else + { + this.Attributes &= ~WixBundleAttributes.PerMachine; + } + } + } } } diff --git a/src/api/wix/WixToolset.Data/Symbols/WixBundleTagSymbol.cs b/src/api/wix/WixToolset.Data/Symbols/WixBundleTagSymbol.cs index d550dae0..590484e0 100644 --- a/src/api/wix/WixToolset.Data/Symbols/WixBundleTagSymbol.cs +++ b/src/api/wix/WixToolset.Data/Symbols/WixBundleTagSymbol.cs @@ -23,6 +23,8 @@ namespace WixToolset.Data namespace WixToolset.Data.Symbols { + using System; + public enum WixBundleTagSymbolFields { Filename, @@ -33,6 +35,12 @@ namespace WixToolset.Data.Symbols Xml, } + [Flags] + public enum WixBundleTagAttributes + { + None = 0x0, + } + public class WixBundleTagSymbol : IntermediateSymbol { public WixBundleTagSymbol() : base(SymbolDefinitions.WixBundleTag, null, null) @@ -69,10 +77,10 @@ namespace WixToolset.Data.Symbols set => this.Set((int)WixBundleTagSymbolFields.InstallPath, value); } - public int Attributes + public WixBundleTagAttributes Attributes { - get => this.Fields[(int)WixBundleTagSymbolFields.Attributes].AsNumber(); - set => this.Set((int)WixBundleTagSymbolFields.Attributes, value); + get => (WixBundleTagAttributes)this.Fields[(int)WixBundleTagSymbolFields.Attributes].AsNumber(); + set => this.Set((int)WixBundleTagSymbolFields.Attributes, (int)value); } public string Xml diff --git a/src/api/wix/WixToolset.Data/Symbols/WixBundleUpdateSymbol.cs b/src/api/wix/WixToolset.Data/Symbols/WixBundleUpdateSymbol.cs index d27bbc32..514f9e6c 100644 --- a/src/api/wix/WixToolset.Data/Symbols/WixBundleUpdateSymbol.cs +++ b/src/api/wix/WixToolset.Data/Symbols/WixBundleUpdateSymbol.cs @@ -19,12 +19,20 @@ namespace WixToolset.Data namespace WixToolset.Data.Symbols { + using System; + public enum WixBundleUpdateSymbolFields { Location, Attributes, } + [Flags] + public enum WixBundleUpdateAttributes + { + None = 0x0, + } + public class WixBundleUpdateSymbol : IntermediateSymbol { public WixBundleUpdateSymbol() : base(SymbolDefinitions.WixBundleUpdate, null, null) @@ -43,10 +51,10 @@ namespace WixToolset.Data.Symbols set => this.Set((int)WixBundleUpdateSymbolFields.Location, value); } - public int Attributes + public WixBundleUpdateAttributes Attributes { - get => (int)this.Fields[(int)WixBundleUpdateSymbolFields.Attributes]; - set => this.Set((int)WixBundleUpdateSymbolFields.Attributes, value); + get => (WixBundleUpdateAttributes)this.Fields[(int)WixBundleUpdateSymbolFields.Attributes].AsNumber(); + set => this.Set((int)WixBundleUpdateSymbolFields.Attributes, (int)value); } } -} \ No newline at end of file +} diff --git a/src/api/wix/WixToolset.Data/Symbols/WixBundleVariableSymbol.cs b/src/api/wix/WixToolset.Data/Symbols/WixBundleVariableSymbol.cs index d68ac682..b8a1923d 100644 --- a/src/api/wix/WixToolset.Data/Symbols/WixBundleVariableSymbol.cs +++ b/src/api/wix/WixToolset.Data/Symbols/WixBundleVariableSymbol.cs @@ -10,10 +10,9 @@ namespace WixToolset.Data SymbolDefinitionType.WixBundleVariable, new[] { + new IntermediateFieldDefinition(nameof(WixBundleVariableSymbolFields.Attributes), IntermediateFieldType.Number), new IntermediateFieldDefinition(nameof(WixBundleVariableSymbolFields.Value), IntermediateFieldType.String), new IntermediateFieldDefinition(nameof(WixBundleVariableSymbolFields.Type), IntermediateFieldType.String), - new IntermediateFieldDefinition(nameof(WixBundleVariableSymbolFields.Hidden), IntermediateFieldType.Bool), - new IntermediateFieldDefinition(nameof(WixBundleVariableSymbolFields.Persisted), IntermediateFieldType.Bool), }, typeof(WixBundleVariableSymbol)); } @@ -25,10 +24,17 @@ namespace WixToolset.Data.Symbols public enum WixBundleVariableSymbolFields { + Attributes, Value, Type, - Hidden, - Persisted, + } + + [Flags] + public enum WixBundleVariableAttributes + { + None = 0x0, + Hidden = 0x1, + Persisted = 0x2, } public enum WixBundleVariableType @@ -52,6 +58,12 @@ namespace WixToolset.Data.Symbols public IntermediateField this[WixBundleVariableSymbolFields index] => this.Fields[(int)index]; + public WixBundleVariableAttributes Attributes + { + get => (WixBundleVariableAttributes)this.Fields[(int)WixBundleVariableSymbolFields.Attributes].AsNumber(); + set => this.Set((int)WixBundleVariableSymbolFields.Attributes, (int)value); + } + public string Value { get => (string)this.Fields[(int)WixBundleVariableSymbolFields.Value]; @@ -66,14 +78,34 @@ namespace WixToolset.Data.Symbols public bool Hidden { - get => (bool)this.Fields[(int)WixBundleVariableSymbolFields.Hidden]; - set => this.Set((int)WixBundleVariableSymbolFields.Hidden, value); + get { return this.Attributes.HasFlag(WixBundleVariableAttributes.Hidden); } + set + { + if (value) + { + this.Attributes |= WixBundleVariableAttributes.Hidden; + } + else + { + this.Attributes &= ~WixBundleVariableAttributes.Hidden; + } + } } public bool Persisted { - get => (bool)this.Fields[(int)WixBundleVariableSymbolFields.Persisted]; - set => this.Set((int)WixBundleVariableSymbolFields.Persisted, value); + get { return this.Attributes.HasFlag(WixBundleVariableAttributes.Persisted); } + set + { + if (value) + { + this.Attributes |= WixBundleVariableAttributes.Persisted; + } + else + { + this.Attributes &= ~WixBundleVariableAttributes.Persisted; + } + } } } } diff --git a/src/api/wix/WixToolset.Data/Symbols/WixChainSymbol.cs b/src/api/wix/WixToolset.Data/Symbols/WixChainSymbol.cs index 8ec5fc63..2ca1d512 100644 --- a/src/api/wix/WixToolset.Data/Symbols/WixChainSymbol.cs +++ b/src/api/wix/WixToolset.Data/Symbols/WixChainSymbol.cs @@ -52,10 +52,52 @@ namespace WixToolset.Data.Symbols set => this.Set((int)WixChainSymbolFields.Attributes, (int)value); } - public bool DisableRollback => (this.Attributes & WixChainAttributes.DisableRollback) == WixChainAttributes.DisableRollback; + public bool DisableRollback + { + get { return this.Attributes.HasFlag(WixChainAttributes.DisableRollback); } + set + { + if (value) + { + this.Attributes |= WixChainAttributes.DisableRollback; + } + else + { + this.Attributes &= ~WixChainAttributes.DisableRollback; + } + } + } - public bool DisableSystemRestore => (this.Attributes & WixChainAttributes.DisableSystemRestore) == WixChainAttributes.DisableSystemRestore; + public bool DisableSystemRestore + { + get { return this.Attributes.HasFlag(WixChainAttributes.DisableSystemRestore); } + set + { + if (value) + { + this.Attributes |= WixChainAttributes.DisableSystemRestore; + } + else + { + this.Attributes &= ~WixChainAttributes.DisableSystemRestore; + } + } + } - public bool ParallelCache => (this.Attributes & WixChainAttributes.ParallelCache) == WixChainAttributes.ParallelCache; + public bool ParallelCache + { + get { return this.Attributes.HasFlag(WixChainAttributes.ParallelCache); } + set + { + if (value) + { + this.Attributes |= WixChainAttributes.ParallelCache; + } + else + { + this.Attributes &= ~WixChainAttributes.ParallelCache; + } + } + } } } diff --git a/src/api/wix/WixToolset.Data/Symbols/WixComponentSearchSymbol.cs b/src/api/wix/WixToolset.Data/Symbols/WixComponentSearchSymbol.cs index 63f7179f..1a930c4e 100644 --- a/src/api/wix/WixToolset.Data/Symbols/WixComponentSearchSymbol.cs +++ b/src/api/wix/WixToolset.Data/Symbols/WixComponentSearchSymbol.cs @@ -13,6 +13,7 @@ namespace WixToolset.Data new IntermediateFieldDefinition(nameof(WixComponentSearchSymbolFields.Guid), IntermediateFieldType.String), new IntermediateFieldDefinition(nameof(WixComponentSearchSymbolFields.ProductCode), IntermediateFieldType.String), new IntermediateFieldDefinition(nameof(WixComponentSearchSymbolFields.Attributes), IntermediateFieldType.Number), + new IntermediateFieldDefinition(nameof(WixComponentSearchSymbolFields.Type), IntermediateFieldType.Number), }, typeof(WixComponentSearchSymbol)); } @@ -27,14 +28,20 @@ namespace WixToolset.Data.Symbols Guid, ProductCode, Attributes, + Type, } [Flags] public enum WixComponentSearchAttributes { - KeyPath = 0x1, - State = 0x2, - WantDirectory = 0x4, + None = 0x0, + } + + public enum WixComponentSearchType + { + KeyPath, + State, + WantDirectory, } public class WixComponentSearchSymbol : IntermediateSymbol @@ -66,5 +73,11 @@ namespace WixToolset.Data.Symbols get => (WixComponentSearchAttributes)this.Fields[(int)WixComponentSearchSymbolFields.Attributes].AsNumber(); set => this.Set((int)WixComponentSearchSymbolFields.Attributes, (int)value); } + + public WixComponentSearchType Type + { + get => (WixComponentSearchType)this.Fields[(int)WixComponentSearchSymbolFields.Type].AsNumber(); + set => this.Set((int)WixComponentSearchSymbolFields.Type, (int)value); + } } } diff --git a/src/api/wix/WixToolset.Data/Symbols/WixFileSearchSymbol.cs b/src/api/wix/WixToolset.Data/Symbols/WixFileSearchSymbol.cs index 027605c7..4f8a370e 100644 --- a/src/api/wix/WixToolset.Data/Symbols/WixFileSearchSymbol.cs +++ b/src/api/wix/WixToolset.Data/Symbols/WixFileSearchSymbol.cs @@ -19,6 +19,7 @@ namespace WixToolset.Data new IntermediateFieldDefinition(nameof(WixFileSearchSymbolFields.MaxDate), IntermediateFieldType.Number), new IntermediateFieldDefinition(nameof(WixFileSearchSymbolFields.Languages), IntermediateFieldType.String), new IntermediateFieldDefinition(nameof(WixFileSearchSymbolFields.Attributes), IntermediateFieldType.Number), + new IntermediateFieldDefinition(nameof(WixFileSearchSymbolFields.Type), IntermediateFieldType.Number), }, typeof(WixFileSearchSymbol)); } @@ -39,21 +40,27 @@ namespace WixToolset.Data.Symbols MaxDate, Languages, Attributes, + Type, } [Flags] public enum WixFileSearchAttributes { - Default = 0x001, + None = 0x000, + IsDirectory = 0x001, MinVersionInclusive = 0x002, MaxVersionInclusive = 0x004, MinSizeInclusive = 0x008, MaxSizeInclusive = 0x010, MinDateInclusive = 0x020, MaxDateInclusive = 0x040, - WantVersion = 0x080, - WantExists = 0x100, - IsDirectory = 0x200, + } + + public enum WixFileSearchType + { + Path, + Version, + Exists, } public class WixFileSearchSymbol : IntermediateSymbol @@ -121,5 +128,123 @@ namespace WixToolset.Data.Symbols get => (WixFileSearchAttributes)this.Fields[(int)WixFileSearchSymbolFields.Attributes].AsNumber(); set => this.Set((int)WixFileSearchSymbolFields.Attributes, (int)value); } + + public WixFileSearchType Type + { + get => (WixFileSearchType)this.Fields[(int)WixFileSearchSymbolFields.Type].AsNumber(); + set => this.Set((int)WixFileSearchSymbolFields.Type, (int)value); + } + + public bool IsDirectory + { + get { return this.Attributes.HasFlag(WixFileSearchAttributes.IsDirectory); } + set + { + if (value) + { + this.Attributes |= WixFileSearchAttributes.IsDirectory; + } + else + { + this.Attributes &= ~WixFileSearchAttributes.IsDirectory; + } + } + } + + public bool MinVersionInclusive + { + get { return this.Attributes.HasFlag(WixFileSearchAttributes.MinVersionInclusive); } + set + { + if (value) + { + this.Attributes |= WixFileSearchAttributes.MinVersionInclusive; + } + else + { + this.Attributes &= ~WixFileSearchAttributes.MinVersionInclusive; + } + } + } + + public bool MaxVersionInclusive + { + get { return this.Attributes.HasFlag(WixFileSearchAttributes.MaxVersionInclusive); } + set + { + if (value) + { + this.Attributes |= WixFileSearchAttributes.MaxVersionInclusive; + } + else + { + this.Attributes &= ~WixFileSearchAttributes.MaxVersionInclusive; + } + } + } + + public bool MinSizeInclusive + { + get { return this.Attributes.HasFlag(WixFileSearchAttributes.MinSizeInclusive); } + set + { + if (value) + { + this.Attributes |= WixFileSearchAttributes.MinSizeInclusive; + } + else + { + this.Attributes &= ~WixFileSearchAttributes.MinSizeInclusive; + } + } + } + + public bool MaxSizeInclusive + { + get { return this.Attributes.HasFlag(WixFileSearchAttributes.MaxSizeInclusive); } + set + { + if (value) + { + this.Attributes |= WixFileSearchAttributes.MaxSizeInclusive; + } + else + { + this.Attributes &= ~WixFileSearchAttributes.MaxSizeInclusive; + } + } + } + + public bool MinDateInclusive + { + get { return this.Attributes.HasFlag(WixFileSearchAttributes.MinDateInclusive); } + set + { + if (value) + { + this.Attributes |= WixFileSearchAttributes.MinDateInclusive; + } + else + { + this.Attributes &= ~WixFileSearchAttributes.MinDateInclusive; + } + } + } + + public bool MaxDateInclusive + { + get { return this.Attributes.HasFlag(WixFileSearchAttributes.MaxDateInclusive); } + set + { + if (value) + { + this.Attributes |= WixFileSearchAttributes.MaxDateInclusive; + } + else + { + this.Attributes &= ~WixFileSearchAttributes.MaxDateInclusive; + } + } + } } } diff --git a/src/api/wix/WixToolset.Data/Symbols/WixProductSearchSymbol.cs b/src/api/wix/WixToolset.Data/Symbols/WixProductSearchSymbol.cs index f8a17b64..99360da5 100644 --- a/src/api/wix/WixToolset.Data/Symbols/WixProductSearchSymbol.cs +++ b/src/api/wix/WixToolset.Data/Symbols/WixProductSearchSymbol.cs @@ -12,6 +12,7 @@ namespace WixToolset.Data { new IntermediateFieldDefinition(nameof(WixProductSearchSymbolFields.Guid), IntermediateFieldType.String), new IntermediateFieldDefinition(nameof(WixProductSearchSymbolFields.Attributes), IntermediateFieldType.Number), + new IntermediateFieldDefinition(nameof(WixProductSearchSymbolFields.Type), IntermediateFieldType.Number), }, typeof(WixProductSearchSymbol)); } @@ -25,16 +26,26 @@ namespace WixToolset.Data.Symbols { Guid, Attributes, + Type, } [Flags] public enum WixProductSearchAttributes { - Version = 0x1, - Language = 0x2, - State = 0x4, - Assignment = 0x8, - UpgradeCode = 0x10, + None = 0x0, + + /// + /// Guid contains the UpgradeCode. If not set, it contains the ProductCode. + /// + UpgradeCode = 0x1, + } + + public enum WixProductSearchType + { + Version, + Language, + State, + Assignment, } public class WixProductSearchSymbol : IntermediateSymbol @@ -60,5 +71,27 @@ namespace WixToolset.Data.Symbols get => (WixProductSearchAttributes)this.Fields[(int)WixProductSearchSymbolFields.Attributes].AsNumber(); set => this.Set((int)WixProductSearchSymbolFields.Attributes, (int)value); } + + public WixProductSearchType Type + { + get => (WixProductSearchType)this.Fields[(int)WixProductSearchSymbolFields.Type].AsNumber(); + set => this.Set((int)WixProductSearchSymbolFields.Type, (int)value); + } + + public bool IsUpgradeCode + { + get { return this.Attributes.HasFlag(WixProductSearchAttributes.UpgradeCode); } + set + { + if (value) + { + this.Attributes |= WixProductSearchAttributes.UpgradeCode; + } + else + { + this.Attributes &= ~WixProductSearchAttributes.UpgradeCode; + } + } + } } } diff --git a/src/api/wix/WixToolset.Data/Symbols/WixRegistrySearchSymbol.cs b/src/api/wix/WixToolset.Data/Symbols/WixRegistrySearchSymbol.cs index dffa8410..f1da962b 100644 --- a/src/api/wix/WixToolset.Data/Symbols/WixRegistrySearchSymbol.cs +++ b/src/api/wix/WixToolset.Data/Symbols/WixRegistrySearchSymbol.cs @@ -14,6 +14,7 @@ namespace WixToolset.Data new IntermediateFieldDefinition(nameof(WixRegistrySearchSymbolFields.Key), IntermediateFieldType.String), new IntermediateFieldDefinition(nameof(WixRegistrySearchSymbolFields.Value), IntermediateFieldType.String), new IntermediateFieldDefinition(nameof(WixRegistrySearchSymbolFields.Attributes), IntermediateFieldType.Number), + new IntermediateFieldDefinition(nameof(WixRegistrySearchSymbolFields.Type), IntermediateFieldType.Number), }, typeof(WixRegistrySearchSymbol)); } @@ -29,17 +30,21 @@ namespace WixToolset.Data.Symbols Key, Value, Attributes, + Type, } [Flags] public enum WixRegistrySearchAttributes { - Raw = 0x01, - Compatible = 0x02, - ExpandEnvironmentVariables = 0x04, - WantValue = 0x08, - WantExists = 0x10, - Win64 = 0x20, + None = 0x0, + ExpandEnvironmentVariables = 0x01, + Win64 = 0x2, + } + + public enum WixRegistrySearchType + { + Value, + Exists, } public class WixRegistrySearchSymbol : IntermediateSymbol @@ -77,5 +82,43 @@ namespace WixToolset.Data.Symbols get => (WixRegistrySearchAttributes)this.Fields[(int)WixRegistrySearchSymbolFields.Attributes].AsNumber(); set => this.Set((int)WixRegistrySearchSymbolFields.Attributes, (int)value); } + + public WixRegistrySearchType Type + { + get => (WixRegistrySearchType)this.Fields[(int)WixRegistrySearchSymbolFields.Type].AsNumber(); + set => this.Set((int)WixRegistrySearchSymbolFields.Type, (int)value); + } + + public bool ExpandEnvironmentVariables + { + get { return this.Attributes.HasFlag(WixRegistrySearchAttributes.ExpandEnvironmentVariables); } + set + { + if (value) + { + this.Attributes |= WixRegistrySearchAttributes.ExpandEnvironmentVariables; + } + else + { + this.Attributes &= ~WixRegistrySearchAttributes.ExpandEnvironmentVariables; + } + } + } + + public bool Win64 + { + get { return this.Attributes.HasFlag(WixRegistrySearchAttributes.Win64); } + set + { + if (value) + { + this.Attributes |= WixRegistrySearchAttributes.Win64; + } + else + { + this.Attributes &= ~WixRegistrySearchAttributes.Win64; + } + } + } } } -- cgit v1.2.3-55-g6feb