aboutsummaryrefslogtreecommitdiff
path: root/src/WixToolset.BuildTasks/DoIt.cs
diff options
context:
space:
mode:
Diffstat (limited to 'src/WixToolset.BuildTasks/DoIt.cs')
-rw-r--r--src/WixToolset.BuildTasks/DoIt.cs51
1 files changed, 40 insertions, 11 deletions
diff --git a/src/WixToolset.BuildTasks/DoIt.cs b/src/WixToolset.BuildTasks/DoIt.cs
index 7688342c..97554bc6 100644
--- a/src/WixToolset.BuildTasks/DoIt.cs
+++ b/src/WixToolset.BuildTasks/DoIt.cs
@@ -2,6 +2,9 @@
2 2
3namespace WixToolset.BuildTasks 3namespace WixToolset.BuildTasks
4{ 4{
5 using System;
6 using System.Collections.Generic;
7 using System.Runtime.InteropServices;
5 using Microsoft.Build.Framework; 8 using Microsoft.Build.Framework;
6 using Microsoft.Build.Utilities; 9 using Microsoft.Build.Utilities;
7 using WixToolset.Core; 10 using WixToolset.Core;
@@ -40,12 +43,14 @@ namespace WixToolset.BuildTasks
40 43
41 public bool NoLogo { get; set; } 44 public bool NoLogo { get; set; }
42 45
43 public ITaskItem[] ObjectFiles { get; set; } 46 public ITaskItem[] LibraryFiles { get; set; }
44 47
45 [Output] 48 [Output]
46 [Required] 49 [Required]
47 public ITaskItem OutputFile { get; set; } 50 public ITaskItem OutputFile { get; set; }
48 51
52 public string OutputType { get; set; }
53
49 public string PdbOutputFile { get; set; } 54 public string PdbOutputFile { get; set; }
50 55
51 public bool Pedantic { get; set; } 56 public bool Pedantic { get; set; }
@@ -84,7 +89,7 @@ namespace WixToolset.BuildTasks
84 89
85 public ITaskItem[] BindInputPaths { get; set; } 90 public ITaskItem[] BindInputPaths { get; set; }
86 public bool BindFiles { get; set; } 91 public bool BindFiles { get; set; }
87 public ITaskItem BindContentsFile{ get; set; } 92 public ITaskItem BindContentsFile { get; set; }
88 public ITaskItem BindOutputsFile { get; set; } 93 public ITaskItem BindOutputsFile { get; set; }
89 public ITaskItem BindBuiltOutputsFile { get; set; } 94 public ITaskItem BindBuiltOutputsFile { get; set; }
90 95
@@ -102,21 +107,20 @@ namespace WixToolset.BuildTasks
102 public string[] SuppressIces { get; set; } 107 public string[] SuppressIces { get; set; }
103 public string AdditionalCub { get; set; } 108 public string AdditionalCub { get; set; }
104 109
105
106
107 public override bool Execute() 110 public override bool Execute()
108 { 111 {
109 try 112 try
110 { 113 {
111 this.ExecuteCore(); 114 this.ExecuteCore();
112 } 115 }
113 catch (BuildException e) 116 catch (Exception e)
114 {
115 this.Log.LogErrorFromException(e);
116 }
117 catch (WixException e)
118 { 117 {
119 this.Log.LogErrorFromException(e); 118 this.Log.LogErrorFromException(e);
119
120 if (e is NullReferenceException || e is SEHException)
121 {
122 throw;
123 }
120 } 124 }
121 125
122 return !this.Log.HasLoggedErrors; 126 return !this.Log.HasLoggedErrors;
@@ -129,27 +133,31 @@ namespace WixToolset.BuildTasks
129 commandLineBuilder.AppendTextUnquoted("build"); 133 commandLineBuilder.AppendTextUnquoted("build");
130 134
131 commandLineBuilder.AppendSwitchIfNotNull("-out ", this.OutputFile); 135 commandLineBuilder.AppendSwitchIfNotNull("-out ", this.OutputFile);
136 commandLineBuilder.AppendSwitchIfNotNull("-outputType ", this.OutputType);
137 commandLineBuilder.AppendIfTrue("-nologo", this.NoLogo);
132 commandLineBuilder.AppendSwitchIfNotNull("-cultures ", this.Cultures); 138 commandLineBuilder.AppendSwitchIfNotNull("-cultures ", this.Cultures);
133 commandLineBuilder.AppendArrayIfNotNull("-d ", this.DefineConstants); 139 commandLineBuilder.AppendArrayIfNotNull("-d ", this.DefineConstants);
134 commandLineBuilder.AppendArrayIfNotNull("-I ", this.IncludeSearchPaths); 140 commandLineBuilder.AppendArrayIfNotNull("-I ", this.IncludeSearchPaths);
135 commandLineBuilder.AppendExtensions(this.Extensions, this.ExtensionDirectory, this.ReferencePaths); 141 commandLineBuilder.AppendExtensions(this.Extensions, this.ExtensionDirectory, this.ReferencePaths);
136 commandLineBuilder.AppendIfTrue("-nologo", this.NoLogo);
137 commandLineBuilder.AppendIfTrue("-sval", this.SuppressValidation); 142 commandLineBuilder.AppendIfTrue("-sval", this.SuppressValidation);
138 commandLineBuilder.AppendArrayIfNotNull("-sice ", this.SuppressIces); 143 commandLineBuilder.AppendArrayIfNotNull("-sice ", this.SuppressIces);
139 commandLineBuilder.AppendSwitchIfNotNull("-usf ", this.UnreferencedSymbolsFile); 144 commandLineBuilder.AppendSwitchIfNotNull("-usf ", this.UnreferencedSymbolsFile);
140 commandLineBuilder.AppendSwitchIfNotNull("-cc ", this.CabinetCachePath); 145 commandLineBuilder.AppendSwitchIfNotNull("-cc ", this.CabinetCachePath);
146 commandLineBuilder.AppendSwitchIfNotNull("-intermediatefolder ", this.IntermediateDirectory);
141 commandLineBuilder.AppendSwitchIfNotNull("-contentsfile ", this.BindContentsFile); 147 commandLineBuilder.AppendSwitchIfNotNull("-contentsfile ", this.BindContentsFile);
142 commandLineBuilder.AppendSwitchIfNotNull("-outputsfile ", this.BindOutputsFile); 148 commandLineBuilder.AppendSwitchIfNotNull("-outputsfile ", this.BindOutputsFile);
143 commandLineBuilder.AppendSwitchIfNotNull("-builtoutputsfile ", this.BindBuiltOutputsFile); 149 commandLineBuilder.AppendSwitchIfNotNull("-builtoutputsfile ", this.BindBuiltOutputsFile);
144 commandLineBuilder.AppendSwitchIfNotNull("-wixprojectfile ", this.WixProjectFile); 150 commandLineBuilder.AppendSwitchIfNotNull("-wixprojectfile ", this.WixProjectFile);
145 commandLineBuilder.AppendTextIfNotWhitespace(this.AdditionalOptions); 151 commandLineBuilder.AppendTextIfNotWhitespace(this.AdditionalOptions);
146 152
153 commandLineBuilder.AppendArrayIfNotNull("-bindPath ", this.CalculateBindPathStrings());
147 commandLineBuilder.AppendArrayIfNotNull("-loc ", this.LocalizationFiles); 154 commandLineBuilder.AppendArrayIfNotNull("-loc ", this.LocalizationFiles);
155 commandLineBuilder.AppendArrayIfNotNull("-lib ", this.LibraryFiles);
148 commandLineBuilder.AppendFileNamesIfNotNull(this.SourceFiles, " "); 156 commandLineBuilder.AppendFileNamesIfNotNull(this.SourceFiles, " ");
149 157
150 var commandLineString = commandLineBuilder.ToString(); 158 var commandLineString = commandLineBuilder.ToString();
151 159
152 this.Log.LogMessage(MessageImportance.Normal, commandLineString); 160 this.Log.LogMessage(MessageImportance.Normal, "wix.exe " + commandLineString);
153 161
154 var command = CommandLine.ParseStandardCommandLine(commandLineString); 162 var command = CommandLine.ParseStandardCommandLine(commandLineString);
155 command?.Execute(); 163 command?.Execute();
@@ -160,6 +168,27 @@ namespace WixToolset.BuildTasks
160 this.Log.LogMessageFromText(e.Message, MessageImportance.Normal); 168 this.Log.LogMessageFromText(e.Message, MessageImportance.Normal);
161 } 169 }
162 170
171 private IEnumerable<string> CalculateBindPathStrings()
172 {
173 if (null != this.BindInputPaths)
174 {
175 foreach (var item in this.BindInputPaths)
176 {
177 var path = item.GetMetadata("FullPath");
178
179 var bindName = item.GetMetadata("BindName");
180 if (!String.IsNullOrEmpty(bindName))
181 {
182 yield return String.Concat(bindName, "=", path);
183 }
184 else
185 {
186 yield return path;
187 }
188 }
189 }
190 }
191
163 ///// <summary> 192 ///// <summary>
164 ///// Builds a command line from options in this task. 193 ///// Builds a command line from options in this task.
165 ///// </summary> 194 ///// </summary>