aboutsummaryrefslogtreecommitdiff
path: root/src/api/burn/WixToolset.Mba.Core/PackageInfo.cs
diff options
context:
space:
mode:
Diffstat (limited to 'src/api/burn/WixToolset.Mba.Core/PackageInfo.cs')
-rw-r--r--src/api/burn/WixToolset.Mba.Core/PackageInfo.cs69
1 files changed, 38 insertions, 31 deletions
diff --git a/src/api/burn/WixToolset.Mba.Core/PackageInfo.cs b/src/api/burn/WixToolset.Mba.Core/PackageInfo.cs
index 3fa1b49e..c6373647 100644
--- a/src/api/burn/WixToolset.Mba.Core/PackageInfo.cs
+++ b/src/api/burn/WixToolset.Mba.Core/PackageInfo.cs
@@ -8,57 +8,57 @@ namespace WixToolset.Mba.Core
8 using System.Xml.XPath; 8 using System.Xml.XPath;
9 9
10 /// <summary> 10 /// <summary>
11 /// 11 /// The type of package.
12 /// </summary> 12 /// </summary>
13 public enum PackageType 13 public enum PackageType
14 { 14 {
15 /// <summary> 15 /// <summary>
16 /// 16 /// Invalid type.
17 /// </summary> 17 /// </summary>
18 Unknown, 18 Unknown,
19 19
20 /// <summary> 20 /// <summary>
21 /// 21 /// ExePackage
22 /// </summary> 22 /// </summary>
23 Exe, 23 Exe,
24 24
25 /// <summary> 25 /// <summary>
26 /// 26 /// MsiPackage
27 /// </summary> 27 /// </summary>
28 Msi, 28 Msi,
29 29
30 /// <summary> 30 /// <summary>
31 /// 31 /// MspPackage
32 /// </summary> 32 /// </summary>
33 Msp, 33 Msp,
34 34
35 /// <summary> 35 /// <summary>
36 /// 36 /// MsuPackage
37 /// </summary> 37 /// </summary>
38 Msu, 38 Msu,
39 39
40 /// <summary> 40 /// <summary>
41 /// 41 /// Related bundle of type Upgrade
42 /// </summary> 42 /// </summary>
43 UpgradeBundle, 43 UpgradeBundle,
44 44
45 /// <summary> 45 /// <summary>
46 /// 46 /// Related bundle of type Addon
47 /// </summary> 47 /// </summary>
48 AddonBundle, 48 AddonBundle,
49 49
50 /// <summary> 50 /// <summary>
51 /// 51 /// Related bundle of type Patch
52 /// </summary> 52 /// </summary>
53 PatchBundle, 53 PatchBundle,
54 54
55 /// <summary> 55 /// <summary>
56 /// 56 /// Related bundle of type Update
57 /// </summary> 57 /// </summary>
58 UpdateBundle, 58 UpdateBundle,
59 59
60 /// <summary> 60 /// <summary>
61 /// 61 /// BundlePackage
62 /// </summary> 62 /// </summary>
63 ChainBundle, 63 ChainBundle,
64 } 64 }
@@ -156,10 +156,10 @@ namespace WixToolset.Mba.Core
156 internal PackageInfo() { } 156 internal PackageInfo() { }
157 157
158 /// <summary> 158 /// <summary>
159 /// 159 /// Parse packages from BootstrapperApplicationData.xml.
160 /// </summary> 160 /// </summary>
161 /// <param name="root"></param> 161 /// <param name="root">The root node.</param>
162 /// <returns></returns> 162 /// <returns>A dictionary of the packages by Id.</returns>
163 public static IDictionary<string, IPackageInfo> ParsePackagesFromXml(XPathNavigator root) 163 public static IDictionary<string, IPackageInfo> ParsePackagesFromXml(XPathNavigator root)
164 { 164 {
165 var packagesById = new Dictionary<string, IPackageInfo>(); 165 var packagesById = new Dictionary<string, IPackageInfo>();
@@ -213,6 +213,13 @@ namespace WixToolset.Mba.Core
213 213
214 package.RepairCondition = BootstrapperApplicationData.GetAttribute(node, "RepairCondition"); 214 package.RepairCondition = BootstrapperApplicationData.GetAttribute(node, "RepairCondition");
215 215
216 BOOTSTRAPPER_CACHE_TYPE? cacheType = GetCacheTypeAttribute(node, "Cache");
217 if (!cacheType.HasValue)
218 {
219 throw new Exception("Failed to get cache type for package.");
220 }
221 package.CacheType = cacheType.Value;
222
216 packagesById.Add(package.Id, package); 223 packagesById.Add(package.Id, package);
217 } 224 }
218 225
@@ -221,11 +228,11 @@ namespace WixToolset.Mba.Core
221 } 228 }
222 229
223 /// <summary> 230 /// <summary>
224 /// 231 /// Parse the cache type attribute.
225 /// </summary> 232 /// </summary>
226 /// <param name="node"></param> 233 /// <param name="node">Package node</param>
227 /// <param name="attributeName"></param> 234 /// <param name="attributeName">Attribute name</param>
228 /// <returns></returns> 235 /// <returns>The cache type</returns>
229 public static BOOTSTRAPPER_CACHE_TYPE? GetCacheTypeAttribute(XPathNavigator node, string attributeName) 236 public static BOOTSTRAPPER_CACHE_TYPE? GetCacheTypeAttribute(XPathNavigator node, string attributeName)
230 { 237 {
231 string attributeValue = BootstrapperApplicationData.GetAttribute(node, attributeName); 238 string attributeValue = BootstrapperApplicationData.GetAttribute(node, attributeName);
@@ -250,11 +257,11 @@ namespace WixToolset.Mba.Core
250 } 257 }
251 258
252 /// <summary> 259 /// <summary>
253 /// 260 /// Parse the package type attribute
254 /// </summary> 261 /// </summary>
255 /// <param name="node"></param> 262 /// <param name="node">Package node</param>
256 /// <param name="attributeName"></param> 263 /// <param name="attributeName">Attribute name</param>
257 /// <returns></returns> 264 /// <returns>The package type</returns>
258 public static PackageType? GetPackageTypeAttribute(XPathNavigator node, string attributeName) 265 public static PackageType? GetPackageTypeAttribute(XPathNavigator node, string attributeName)
259 { 266 {
260 string attributeValue = BootstrapperApplicationData.GetAttribute(node, attributeName); 267 string attributeValue = BootstrapperApplicationData.GetAttribute(node, attributeName);
@@ -291,13 +298,13 @@ namespace WixToolset.Mba.Core
291 } 298 }
292 299
293 /// <summary> 300 /// <summary>
294 /// 301 /// Create <see cref="IPackageInfo"/> from a related bundle.
295 /// </summary> 302 /// </summary>
296 /// <param name="id"></param> 303 /// <param name="id">Package id</param>
297 /// <param name="relationType"></param> 304 /// <param name="relationType">Relation type</param>
298 /// <param name="perMachine"></param> 305 /// <param name="perMachine">Whether the related bundle is per-machine</param>
299 /// <param name="version"></param> 306 /// <param name="version">The related bundle's version</param>
300 /// <returns></returns> 307 /// <returns>The package info</returns>
301 public static IPackageInfo GetRelatedBundleAsPackage(string id, RelationType relationType, bool perMachine, string version) 308 public static IPackageInfo GetRelatedBundleAsPackage(string id, RelationType relationType, bool perMachine, string version)
302 { 309 {
303 PackageInfo package = new PackageInfo(); 310 PackageInfo package = new PackageInfo();
@@ -323,10 +330,10 @@ namespace WixToolset.Mba.Core
323 } 330 }
324 331
325 /// <summary> 332 /// <summary>
326 /// 333 /// Create <see cref="IPackageInfo"/> from an update bundle.
327 /// </summary> 334 /// </summary>
328 /// <param name="id"></param> 335 /// <param name="id">Package id</param>
329 /// <returns></returns> 336 /// <returns>The package info</returns>
330 public static IPackageInfo GetUpdateBundleAsPackage(string id) 337 public static IPackageInfo GetUpdateBundleAsPackage(string id)
331 { 338 {
332 PackageInfo package = new PackageInfo(); 339 PackageInfo package = new PackageInfo();