main
cs 287 lines 10.9 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 WixBundle = new IntermediateSymbolDefinition(
10 SymbolDefinitionType.WixBundle,
11 new[]
12 {
13 new IntermediateFieldDefinition(nameof(WixBundleSymbolFields.UpgradeCode), IntermediateFieldType.String),
14 new IntermediateFieldDefinition(nameof(WixBundleSymbolFields.Version), IntermediateFieldType.String),
15 new IntermediateFieldDefinition(nameof(WixBundleSymbolFields.Copyright), IntermediateFieldType.String),
16 new IntermediateFieldDefinition(nameof(WixBundleSymbolFields.Name), IntermediateFieldType.String),
17 new IntermediateFieldDefinition(nameof(WixBundleSymbolFields.Manufacturer), IntermediateFieldType.String),
18 new IntermediateFieldDefinition(nameof(WixBundleSymbolFields.Attributes), IntermediateFieldType.Number),
19 new IntermediateFieldDefinition(nameof(WixBundleSymbolFields.AboutUrl), IntermediateFieldType.String),
20 new IntermediateFieldDefinition(nameof(WixBundleSymbolFields.HelpUrl), IntermediateFieldType.String),
21 new IntermediateFieldDefinition(nameof(WixBundleSymbolFields.HelpTelephone), IntermediateFieldType.String),
22 new IntermediateFieldDefinition(nameof(WixBundleSymbolFields.UpdateUrl), IntermediateFieldType.String),
23 new IntermediateFieldDefinition(nameof(WixBundleSymbolFields.Compressed), IntermediateFieldType.Bool),
24 new IntermediateFieldDefinition(nameof(WixBundleSymbolFields.LogPathVariable), IntermediateFieldType.String),
25 new IntermediateFieldDefinition(nameof(WixBundleSymbolFields.LogPrefix), IntermediateFieldType.String),
26 new IntermediateFieldDefinition(nameof(WixBundleSymbolFields.LogExtension), IntermediateFieldType.String),
27 new IntermediateFieldDefinition(nameof(WixBundleSymbolFields.IconSourceFile), IntermediateFieldType.Path),
28 new IntermediateFieldDefinition(nameof(WixBundleSymbolFields.SplashScreenSourceFile), IntermediateFieldType.Path),
29 new IntermediateFieldDefinition(nameof(WixBundleSymbolFields.Condition), IntermediateFieldType.String),
30 new IntermediateFieldDefinition(nameof(WixBundleSymbolFields.Tag), IntermediateFieldType.String),
31 new IntermediateFieldDefinition(nameof(WixBundleSymbolFields.Platform), IntermediateFieldType.String),
32 new IntermediateFieldDefinition(nameof(WixBundleSymbolFields.ParentName), IntermediateFieldType.String),
33 new IntermediateFieldDefinition(nameof(WixBundleSymbolFields.BundleId), IntermediateFieldType.String),
34 new IntermediateFieldDefinition(nameof(WixBundleSymbolFields.ProviderKey), IntermediateFieldType.String),
35 new IntermediateFieldDefinition(nameof(WixBundleSymbolFields.InProgressName), IntermediateFieldType.String),
36 new IntermediateFieldDefinition(nameof(WixBundleSymbolFields.DisableModify), IntermediateFieldType.String),
37 },
38 typeof(WixBundleSymbol));
39 }
40 }
41
42 namespace WixToolset.Data.Symbols
43 {
44 using System;
45
46 public enum WixBundleSymbolFields
47 {
48 UpgradeCode,
49 Version,
50 Copyright,
51 Name,
52 Manufacturer,
53 Attributes,
54 AboutUrl,
55 HelpUrl,
56 HelpTelephone,
57 UpdateUrl,
58 Compressed,
59 LogPathVariable,
60 LogPrefix,
61 LogExtension,
62 IconSourceFile,
63 SplashScreenSourceFile,
64 Condition,
65 Tag,
66 Platform,
67 ParentName,
68 BundleId,
69 ProviderKey,
70 InProgressName,
71 DisableModify,
72 }
73
74 [Flags]
75 public enum WixBundleAttributes
76 {
77 None = 0x0,
78 DisableRemove = 0x1,
79 PerMachine = 0x2,
80 }
81
82 public enum WixBundleModifyType
83 {
84 Allowed = 0,
85 Disabled = 1,
86 SingleChangeUninstallButton = 2,
87 }
88
89 public class WixBundleSymbol : IntermediateSymbol
90 {
91 public WixBundleSymbol() : base(SymbolDefinitions.WixBundle, null, null)
92 {
93 }
94
95 public WixBundleSymbol(SourceLineNumber sourceLineNumber, Identifier id = null) : base(SymbolDefinitions.WixBundle, sourceLineNumber, id)
96 {
97 }
98
99 public IntermediateField this[WixBundleSymbolFields index] => this.Fields[(int)index];
100
101 public string UpgradeCode
102 {
103 get => (string)this.Fields[(int)WixBundleSymbolFields.UpgradeCode];
104 set => this.Set((int)WixBundleSymbolFields.UpgradeCode, value);
105 }
106
107 public string Version
108 {
109 get => (string)this.Fields[(int)WixBundleSymbolFields.Version];
110 set => this.Set((int)WixBundleSymbolFields.Version, value);
111 }
112
113 public string Copyright
114 {
115 get => (string)this.Fields[(int)WixBundleSymbolFields.Copyright];
116 set => this.Set((int)WixBundleSymbolFields.Copyright, value);
117 }
118
119 public string Name
120 {
121 get => (string)this.Fields[(int)WixBundleSymbolFields.Name];
122 set => this.Set((int)WixBundleSymbolFields.Name, value);
123 }
124
125 public string Manufacturer
126 {
127 get => (string)this.Fields[(int)WixBundleSymbolFields.Manufacturer];
128 set => this.Set((int)WixBundleSymbolFields.Manufacturer, value);
129 }
130
131 public WixBundleAttributes Attributes
132 {
133 get => (WixBundleAttributes)this.Fields[(int)WixBundleSymbolFields.Attributes].AsNumber();
134 set => this.Set((int)WixBundleSymbolFields.Attributes, (int)value);
135 }
136
137 public string AboutUrl
138 {
139 get => (string)this.Fields[(int)WixBundleSymbolFields.AboutUrl];
140 set => this.Set((int)WixBundleSymbolFields.AboutUrl, value);
141 }
142
143 public string HelpTelephone
144 {
145 get => (string)this.Fields[(int)WixBundleSymbolFields.HelpTelephone];
146 set => this.Set((int)WixBundleSymbolFields.HelpTelephone, value);
147 }
148
149 public string HelpUrl
150 {
151 get => (string)this.Fields[(int)WixBundleSymbolFields.HelpUrl];
152 set => this.Set((int)WixBundleSymbolFields.HelpUrl, value);
153 }
154
155 public string UpdateUrl
156 {
157 get => (string)this.Fields[(int)WixBundleSymbolFields.UpdateUrl];
158 set => this.Set((int)WixBundleSymbolFields.UpdateUrl, value);
159 }
160
161 public bool? Compressed
162 {
163 get => (bool?)this.Fields[(int)WixBundleSymbolFields.Compressed];
164 set => this.Set((int)WixBundleSymbolFields.Compressed, value);
165 }
166
167 public string LogPathVariable
168 {
169 get => (string)this.Fields[(int)WixBundleSymbolFields.LogPathVariable];
170 set => this.Set((int)WixBundleSymbolFields.LogPathVariable, value);
171 }
172
173 public string LogPrefix
174 {
175 get => (string)this.Fields[(int)WixBundleSymbolFields.LogPrefix];
176 set => this.Set((int)WixBundleSymbolFields.LogPrefix, value);
177 }
178
179 public string LogExtension
180 {
181 get => (string)this.Fields[(int)WixBundleSymbolFields.LogExtension];
182 set => this.Set((int)WixBundleSymbolFields.LogExtension, value);
183 }
184
185 public IntermediateFieldPathValue IconSourceFile
186 {
187 get => this.Fields[(int)WixBundleSymbolFields.IconSourceFile].AsPath();
188 set => this.Set((int)WixBundleSymbolFields.IconSourceFile, value);
189 }
190
191 public IntermediateFieldPathValue SplashScreenSourceFile
192 {
193 get => this.Fields[(int)WixBundleSymbolFields.SplashScreenSourceFile].AsPath();
194 set => this.Set((int)WixBundleSymbolFields.SplashScreenSourceFile, value);
195 }
196
197 public string Condition
198 {
199 get => (string)this.Fields[(int)WixBundleSymbolFields.Condition];
200 set => this.Set((int)WixBundleSymbolFields.Condition, value);
201 }
202
203 public string Tag
204 {
205 get => (string)this.Fields[(int)WixBundleSymbolFields.Tag];
206 set => this.Set((int)WixBundleSymbolFields.Tag, value);
207 }
208
209 public Platform Platform
210 {
211 get => (Platform)this.Fields[(int)WixBundleSymbolFields.Platform].AsNumber();
212 set => this.Set((int)WixBundleSymbolFields.Platform, (int)value);
213 }
214
215 public string ParentName
216 {
217 get => (string)this.Fields[(int)WixBundleSymbolFields.ParentName];
218 set => this.Set((int)WixBundleSymbolFields.ParentName, value);
219 }
220
221 public string BundleId
222 {
223 get => (string)this.Fields[(int)WixBundleSymbolFields.BundleId];
224 set => this.Set((int)WixBundleSymbolFields.BundleId, value);
225 }
226
227 public string ProviderKey
228 {
229 get => (string)this.Fields[(int)WixBundleSymbolFields.ProviderKey];
230 set => this.Set((int)WixBundleSymbolFields.ProviderKey, value);
231 }
232
233 public string InProgressName
234 {
235 get => (string)this.Fields[(int)WixBundleSymbolFields.InProgressName];
236 set => this.Set((int)WixBundleSymbolFields.InProgressName, value);
237 }
238
239 public WixBundleModifyType DisableModify
240 {
241 get
242 {
243 if (Enum.TryParse((string)this.Fields[(int)WixBundleSymbolFields.DisableModify], true, out WixBundleModifyType value))
244 {
245 return value;
246 }
247
248 return WixBundleModifyType.Allowed;
249 }
250 set => this.Set((int)WixBundleSymbolFields.DisableModify, value.ToString().ToLowerInvariant());
251 }
252
253 public PackagingType DefaultPackagingType => (this.Compressed.HasValue && !this.Compressed.Value) ? PackagingType.External : PackagingType.Embedded;
254
255 public bool DisableRemove
256 {
257 get { return this.Attributes.HasFlag(WixBundleAttributes.DisableRemove); }
258 set
259 {
260 if (value)
261 {
262 this.Attributes |= WixBundleAttributes.DisableRemove;
263 }
264 else
265 {
266 this.Attributes &= ~WixBundleAttributes.DisableRemove;
267 }
268 }
269 }
270
271 public bool PerMachine
272 {
273 get { return this.Attributes.HasFlag(WixBundleAttributes.PerMachine); }
274 set
275 {
276 if (value)
277 {
278 this.Attributes |= WixBundleAttributes.PerMachine;
279 }
280 else
281 {
282 this.Attributes &= ~WixBundleAttributes.PerMachine;
283 }
284 }
285 }
286 }
287 }