summaryrefslogtreecommitdiff
path: root/src/wix/heat/PayloadHarvester.cs
diff options
context:
space:
mode:
Diffstat (limited to 'src/wix/heat/PayloadHarvester.cs')
-rw-r--r--src/wix/heat/PayloadHarvester.cs129
1 files changed, 0 insertions, 129 deletions
diff --git a/src/wix/heat/PayloadHarvester.cs b/src/wix/heat/PayloadHarvester.cs
deleted file mode 100644
index d2492512..00000000
--- a/src/wix/heat/PayloadHarvester.cs
+++ /dev/null
@@ -1,129 +0,0 @@
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
3namespace WixToolset.Harvesters
4{
5 using System;
6 using System.IO;
7 using WixToolset.Core.Burn.Interfaces;
8 using WixToolset.Data;
9 using WixToolset.Data.Symbols;
10 using WixToolset.Harvesters.Data;
11 using WixToolset.Harvesters.Extensibility;
12 using Wix = WixToolset.Harvesters.Serialize;
13
14 /// <summary>
15 /// Harvest WiX authoring for a payload from the file system.
16 /// </summary>
17 public sealed class PayloadHarvester : BaseHarvesterExtension
18 {
19 private bool setUniqueIdentifiers;
20 private WixBundlePackageType packageType;
21
22 private IPayloadHarvester payloadHarvester;
23
24 /// <summary>
25 /// Instantiate a new PayloadHarvester.
26 /// </summary>
27 public PayloadHarvester(IPayloadHarvester payloadHarvester, WixBundlePackageType packageType)
28 {
29 this.payloadHarvester = payloadHarvester;
30
31 this.packageType = packageType;
32 this.setUniqueIdentifiers = true;
33 }
34
35 /// <summary>
36 /// Gets of sets the option to set unique identifiers.
37 /// </summary>
38 /// <value>The option to set unique identifiers.</value>
39 public bool SetUniqueIdentifiers
40 {
41 get { return this.setUniqueIdentifiers; }
42 set { this.setUniqueIdentifiers = value; }
43 }
44
45 /// <summary>
46 /// Harvest a payload.
47 /// </summary>
48 /// <param name="argument">The path of the payload.</param>
49 /// <returns>A harvested payload.</returns>
50 public override Wix.Fragment[] Harvest(string argument)
51 {
52 if (null == argument)
53 {
54 throw new ArgumentNullException("argument");
55 }
56
57 string fullPath = Path.GetFullPath(argument);
58
59 var remotePayload = this.HarvestRemotePayload(fullPath);
60
61 var fragment = new Wix.Fragment();
62 fragment.AddChild(remotePayload);
63
64 return new Wix.Fragment[] { fragment };
65 }
66
67 /// <summary>
68 /// Harvest a payload.
69 /// </summary>
70 /// <param name="path">The path of the payload.</param>
71 /// <returns>A harvested payload.</returns>
72 public Wix.RemotePayload HarvestRemotePayload(string path)
73 {
74 if (null == path)
75 {
76 throw new ArgumentNullException("path");
77 }
78
79 if (!File.Exists(path))
80 {
81 throw new WixException(HarvesterErrors.FileNotFound(path));
82 }
83
84 Wix.RemotePayload remotePayload;
85
86 switch (this.packageType)
87 {
88 case WixBundlePackageType.Exe:
89 remotePayload = new Wix.ExePackagePayload();
90 break;
91 case WixBundlePackageType.Msu:
92 remotePayload = new Wix.MsuPackagePayload();
93 break;
94 default:
95 throw new NotImplementedException();
96 }
97
98 var payloadSymbol = new WixBundlePayloadSymbol
99 {
100 SourceFile = new IntermediateFieldPathValue { Path = path },
101 };
102
103 this.payloadHarvester.HarvestStandardInformation(payloadSymbol);
104
105 if (payloadSymbol.FileSize.HasValue)
106 {
107 remotePayload.Size = payloadSymbol.FileSize.Value;
108 }
109 remotePayload.Hash = payloadSymbol.Hash;
110
111 if (!String.IsNullOrEmpty(payloadSymbol.Version))
112 {
113 remotePayload.Version = payloadSymbol.Version;
114 }
115
116 if (!String.IsNullOrEmpty(payloadSymbol.Description))
117 {
118 remotePayload.Description = payloadSymbol.Description;
119 }
120
121 if (!String.IsNullOrEmpty(payloadSymbol.DisplayName))
122 {
123 remotePayload.ProductName = payloadSymbol.DisplayName;
124 }
125
126 return remotePayload;
127 }
128 }
129}