diff options
Diffstat (limited to 'src/WixToolset.Core/CommandLine/BuildCommand.cs')
| -rw-r--r-- | src/WixToolset.Core/CommandLine/BuildCommand.cs | 59 |
1 files changed, 34 insertions, 25 deletions
diff --git a/src/WixToolset.Core/CommandLine/BuildCommand.cs b/src/WixToolset.Core/CommandLine/BuildCommand.cs index 7a63b869..43b75f33 100644 --- a/src/WixToolset.Core/CommandLine/BuildCommand.cs +++ b/src/WixToolset.Core/CommandLine/BuildCommand.cs | |||
| @@ -13,9 +13,10 @@ namespace WixToolset.Core | |||
| 13 | 13 | ||
| 14 | internal class BuildCommand : ICommandLineCommand | 14 | internal class BuildCommand : ICommandLineCommand |
| 15 | { | 15 | { |
| 16 | public BuildCommand(IServiceProvider serviceProvider, IExtensionManager extensions, IEnumerable<SourceFile> sources, IDictionary<string, string> preprocessorVariables, IEnumerable<string> locFiles, IEnumerable<string> libraryFiles, string outputPath, OutputType outputType, string cabCachePath, IEnumerable<string> cultures, bool bindFiles, IEnumerable<BindPath> bindPaths, string intermediateFolder, string contentsFile, string outputsFile, string builtOutputsFile, string wixProjectFile) | 16 | public BuildCommand(IServiceProvider serviceProvider, IMessaging messaging, IExtensionManager extensions, IEnumerable<SourceFile> sources, IDictionary<string, string> preprocessorVariables, IEnumerable<string> locFiles, IEnumerable<string> libraryFiles, string outputPath, OutputType outputType, string cabCachePath, IEnumerable<string> cultures, bool bindFiles, IEnumerable<BindPath> bindPaths, string intermediateFolder, string contentsFile, string outputsFile, string builtOutputsFile, string wixProjectFile) |
| 17 | { | 17 | { |
| 18 | this.ServiceProvider = serviceProvider; | 18 | this.ServiceProvider = serviceProvider; |
| 19 | this.Messaging = messaging; | ||
| 19 | this.ExtensionManager = extensions; | 20 | this.ExtensionManager = extensions; |
| 20 | this.LocFiles = locFiles; | 21 | this.LocFiles = locFiles; |
| 21 | this.LibraryFiles = libraryFiles; | 22 | this.LibraryFiles = libraryFiles; |
| @@ -38,6 +39,8 @@ namespace WixToolset.Core | |||
| 38 | 39 | ||
| 39 | public IServiceProvider ServiceProvider { get; } | 40 | public IServiceProvider ServiceProvider { get; } |
| 40 | 41 | ||
| 42 | public IMessaging Messaging { get; } | ||
| 43 | |||
| 41 | public IExtensionManager ExtensionManager { get; } | 44 | public IExtensionManager ExtensionManager { get; } |
| 42 | 45 | ||
| 43 | public IEnumerable<string> IncludeSearchPaths { get; } | 46 | public IEnumerable<string> IncludeSearchPaths { get; } |
| @@ -91,13 +94,13 @@ namespace WixToolset.Core | |||
| 91 | { | 94 | { |
| 92 | var output = this.LinkPhase(intermediates); | 95 | var output = this.LinkPhase(intermediates); |
| 93 | 96 | ||
| 94 | if (!Messaging.Instance.EncounteredError) | 97 | if (!this.Messaging.EncounteredError) |
| 95 | { | 98 | { |
| 96 | this.BindPhase(output); | 99 | this.BindPhase(output); |
| 97 | } | 100 | } |
| 98 | } | 101 | } |
| 99 | 102 | ||
| 100 | return Messaging.Instance.LastErrorNumber; | 103 | return this.Messaging.LastErrorNumber; |
| 101 | } | 104 | } |
| 102 | 105 | ||
| 103 | private IEnumerable<Intermediate> CompilePhase() | 106 | private IEnumerable<Intermediate> CompilePhase() |
| @@ -107,7 +110,7 @@ namespace WixToolset.Core | |||
| 107 | foreach (var sourceFile in this.SourceFiles) | 110 | foreach (var sourceFile in this.SourceFiles) |
| 108 | { | 111 | { |
| 109 | var preprocessContext = this.ServiceProvider.GetService<IPreprocessContext>(); | 112 | var preprocessContext = this.ServiceProvider.GetService<IPreprocessContext>(); |
| 110 | preprocessContext.Messaging = Messaging.Instance; | 113 | preprocessContext.Messaging = this.Messaging; |
| 111 | preprocessContext.Extensions = this.ExtensionManager.Create<IPreprocessorExtension>(); | 114 | preprocessContext.Extensions = this.ExtensionManager.Create<IPreprocessorExtension>(); |
| 112 | preprocessContext.Platform = Platform.X86; // TODO: set this correctly | 115 | preprocessContext.Platform = Platform.X86; // TODO: set this correctly |
| 113 | preprocessContext.IncludeSearchPaths = this.IncludeSearchPaths?.ToList() ?? new List<string>(); | 116 | preprocessContext.IncludeSearchPaths = this.IncludeSearchPaths?.ToList() ?? new List<string>(); |
| @@ -117,18 +120,24 @@ namespace WixToolset.Core | |||
| 117 | var preprocessor = new Preprocessor(); | 120 | var preprocessor = new Preprocessor(); |
| 118 | var document = preprocessor.Process(preprocessContext); | 121 | var document = preprocessor.Process(preprocessContext); |
| 119 | 122 | ||
| 120 | var compileContext = this.ServiceProvider.GetService<ICompileContext>(); | 123 | if (!this.Messaging.EncounteredError) |
| 121 | compileContext.Messaging = Messaging.Instance; | 124 | { |
| 122 | compileContext.CompilationId = Guid.NewGuid().ToString("N"); | 125 | var compileContext = this.ServiceProvider.GetService<ICompileContext>(); |
| 123 | compileContext.Extensions = this.ExtensionManager.Create<ICompilerExtension>(); | 126 | compileContext.Messaging = this.Messaging; |
| 124 | compileContext.OutputPath = sourceFile.OutputPath; | 127 | compileContext.CompilationId = Guid.NewGuid().ToString("N"); |
| 125 | compileContext.Platform = Platform.X86; // TODO: set this correctly | 128 | compileContext.Extensions = this.ExtensionManager.Create<ICompilerExtension>(); |
| 126 | compileContext.Source = document; | 129 | compileContext.OutputPath = sourceFile.OutputPath; |
| 127 | 130 | compileContext.Platform = Platform.X86; // TODO: set this correctly | |
| 128 | var compiler = new Compiler(); | 131 | compileContext.Source = document; |
| 129 | var intermediate = compiler.Compile(compileContext); | 132 | |
| 130 | 133 | var compiler = new Compiler(); | |
| 131 | intermediates.Add(intermediate); | 134 | var intermediate = compiler.Compile(compileContext); |
| 135 | |||
| 136 | if (!this.Messaging.EncounteredError) | ||
| 137 | { | ||
| 138 | intermediates.Add(intermediate); | ||
| 139 | } | ||
| 140 | } | ||
| 132 | } | 141 | } |
| 133 | 142 | ||
| 134 | return intermediates; | 143 | return intermediates; |
| @@ -139,7 +148,7 @@ namespace WixToolset.Core | |||
| 139 | var localizations = this.LoadLocalizationFiles().ToList(); | 148 | var localizations = this.LoadLocalizationFiles().ToList(); |
| 140 | 149 | ||
| 141 | // If there was an error adding localization files, then bail. | 150 | // If there was an error adding localization files, then bail. |
| 142 | if (Messaging.Instance.EncounteredError) | 151 | if (this.Messaging.EncounteredError) |
| 143 | { | 152 | { |
| 144 | return null; | 153 | return null; |
| 145 | } | 154 | } |
| @@ -166,7 +175,7 @@ namespace WixToolset.Core | |||
| 166 | var libraries = this.LoadLibraries(creator); | 175 | var libraries = this.LoadLibraries(creator); |
| 167 | 176 | ||
| 168 | var context = this.ServiceProvider.GetService<ILinkContext>(); | 177 | var context = this.ServiceProvider.GetService<ILinkContext>(); |
| 169 | context.Messaging = Messaging.Instance; | 178 | context.Messaging = this.Messaging; |
| 170 | context.Extensions = this.ExtensionManager.Create<ILinkerExtension>(); | 179 | context.Extensions = this.ExtensionManager.Create<ILinkerExtension>(); |
| 171 | context.ExtensionData = this.ExtensionManager.Create<IExtensionData>(); | 180 | context.ExtensionData = this.ExtensionManager.Create<IExtensionData>(); |
| 172 | context.ExpectedOutputType = this.OutputType; | 181 | context.ExpectedOutputType = this.OutputType; |
| @@ -182,7 +191,7 @@ namespace WixToolset.Core | |||
| 182 | { | 191 | { |
| 183 | var localizations = this.LoadLocalizationFiles().ToList(); | 192 | var localizations = this.LoadLocalizationFiles().ToList(); |
| 184 | 193 | ||
| 185 | var localizer = new Localizer(localizations); | 194 | var localizer = new Localizer(this.Messaging, localizations); |
| 186 | 195 | ||
| 187 | var resolver = CreateWixResolverWithVariables(localizer, output); | 196 | var resolver = CreateWixResolverWithVariables(localizer, output); |
| 188 | 197 | ||
| @@ -193,7 +202,7 @@ namespace WixToolset.Core | |||
| 193 | } | 202 | } |
| 194 | 203 | ||
| 195 | var context = this.ServiceProvider.GetService<IBindContext>(); | 204 | var context = this.ServiceProvider.GetService<IBindContext>(); |
| 196 | context.Messaging = Messaging.Instance; | 205 | context.Messaging = this.Messaging; |
| 197 | context.ExtensionManager = this.ExtensionManager; | 206 | context.ExtensionManager = this.ExtensionManager; |
| 198 | context.BindPaths = this.BindPaths ?? Array.Empty<BindPath>(); | 207 | context.BindPaths = this.BindPaths ?? Array.Empty<BindPath>(); |
| 199 | //context.CabbingThreadCount = this.CabbingThreadCount; | 208 | //context.CabbingThreadCount = this.CabbingThreadCount; |
| @@ -234,11 +243,11 @@ namespace WixToolset.Core | |||
| 234 | } | 243 | } |
| 235 | catch (WixCorruptFileException e) | 244 | catch (WixCorruptFileException e) |
| 236 | { | 245 | { |
| 237 | Messaging.Instance.OnMessage(e.Error); | 246 | this.Messaging.Write(e.Error); |
| 238 | } | 247 | } |
| 239 | catch (WixUnexpectedFileFormatException e) | 248 | catch (WixUnexpectedFileFormatException e) |
| 240 | { | 249 | { |
| 241 | Messaging.Instance.OnMessage(e.Error); | 250 | this.Messaging.Write(e.Error); |
| 242 | } | 251 | } |
| 243 | } | 252 | } |
| 244 | } | 253 | } |
| @@ -250,15 +259,15 @@ namespace WixToolset.Core | |||
| 250 | { | 259 | { |
| 251 | foreach (var loc in this.LocFiles) | 260 | foreach (var loc in this.LocFiles) |
| 252 | { | 261 | { |
| 253 | var localization = Localizer.ParseLocalizationFile(loc); | 262 | var localization = Localizer.ParseLocalizationFile(this.Messaging, loc); |
| 254 | 263 | ||
| 255 | yield return localization; | 264 | yield return localization; |
| 256 | } | 265 | } |
| 257 | } | 266 | } |
| 258 | 267 | ||
| 259 | private static WixVariableResolver CreateWixResolverWithVariables(Localizer localizer, Intermediate output) | 268 | private WixVariableResolver CreateWixResolverWithVariables(Localizer localizer, Intermediate output) |
| 260 | { | 269 | { |
| 261 | var resolver = new WixVariableResolver(localizer); | 270 | var resolver = new WixVariableResolver(this.Messaging, localizer); |
| 262 | 271 | ||
| 263 | // Gather all the wix variables. | 272 | // Gather all the wix variables. |
| 264 | var wixVariables = output?.Sections.SelectMany(s => s.Tuples).OfType<WixVariableTuple>(); | 273 | var wixVariables = output?.Sections.SelectMany(s => s.Tuples).OfType<WixVariableTuple>(); |
