main
cs 155 lines 5.99 KB
Raw
1 // 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.
2
3 namespace WixToolset.Data
4 {
5 using WixToolset.Data.Symbols;
6
7 public static partial class SymbolDefinitions
8 {
9 public static readonly IntermediateSymbolDefinition Upgrade = new IntermediateSymbolDefinition(
10 SymbolDefinitionType.Upgrade,
11 new[]
12 {
13 new IntermediateFieldDefinition(nameof(UpgradeSymbolFields.UpgradeCode), IntermediateFieldType.String),
14 new IntermediateFieldDefinition(nameof(UpgradeSymbolFields.VersionMin), IntermediateFieldType.String),
15 new IntermediateFieldDefinition(nameof(UpgradeSymbolFields.VersionMax), IntermediateFieldType.String),
16 new IntermediateFieldDefinition(nameof(UpgradeSymbolFields.Language), IntermediateFieldType.String),
17 new IntermediateFieldDefinition(nameof(UpgradeSymbolFields.ExcludeLanguages), IntermediateFieldType.Bool),
18 new IntermediateFieldDefinition(nameof(UpgradeSymbolFields.IgnoreRemoveFailures), IntermediateFieldType.Bool),
19 new IntermediateFieldDefinition(nameof(UpgradeSymbolFields.MigrateFeatures), IntermediateFieldType.Bool),
20 new IntermediateFieldDefinition(nameof(UpgradeSymbolFields.OnlyDetect), IntermediateFieldType.Bool),
21 new IntermediateFieldDefinition(nameof(UpgradeSymbolFields.VersionMaxInclusive), IntermediateFieldType.Bool),
22 new IntermediateFieldDefinition(nameof(UpgradeSymbolFields.VersionMinInclusive), IntermediateFieldType.Bool),
23 new IntermediateFieldDefinition(nameof(UpgradeSymbolFields.Remove), IntermediateFieldType.String),
24 new IntermediateFieldDefinition(nameof(UpgradeSymbolFields.ActionProperty), IntermediateFieldType.String),
25 },
26 typeof(UpgradeSymbol));
27 }
28 }
29
30 namespace WixToolset.Data.Symbols
31 {
32 public enum UpgradeSymbolFields
33 {
34 UpgradeCode,
35 VersionMin,
36 VersionMax,
37 Language,
38 ExcludeLanguages,
39 IgnoreRemoveFailures,
40 MigrateFeatures,
41 OnlyDetect,
42 VersionMaxInclusive,
43 VersionMinInclusive,
44 Remove,
45 ActionProperty,
46 }
47
48 public static class WixUpgradeConstants
49 {
50 /// <summary>
51 /// Standard property for detecting upgrades.
52 /// </summary>
53 public const string UpgradeDetectedProperty = "WIX_UPGRADE_DETECTED";
54
55 /// <summary>
56 /// Standard condition to prevent upgrades.
57 /// </summary>
58 public const string UpgradePreventedCondition = "NOT WIX_UPGRADE_DETECTED";
59
60 /// <summary>
61 /// Standard property for downgrade detected.
62 /// </summary>
63 public const string DowngradeDetectedProperty = "WIX_DOWNGRADE_DETECTED";
64
65 /// <summary>
66 /// Standard condition to prevent downgrades.
67 /// </summary>
68 public const string DowngradePreventedCondition = "NOT WIX_DOWNGRADE_DETECTED";
69 }
70
71 public class UpgradeSymbol : IntermediateSymbol
72 {
73 public UpgradeSymbol() : base(SymbolDefinitions.Upgrade, null, null)
74 {
75 }
76
77 public UpgradeSymbol(SourceLineNumber sourceLineNumber, Identifier id = null) : base(SymbolDefinitions.Upgrade, sourceLineNumber, id)
78 {
79 }
80
81 public IntermediateField this[UpgradeSymbolFields index] => this.Fields[(int)index];
82
83 public string UpgradeCode
84 {
85 get => (string)this.Fields[(int)UpgradeSymbolFields.UpgradeCode];
86 set => this.Set((int)UpgradeSymbolFields.UpgradeCode, value);
87 }
88
89 public string VersionMin
90 {
91 get => (string)this.Fields[(int)UpgradeSymbolFields.VersionMin];
92 set => this.Set((int)UpgradeSymbolFields.VersionMin, value);
93 }
94
95 public string VersionMax
96 {
97 get => (string)this.Fields[(int)UpgradeSymbolFields.VersionMax];
98 set => this.Set((int)UpgradeSymbolFields.VersionMax, value);
99 }
100
101 public string Language
102 {
103 get => (string)this.Fields[(int)UpgradeSymbolFields.Language];
104 set => this.Set((int)UpgradeSymbolFields.Language, value);
105 }
106
107 public bool ExcludeLanguages
108 {
109 get => this.Fields[(int)UpgradeSymbolFields.ExcludeLanguages].AsBool();
110 set => this.Set((int)UpgradeSymbolFields.ExcludeLanguages, value);
111 }
112
113 public bool IgnoreRemoveFailures
114 {
115 get => this.Fields[(int)UpgradeSymbolFields.IgnoreRemoveFailures].AsBool();
116 set => this.Set((int)UpgradeSymbolFields.IgnoreRemoveFailures, value);
117 }
118
119 public bool MigrateFeatures
120 {
121 get => this.Fields[(int)UpgradeSymbolFields.MigrateFeatures].AsBool();
122 set => this.Set((int)UpgradeSymbolFields.MigrateFeatures, value);
123 }
124
125 public bool OnlyDetect
126 {
127 get => this.Fields[(int)UpgradeSymbolFields.OnlyDetect].AsBool();
128 set => this.Set((int)UpgradeSymbolFields.OnlyDetect, value);
129 }
130
131 public bool VersionMaxInclusive
132 {
133 get => this.Fields[(int)UpgradeSymbolFields.VersionMaxInclusive].AsBool();
134 set => this.Set((int)UpgradeSymbolFields.VersionMaxInclusive, value);
135 }
136
137 public bool VersionMinInclusive
138 {
139 get => this.Fields[(int)UpgradeSymbolFields.VersionMinInclusive].AsBool();
140 set => this.Set((int)UpgradeSymbolFields.VersionMinInclusive, value);
141 }
142
143 public string Remove
144 {
145 get => (string)this.Fields[(int)UpgradeSymbolFields.Remove];
146 set => this.Set((int)UpgradeSymbolFields.Remove, value);
147 }
148
149 public string ActionProperty
150 {
151 get => (string)this.Fields[(int)UpgradeSymbolFields.ActionProperty];
152 set => this.Set((int)UpgradeSymbolFields.ActionProperty, value);
153 }
154 }
155 }