Refactor and remove code from WixToolset.BuildTask
Rob Mensching committed
Aug 1, 2018 at 03:14 UTC
c7d69b36789b6403f5b02a975afad80f6b23b48b
17 files changed
+19
-1966
src/WixToolset.BuildTasks/Candle.cs
deleted
-199
@@ -1,199 +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
-
3
-namespace WixToolset.BuildTasks
4
-{
5
- using System;
6
- using System.Collections.Generic;
7
- using System.Diagnostics;
8
- using System.Globalization;
9
- using System.IO;
10
- using System.Text;
11
-
12
- using Microsoft.Build.Framework;
13
- using Microsoft.Build.Utilities;
14
-
15
- /// <summary>
16
- /// An MSBuild task to run the WiX compiler.
17
- /// </summary>
18
- public sealed class CandleOld : WixToolTask
19
- {
20
- private const string CandleToolName = "candle.exe";
21
-
22
- private string[] defineConstants;
23
- private ITaskItem[] extensions;
24
- private string[] includeSearchPaths;
25
- private ITaskItem outputFile;
26
- private bool pedantic;
27
- private string installerPlatform;
28
- private string preprocessToFile;
29
- private bool preprocessToStdOut;
30
- private ITaskItem[] sourceFiles;
31
- private string extensionDirectory;
32
- private string[] referencePaths;
33
-
34
- public string[] DefineConstants
35
- {
36
- get { return this.defineConstants; }
37
- set { this.defineConstants = value; }
38
- }
39
-
40
- public ITaskItem[] Extensions
41
- {
42
- get { return this.extensions; }
43
- set { this.extensions = value; }
44
- }
45
-
46
- public string[] IncludeSearchPaths
47
- {
48
- get { return this.includeSearchPaths; }
49
- set { this.includeSearchPaths = value; }
50
- }
51
-
52
- public string InstallerPlatform
53
- {
54
- get { return this.installerPlatform; }
55
- set { this.installerPlatform = value; }
56
- }
57
-
58
- [Output]
59
- [Required]
60
- public ITaskItem OutputFile
61
- {
62
- get { return this.outputFile; }
63
- set { this.outputFile = value; }
64
- }
65
-
66
- public bool Pedantic
67
- {
68
- get { return this.pedantic; }
69
- set { this.pedantic = value; }
70
- }
71
-
72
- public string PreprocessToFile
73
- {
74
- get { return this.preprocessToFile; }
75
- set { this.preprocessToFile = value; }
76
- }
77
-
78
- public bool PreprocessToStdOut
79
- {
80
- get { return this.preprocessToStdOut; }
81
- set { this.preprocessToStdOut = value; }
82
- }
83
-
84
- [Required]
85
- public ITaskItem[] SourceFiles
86
- {
87
- get { return this.sourceFiles; }
88
- set { this.sourceFiles = value; }
89
- }
90
-
91
- public string ExtensionDirectory
92
- {
93
- get { return this.extensionDirectory; }
94
- set { this.extensionDirectory = value; }
95
- }
96
-
97
- public string[] ReferencePaths
98
- {
99
- get { return this.referencePaths; }
100
- set { this.referencePaths = value; }
101
- }
102
-
103
- /// <summary>
104
- /// Get the name of the executable.
105
- /// </summary>
106
- /// <remarks>The ToolName is used with the ToolPath to get the location of candle.exe.</remarks>
107
- /// <value>The name of the executable.</value>
108
- protected override string ToolName
109
- {
110
- get { return CandleToolName; }
111
- }
112
-
113
- /// <summary>
114
- /// Get the path to the executable.
115
- /// </summary>
116
- /// <remarks>GetFullPathToTool is only called when the ToolPath property is not set (see the ToolName remarks above).</remarks>
117
- /// <returns>The full path to the executable or simply candle.exe if it's expected to be in the system path.</returns>
118
- protected override string GenerateFullPathToTool()
119
- {
120
- // If there's not a ToolPath specified, it has to be in the system path.
121
- if (String.IsNullOrEmpty(this.ToolPath))
122
- {
123
- return CandleToolName;
124
- }
125
-
126
- return Path.Combine(Path.GetFullPath(this.ToolPath), CandleToolName);
127
- }
128
-
129
- /// <summary>
130
- /// Builds a command line from options in this task.
131
- /// </summary>
132
- protected override void BuildCommandLine(WixCommandLineBuilder commandLineBuilder)
133
- {
134
- base.BuildCommandLine(commandLineBuilder);
135
-
136
- commandLineBuilder.AppendIfTrue("-p", this.PreprocessToStdOut);
137
- commandLineBuilder.AppendSwitchIfNotNull("-p", this.PreprocessToFile);
138
- commandLineBuilder.AppendSwitchIfNotNull("-out ", this.OutputFile);
139
- commandLineBuilder.AppendArrayIfNotNull("-d", this.DefineConstants);
140
- commandLineBuilder.AppendArrayIfNotNull("-I", this.IncludeSearchPaths);
141
- commandLineBuilder.AppendIfTrue("-pedantic", this.Pedantic);
142
- commandLineBuilder.AppendSwitchIfNotNull("-arch ", this.InstallerPlatform);
143
- commandLineBuilder.AppendExtensions(this.Extensions, this.ExtensionDirectory, this.referencePaths);
144
- commandLineBuilder.AppendTextIfNotNull(this.AdditionalOptions);
145
-
146
- // Support per-source-file output by looking at the SourceFiles items to
147
- // see if there is any "CandleOutput" metadata. If there is, we do our own
148
- // appending, otherwise we fall back to the built-in "append file names" code.
149
- // Note also that the wix.targets "Compile" target does *not* automagically
150
- // fix the "@(CompileObjOutput)" list to include these new output names.
151
- // If you really want to use this, you're going to have to clone the target
152
- // in your own .targets file and create the output list yourself.
153
- bool usePerSourceOutput = false;
154
- if (this.SourceFiles != null)
155
- {
156
- foreach (ITaskItem item in this.SourceFiles)
157
- {
158
- if (!String.IsNullOrEmpty(item.GetMetadata("CandleOutput")))
159
- {
160
- usePerSourceOutput = true;
161
- break;
162
- }
163
- }
164
- }
165
-
166
- if (usePerSourceOutput)
167
- {
168
- string[] newSourceNames = new string[this.SourceFiles.Length];
169
- for (int iSource = 0; iSource < this.SourceFiles.Length; ++iSource)
170
- {
171
- ITaskItem item = this.SourceFiles[iSource];
172
- if (null == item)
173
- {
174
- newSourceNames[iSource] = null;
175
- }
176
- else
177
- {
178
- string output = item.GetMetadata("CandleOutput");
179
-
180
- if (!String.IsNullOrEmpty(output))
181
- {
182
- newSourceNames[iSource] = String.Concat(item.ItemSpec, ";", output);
183
- }
184
- else
185
- {
186
- newSourceNames[iSource] = item.ItemSpec;
187
- }
188
- }
189
- }
190
-
191
- commandLineBuilder.AppendFileNamesIfNotNull(newSourceNames, " ");
192
- }
193
- else
194
- {
195
- commandLineBuilder.AppendFileNamesIfNotNull(this.SourceFiles, " ");
196
- }
197
- }
198
- }
199
-}
src/WixToolset.BuildTasks/CreateItemAvoidingInference.cs
+9
-23
@@ -3,11 +3,7 @@
3
namespace WixToolset.BuildTasks
4
{
5
using System;
6
- using System.Collections;
6
using System.Collections.Generic;
8
- using System.Globalization;
9
- using System.IO;
10
- using System.Xml;
7
using Microsoft.Build.Framework;
8
using Microsoft.Build.Utilities;
9
@@ -17,27 +13,17 @@ namespace WixToolset.BuildTasks
13
/// </summary>
14
public class CreateItemAvoidingInference : Task
15
{
20
- private string inputProperties;
21
- private ITaskItem[] outputItems;
22
-
16
/// <summary>
24
- /// The output items.
17
+ /// The properties to converty to items.
18
/// </summary>
26
- [Output]
27
- public ITaskItem[] OuputItems
28
- {
29
- get { return this.outputItems; }
30
- }
19
+ [Required]
20
+ public string InputProperties { get; set; }
21
22
/// <summary>
33
- /// The properties to converty to items.
23
+ /// The output items.
24
/// </summary>
35
- [Required]
36
- public string InputProperties
37
- {
38
- get { return this.inputProperties; }
39
- set { this.inputProperties = value; }
40
- }
25
+ [Output]
26
+ public ITaskItem[] OuputItems { get; private set; }
27
28
/// <summary>
29
/// Gets a complete list of external cabs referenced by the given installer database file.
@@ -45,14 +31,14 @@ namespace WixToolset.BuildTasks
31
/// <returns>True upon completion of the task execution.</returns>
32
public override bool Execute()
33
{
48
- List<ITaskItem> newItems = new List<ITaskItem>();
34
+ var newItems = new List<ITaskItem>();
35
50
- foreach (string property in this.inputProperties.Split(new char[] { ';' }, StringSplitOptions.RemoveEmptyEntries))
36
+ foreach (var property in this.InputProperties.Split(new char[] { ';' }, StringSplitOptions.RemoveEmptyEntries))
37
{
38
newItems.Add(new TaskItem(property));
39
}
40
55
- this.outputItems = newItems.ToArray();
41
+ this.OuputItems = newItems.ToArray();
42
43
return true;
44
}
src/WixToolset.BuildTasks/DoIt-Compile.cs
deleted
-192
@@ -1,192 +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
-
3
-#if false
4
-namespace WixToolset.BuildTasks
5
-{
6
- using System;
7
- using System.Collections.Generic;
8
- using System.IO;
9
- using Microsoft.Build.Framework;
10
- using WixToolset.Data;
11
-
12
- /// <summary>
13
- /// An MSBuild task to run the WiX compiler.
14
- /// </summary>
15
- public sealed class Candle : TaskBase
16
- {
17
- public string[] DefineConstants { get; set; }
18
-
19
- public ITaskItem[] Extensions { get; set; }
20
-
21
- public string[] IncludeSearchPaths { get; set; }
22
-
23
- public string InstallerPlatform { get; set; }
24
-
25
- [Output]
26
- [Required]
27
- public ITaskItem OutputFile { get; set; }
28
-
29
- public bool Pedantic { get; set; }
30
-
31
- public string PreprocessToFile { get; set; }
32
-
33
- public bool PreprocessToStdOut { get; set; }
34
-
35
- [Required]
36
- public ITaskItem IntermediateDirectory { get; set; }
37
-
38
- [Required]
39
- public ITaskItem[] SourceFiles { get; set; }
40
-
41
- public string ExtensionDirectory { get; set; }
42
-
43
- public string[] ReferencePaths { get; set; }
44
-
45
- protected override void ExecuteCore()
46
- {
47
- Messaging.Instance.InitializeAppName("WIX", "wix.exe");
48
-
49
- Messaging.Instance.Display += this.DisplayMessage;
50
-
51
- var preprocessor = new Preprocessor();
52
-
53
- var compiler = new Compiler();
54
-
55
- var sourceFiles = this.GatherSourceFiles();
56
-
57
- var preprocessorVariables = this.GatherPreprocessorVariables();
58
-
59
- foreach (var sourceFile in sourceFiles)
60
- {
61
- var document = preprocessor.Process(sourceFile.SourcePath, preprocessorVariables);
62
-
63
- var intermediate = compiler.Compile(document);
64
-
65
- intermediate.Save(sourceFile.OutputPath);
66
- }
67
- }
68
-
69
- private void DisplayMessage(object sender, DisplayEventArgs e)
70
- {
71
- this.Log.LogMessageFromText(e.Message, MessageImportance.Normal);
72
- }
73
-
74
- private IEnumerable<SourceFile> GatherSourceFiles()
75
- {
76
- var files = new List<SourceFile>();
77
-
78
- foreach (var item in this.SourceFiles)
79
- {
80
- var sourcePath = item.ItemSpec;
81
- var outputPath = item.GetMetadata("CandleOutput") ?? this.OutputFile?.ItemSpec;
82
-
83
- if (String.IsNullOrEmpty(outputPath))
84
- {
85
- outputPath = Path.Combine(this.IntermediateDirectory.ItemSpec, Path.GetFileNameWithoutExtension(sourcePath) + ".wir");
86
- }
87
-
88
- files.Add(new SourceFile(sourcePath, outputPath));
89
- }
90
-
91
- return files;
92
- }
93
-
94
- private IDictionary<string, string> GatherPreprocessorVariables()
95
- {
96
- var variables = new Dictionary<string, string>();
97
-
98
- foreach (var pair in this.DefineConstants)
99
- {
100
- string[] value = pair.Split(new[] { '=' }, 2);
101
-
102
- if (variables.ContainsKey(value[0]))
103
- {
104
- //Messaging.Instance.OnMessage(WixErrors.DuplicateVariableDefinition(value[0], (1 == value.Length) ? String.Empty : value[1], this.PreprocessorVariables[value[0]]));
105
- break;
106
- }
107
-
108
- if (1 == value.Length)
109
- {
110
- variables.Add(value[0], String.Empty);
111
- }
112
- else
113
- {
114
- variables.Add(value[0], value[1]);
115
- }
116
- }
117
-
118
- return variables;
119
- }
120
-
121
- ///// <summary>
122
- ///// Builds a command line from options in this task.
123
- ///// </summary>
124
- //protected override void BuildCommandLine(WixCommandLineBuilder commandLineBuilder)
125
- //{
126
- // base.BuildCommandLine(commandLineBuilder);
127
-
128
- // commandLineBuilder.AppendIfTrue("-p", this.PreprocessToStdOut);
129
- // commandLineBuilder.AppendSwitchIfNotNull("-p", this.PreprocessToFile);
130
- // commandLineBuilder.AppendSwitchIfNotNull("-out ", this.OutputFile);
131
- // commandLineBuilder.AppendArrayIfNotNull("-d", this.DefineConstants);
132
- // commandLineBuilder.AppendArrayIfNotNull("-I", this.IncludeSearchPaths);
133
- // commandLineBuilder.AppendIfTrue("-pedantic", this.Pedantic);
134
- // commandLineBuilder.AppendSwitchIfNotNull("-arch ", this.InstallerPlatform);
135
- // commandLineBuilder.AppendExtensions(this.Extensions, this.ExtensionDirectory, this.referencePaths);
136
- // commandLineBuilder.AppendTextIfNotNull(this.AdditionalOptions);
137
-
138
- // // Support per-source-file output by looking at the SourceFiles items to
139
- // // see if there is any "CandleOutput" metadata. If there is, we do our own
140
- // // appending, otherwise we fall back to the built-in "append file names" code.
141
- // // Note also that the wix.targets "Compile" target does *not* automagically
142
- // // fix the "@(CompileObjOutput)" list to include these new output names.
143
- // // If you really want to use this, you're going to have to clone the target
144
- // // in your own .targets file and create the output list yourself.
145
- // bool usePerSourceOutput = false;
146
- // if (this.SourceFiles != null)
147
- // {
148
- // foreach (ITaskItem item in this.SourceFiles)
149
- // {
150
- // if (!String.IsNullOrEmpty(item.GetMetadata("CandleOutput")))
151
- // {
152
- // usePerSourceOutput = true;
153
- // break;
154
- // }
155
- // }
156
- // }
157
-
158
- // if (usePerSourceOutput)
159
- // {
160
- // string[] newSourceNames = new string[this.SourceFiles.Length];
161
- // for (int iSource = 0; iSource < this.SourceFiles.Length; ++iSource)
162
- // {
163
- // ITaskItem item = this.SourceFiles[iSource];
164
- // if (null == item)
165
- // {
166
- // newSourceNames[iSource] = null;
167
- // }
168
- // else
169
- // {
170
- // string output = item.GetMetadata("CandleOutput");
171
-
172
- // if (!String.IsNullOrEmpty(output))
173
- // {
174
- // newSourceNames[iSource] = String.Concat(item.ItemSpec, ";", output);
175
- // }
176
- // else
177
- // {
178
- // newSourceNames[iSource] = item.ItemSpec;
179
- // }
180
- // }
181
- // }
182
-
183
- // commandLineBuilder.AppendFileNamesIfNotNull(newSourceNames, " ");
184
- // }
185
- // else
186
- // {
187
- // commandLineBuilder.AppendFileNamesIfNotNull(this.SourceFiles, " ");
188
- // }
189
- //}
190
- }
191
-}
192
-#endif
src/WixToolset.BuildTasks/FileSearchHelperMethods.cs
-4
@@ -3,11 +3,7 @@
3
namespace WixToolset.BuildTasks
4
{
5
using System;
6
- using System.Collections.Generic;
7
- using System.Diagnostics.CodeAnalysis;
6
using System.IO;
9
- using System.Text;
10
- using Microsoft.Build.Framework;
7
8
/// <summary>
9
/// Contains helper methods on searching for files
src/WixToolset.BuildTasks/HeatDirectory.cs
+2
@@ -4,6 +4,7 @@ namespace WixToolset.BuildTasks
4
{
5
using Microsoft.Build.Framework;
6
7
+#if false
8
public sealed class HeatDirectory : HeatTask
9
{
10
private string directory;
@@ -100,4 +101,5 @@ namespace WixToolset.BuildTasks
101
return commandLineBuilder.ToString();
102
}
103
}
104
+#endif
105
}
src/WixToolset.BuildTasks/HeatFile.cs
+2
@@ -4,6 +4,7 @@ namespace WixToolset.BuildTasks
4
{
5
using Microsoft.Build.Framework;
6
7
+#if false
8
public sealed class HeatFile : HeatTask
9
{
10
private string file;
@@ -92,4 +93,5 @@ namespace WixToolset.BuildTasks
93
return commandLineBuilder.ToString();
94
}
95
}
96
+#endif
97
}
src/WixToolset.BuildTasks/HeatProject.cs
+2
@@ -4,6 +4,7 @@ namespace WixToolset.BuildTasks
4
{
5
using Microsoft.Build.Framework;
6
7
+#if false
8
public sealed class HeatProject : HeatTask
9
{
10
private string configuration;
@@ -105,4 +106,5 @@ namespace WixToolset.BuildTasks
106
return commandLineBuilder.ToString();
107
}
108
}
109
+#endif
110
}
src/WixToolset.BuildTasks/HeatTask.cs
+2
@@ -11,6 +11,7 @@ namespace WixToolset.BuildTasks
11
using Microsoft.Build.Framework;
12
using Microsoft.Build.Utilities;
13
14
+#if false
15
/// <summary>
16
/// A base MSBuild task to run the WiX harvester.
17
/// Specific harvester tasks should extend this class.
@@ -118,4 +119,5 @@ namespace WixToolset.BuildTasks
119
commandLineBuilder.AppendSwitchIfNotNull("-out ", this.OutputFile);
120
}
121
}
122
+#endif
123
}
src/WixToolset.BuildTasks/Insignia.cs
+2
@@ -11,6 +11,7 @@ namespace WixToolset.BuildTasks
11
using Microsoft.Build.Framework;
12
using Microsoft.Build.Utilities;
13
14
+#if false
15
/// <summary>
16
/// An MSBuild task to run the WiX transform generator.
17
/// </summary>
@@ -115,4 +116,5 @@ namespace WixToolset.BuildTasks
116
return returnCode;
117
}
118
}
119
+#endif
120
}
src/WixToolset.BuildTasks/Light.cs
deleted
-488
@@ -1,488 +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
-
3
-namespace WixToolset.BuildTasks
4
-{
5
- using System;
6
- using System.Collections.Generic;
7
- using System.Diagnostics;
8
- using System.Diagnostics.CodeAnalysis;
9
- using System.Globalization;
10
- using System.IO;
11
- using System.Text;
12
-
13
- using Microsoft.Build.Framework;
14
- using Microsoft.Build.Utilities;
15
-
16
- /// <summary>
17
- /// An MSBuild task to run the WiX linker.
18
- /// </summary>
19
- public sealed class Light : WixToolTask
20
- {
21
- private const string LightToolName = "Light.exe";
22
-
23
- private string additionalCub;
24
- private bool allowIdenticalRows;
25
- private bool allowUnresolvedReferences;
26
- private string[] baseInputPaths;
27
- private ITaskItem[] bindInputPaths;
28
- private bool backwardsCompatibleGuidGeneration;
29
- private bool bindFiles;
30
- private ITaskItem builtOutputsFile;
31
- private string cabinetCachePath;
32
- private int cabinetCreationThreadCount = WixCommandLineBuilder.Unspecified;
33
- private ITaskItem contentsFile;
34
- private string cultures;
35
- private string customBinder;
36
- private string defaultCompressionLevel;
37
- private ITaskItem[] extensions;
38
- private string[] ices;
39
- private bool leaveTemporaryFiles;
40
- private ITaskItem[] localizationFiles;
41
- private ITaskItem[] objectFiles;
42
- private bool outputAsXml;
43
- private ITaskItem outputsFile;
44
- private ITaskItem outputFile;
45
- private ITaskItem pdbOutputFile;
46
- private ITaskItem wixProjectFile;
47
- private bool pedantic;
48
- private bool reuseCabinetCache;
49
- private bool suppressAclReset;
50
- private bool suppressAssemblies;
51
- private bool suppressDefaultAdminSequenceActions;
52
- private bool suppressDefaultAdvSequenceActions;
53
- private bool suppressDefaultUISequenceActions;
54
- private bool dropUnrealTables;
55
- private bool exactAssemblyVersions;
56
- private bool suppressFileHashAndInfo;
57
- private bool suppressFiles;
58
- private bool suppressIntermediateFileVersionMatching;
59
- private string[] suppressIces;
60
- private bool suppressLayout;
61
- private bool suppressLocalization;
62
- private bool suppressMsiAssemblyTableProcessing;
63
- private bool suppressPdbOutput;
64
- private bool suppressSchemaValidation;
65
- private bool suppressValidation;
66
- private bool suppressTagSectionIdAttributeOnTuples;
67
- private ITaskItem unreferencedSymbolsFile;
68
- private string[] wixVariables;
69
- private string extensionDirectory;
70
- private string[] referencePaths;
71
-
72
- /// <summary>
73
- /// Creates a new light task.
74
- /// </summary>
75
- /// <remarks>
76
- /// Defaults to running the task as a separate process, instead of in-proc
77
- /// which is the default for WixToolTasks. This allows the Win32 manifest file
78
- /// embedded in light.exe to enable reg-free COM interop with mergemod.dll.
79
- /// </remarks>
80
- public Light()
81
- {
82
- }
83
-
84
- public string AdditionalCub
85
- {
86
- get { return this.additionalCub; }
87
- set { this.additionalCub = value; }
88
- }
89
-
90
- public bool AllowIdenticalRows
91
- {
92
- get { return this.allowIdenticalRows; }
93
- set { this.allowIdenticalRows = value; }
94
- }
95
-
96
- public bool AllowUnresolvedReferences
97
- {
98
- get { return this.allowUnresolvedReferences; }
99
- set { this.allowUnresolvedReferences = value; }
100
- }
101
-
102
- // TODO: remove this property entirely in v4.0
103
- [Obsolete("Use BindInputPaths instead of BaseInputPaths.")]
104
- public string[] BaseInputPaths
105
- {
106
- get { return this.baseInputPaths; }
107
- set { this.baseInputPaths = value; }
108
- }
109
-
110
- public ITaskItem[] BindInputPaths
111
- {
112
- get { return this.bindInputPaths; }
113
- set { this.bindInputPaths = value; }
114
- }
115
-
116
- public bool BackwardsCompatibleGuidGeneration
117
- {
118
- get { return this.backwardsCompatibleGuidGeneration; }
119
- set { this.backwardsCompatibleGuidGeneration = value; }
120
- }
121
-
122
- public bool BindFiles
123
- {
124
- get { return this.bindFiles; }
125
- set { this.bindFiles = value; }
126
- }
127
-
128
- public string CabinetCachePath
129
- {
130
- get { return this.cabinetCachePath; }
131
- set { this.cabinetCachePath = value; }
132
- }
133
-
134
- public int CabinetCreationThreadCount
135
- {
136
- get { return this.cabinetCreationThreadCount; }
137
- set { this.cabinetCreationThreadCount = value; }
138
- }
139
-
140
- public ITaskItem BindBuiltOutputsFile
141
- {
142
- get { return this.builtOutputsFile; }
143
- set { this.builtOutputsFile = value; }
144
- }
145
-
146
- public ITaskItem BindContentsFile
147
- {
148
- get { return this.contentsFile; }
149
- set { this.contentsFile = value; }
150
- }
151
-
152
- public ITaskItem BindOutputsFile
153
- {
154
- get { return this.outputsFile; }
155
- set { this.outputsFile = value; }
156
- }
157
-
158
- public string Cultures
159
- {
160
- get { return this.cultures; }
161
- set { this.cultures = value; }
162
- }
163
-
164
- public string CustomBinder
165
- {
166
- get { return this.customBinder; }
167
- set { this.customBinder = value; }
168
- }
169
-
170
- public string DefaultCompressionLevel
171
- {
172
- get { return this.defaultCompressionLevel; }
173
- set { this.defaultCompressionLevel = value; }
174
- }
175
-
176
- public bool DropUnrealTables
177
- {
178
- get { return this.dropUnrealTables; }
179
- set { this.dropUnrealTables = value; }
180
- }
181
-
182
- public bool ExactAssemblyVersions
183
- {
184
- get { return this.exactAssemblyVersions; }
185
- set { this.exactAssemblyVersions = value; }
186
- }
187
-
188
- public ITaskItem[] Extensions
189
- {
190
- get { return this.extensions; }
191
- set { this.extensions = value; }
192
- }
193
-
194
- public string[] Ices
195
- {
196
- get { return this.ices; }
197
- set { this.ices = value; }
198
- }
199
-
200
- public bool LeaveTemporaryFiles
201
- {
202
- get { return this.leaveTemporaryFiles; }
203
- set { this.leaveTemporaryFiles = value; }
204
- }
205
-
206
- public ITaskItem[] LocalizationFiles
207
- {
208
- get { return this.localizationFiles; }
209
- set { this.localizationFiles = value; }
210
- }
211
-
212
- [Required]
213
- public ITaskItem[] ObjectFiles
214
- {
215
- get { return this.objectFiles; }
216
- set { this.objectFiles = value; }
217
- }
218
-
219
- public bool OutputAsXml
220
- {
221
- get { return this.outputAsXml; }
222
- set { this.outputAsXml = value; }
223
- }
224
-
225
- [Required]
226
- [Output]
227
- public ITaskItem OutputFile
228
- {
229
- get { return this.outputFile; }
230
- set { this.outputFile = value; }
231
- }
232
-
233
- [Output]
234
- public ITaskItem PdbOutputFile
235
- {
236
- get { return this.pdbOutputFile; }
237
- set { this.pdbOutputFile = value; }
238
- }
239
-
240
- public bool Pedantic
241
- {
242
- get { return this.pedantic; }
243
- set { this.pedantic = value; }
244
- }
245
-
246
- public bool ReuseCabinetCache
247
- {
248
- get { return this.reuseCabinetCache; }
249
- set { this.reuseCabinetCache = value; }
250
- }
251
-
252
- public bool SuppressAclReset
253
- {
254
- get { return this.suppressAclReset; }
255
- set { this.suppressAclReset = value; }
256
- }
257
-
258
- public bool SuppressAssemblies
259
- {
260
- get { return this.suppressAssemblies; }
261
- set { this.suppressAssemblies = value; }
262
- }
263
-
264
- public bool SuppressDefaultAdminSequenceActions
265
- {
266
- get { return this.suppressDefaultAdminSequenceActions; }
267
- set { this.suppressDefaultAdminSequenceActions = value; }
268
- }
269
-
270
- public bool SuppressDefaultAdvSequenceActions
271
- {
272
- get { return this.suppressDefaultAdvSequenceActions; }
273
- set { this.suppressDefaultAdvSequenceActions = value; }
274
- }
275
-
276
- public bool SuppressDefaultUISequenceActions
277
- {
278
- get { return this.suppressDefaultUISequenceActions; }
279
- set { this.suppressDefaultUISequenceActions = value; }
280
- }
281
-
282
- public bool SuppressFileHashAndInfo
283
- {
284
- get { return this.suppressFileHashAndInfo; }
285
- set { this.suppressFileHashAndInfo = value; }
286
- }
287
-
288
- public bool SuppressFiles
289
- {
290
- get { return this.suppressFiles; }
291
- set { this.suppressFiles = value; }
292
- }
293
-
294
- public bool SuppressIntermediateFileVersionMatching
295
- {
296
- get { return this.suppressIntermediateFileVersionMatching; }
297
- set { this.suppressIntermediateFileVersionMatching = value; }
298
- }
299
-
300
- public string[] SuppressIces
301
- {
302
- get { return this.suppressIces; }
303
- set { this.suppressIces = value; }
304
- }
305
-
306
- public bool SuppressLayout
307
- {
308
- get { return this.suppressLayout; }
309
- set { this.suppressLayout = value; }
310
- }
311
-
312
- public bool SuppressLocalization
313
- {
314
- get { return this.suppressLocalization; }
315
- set { this.suppressLocalization = value; }
316
- }
317
-
318
- [SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly")]
319
- public bool SuppressMsiAssemblyTableProcessing
320
- {
321
- get { return this.suppressMsiAssemblyTableProcessing; }
322
- set { this.suppressMsiAssemblyTableProcessing = value; }
323
- }
324
-
325
- public bool SuppressPdbOutput
326
- {
327
- get { return this.suppressPdbOutput; }
328
- set { this.suppressPdbOutput = value; }
329
- }
330
-
331
- public bool SuppressSchemaValidation
332
- {
333
- get { return this.suppressSchemaValidation; }
334
- set { this.suppressSchemaValidation = value; }
335
- }
336
-
337
- public bool SuppressValidation
338
- {
339
- get { return this.suppressValidation; }
340
- set { this.suppressValidation = value; }
341
- }
342
-
343
- public bool SuppressTagSectionIdAttributeOnTuples
344
- {
345
- get { return this.suppressTagSectionIdAttributeOnTuples; }
346
- set { this.suppressTagSectionIdAttributeOnTuples = value; }
347
- }
348
-
349
- [Output]
350
- public ITaskItem UnreferencedSymbolsFile
351
- {
352
- get { return this.unreferencedSymbolsFile; }
353
- set { this.unreferencedSymbolsFile = value; }
354
- }
355
-
356
- [SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly")]
357
- public ITaskItem WixProjectFile
358
- {
359
- get { return this.wixProjectFile; }
360
- set { this.wixProjectFile = value; }
361
- }
362
-
363
- [SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly")]
364
- public string[] WixVariables
365
- {
366
- get { return this.wixVariables; }
367
- set { this.wixVariables = value; }
368
- }
369
-
370
- public string ExtensionDirectory
371
- {
372
- get { return this.extensionDirectory; }
373
- set { this.extensionDirectory = value; }
374
- }
375
-
376
- public string[] ReferencePaths
377
- {
378
- get { return this.referencePaths; }
379
- set { this.referencePaths = value; }
380
- }
381
-
382
- /// <summary>
383
- /// Get the name of the executable.
384
- /// </summary>
385
- /// <remarks>The ToolName is used with the ToolPath to get the location of light.exe.</remarks>
386
- /// <value>The name of the executable.</value>
387
- protected override string ToolName
388
- {
389
- get { return LightToolName; }
390
- }
391
-
392
- /// <summary>
393
- /// Get the path to the executable.
394
- /// </summary>
395
- /// <remarks>GetFullPathToTool is only called when the ToolPath property is not set (see the ToolName remarks above).</remarks>
396
- /// <returns>The full path to the executable or simply light.exe if it's expected to be in the system path.</returns>
397
- protected override string GenerateFullPathToTool()
398
- {
399
- // If there's not a ToolPath specified, it has to be in the system path.
400
- if (String.IsNullOrEmpty(this.ToolPath))
401
- {
402
- return LightToolName;
403
- }
404
-
405
- return Path.Combine(Path.GetFullPath(this.ToolPath), LightToolName);
406
- }
407
-
408
- /// <summary>
409
- /// Builds a command line from options in this task.
410
- /// </summary>
411
- protected override void BuildCommandLine(WixCommandLineBuilder commandLineBuilder)
412
- {
413
- // Always put the output first so it is easy to find in the log.
414
- commandLineBuilder.AppendSwitchIfNotNull("-out ", this.OutputFile);
415
- commandLineBuilder.AppendSwitchIfNotNull("-pdbout ", this.PdbOutputFile);
416
-
417
- base.BuildCommandLine(commandLineBuilder);
418
-
419
- commandLineBuilder.AppendIfTrue("-ai", this.AllowIdenticalRows);
420
- commandLineBuilder.AppendIfTrue("-au", this.AllowUnresolvedReferences);
421
- commandLineBuilder.AppendArrayIfNotNull("-b ", this.baseInputPaths);
422
-
423
- if (null != this.BindInputPaths)
424
- {
425
- Queue<String> formattedBindInputPaths = new Queue<String>();
426
- foreach (ITaskItem item in this.BindInputPaths)
427
- {
428
- String formattedPath = string.Empty;
429
- String bindName = item.GetMetadata("BindName");
430
- if (!String.IsNullOrEmpty(bindName))
431
- {
432
- formattedPath = String.Concat(bindName, "=", item.GetMetadata("FullPath"));
433
- }
434
- else
435
- {
436
- formattedPath = item.GetMetadata("FullPath");
437
- }
438
- formattedBindInputPaths.Enqueue(formattedPath);
439
- }
440
- commandLineBuilder.AppendArrayIfNotNull("-b ", formattedBindInputPaths.ToArray());
441
- }
442
-
443
- commandLineBuilder.AppendIfTrue("-bcgg", this.BackwardsCompatibleGuidGeneration);
444
- commandLineBuilder.AppendIfTrue("-bf", this.BindFiles);
445
- commandLineBuilder.AppendSwitchIfNotNull("-cc ", this.CabinetCachePath);
446
- commandLineBuilder.AppendIfSpecified("-ct ", this.CabinetCreationThreadCount);
447
- commandLineBuilder.AppendSwitchIfNotNull("-cub ", this.AdditionalCub);
448
- commandLineBuilder.AppendSwitchIfNotNull("-cultures:", this.Cultures);
449
- commandLineBuilder.AppendSwitchIfNotNull("-binder ", this.CustomBinder);
450
- commandLineBuilder.AppendArrayIfNotNull("-d", this.WixVariables);
451
- commandLineBuilder.AppendSwitchIfNotNull("-dcl:", this.DefaultCompressionLevel);
452
- commandLineBuilder.AppendIfTrue("-dut", this.DropUnrealTables);
453
- commandLineBuilder.AppendIfTrue("-eav", this.ExactAssemblyVersions);
454
- commandLineBuilder.AppendExtensions(this.Extensions, this.ExtensionDirectory, this.referencePaths);
455
- commandLineBuilder.AppendArrayIfNotNull("-ice:", this.Ices);
456
- commandLineBuilder.AppendArrayIfNotNull("-loc ", this.LocalizationFiles);
457
- commandLineBuilder.AppendIfTrue("-notidy", this.LeaveTemporaryFiles);
458
- commandLineBuilder.AppendIfTrue("-pedantic", this.Pedantic);
459
- commandLineBuilder.AppendIfTrue("-reusecab", this.ReuseCabinetCache);
460
- commandLineBuilder.AppendIfTrue("-sa", this.SuppressAssemblies);
461
- commandLineBuilder.AppendIfTrue("-sacl", this.SuppressAclReset);
462
- commandLineBuilder.AppendIfTrue("-sadmin", this.SuppressDefaultAdminSequenceActions);
463
- commandLineBuilder.AppendIfTrue("-sadv", this.SuppressDefaultAdvSequenceActions);
464
- commandLineBuilder.AppendArrayIfNotNull("-sice:", this.SuppressIces);
465
- commandLineBuilder.AppendIfTrue("-sma", this.SuppressMsiAssemblyTableProcessing);
466
- commandLineBuilder.AppendIfTrue("-sf", this.SuppressFiles);
467
- commandLineBuilder.AppendIfTrue("-sh", this.SuppressFileHashAndInfo);
468
- commandLineBuilder.AppendIfTrue("-sl", this.SuppressLayout);
469
- commandLineBuilder.AppendIfTrue("-sloc", this.SuppressLocalization);
470
- commandLineBuilder.AppendIfTrue("-spdb", this.SuppressPdbOutput);
471
- commandLineBuilder.AppendIfTrue("-ss", this.SuppressSchemaValidation);
472
- commandLineBuilder.AppendIfTrue("-sts", this.SuppressTagSectionIdAttributeOnTuples);
473
- commandLineBuilder.AppendIfTrue("-sui", this.SuppressDefaultUISequenceActions);
474
- commandLineBuilder.AppendIfTrue("-sv", this.SuppressIntermediateFileVersionMatching);
475
- commandLineBuilder.AppendIfTrue("-sval", this.SuppressValidation);
476
- commandLineBuilder.AppendSwitchIfNotNull("-usf ", this.UnreferencedSymbolsFile);
477
- commandLineBuilder.AppendIfTrue("-xo", this.OutputAsXml);
478
- commandLineBuilder.AppendSwitchIfNotNull("-contentsfile ", this.BindContentsFile);
479
- commandLineBuilder.AppendSwitchIfNotNull("-outputsfile ", this.BindOutputsFile);
480
- commandLineBuilder.AppendSwitchIfNotNull("-builtoutputsfile ", this.BindBuiltOutputsFile);
481
- commandLineBuilder.AppendSwitchIfNotNull("-wixprojectfile ", this.WixProjectFile);
482
- commandLineBuilder.AppendTextIfNotNull(this.AdditionalOptions);
483
-
484
- List<string> objectFilePaths = AdjustFilePaths(this.objectFiles, this.ReferencePaths);
485
- commandLineBuilder.AppendFileNamesIfNotNull(objectFilePaths.ToArray(), " ");
486
- }
487
- }
488
-}
src/WixToolset.BuildTasks/Lit.cs
deleted
-178
@@ -1,178 +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
-
3
-namespace WixToolset.BuildTasks
4
-{
5
- using System;
6
- using System.Collections.Generic;
7
- using System.Diagnostics;
8
- using System.Globalization;
9
- using System.IO;
10
- using System.Text;
11
-
12
- using Microsoft.Build.Framework;
13
- using Microsoft.Build.Utilities;
14
-
15
- /// <summary>
16
- /// An MSBuild task to run the WiX lib tool.
17
- /// </summary>
18
- public sealed class Lit : WixToolTask
19
- {
20
- private const string LitToolName = "lit.exe";
21
-
22
- private string[] baseInputPaths;
23
- private ITaskItem[] bindInputPaths;
24
- private bool bindFiles;
25
- private ITaskItem[] extensions;
26
- private ITaskItem[] localizationFiles;
27
- private ITaskItem[] objectFiles;
28
- private ITaskItem outputFile;
29
- private bool pedantic;
30
- private bool suppressIntermediateFileVersionMatching;
31
- private bool suppressSchemaValidation;
32
- private string extensionDirectory;
33
- private string[] referencePaths;
34
-
35
- // TODO: remove this property entirely in v4.0
36
- [Obsolete("Use BindInputPaths instead of BaseInputPaths.")]
37
- public string[] BaseInputPaths
38
- {
39
- get { return this.baseInputPaths; }
40
- set { this.baseInputPaths = value; }
41
- }
42
-
43
- public ITaskItem[] BindInputPaths
44
- {
45
- get { return this.bindInputPaths; }
46
- set { this.bindInputPaths = value; }
47
- }
48
-
49
- public bool BindFiles
50
- {
51
- get { return this.bindFiles; }
52
- set { this.bindFiles = value; }
53
- }
54
-
55
- public ITaskItem[] Extensions
56
- {
57
- get { return this.extensions; }
58
- set { this.extensions = value; }
59
- }
60
-
61
- public ITaskItem[] LocalizationFiles
62
- {
63
- get { return this.localizationFiles; }
64
- set { this.localizationFiles = value; }
65
- }
66
-
67
- [Required]
68
- public ITaskItem[] ObjectFiles
69
- {
70
- get { return this.objectFiles; }
71
- set { this.objectFiles = value; }
72
- }
73
-
74
- [Required]
75
- [Output]
76
- public ITaskItem OutputFile
77
- {
78
- get { return this.outputFile; }
79
- set { this.outputFile = value; }
80
- }
81
-
82
- public bool Pedantic
83
- {
84
- get { return this.pedantic; }
85
- set { this.pedantic = value; }
86
- }
87
-
88
- public bool SuppressIntermediateFileVersionMatching
89
- {
90
- get { return this.suppressIntermediateFileVersionMatching; }
91
- set { this.suppressIntermediateFileVersionMatching = value; }
92
- }
93
-
94
- public bool SuppressSchemaValidation
95
- {
96
- get { return this.suppressSchemaValidation; }
97
- set { this.suppressSchemaValidation = value; }
98
- }
99
-
100
- public string ExtensionDirectory
101
- {
102
- get { return this.extensionDirectory; }
103
- set { this.extensionDirectory = value; }
104
- }
105
-
106
- public string[] ReferencePaths
107
- {
108
- get { return this.referencePaths; }
109
- set { this.referencePaths = value; }
110
- }
111
-
112
- /// <summary>
113
- /// Get the name of the executable.
114
- /// </summary>
115
- /// <remarks>The ToolName is used with the ToolPath to get the location of lit.exe</remarks>
116
- /// <value>The name of the executable.</value>
117
- protected override string ToolName
118
- {
119
- get { return LitToolName; }
120
- }
121
-
122
- /// <summary>
123
- /// Get the path to the executable.
124
- /// </summary>
125
- /// <remarks>GetFullPathToTool is only called when the ToolPath property is not set (see the ToolName remarks above).</remarks>
126
- /// <returns>The full path to the executable or simply lit.exe if it's expected to be in the system path.</returns>
127
- protected override string GenerateFullPathToTool()
128
- {
129
- // If there's not a ToolPath specified, it has to be in the system path.
130
- if (String.IsNullOrEmpty(this.ToolPath))
131
- {
132
- return LitToolName;
133
- }
134
-
135
- return Path.Combine(Path.GetFullPath(this.ToolPath), LitToolName);
136
- }
137
-
138
- /// <summary>
139
- /// Builds a command line from options in this task.
140
- /// </summary>
141
- protected override void BuildCommandLine(WixCommandLineBuilder commandLineBuilder)
142
- {
143
- base.BuildCommandLine(commandLineBuilder);
144
-
145
- commandLineBuilder.AppendSwitchIfNotNull("-out ", this.OutputFile);
146
- commandLineBuilder.AppendArrayIfNotNull("-b ", this.baseInputPaths);
147
- if (null != this.BindInputPaths)
148
- {
149
- Queue<String> formattedBindInputPaths = new Queue<String>();
150
- foreach (ITaskItem item in this.BindInputPaths)
151
- {
152
- String formattedPath = string.Empty;
153
- String bindName = item.GetMetadata("BindName");
154
- if (!String.IsNullOrEmpty(item.GetMetadata("BindName")))
155
- {
156
- formattedPath = String.Concat(bindName, "=", item.GetMetadata("FullPath"));
157
- }
158
- else
159
- {
160
- formattedPath = item.GetMetadata("FullPath");
161
- }
162
- formattedBindInputPaths.Enqueue(formattedPath);
163
- }
164
- commandLineBuilder.AppendArrayIfNotNull("-b ", formattedBindInputPaths.ToArray());
165
- }
166
- commandLineBuilder.AppendIfTrue("-bf", this.BindFiles);
167
- commandLineBuilder.AppendExtensions(this.extensions, this.ExtensionDirectory, this.referencePaths);
168
- commandLineBuilder.AppendArrayIfNotNull("-loc ", this.LocalizationFiles);
169
- commandLineBuilder.AppendIfTrue("-pedantic", this.Pedantic);
170
- commandLineBuilder.AppendIfTrue("-ss", this.SuppressSchemaValidation);
171
- commandLineBuilder.AppendIfTrue("-sv", this.SuppressIntermediateFileVersionMatching);
172
- commandLineBuilder.AppendTextIfNotNull(this.AdditionalOptions);
173
-
174
- List<string> objectFilePaths = AdjustFilePaths(this.objectFiles, this.ReferencePaths);
175
- commandLineBuilder.AppendFileNamesIfNotNull(objectFilePaths.ToArray(), " ");
176
- }
177
- }
178
-}
src/WixToolset.BuildTasks/Pyro.cs
deleted
-140
@@ -1,140 +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
-
3
-namespace WixToolset.BuildTasks
4
-{
5
- using System;
6
- using System.Collections.Generic;
7
- using System.IO;
8
- using Microsoft.Build.Framework;
9
-
10
- /// <summary>
11
- /// An MSBuild task to run the WiX patch builder.
12
- /// </summary>
13
- public sealed class Pyro : WixToolTask
14
- {
15
- private const string PyroToolName = "pyro.exe";
16
-
17
- public bool BinaryDeltaPatch { get; set; }
18
- public string CabinetCachePath { get; set; }
19
- public string ExtensionDirectory { get; set; }
20
- public ITaskItem[] Extensions { get; set; }
21
- public bool LeaveTemporaryFiles { get; set; }
22
- public string[] ReferencePaths { get; set; }
23
- public bool ReuseCabinetCache { get; set; }
24
- public bool SuppressAssemblies { get; set; }
25
- public bool SuppressFiles { get; set; }
26
- public bool SuppressFileHashAndInfo { get; set; }
27
- public bool SuppressPdbOutput { get; set; }
28
-
29
- [Required]
30
- public string DefaultBaselineId { get; set; }
31
-
32
- public ITaskItem[] BindInputPathsForTarget { get; set; }
33
- public ITaskItem[] BindInputPathsForUpdated { get; set; }
34
-
35
- [Required]
36
- public ITaskItem InputFile { get; set; }
37
-
38
- [Required]
39
- [Output]
40
- public ITaskItem OutputFile { get; set; }
41
-
42
- [Output]
43
- public ITaskItem PdbOutputFile { get; set; }
44
-
45
- [Required]
46
- public ITaskItem[] Transforms { get; set; }
47
-
48
- /// <summary>
49
- /// Get the name of the executable.
50
- /// </summary>
51
- /// <remarks>The ToolName is used with the ToolPath to get the location of pyro.exe.</remarks>
52
- /// <value>The name of the executable.</value>
53
- protected override string ToolName
54
- {
55
- get { return PyroToolName; }
56
- }
57
-
58
- /// <summary>
59
- /// Get the path to the executable.
60
- /// </summary>
61
- /// <remarks>GetFullPathToTool is only called when the ToolPath property is not set (see the ToolName remarks above).</remarks>
62
- /// <returns>The full path to the executable or simply torch.exe if it's expected to be in the system path.</returns>
63
- protected override string GenerateFullPathToTool()
64
- {
65
- // If there's not a ToolPath specified, it has to be in the system path.
66
- if (String.IsNullOrEmpty(this.ToolPath))
67
- {
68
- return PyroToolName;
69
- }
70
-
71
- return Path.Combine(Path.GetFullPath(this.ToolPath), PyroToolName);
72
- }
73
-
74
- /// <summary>
75
- /// Builds a command line for bind-input paths (-bt and -bu switches).
76
- /// </summary>
77
- private void AppendBindInputPaths(WixCommandLineBuilder commandLineBuilder, IEnumerable<ITaskItem> bindInputPaths, string switchName)
78
- {
79
- if (null != bindInputPaths)
80
- {
81
- Queue<String> formattedBindInputPaths = new Queue<String>();
82
- foreach (ITaskItem item in bindInputPaths)
83
- {
84
- String formattedPath = string.Empty;
85
- String bindName = item.GetMetadata("BindName");
86
- if (!String.IsNullOrEmpty(bindName))
87
- {
88
- formattedPath = String.Concat(bindName, "=", item.GetMetadata("FullPath"));
89
- }
90
- else
91
- {
92
- formattedPath = item.GetMetadata("FullPath");
93
- }
94
- formattedBindInputPaths.Enqueue(formattedPath);
95
- }
96
-
97
- commandLineBuilder.AppendArrayIfNotNull(switchName, formattedBindInputPaths.ToArray());
98
- }
99
- }
100
-
101
- /// <summary>
102
- /// Builds a command line from options in this task.
103
- /// </summary>
104
- protected override void BuildCommandLine(WixCommandLineBuilder commandLineBuilder)
105
- {
106
- // Always put the output first so it is easy to find in the log.
107
- commandLineBuilder.AppendSwitchIfNotNull("-out ", this.OutputFile);
108
- commandLineBuilder.AppendSwitchIfNotNull("-pdbout ", this.PdbOutputFile);
109
-
110
- base.BuildCommandLine(commandLineBuilder);
111
-
112
- this.AppendBindInputPaths(commandLineBuilder, this.BindInputPathsForTarget, "-bt ");
113
- this.AppendBindInputPaths(commandLineBuilder, this.BindInputPathsForUpdated, "-bu ");
114
-
115
- commandLineBuilder.AppendFileNameIfNotNull(this.InputFile);
116
- commandLineBuilder.AppendSwitchIfNotNull("-cc ", this.CabinetCachePath);
117
- commandLineBuilder.AppendIfTrue("-delta", this.BinaryDeltaPatch);
118
- commandLineBuilder.AppendExtensions(this.Extensions, this.ExtensionDirectory, this.ReferencePaths);
119
- commandLineBuilder.AppendIfTrue("-notidy", this.LeaveTemporaryFiles);
120
- commandLineBuilder.AppendIfTrue("-reusecab", this.ReuseCabinetCache);
121
- commandLineBuilder.AppendIfTrue("-sa", this.SuppressAssemblies);
122
- commandLineBuilder.AppendIfTrue("-sf", this.SuppressFiles);
123
- commandLineBuilder.AppendIfTrue("-sh", this.SuppressFileHashAndInfo);
124
- commandLineBuilder.AppendIfTrue("-spdb", this.SuppressPdbOutput);
125
- foreach (ITaskItem transform in this.Transforms)
126
- {
127
- string transformPath = transform.ItemSpec;
128
- string baselineId = transform.GetMetadata("OverrideBaselineId");
129
- if (String.IsNullOrEmpty(baselineId))
130
- {
131
- baselineId = this.DefaultBaselineId;
132
- }
133
-
134
- commandLineBuilder.AppendTextIfNotNull(String.Format("-t {0} {1}", baselineId, transformPath));
135
- }
136
-
137
- commandLineBuilder.AppendTextIfNotNull(this.AdditionalOptions);
138
- }
139
- }
140
-}
src/WixToolset.BuildTasks/ReplaceString.cs
deleted
-54
@@ -1,54 +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
-
3
-namespace WixToolset.BuildTasks
4
-{
5
- using System;
6
- using Microsoft.Build.Framework;
7
- using Microsoft.Build.Utilities;
8
-
9
- /// <summary>
10
- /// Replaces occurances of OldValues with NewValues in String.
11
- /// </summary>
12
- public class ReplaceString : Task
13
- {
14
- /// <summary>
15
- /// Text to operate on.
16
- /// </summary>
17
- [Output]
18
- [Required]
19
- public string Text { get; set; }
20
-
21
- /// <summary>
22
- /// List of old values to replace.
23
- /// </summary>
24
- [Required]
25
- public string OldValue { get; set; }
26
-
27
- /// <summary>
28
- /// List of new values to replace old values with. If not specified, occurances of OldValue will be removed.
29
- /// </summary>
30
- public string NewValue { get; set; }
31
-
32
- /// <summary>
33
- /// Does the string replacement.
34
- /// </summary>
35
- /// <returns></returns>
36
- public override bool Execute()
37
- {
38
- if (String.IsNullOrEmpty(this.Text))
39
- {
40
- return true;
41
- }
42
-
43
- if (String.IsNullOrEmpty(this.OldValue))
44
- {
45
- Log.LogError("OldValue must be specified");
46
- return false;
47
- }
48
-
49
- this.Text = this.Text.Replace(this.OldValue, this.NewValue);
50
-
51
- return true;
52
- }
53
- }
54
-}
src/WixToolset.BuildTasks/TaskBase.cs
deleted
-65
@@ -1,65 +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
-
3
-namespace WixToolset.BuildTasks
4
-{
5
- using Microsoft.Build.Utilities;
6
-
7
- public abstract class TaskBase : Task
8
- {
9
- public string ToolPath { get; set; }
10
-
11
- public string AdditionalOptions { get; set; }
12
-
13
- public bool RunAsSeparateProcess { get; set; }
14
-
15
- /// <summary>
16
- /// Gets or sets whether all warnings should be suppressed.
17
- /// </summary>
18
- public bool SuppressAllWarnings { get; set; }
19
-
20
- /// <summary>
21
- /// Gets or sets a list of specific warnings to be suppressed.
22
- /// </summary>
23
- public string[] SuppressSpecificWarnings { get; set; }
24
-
25
- /// <summary>
26
- /// Gets or sets whether all warnings should be treated as errors.
27
- /// </summary>
28
- public bool TreatWarningsAsErrors { get; set; }
29
-
30
- /// <summary>
31
- /// Gets or sets a list of specific warnings to treat as errors.
32
- /// </summary>
33
- public string[] TreatSpecificWarningsAsErrors { get; set; }
34
-
35
- /// <summary>
36
- /// Gets or sets whether to display verbose output.
37
- /// </summary>
38
- public bool VerboseOutput { get; set; }
39
-
40
- /// <summary>
41
- /// Gets or sets whether to display the logo.
42
- /// </summary>
43
- public bool NoLogo { get; set; }
44
-
45
- public override bool Execute()
46
- {
47
- try
48
- {
49
- this.ExecuteCore();
50
- }
51
- catch (BuildException e)
52
- {
53
- this.Log.LogErrorFromException(e);
54
- }
55
- catch (Data.WixException e)
56
- {
57
- this.Log.LogErrorFromException(e);
58
- }
59
-
60
- return !this.Log.HasLoggedErrors;
61
- }
62
-
63
- protected abstract void ExecuteCore();
64
- }
65
-}
src/WixToolset.BuildTasks/Torch.cs
deleted
-159
@@ -1,159 +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
-
3
-namespace WixToolset.BuildTasks
4
-{
5
- using System;
6
- using System.Diagnostics;
7
- using System.Globalization;
8
- using System.IO;
9
- using System.Text;
10
-
11
- using Microsoft.Build.Framework;
12
- using Microsoft.Build.Utilities;
13
-
14
- /// <summary>
15
- /// An MSBuild task to run the WiX transform generator.
16
- /// </summary>
17
- public sealed class Torch : WixToolTask
18
- {
19
- private const string TorchToolName = "Torch.exe";
20
-
21
- private bool adminImage;
22
- private ITaskItem baselineFile;
23
- private string binaryExtractionPath;
24
- private bool inputIsXml;
25
- private bool leaveTemporaryFiles;
26
- private bool outputAsXml;
27
- private ITaskItem outputFile;
28
- private bool preserveUnmodifiedContent;
29
- private string suppressTransformErrorFlags;
30
- private string transformValidationFlags;
31
- private string transformValidationType;
32
- private ITaskItem updateFile;
33
-
34
- public bool AdminImage
35
- {
36
- get { return this.adminImage; }
37
- set { this.adminImage = value; }
38
- }
39
-
40
-
41
- [Required]
42
- public ITaskItem BaselineFile
43
- {
44
- get { return this.baselineFile; }
45
- set { this.baselineFile = value; }
46
- }
47
-
48
- public string BinaryExtractionPath
49
- {
50
- get { return this.binaryExtractionPath; }
51
- set { this.binaryExtractionPath = value; }
52
- }
53
-
54
- public bool LeaveTemporaryFiles
55
- {
56
- get { return this.leaveTemporaryFiles; }
57
- set { this.leaveTemporaryFiles = value; }
58
- }
59
-
60
- public bool InputIsXml
61
- {
62
- get { return this.inputIsXml; }
63
- set { this.inputIsXml = value; }
64
- }
65
-
66
- public bool OutputAsXml
67
- {
68
- get { return this.outputAsXml; }
69
- set { this.outputAsXml = value; }
70
- }
71
-
72
- public bool PreserveUnmodifiedContent
73
- {
74
- get { return this.preserveUnmodifiedContent; }
75
- set { this.preserveUnmodifiedContent = value; }
76
- }
77
-
78
- [Required]
79
- [Output]
80
- public ITaskItem OutputFile
81
- {
82
- get { return this.outputFile; }
83
- set { this.outputFile = value; }
84
- }
85
-
86
- public string SuppressTransformErrorFlags
87
- {
88
- get { return this.suppressTransformErrorFlags; }
89
- set { this.suppressTransformErrorFlags = value; }
90
- }
91
-
92
- public string TransformValidationType
93
- {
94
- get { return this.transformValidationType; }
95
- set { this.transformValidationType = value; }
96
- }
97
-
98
- public string TransformValidationFlags
99
- {
100
- get { return this.transformValidationFlags; }
101
- set { this.transformValidationFlags = value; }
102
- }
103
-
104
- [Required]
105
- public ITaskItem UpdateFile
106
- {
107
- get { return this.updateFile; }
108
- set { this.updateFile = value; }
109
- }
110
-
111
- /// <summary>
112
- /// Get the name of the executable.
113
- /// </summary>
114
- /// <remarks>The ToolName is used with the ToolPath to get the location of torch.exe.</remarks>
115
- /// <value>The name of the executable.</value>
116
- protected override string ToolName
117
- {
118
- get { return TorchToolName; }
119
- }
120
-
121
- /// <summary>
122
- /// Get the path to the executable.
123
- /// </summary>
124
- /// <remarks>GetFullPathToTool is only called when the ToolPath property is not set (see the ToolName remarks above).</remarks>
125
- /// <returns>The full path to the executable or simply torch.exe if it's expected to be in the system path.</returns>
126
- protected override string GenerateFullPathToTool()
127
- {
128
- // If there's not a ToolPath specified, it has to be in the system path.
129
- if (String.IsNullOrEmpty(this.ToolPath))
130
- {
131
- return TorchToolName;
132
- }
133
-
134
- return Path.Combine(Path.GetFullPath(this.ToolPath), TorchToolName);
135
- }
136
-
137
- /// <summary>
138
- /// Builds a command line from options in this task.
139
- /// </summary>
140
- protected override void BuildCommandLine(WixCommandLineBuilder commandLineBuilder)
141
- {
142
- base.BuildCommandLine(commandLineBuilder);
143
-
144
- commandLineBuilder.AppendIfTrue("-notidy", this.LeaveTemporaryFiles);
145
- commandLineBuilder.AppendIfTrue("-xo", this.OutputAsXml);
146
- commandLineBuilder.AppendIfTrue("-xi", this.InputIsXml);
147
- commandLineBuilder.AppendIfTrue("-p", this.PreserveUnmodifiedContent);
148
- commandLineBuilder.AppendTextIfNotNull(this.AdditionalOptions);
149
- commandLineBuilder.AppendFileNameIfNotNull(this.BaselineFile);
150
- commandLineBuilder.AppendFileNameIfNotNull(this.UpdateFile);
151
- commandLineBuilder.AppendSwitchIfNotNull("-out ", this.OutputFile);
152
- commandLineBuilder.AppendIfTrue("-a", this.adminImage);
153
- commandLineBuilder.AppendSwitchIfNotNull("-x ", this.BinaryExtractionPath);
154
- commandLineBuilder.AppendSwitchIfNotNull("-serr ", this.SuppressTransformErrorFlags);
155
- commandLineBuilder.AppendSwitchIfNotNull("-t ", this.TransformValidationType);
156
- commandLineBuilder.AppendSwitchIfNotNull("-val ", this.TransformValidationFlags);
157
- }
158
- }
159
-}
src/WixToolset.BuildTasks/WixToolTask.cs
deleted
-403
@@ -1,403 +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
-
3
-namespace WixToolset.BuildTasks
4
-{
5
- using System;
6
- using System.Collections.Generic;
7
- using System.Diagnostics.CodeAnalysis;
8
- using System.Globalization;
9
- using System.IO;
10
- using System.Reflection;
11
- using System.Text;
12
- using System.Threading;
13
-
14
- using Microsoft.Build.Framework;
15
- using Microsoft.Build.Utilities;
16
- using WixToolset.Core.CommandLine;
17
-
18
- /// <summary>
19
- /// Base class for WiX tool tasks; executes tools in-process
20
- /// so that repeated invocations are much faster.
21
- /// </summary>
22
- public abstract class WixToolTask : ToolTask, IDisposable
23
- {
24
- private string additionalOptions;
25
- private bool disposed;
26
- private bool noLogo;
27
- private bool runAsSeparateProcess;
28
- private bool suppressAllWarnings;
29
- private string[] suppressSpecificWarnings;
30
- private string[] treatSpecificWarningsAsErrors;
31
- private bool treatWarningsAsErrors;
32
- private bool verboseOutput;
33
- private Queue<string> messageQueue;
34
- private ManualResetEvent messagesAvailable;
35
- private ManualResetEvent toolExited;
36
- private int exitCode;
37
-
38
- /// <summary>
39
- /// Gets or sets additional options that are appended the the tool command-line.
40
- /// </summary>
41
- /// <remarks>
42
- /// This allows the task to support extended options in the tool which are not
43
- /// explicitly implemented as properties on the task.
44
- /// </remarks>
45
- public string AdditionalOptions
46
- {
47
- get { return this.additionalOptions; }
48
- set { this.additionalOptions = value; }
49
- }
50
-
51
- /// <summary>
52
- /// Gets or sets a flag indicating whether the task should be run as separate
53
- /// process instead of in-proc with MSBuild which is the default.
54
- /// </summary>
55
- public bool RunAsSeparateProcess
56
- {
57
- get { return this.runAsSeparateProcess; }
58
- set { this.runAsSeparateProcess = value; }
59
- }
60
-
61
-#region Common Options
62
- /// <summary>
63
- /// Gets or sets whether all warnings should be suppressed.
64
- /// </summary>
65
- public bool SuppressAllWarnings
66
- {
67
- get { return this.suppressAllWarnings; }
68
- set { this.suppressAllWarnings = value; }
69
- }
70
-
71
- /// <summary>
72
- /// Gets or sets a list of specific warnings to be suppressed.
73
- /// </summary>
74
- public string[] SuppressSpecificWarnings
75
- {
76
- get { return this.suppressSpecificWarnings; }
77
- set { this.suppressSpecificWarnings = value; }
78
- }
79
-
80
- /// <summary>
81
- /// Gets or sets whether all warnings should be treated as errors.
82
- /// </summary>
83
- public bool TreatWarningsAsErrors
84
- {
85
- get { return this.treatWarningsAsErrors; }
86
- set { this.treatWarningsAsErrors = value; }
87
- }
88
-
89
- /// <summary>
90
- /// Gets or sets a list of specific warnings to treat as errors.
91
- /// </summary>
92
- public string[] TreatSpecificWarningsAsErrors
93
- {
94
- get { return this.treatSpecificWarningsAsErrors; }
95
- set { this.treatSpecificWarningsAsErrors = value; }
96
- }
97
-
98
- /// <summary>
99
- /// Gets or sets whether to display verbose output.
100
- /// </summary>
101
- public bool VerboseOutput
102
- {
103
- get { return this.verboseOutput; }
104
- set { this.verboseOutput = value; }
105
- }
106
-
107
- /// <summary>
108
- /// Gets or sets whether to display the logo.
109
- /// </summary>
110
- public bool NoLogo
111
- {
112
- get { return this.noLogo; }
113
- set { this.noLogo = value; }
114
- }
115
-#endregion
116
-
117
- /// <summary>
118
- /// Cleans up the ManualResetEvent members
119
- /// </summary>
120
- public void Dispose()
121
- {
122
- if (!this.disposed)
123
- {
124
- this.Dispose(true);
125
- GC.SuppressFinalize(this);
126
- disposed = true;
127
- }
128
- }
129
-
130
- /// <summary>
131
- /// Cleans up the ManualResetEvent members
132
- /// </summary>
133
- protected virtual void Dispose(bool disposing)
134
- {
135
- if (disposing)
136
- {
137
- messagesAvailable.Close();
138
- toolExited.Close();
139
- }
140
- }
141
-
142
- /// <summary>
143
- /// Generate the command line arguments to write to the response file from the properties.
144
- /// </summary>
145
- /// <returns>Command line string.</returns>
146
- protected override string GenerateResponseFileCommands()
147
- {
148
- WixCommandLineBuilder commandLineBuilder = new WixCommandLineBuilder();
149
- this.BuildCommandLine(commandLineBuilder);
150
- return commandLineBuilder.ToString();
151
- }
152
-
153
- /// <summary>
154
- /// Builds a command line from options in this and derivative tasks.
155
- /// </summary>
156
- /// <remarks>
157
- /// Derivative classes should call BuildCommandLine() on the base class to ensure that common command line options are added to the command.
158
- /// </remarks>
159
- protected virtual void BuildCommandLine(WixCommandLineBuilder commandLineBuilder)
160
- {
161
- commandLineBuilder.AppendIfTrue("-nologo", this.NoLogo);
162
- commandLineBuilder.AppendArrayIfNotNull("-sw", this.SuppressSpecificWarnings);
163
- commandLineBuilder.AppendIfTrue("-sw", this.SuppressAllWarnings);
164
- commandLineBuilder.AppendIfTrue("-v", this.VerboseOutput);
165
- commandLineBuilder.AppendArrayIfNotNull("-wx", this.TreatSpecificWarningsAsErrors);
166
- commandLineBuilder.AppendIfTrue("-wx", this.TreatWarningsAsErrors);
167
- }
168
-
169
- /// <summary>
170
- /// Executes a tool in-process by loading the tool assembly and invoking its entrypoint.
171
- /// </summary>
172
- /// <param name="pathToTool">Path to the tool to be executed; must be a managed executable.</param>
173
- /// <param name="responseFileCommands">Commands to be written to a response file.</param>
174
- /// <param name="commandLineCommands">Commands to be passed directly on the command-line.</param>
175
- /// <returns>The tool exit code.</returns>
176
- protected override int ExecuteTool(string pathToTool, string responseFileCommands, string commandLineCommands)
177
- {
178
- if (this.RunAsSeparateProcess)
179
- {
180
- return base.ExecuteTool(pathToTool, responseFileCommands, commandLineCommands);
181
- }
182
-
183
- this.messageQueue = new Queue<string>();
184
- this.messagesAvailable = new ManualResetEvent(false);
185
- this.toolExited = new ManualResetEvent(false);
186
-
187
- WixToolTaskLogger logger = new WixToolTaskLogger(this.messageQueue, this.messagesAvailable);
188
- TextWriter saveConsoleOut = Console.Out;
189
- TextWriter saveConsoleError = Console.Error;
190
- Console.SetOut(logger);
191
- Console.SetError(logger);
192
-
193
- string responseFile = null;
194
- try
195
- {
196
- responseFile = this.GetTemporaryResponseFile(responseFileCommands, out var responseFileSwitch);
197
- if (!String.IsNullOrEmpty(responseFileSwitch))
198
- {
199
- commandLineCommands = commandLineCommands + " " + responseFileSwitch;
200
- }
201
-
202
- string[] arguments = CommandLineResponseFile.ParseArgumentsToArray(commandLineCommands);
203
-
204
- Thread toolThread = new Thread(new ParameterizedThreadStart(this.ExecuteToolThread));
205
- toolThread.Start(new object[] { pathToTool, arguments });
206
-
207
- this.HandleToolMessages();
208
-
209
- if (this.exitCode == 0 && this.Log.HasLoggedErrors)
210
- {
211
- this.exitCode = -1;
212
- }
213
-
214
- return this.exitCode;
215
- }
216
- finally
217
- {
218
- if (responseFile != null)
219
- {
220
- File.Delete(responseFile);
221
- }
222
-
223
- Console.SetOut(saveConsoleOut);
224
- Console.SetError(saveConsoleError);
225
- }
226
- }
227
-
228
- /// <summary>
229
- /// Called by a new thread to execute the tool in that thread.
230
- /// </summary>
231
- /// <param name="parameters">Tool path and arguments array.</param>
232
- private void ExecuteToolThread(object parameters)
233
- {
234
- try
235
- {
236
- object[] pathAndArguments = (object[])parameters;
237
- Assembly toolAssembly = Assembly.LoadFrom((string)pathAndArguments[0]);
238
- this.exitCode = (int)toolAssembly.EntryPoint.Invoke(null, new object[] { pathAndArguments[1] });
239
- }
240
- catch (FileNotFoundException fnfe)
241
- {
242
- Log.LogError("Unable to load tool from path {0}. Consider setting the ToolPath parameter to $(WixToolPath).", fnfe.FileName);
243
- this.exitCode = -1;
244
- }
245
- catch (Exception ex)
246
- {
247
- this.exitCode = -1;
248
- this.LogEventsFromTextOutput(ex.Message, MessageImportance.High);
249
- foreach (string stackTraceLine in ex.StackTrace.Split('\n'))
250
- {
251
- this.LogEventsFromTextOutput(stackTraceLine.TrimEnd(), MessageImportance.High);
252
- }
253
-
254
- throw;
255
- }
256
- finally
257
- {
258
- this.toolExited.Set();
259
- }
260
- }
261
-
262
- /// <summary>
263
- /// Waits for messages from the tool thread and sends them to the MSBuild logger on the original thread.
264
- /// Returns when the tool thread exits.
265
- /// </summary>
266
- private void HandleToolMessages()
267
- {
268
- WaitHandle[] waitHandles = new WaitHandle[] { this.messagesAvailable, this.toolExited };
269
- while (WaitHandle.WaitAny(waitHandles) == 0)
270
- {
271
- lock (this.messageQueue)
272
- {
273
- while (this.messageQueue.Count > 0)
274
- {
275
- this.LogEventsFromTextOutput(messageQueue.Dequeue(), MessageImportance.Normal);
276
- }
277
-
278
- this.messagesAvailable.Reset();
279
- }
280
- }
281
- }
282
-
283
- /// <summary>
284
- /// Creates a temporary response file for tool execution.
285
- /// </summary>
286
- /// <returns>Path to the response file.</returns>
287
- /// <remarks>
288
- /// The temporary file should be deleted after the tool execution is finished.
289
- /// </remarks>
290
- private string GetTemporaryResponseFile(string responseFileCommands, out string responseFileSwitch)
291
- {
292
- string responseFile = null;
293
- responseFileSwitch = null;
294
-
295
- if (!String.IsNullOrEmpty(responseFileCommands))
296
- {
297
- responseFile = Path.GetTempFileName();
298
- using (StreamWriter writer = new StreamWriter(responseFile, false, this.ResponseFileEncoding))
299
- {
300
- writer.Write(responseFileCommands);
301
- }
302
- responseFileSwitch = this.GetResponseFileSwitch(responseFile);
303
- }
304
- return responseFile;
305
- }
306
-
307
- /// <summary>
308
- /// Cycles thru each task to find correct path of the file in question.
309
- /// Looks at item spec, hintpath and then in user defined Reference Paths
310
- /// </summary>
311
- /// <param name="tasks">Input task array</param>
312
- /// <param name="referencePaths">SemiColon delimited directories to search</param>
313
- /// <returns>List of task item file paths</returns>
314
- [SuppressMessage("Microsoft.Design", "CA1002:DoNotExposeGenericLists")]
315
- protected static List<string> AdjustFilePaths(ITaskItem[] tasks, string[] referencePaths)
316
- {
317
- List<string> sourceFilePaths = new List<string>();
318
-
319
- if (tasks == null)
320
- {
321
- return sourceFilePaths;
322
- }
323
-
324
- foreach (ITaskItem task in tasks)
325
- {
326
- string filePath = task.ItemSpec;
327
- if (!File.Exists(filePath))
328
- {
329
- filePath = task.GetMetadata("HintPath");
330
- if (!File.Exists(filePath))
331
- {
332
- string searchPath = FileSearchHelperMethods.SearchFilePaths(referencePaths, filePath);
333
- if (!String.IsNullOrEmpty(searchPath))
334
- {
335
- filePath = searchPath;
336
- }
337
- }
338
- }
339
- sourceFilePaths.Add(filePath);
340
- }
341
-
342
- return sourceFilePaths;
343
- }
344
-
345
- /// <summary>
346
- /// Used as a replacement for Console.Out to capture output from a tool
347
- /// and redirect it to the MSBuild logging system.
348
- /// </summary>
349
- private class WixToolTaskLogger : TextWriter
350
- {
351
- private StringBuilder buffer;
352
- private Queue<string> messageQueue;
353
- private ManualResetEvent messagesAvailable;
354
-
355
- /// <summary>
356
- /// Creates a new logger that sends tool output to the tool task's log handler.
357
- /// </summary>
358
- public WixToolTaskLogger(Queue<string> messageQueue, ManualResetEvent messagesAvailable) : base(CultureInfo.CurrentCulture)
359
- {
360
- this.messageQueue = messageQueue;
361
- this.messagesAvailable = messagesAvailable;
362
- this.buffer = new StringBuilder();
363
- }
364
-
365
- /// <summary>
366
- /// Gets the encoding of the logger.
367
- /// </summary>
368
- public override Encoding Encoding
369
- {
370
- get { return Encoding.Unicode; }
371
- }
372
-
373
- /// <summary>
374
- /// Redirects output to a buffer; watches for newlines and sends each line to the
375
- /// MSBuild logging system.
376
- /// </summary>
377
- /// <param name="value">Character being written.</param>
378
- /// <remarks>All other Write() variants eventually call into this one.</remarks>
379
- public override void Write(char value)
380
- {
381
- lock (this.messageQueue)
382
- {
383
- if (value == '\n')
384
- {
385
- if (this.buffer.Length > 0 && this.buffer[this.buffer.Length - 1] == '\r')
386
- {
387
- this.buffer.Length = this.buffer.Length - 1;
388
- }
389
-
390
- this.messageQueue.Enqueue(this.buffer.ToString());
391
- this.messagesAvailable.Set();
392
-
393
- this.buffer.Length = 0;
394
- }
395
- else
396
- {
397
- this.buffer.Append(value);
398
- }
399
- }
400
- }
401
- }
402
- }
403
-}
src/WixToolset.BuildTasks/wix.targets
-61
@@ -103,11 +103,7 @@
103
-->
104
105
<!-- These tasks can be used as general-purpose build tasks. -->
106
- <UsingTask TaskName="Candle" AssemblyFile="$(WixTasksPath)" />
106
<UsingTask TaskName="DoIt" AssemblyFile="$(WixTasksPath)" />
108
- <UsingTask TaskName="Lit" AssemblyFile="$(WixTasksPath)" />
109
- <UsingTask TaskName="Light" AssemblyFile="$(WixTasksPath)" />
110
- <UsingTask TaskName="Torch" AssemblyFile="$(WixTasksPath)" />
107
108
<!-- These tasks are specific to the build process defined in this file, and are not considered general-purpose build tasks. -->
109
<UsingTask TaskName="CreateItemAvoidingInference" AssemblyFile="$(WixTasksPath)" />
@@ -782,63 +778,6 @@
778
</GenerateCompileWithObjectPath>
779
</Target>
780
785
- <!--
786
- ================================================================================================
787
- Lib
788
-
789
- Links the .wixobj, .wxl, .wixlib, wix extensions into a .wixlib file using lit.exe.
790
-
791
- [IN]
792
- @(CompileObjOutput) - The compiled .wixobj file.
793
- @(EmbeddedResource) - The list of wxl files to use for localization.
794
- @(WixObject) - The list of .wixobj files.
795
- @(WixLibrary) - The list of .wixlib files.
796
- @(WixExtension) - The list of wix dll extension files.
797
-
798
- [OUT]
799
- $(TargetPath) - The compiled .wixlib file.
800
- ================================================================================================
801
- -->
802
- <PropertyGroup>
803
- <LibDependsOn>
804
- PrepareForBuild;
805
- ResolveReferences
806
- </LibDependsOn>
807
- </PropertyGroup>
808
- <Target
809
- Name="Lib"
810
- Inputs="@(CompileObjOutput);
811
- @(EmbeddedResource);
812
- @(WixObject);
813
- @(WixLibrary);
814
- @(_ResolvedWixExtensionPaths);
815
- $(MSBuildAllProjects)"
816
- Outputs="$(TargetPath)"
817
- DependsOnTargets="$(LibDependsOn)"
818
- Condition=" '$(OutputType)' == 'Library' ">
819
-
820
- <Lit
821
- ObjectFiles="@(CompileObjOutput);@(WixObject);@(WixLibProjects);@(WixLibrary)"
822
- AdditionalOptions="$(LibAdditionalOptions)"
823
- BindInputPaths="@(LinkerBindInputPaths)"
824
- BindFiles="$(LibBindFiles)"
825
- ExtensionDirectory="$(WixExtDir)"
826
- Extensions="@(_ResolvedWixExtensionPaths)"
827
- LocalizationFiles="@(EmbeddedResource)"
828
- NoLogo="$(LibNoLogo)"
829
- OutputFile="$(TargetPath)"
830
- Pedantic="$(LibPedantic)"
831
- ReferencePaths="$(ReferencePaths)"
832
- RunAsSeparateProcess="$(RunWixToolsOutOfProc)"
833
- SuppressAllWarnings="$(LibSuppressAllWarnings)"
834
- SuppressIntermediateFileVersionMatching="$(LibSuppressIntermediateFileVersionMatching)"
835
- SuppressSchemaValidation="$(LibSuppressSchemaValidation)"
836
- SuppressSpecificWarnings="$(LibSuppressSpecificWarnings)"
837
- ToolPath="$(WixToolDir)"
838
- TreatWarningsAsErrors="$(LibTreatWarningsAsErrors)"
839
- VerboseOutput="$(LibVerboseOutput)" />
840
- </Target>
841
-
781
<!--
782
================================================================================================
783
AssignCultures