blob: 791c1cb21ceb46fb618a57052beea64bb8d1f07d (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
|
// 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.
namespace WixToolset.Harvesters
{
using System;
using WixToolset.Data;
using WixToolset.Harvesters.Extensibility;
using Wix = WixToolset.Harvesters.Serialize;
/// <summary>
/// The WiX Toolset harvester.
/// </summary>
internal class Harvester : IHarvester
{
private IHarvesterExtension harvesterExtension;
public IHarvesterCore Core { get; set; }
public IHarvesterExtension Extension
{
get
{
return this.harvesterExtension;
}
set
{
if (null != this.harvesterExtension)
{
throw new InvalidOperationException("Multiple harvester extensions specified.");
}
this.harvesterExtension = value;
}
}
public Wix.Wix Harvest(string argument)
{
if (null == argument)
{
throw new ArgumentNullException("argument");
}
if (null == this.harvesterExtension)
{
throw new WixException(ErrorMessages.HarvestTypeNotFound());
}
this.harvesterExtension.Core = this.Core;
Wix.Fragment[] fragments = this.harvesterExtension.Harvest(argument);
if (null == fragments || 0 == fragments.Length)
{
return null;
}
Wix.Wix wix = new Wix.Wix();
foreach (Wix.Fragment fragment in fragments)
{
wix.AddChild(fragment);
}
return wix;
}
}
}
|