@joebigelow / wix-1 / commits / 155a6e96

Integrate simplified message handling

Rob Mensching committed Dec 19, 2017 at 12:25 UTC 155a6e96346e0cb3d9ab6f5372fa29b46ebaee89
104 files changed +2055 -9192
src/WixToolset.BuildTasks/DoIt.cs
+61 -4
@@ -9,6 +9,7 @@ namespace WixToolset.BuildTasks
9 using Microsoft.Build.Utilities;
10 using WixToolset.Core;
11 using WixToolset.Data;
12 + using WixToolset.Extensibility;
13 using WixToolset.Extensibility.Services;
14
15 /// <summary>
@@ -16,11 +17,13 @@ namespace WixToolset.BuildTasks
17 /// </summary>
18 public sealed class DoIt : Task
19 {
19 - public DoIt()
20 + public DoIt() : this(null)
21 {
21 - Messaging.Instance.InitializeAppName("WIX", "wix.exe");
22 + }
23
23 - Messaging.Instance.Display += this.DisplayMessage;
24 + public DoIt(IMessageListener listener)
25 + {
26 + this.Listener = listener ?? new MsbuildMessageListener(this.Log, "WIX", "wix.exe");
27 }
28
29 public string AdditionalOptions { get; set; }
@@ -112,6 +115,8 @@ namespace WixToolset.BuildTasks
115 public string[] SuppressIces { get; set; }
116 public string AdditionalCub { get; set; }
117
118 + private IMessageListener Listener { get; }
119 +
120 public override bool Execute()
121 {
122 try
@@ -168,7 +173,11 @@ namespace WixToolset.BuildTasks
173 var serviceProvider = new WixToolsetServiceProvider();
174
175 var context = serviceProvider.GetService<ICommandLineContext>();
171 - context.Messaging = Messaging.Instance;
176 +
177 + var messaging = serviceProvider.GetService<IMessaging>();
178 + messaging.SetListener(this.Listener);
179 +
180 + context.Messaging = messaging;
181 context.ExtensionManager = this.CreateExtensionManagerWithStandardBackends(serviceProvider);
182 context.Arguments = commandLineString;
183
@@ -284,5 +293,53 @@ namespace WixToolset.BuildTasks
293 // commandLineBuilder.AppendFileNamesIfNotNull(this.SourceFiles, " ");
294 // }
295 //}
296 +
297 + private class MsbuildMessageListener : IMessageListener
298 + {
299 + public MsbuildMessageListener(TaskLoggingHelper logger, string longName, string shortName)
300 + {
301 + this.Logger = logger;
302 + this.LongAppName = longName;
303 + this.ShortAppName = shortName;
304 + }
305 +
306 + public string ShortAppName { get; }
307 +
308 + public string LongAppName { get; }
309 +
310 + private TaskLoggingHelper Logger { get; }
311 +
312 + public void Write(Message message)
313 + {
314 + switch (message.Level)
315 + {
316 + case MessageLevel.Error:
317 + this.Logger.LogError(null, this.ShortAppName + message.Id.ToString(), null, message.SourceLineNumbers?.FileName ?? this.LongAppName, message.SourceLineNumbers?.LineNumber ?? 0, 0, 0, 0, message.ResourceNameOrFormat, message.MessageArgs);
318 + break;
319 +
320 + case MessageLevel.Warning:
321 + this.Logger.LogWarning(null, this.ShortAppName + message.Id.ToString(), null, message.SourceLineNumbers?.FileName ?? this.LongAppName, message.SourceLineNumbers?.LineNumber ?? 0, 0, 0, 0, message.ResourceNameOrFormat, message.MessageArgs);
322 + break;
323 +
324 + default:
325 + // TODO: Revisit this because something is going horribly awry. The commented out LogMessage call is crashing saying that the "message" parameter is null. When you look at the call stack, the code
326 + // is in the wrong LogMessage override and the "null" subcategory was passed in as the message. Not clear why it is picking the wrong overload.
327 + //if (message.Id > 0)
328 + //{
329 + // this.Logger.LogMessage(null, code, null, message.SourceLineNumber?.FileName, message.SourceLineNumber?.LineNumber ?? 0, 0, 0, 0, MessageImportance.Normal, message.Format, message.FormatData);
330 + //}
331 + //else
332 + //{
333 + this.Logger.LogMessage(MessageImportance.Normal, message.ResourceNameOrFormat, message.MessageArgs);
334 + //}
335 + break;
336 + }
337 + }
338 +
339 + public void Write(string message)
340 + {
341 + this.Logger.LogMessage(MessageImportance.Low, message);
342 + }
343 + }
344 }
345 }
src/WixToolset.BuildTasks/WixToolTask.cs
-2
@@ -184,8 +184,6 @@ namespace WixToolset.BuildTasks
184 this.messagesAvailable = new ManualResetEvent(false);
185 this.toolExited = new ManualResetEvent(false);
186
187 - Util.RunningInMsBuild = true;
188 -
187 WixToolTaskLogger logger = new WixToolTaskLogger(this.messageQueue, this.messagesAvailable);
188 TextWriter saveConsoleOut = Console.Out;
189 TextWriter saveConsoleError = Console.Error;
src/WixToolset.Core.Burn/Bundles/BurnCommon.cs
+12 -9
@@ -6,6 +6,7 @@ namespace WixToolset.Core.Burn.Bundles
6 using System.Diagnostics;
7 using System.IO;
8 using WixToolset.Data;
9 + using WixToolset.Extensibility.Services;
10
11 /// <summary>
12 /// Common functionality for Burn PE Writer & Reader for the WiX toolset.
@@ -77,7 +78,6 @@ namespace WixToolset.Core.Burn.Bundles
78
79 protected const UInt32 BURN_SECTION_MAGIC = 0x00f14300;
80 protected const UInt32 BURN_SECTION_VERSION = 0x00000002;
80 -
81 protected string fileExe;
82 protected UInt32 peOffset = UInt32.MaxValue;
83 protected UInt16 sections = UInt16.MaxValue;
@@ -103,8 +103,9 @@ namespace WixToolset.Core.Burn.Bundles
103 /// </summary>
104 /// <param name="fileExe">File to modify in-place.</param>
105 /// <param name="bundleGuid">GUID for the bundle.</param>
106 - public BurnCommon(string fileExe)
106 + public BurnCommon(IMessaging messaging, string fileExe)
107 {
108 + this.messaging = messaging;
109 this.fileExe = fileExe;
110 }
111
@@ -123,6 +124,8 @@ namespace WixToolset.Core.Burn.Bundles
124 public UInt32 AttachedContainerAddress { get; protected set; }
125 public UInt32 AttachedContainerSize { get; protected set; }
126
127 + protected IMessaging messaging { get; }
128 +
129 public void Dispose()
130 {
131 Dispose(true);
@@ -176,21 +179,21 @@ namespace WixToolset.Core.Burn.Bundles
179 uint32 = BurnCommon.ReadUInt32(bytes, BURN_SECTION_OFFSET_MAGIC);
180 if (BURN_SECTION_MAGIC != uint32)
181 {
179 - Messaging.Instance.OnMessage(WixErrors.InvalidBundle(this.fileExe));
182 + this.messaging.Write(ErrorMessages.InvalidBundle(this.fileExe));
183 return false;
184 }
185
186 this.Version = BurnCommon.ReadUInt32(bytes, BURN_SECTION_OFFSET_VERSION);
187 if (BURN_SECTION_VERSION != this.Version)
188 {
186 - Messaging.Instance.OnMessage(WixErrors.BundleTooNew(this.fileExe, this.Version));
189 + this.messaging.Write(ErrorMessages.BundleTooNew(this.fileExe, this.Version));
190 return false;
191 }
192
193 uint32 = BurnCommon.ReadUInt32(bytes, BURN_SECTION_OFFSET_FORMAT); // We only know how to deal with CABs right now
194 if (1 != uint32)
195 {
193 - Messaging.Instance.OnMessage(WixErrors.InvalidBundle(this.fileExe));
196 + this.messaging.Write(ErrorMessages.InvalidBundle(this.fileExe));
197 return false;
198 }
199
@@ -257,7 +260,7 @@ namespace WixToolset.Core.Burn.Bundles
260
261 if (UInt32.MaxValue == wixburnSectionOffset)
262 {
260 - Messaging.Instance.OnMessage(WixErrors.StubMissingWixburnSection(this.fileExe));
263 + this.messaging.Write(ErrorMessages.StubMissingWixburnSection(this.fileExe));
264 return false;
265 }
266
@@ -265,7 +268,7 @@ namespace WixToolset.Core.Burn.Bundles
268 // the smallest alignment (512 bytes), but just to be paranoid...
269 if (BURN_SECTION_SIZE > BurnCommon.ReadUInt32(bytes, IMAGE_SECTION_HEADER_OFFSET_SIZEOFRAWDATA))
270 {
268 - Messaging.Instance.OnMessage(WixErrors.StubWixburnSectionTooSmall(this.fileExe));
271 + this.messaging.Write(ErrorMessages.StubWixburnSectionTooSmall(this.fileExe));
272 return false;
273 }
274
@@ -294,7 +297,7 @@ namespace WixToolset.Core.Burn.Bundles
297 // Verify the NT signature...
298 if (IMAGE_NT_SIGNATURE != BurnCommon.ReadUInt32(bytes, IMAGE_NT_HEADER_OFFSET_SIGNATURE))
299 {
297 - Messaging.Instance.OnMessage(WixErrors.InvalidStubExe(this.fileExe));
300 + this.messaging.Write(ErrorMessages.InvalidStubExe(this.fileExe));
301 return false;
302 }
303
@@ -329,7 +332,7 @@ namespace WixToolset.Core.Burn.Bundles
332 // Verify the DOS 'MZ' signature.
333 if (IMAGE_DOS_SIGNATURE != BurnCommon.ReadUInt16(bytes, IMAGE_DOS_HEADER_OFFSET_MAGIC))
334 {
332 - Messaging.Instance.OnMessage(WixErrors.InvalidStubExe(this.fileExe));
335 + this.messaging.Write(ErrorMessages.InvalidStubExe(this.fileExe));
336 return false;
337 }
338
src/WixToolset.Core.Burn/Bundles/BurnReader.cs
+5 -4
@@ -8,6 +8,7 @@ namespace WixToolset.Core.Burn.Bundles
8 using System.IO;
9 using System.Xml;
10 using WixToolset.Core.Native;
11 + using WixToolset.Extensibility.Services;
12
13 /// <summary>
14 /// Burn PE reader for the WiX toolset.
@@ -32,8 +33,8 @@ namespace WixToolset.Core.Burn.Bundles
33 /// Creates a BurnReader for reading a PE file.
34 /// </summary>
35 /// <param name="fileExe">File to read.</param>
35 - private BurnReader(string fileExe)
36 - : base(fileExe)
36 + private BurnReader(IMessaging messaging, string fileExe)
37 + : base(messaging, fileExe)
38 {
39 this.attachedContainerPayloadNames = new List<DictionaryEntry>();
40 }
@@ -59,9 +60,9 @@ namespace WixToolset.Core.Burn.Bundles
60 /// </summary>
61 /// <param name="fileExe">Path to file.</param>
62 /// <returns>Burn reader.</returns>
62 - public static BurnReader Open(string fileExe)
63 + public static BurnReader Open(IMessaging messaging, string fileExe)
64 {
64 - BurnReader reader = new BurnReader(fileExe);
65 + BurnReader reader = new BurnReader(messaging, fileExe);
66
67 reader.binaryReader = new BinaryReader(File.Open(fileExe, FileMode.Open, FileAccess.Read, FileShare.Read | FileShare.Delete));
68 if (!reader.Initialize(reader.binaryReader))
src/WixToolset.Core.Burn/Bundles/BurnWriter.cs
+6 -5
@@ -6,6 +6,7 @@ namespace WixToolset.Core.Burn.Bundles
6 using System.Diagnostics;
7 using System.IO;
8 using WixToolset.Data;
9 + using WixToolset.Extensibility.Services;
10
11 /// <summary>
12 /// Burn PE writer for the WiX toolset.
@@ -30,8 +31,8 @@ namespace WixToolset.Core.Burn.Bundles
31 /// </summary>
32 /// <param name="fileExe">File to modify in-place.</param>
33 /// <param name="bundleGuid">GUID for the bundle.</param>
33 - private BurnWriter(string fileExe)
34 - : base(fileExe)
34 + private BurnWriter(IMessaging messaging, string fileExe)
35 + : base(messaging, fileExe)
36 {
37 }
38
@@ -40,9 +41,9 @@ namespace WixToolset.Core.Burn.Bundles
41 /// </summary>
42 /// <param name="fileExe">Path to file.</param>
43 /// <returns>Burn writer.</returns>
43 - public static BurnWriter Open(string fileExe)
44 + public static BurnWriter Open(IMessaging messaging, string fileExe)
45 {
45 - BurnWriter writer = new BurnWriter(fileExe);
46 + BurnWriter writer = new BurnWriter(messaging, fileExe);
47
48 using (BinaryReader binaryReader = new BinaryReader(File.Open(fileExe, FileMode.Open, FileAccess.Read, FileShare.Read | FileShare.Delete)))
49 {
@@ -76,7 +77,7 @@ namespace WixToolset.Core.Burn.Bundles
77 this.WriteToBurnSectionOffset(BURN_SECTION_OFFSET_MAGIC, BURN_SECTION_MAGIC);
78 this.WriteToBurnSectionOffset(BURN_SECTION_OFFSET_VERSION, BURN_SECTION_VERSION);
79
79 - Messaging.Instance.OnMessage(WixVerboses.BundleGuid(bundleId.ToString("B")));
80 + this.messaging.Write(VerboseMessages.BundleGuid(bundleId.ToString("B")));
81 this.binaryWriter.BaseStream.Seek(this.wixburnDataOffset + BURN_SECTION_OFFSET_BUNDLEGUID, SeekOrigin.Begin);
82 this.binaryWriter.Write(bundleId.ToByteArray());
83
src/WixToolset.Core.Burn/Inscribe/InscribeBundleCommand.cs
+1 -1
@@ -29,7 +29,7 @@ namespace WixToolset.Core.Burn.Inscribe
29 {
30 reader.Stream.Seek(reader.AttachedContainerAddress, SeekOrigin.Begin);
31
32 - using (BurnWriter writer = BurnWriter.Open(tempFile))
32 + using (BurnWriter writer = BurnWriter.Open(this.Context.Messaging, tempFile))
33 {
34 writer.RememberThenResetSignature();
35 writer.AppendContainer(reader.Stream, reader.AttachedContainerSize, BurnCommon.Container.Attached);
src/WixToolset.Core.WindowsInstaller/Bind/AssignMediaCommand.cs
+12 -9
@@ -8,22 +8,25 @@ namespace WixToolset.Core.WindowsInstaller.Bind
8 using System.Linq;
9 using WixToolset.Core.Bind;
10 using WixToolset.Data;
11 - using WixToolset.Data.Rows;
11 using WixToolset.Data.Tuples;
12 + using WixToolset.Extensibility.Services;
13
14 /// <summary>
15 /// AssignMediaCommand assigns files to cabs based on Media or MediaTemplate rows.
16 /// </summary>
17 internal class AssignMediaCommand
18 {
19 - public AssignMediaCommand(IntermediateSection section)
19 + public AssignMediaCommand(IntermediateSection section, IMessaging messaging)
20 {
21 this.CabinetNameTemplate = "Cab{0}.cab";
22 this.Section = section;
23 + this.Messaging = messaging;
24 }
25
26 private IntermediateSection Section { get; }
27
28 + private IMessaging Messaging { get; }
29 +
30 public IEnumerable<FileFacade> FileFacades { private get; set; }
31
32 public bool FilesCompressed { private get; set; }
@@ -60,7 +63,7 @@ namespace WixToolset.Core.WindowsInstaller.Bind
63 // If both tables are authored, it is an error.
64 if (mediaTemplateTable.Count > 0 && mediaTable.Count > 1)
65 {
63 - throw new WixException(WixErrors.MediaTableCollision(null));
66 + throw new WixException(ErrorMessages.MediaTableCollision(null));
67 }
68
69 // When building merge module, all the files go to "#MergeModule.CABinet".
@@ -144,11 +147,11 @@ namespace WixToolset.Core.WindowsInstaller.Bind
147 }
148 catch (FormatException)
149 {
147 - throw new WixException(WixErrors.IllegalEnvironmentVariable("WIX_MUMS", mumsString));
150 + throw new WixException(ErrorMessages.IllegalEnvironmentVariable("WIX_MUMS", mumsString));
151 }
152 catch (OverflowException)
153 {
151 - throw new WixException(WixErrors.MaximumUncompressedMediaSizeTooLarge(null, maxPreCabSizeInMB));
154 + throw new WixException(ErrorMessages.MaximumUncompressedMediaSizeTooLarge(null, maxPreCabSizeInMB));
155 }
156
157 foreach (FileFacade facade in this.FileFacades)
@@ -234,8 +237,8 @@ namespace WixToolset.Core.WindowsInstaller.Bind
237 {
238 if (cabinetMediaRows.TryGetValue(mediaRow.Cabinet, out var existingRow))
239 {
237 - Messaging.Instance.OnMessage(WixErrors.DuplicateCabinetName(mediaRow.SourceLineNumbers, mediaRow.Cabinet));
238 - Messaging.Instance.OnMessage(WixErrors.DuplicateCabinetName2(existingRow.SourceLineNumbers, existingRow.Cabinet));
240 + this.Messaging.Write(ErrorMessages.DuplicateCabinetName(mediaRow.SourceLineNumbers, mediaRow.Cabinet));
241 + this.Messaging.Write(ErrorMessages.DuplicateCabinetName2(existingRow.SourceLineNumbers, existingRow.Cabinet));
242 }
243 else
244 {
@@ -259,7 +262,7 @@ namespace WixToolset.Core.WindowsInstaller.Bind
262 {
263 if (!mediaRows.TryGetValue(facade.WixFile.DiskId, out var mediaRow))
264 {
262 - Messaging.Instance.OnMessage(WixErrors.MissingMedia(facade.File.SourceLineNumbers, facade.WixFile.DiskId));
265 + this.Messaging.Write(ErrorMessages.MissingMedia(facade.File.SourceLineNumbers, facade.WixFile.DiskId));
266 continue;
267 }
268
@@ -279,7 +282,7 @@ namespace WixToolset.Core.WindowsInstaller.Bind
282 }
283 else
284 {
282 - Messaging.Instance.OnMessage(WixErrors.ExpectedMediaCabinet(facade.File.SourceLineNumbers, facade.File.File, facade.WixFile.DiskId));
285 + this.Messaging.Write(ErrorMessages.ExpectedMediaCabinet(facade.File.SourceLineNumbers, facade.File.File, facade.WixFile.DiskId));
286 }
287 }
288 }
src/WixToolset.Core.WindowsInstaller/Bind/BindDatabaseCommand.cs
+27 -22
@@ -35,6 +35,7 @@ namespace WixToolset.Core.WindowsInstaller.Bind
35 this.ExpectedEmbeddedFiles = context.ExpectedEmbeddedFiles;
36 this.Extensions = context.Extensions;
37 this.Intermediate = context.IntermediateRepresentation;
38 + this.Messaging = context.Messaging;
39 this.OutputPath = context.OutputPath;
40 this.PdbFile = context.OutputPdbPath;
41 this.IntermediateFolder = context.IntermediateFolder;
@@ -68,6 +69,8 @@ namespace WixToolset.Core.WindowsInstaller.Bind
69
70 private Intermediate Intermediate { get; }
71
72 + private IMessaging Messaging { get; }
73 +
74 private string OutputPath { get; }
75
76 private bool SuppressAddingValidationRows { get; }
@@ -160,7 +163,7 @@ namespace WixToolset.Core.WindowsInstaller.Bind
163 // Sequence all the actions.
164 {
165 var command = new SequenceActionsCommand(section);
163 - command.Messaging = Messaging.Instance;
166 + command.Messaging = this.Messaging;
167 command.Execute();
168 }
169
@@ -191,12 +194,12 @@ namespace WixToolset.Core.WindowsInstaller.Bind
194 ////}
195 #endif
196
194 - if (Messaging.Instance.EncounteredError)
197 + if (this.Messaging.EncounteredError)
198 {
199 return;
200 }
201
199 - Messaging.Instance.OnMessage(WixVerboses.UpdatingFileInformation());
202 + this.Messaging.Write(VerboseMessages.UpdatingFileInformation());
203
204 // This must occur after all variables and source paths have been resolved.
205 List<FileFacade> fileFacades;
@@ -215,7 +218,7 @@ namespace WixToolset.Core.WindowsInstaller.Bind
218
219 // Gather information about files that did not come from merge modules (i.e. rows with a reference to the File table).
220 {
218 - var command = new UpdateFileFacadesCommand(section);
221 + var command = new UpdateFileFacadesCommand(this.Messaging, section);
222 command.FileFacades = fileFacades;
223 command.UpdateFileFacades = fileFacades.Where(f => !f.FromModule);
224 command.OverwriteHash = true;
@@ -227,13 +230,13 @@ namespace WixToolset.Core.WindowsInstaller.Bind
230 // Now that the variable cache is populated, resolve any delayed fields.
231 if (this.DelayedFields.Any())
232 {
230 - var command = new ResolveDelayedFieldsCommand(this.DelayedFields, variableCache);
233 + var command = new ResolveDelayedFieldsCommand(this.Messaging, this.DelayedFields, variableCache);
234 command.Execute();
235 }
236
237 // Set generated component guids.
238 {
236 - var command = new CalculateComponentGuids(section);
239 + var command = new CalculateComponentGuids(this.Messaging, section);
240 command.Execute();
241 }
242
@@ -244,7 +247,7 @@ namespace WixToolset.Core.WindowsInstaller.Bind
247
248 if (wixMergeTuples.Any())
249 {
247 - var command = new ExtractMergeModuleFilesCommand(section, wixMergeTuples);
250 + var command = new ExtractMergeModuleFilesCommand(this.Messaging, section, wixMergeTuples);
251 command.FileFacades = fileFacades;
252 command.OutputInstallerVersion = installerVersion;
253 command.SuppressLayout = this.SuppressLayout;
@@ -265,7 +268,7 @@ namespace WixToolset.Core.WindowsInstaller.Bind
268 #endif
269
270 // stop processing if an error previously occurred
268 - if (Messaging.Instance.EncounteredError)
271 + if (this.Messaging.EncounteredError)
272 {
273 return;
274 }
@@ -280,7 +283,7 @@ namespace WixToolset.Core.WindowsInstaller.Bind
283 Dictionary<MediaTuple, IEnumerable<FileFacade>> filesByCabinetMedia;
284 IEnumerable<FileFacade> uncompressedFiles;
285 {
283 - var command = new AssignMediaCommand(section);
286 + var command = new AssignMediaCommand(section, this.Messaging);
287 command.FileFacades = fileFacades;
288 command.FilesCompressed = compressed;
289 command.Execute();
@@ -291,7 +294,7 @@ namespace WixToolset.Core.WindowsInstaller.Bind
294 }
295
296 // stop processing if an error previously occurred
294 - if (Messaging.Instance.EncounteredError)
297 + if (this.Messaging.EncounteredError)
298 {
299 return;
300 }
@@ -355,7 +358,7 @@ namespace WixToolset.Core.WindowsInstaller.Bind
358 #endif
359
360 // Stop processing if an error previously occurred.
358 - if (Messaging.Instance.EncounteredError)
361 + if (this.Messaging.EncounteredError)
362 {
363 return;
364 }
@@ -374,13 +377,14 @@ namespace WixToolset.Core.WindowsInstaller.Bind
377 string layoutDirectory = Path.GetDirectoryName(this.OutputPath);
378 if (!this.SuppressLayout || OutputType.Module == output.Type)
379 {
377 - Messaging.Instance.OnMessage(WixVerboses.CreatingCabinetFiles());
380 + this.Messaging.Write(VerboseMessages.CreatingCabinetFiles());
381
382 var command = new CreateCabinetsCommand();
383 command.CabbingThreadCount = this.CabbingThreadCount;
384 command.CabCachePath = this.CabCachePath;
385 command.DefaultCompressionLevel = this.DefaultCompressionLevel;
386 command.Output = output;
387 + command.Messaging = this.Messaging;
388 command.BackendExtensions = this.BackendExtensions;
389 command.LayoutDirectory = layoutDirectory;
390 command.Compressed = compressed;
@@ -435,13 +439,13 @@ namespace WixToolset.Core.WindowsInstaller.Bind
439 this.ValidateComponentGuids(output);
440
441 // stop processing if an error previously occurred
438 - if (Messaging.Instance.EncounteredError)
442 + if (this.Messaging.EncounteredError)
443 {
444 return;
445 }
446
447 // Generate database file.
444 - Messaging.Instance.OnMessage(WixVerboses.GeneratingDatabase());
448 + this.Messaging.Write(VerboseMessages.GeneratingDatabase());
449 string tempDatabaseFile = Path.Combine(this.IntermediateFolder, Path.GetFileName(this.OutputPath));
450 this.GenerateDatabase(output, tempDatabaseFile, false, false);
451
@@ -452,7 +456,7 @@ namespace WixToolset.Core.WindowsInstaller.Bind
456 }
457
458 // Stop processing if an error previously occurred.
455 - if (Messaging.Instance.EncounteredError)
459 + if (this.Messaging.EncounteredError)
460 {
461 return;
462 }
@@ -468,7 +472,7 @@ namespace WixToolset.Core.WindowsInstaller.Bind
472 // Merge modules.
473 if (OutputType.Product == output.Type)
474 {
471 - Messaging.Instance.OnMessage(WixVerboses.MergingModules());
475 + this.Messaging.Write(VerboseMessages.MergingModules());
476
477 var command = new MergeModulesCommand();
478 command.FileFacades = fileFacades;
@@ -478,7 +482,7 @@ namespace WixToolset.Core.WindowsInstaller.Bind
482 command.Execute();
483 }
484
481 - if (Messaging.Instance.EncounteredError)
485 + if (this.Messaging.EncounteredError)
486 {
487 return;
488 }
@@ -492,12 +496,12 @@ namespace WixToolset.Core.WindowsInstaller.Bind
496 // set the output file for source line information
497 this.Validator.Output = this.Output;
498
495 - Messaging.Instance.OnMessage(WixVerboses.ValidatingDatabase());
499 + Messaging.Instance.Write(WixVerboses.ValidatingDatabase());
500
501 this.Validator.Validate(tempDatabaseFile);
502
503 stopwatch.Stop();
500 - Messaging.Instance.OnMessage(WixVerboses.ValidatedDatabase(stopwatch.ElapsedMilliseconds));
504 + Messaging.Instance.Write(WixVerboses.ValidatedDatabase(stopwatch.ElapsedMilliseconds));
505
506 // Stop processing if an error occurred.
507 if (Messaging.Instance.EncounteredError)
@@ -508,7 +512,7 @@ namespace WixToolset.Core.WindowsInstaller.Bind
512 #endif
513
514 // Process uncompressed files.
511 - if (!Messaging.Instance.EncounteredError && !this.SuppressLayout && uncompressedFiles.Any())
515 + if (!this.Messaging.EncounteredError && !this.SuppressLayout && uncompressedFiles.Any())
516 {
517 var command = new ProcessUncompressedFilesCommand(section);
518 command.Compressed = compressed;
@@ -908,11 +912,11 @@ namespace WixToolset.Core.WindowsInstaller.Bind
912
913 if (allComponentsHaveConditions)
914 {
911 - Messaging.Instance.OnMessage(WixWarnings.DuplicateComponentGuidsMustHaveMutuallyExclusiveConditions(row.SourceLineNumbers, row.Component, row.Guid));
915 + this.Messaging.Write(WarningMessages.DuplicateComponentGuidsMustHaveMutuallyExclusiveConditions(row.SourceLineNumbers, row.Component, row.Guid));
916 }
917 else
918 {
915 - Messaging.Instance.OnMessage(WixErrors.DuplicateComponentGuids(row.SourceLineNumbers, row.Component, row.Guid));
919 + this.Messaging.Write(ErrorMessages.DuplicateComponentGuids(row.SourceLineNumbers, row.Component, row.Guid));
920 }
921 }
922
@@ -929,6 +933,7 @@ namespace WixToolset.Core.WindowsInstaller.Bind
933 private void UpdateControlText(Output output)
934 {
935 var command = new UpdateControlTextCommand();
936 + command.Messaging = this.Messaging;
937 command.BBControlTable = output.Tables["BBControl"];
938 command.WixBBControlTable = output.Tables["WixBBControl"];
939 command.ControlTable = output.Tables["Control"];
src/WixToolset.Core.WindowsInstaller/Bind/BindTransformCommand.cs
+9 -6
@@ -6,11 +6,12 @@ namespace WixToolset.Core.WindowsInstaller.Bind
6 using System.Collections.Generic;
7 using System.Globalization;
8 using System.IO;
9 + using WixToolset.Core.Native;
10 using WixToolset.Data;
11 + using WixToolset.Data.WindowsInstaller;
12 using WixToolset.Extensibility;
13 + using WixToolset.Extensibility.Services;
14 using WixToolset.Msi;
12 - using WixToolset.Core.Native;
13 - using WixToolset.Data.WindowsInstaller;
15
16 internal class BindTransformCommand
17 {
@@ -22,6 +23,8 @@ namespace WixToolset.Core.WindowsInstaller.Bind
23
24 public Output Transform { private get; set; }
25
26 + public IMessaging Messaging { private get; set; }
27 +
28 public string OutputPath { private get; set; }
29
30 public void Execute()
@@ -197,7 +200,7 @@ namespace WixToolset.Core.WindowsInstaller.Bind
200 if (((int)TransformFlags.ValidateUpgradeCode & transformFlags) != 0 &&
201 (String.IsNullOrEmpty(targetUpgradeCode) || String.IsNullOrEmpty(updatedUpgradeCode)))
202 {
200 - Messaging.Instance.OnMessage(WixErrors.BothUpgradeCodesRequired());
203 + this.Messaging.Write(ErrorMessages.BothUpgradeCodesRequired());
204 }
205
206 string emptyFile = null;
@@ -276,7 +279,7 @@ namespace WixToolset.Core.WindowsInstaller.Bind
279 {
280 if (RowOperation.Add == fileRow.Operation)
281 {
279 - Messaging.Instance.OnMessage(WixErrors.InvalidAddedFileRowWithoutSequence(fileRow.SourceLineNumbers, (string)fileRow[0]));
282 + this.Messaging.Write(ErrorMessages.InvalidAddedFileRowWithoutSequence(fileRow.SourceLineNumbers, (string)fileRow[0]));
283 break;
284 }
285
@@ -384,7 +387,7 @@ namespace WixToolset.Core.WindowsInstaller.Bind
387 //}
388
389 // Any errors encountered up to this point can cause errors during generation.
387 - if (Messaging.Instance.EncounteredError)
390 + if (this.Messaging.EncounteredError)
391 {
392 return;
393 }
@@ -419,7 +422,7 @@ namespace WixToolset.Core.WindowsInstaller.Bind
422 }
423 else
424 {
422 - Messaging.Instance.OnMessage(WixErrors.NoDifferencesInTransform(this.Transform.SourceLineNumbers));
425 + this.Messaging.Write(ErrorMessages.NoDifferencesInTransform(this.Transform.SourceLineNumbers));
426 }
427 }
428 }
src/WixToolset.Core.WindowsInstaller/Bind/CabinetBuilder.cs
+12 -10
@@ -4,13 +4,13 @@ namespace WixToolset.Core.WindowsInstaller.Bind
4 {
5 using System;
6 using System.Collections;
7 - using System.Collections.Generic;
7 using System.IO;
8 using System.Linq;
9 using System.Threading;
10 using WixToolset.Core.Bind;
11 using WixToolset.Core.Native;
12 using WixToolset.Data;
13 + using WixToolset.Extensibility.Services;
14
15 /// <summary>
16 /// Builds cabinets using multiple threads. This implements a thread pool that generates cabinets with multiple
@@ -25,16 +25,12 @@ namespace WixToolset.Core.WindowsInstaller.Bind
25 // Address of Binder's callback function for Cabinet Splitting
26 private IntPtr newCabNamesCallBackAddress;
27
28 - public int MaximumCabinetSizeForLargeFileSplitting { get; set; }
29 -
30 - public int MaximumUncompressedMediaSize { get; set; }
31 -
28 /// <summary>
29 /// Instantiate a new CabinetBuilder.
30 /// </summary>
31 /// <param name="threadCount">number of threads to use</param>
32 /// <param name="newCabNamesCallBackAddress">Address of Binder's callback function for Cabinet Splitting</param>
37 - public CabinetBuilder(int threadCount, IntPtr newCabNamesCallBackAddress)
33 + public CabinetBuilder(IMessaging messaging, int threadCount, IntPtr newCabNamesCallBackAddress)
34 {
35 if (0 >= threadCount)
36 {
@@ -43,13 +39,19 @@ namespace WixToolset.Core.WindowsInstaller.Bind
39
40 this.cabinetWorkItems = new Queue();
41 this.lockObject = new object();
46 -
42 + this.Messaging = messaging;
43 this.threadCount = threadCount;
44
45 // Set Address of Binder's callback function for Cabinet Splitting
46 this.newCabNamesCallBackAddress = newCabNamesCallBackAddress;
47 }
48
49 + private IMessaging Messaging { get; }
50 +
51 + public int MaximumCabinetSizeForLargeFileSplitting { get; set; }
52 +
53 + public int MaximumUncompressedMediaSize { get; set; }
54 +
55 /// <summary>
56 /// Enqueues a CabinetWorkItem to the queue.
57 /// </summary>
@@ -119,11 +121,11 @@ namespace WixToolset.Core.WindowsInstaller.Bind
121 }
122 catch (WixException we)
123 {
122 - Messaging.Instance.OnMessage(we.Error);
124 + this.Messaging.Write(we.Error);
125 }
126 catch (Exception e)
127 {
126 - Messaging.Instance.OnMessage(WixErrors.UnexpectedException(e.Message, e.GetType().ToString(), e.StackTrace));
128 + this.Messaging.Write(ErrorMessages.UnexpectedException(e.Message, e.GetType().ToString(), e.StackTrace));
129 }
130 }
131
@@ -133,7 +135,7 @@ namespace WixToolset.Core.WindowsInstaller.Bind
135 /// <param name="cabinetWorkItem">CabinetWorkItem containing information about the cabinet to create.</param>
136 private void CreateCabinet(CabinetWorkItem cabinetWorkItem)
137 {
136 - Messaging.Instance.OnMessage(WixVerboses.CreateCabinet(cabinetWorkItem.CabinetFile));
138 + this.Messaging.Write(VerboseMessages.CreateCabinet(cabinetWorkItem.CabinetFile));
139
140 int maxCabinetSize = 0; // The value of 0 corresponds to default of 2GB which means no cabinet splitting
141 ulong maxPreCompressedSizeInBytes = 0;
src/WixToolset.Core.WindowsInstaller/Bind/CabinetResolver.cs
+1 -1
@@ -109,7 +109,7 @@ namespace WixToolset.Core.WindowsInstaller.Bind
109 }
110 catch (ArgumentException)
111 {
112 - throw new WixException(WixErrors.IllegalCharactersInPath(path));
112 + throw new WixException(ErrorMessages.IllegalCharactersInPath(path));
113 }
114 }
115 }
src/WixToolset.Core.WindowsInstaller/Bind/CalculateComponentGuids.cs
+10 -6
@@ -10,17 +10,21 @@ namespace WixToolset.Core.WindowsInstaller.Bind
10 using WixToolset.Core.Native;
11 using WixToolset.Data;
12 using WixToolset.Data.Tuples;
13 + using WixToolset.Extensibility.Services;
14
15 /// <summary>
16 /// Set the guids for components with generatable guids.
17 /// </summary>
18 internal class CalculateComponentGuids
19 {
19 - public CalculateComponentGuids(IntermediateSection section)
20 + public CalculateComponentGuids(IMessaging messaging, IntermediateSection section)
21 {
22 + this.Messaging = messaging;
23 this.Section = section;
24 }
25
26 + private IMessaging Messaging { get; }
27 +
28 private IntermediateSection Section { get; }
29
30 public void Execute()
@@ -43,7 +47,7 @@ namespace WixToolset.Core.WindowsInstaller.Bind
47
48 if (String.IsNullOrEmpty(componentRow.KeyPath) || odbcDataSourceKeyPath)
49 {
46 - Messaging.Instance.OnMessage(WixErrors.IllegalComponentWithAutoGeneratedGuid(componentRow.SourceLineNumbers));
50 + this.Messaging.Write(ErrorMessages.IllegalComponentWithAutoGeneratedGuid(componentRow.SourceLineNumbers));
51 continue;
52 }
53
@@ -143,13 +147,13 @@ namespace WixToolset.Core.WindowsInstaller.Bind
147 path.StartsWith(@"StartMenuFolder\programs", StringComparison.Ordinal) ||
148 path.StartsWith(@"WindowsFolder\fonts", StringComparison.Ordinal))
149 {
146 - Messaging.Instance.OnMessage(WixErrors.IllegalPathForGeneratedComponentGuid(componentRow.SourceLineNumbers, fileRow.Component_, path));
150 + this.Messaging.Write(ErrorMessages.IllegalPathForGeneratedComponentGuid(componentRow.SourceLineNumbers, fileRow.Component_, path));
151 }
152
153 // if component has more than one file, the key path must be versioned
154 if (1 < numFilesInComponent && String.IsNullOrEmpty(fileRow.Version))
155 {
152 - Messaging.Instance.OnMessage(WixErrors.IllegalGeneratedGuidComponentUnversionedKeypath(componentRow.SourceLineNumbers));
156 + this.Messaging.Write(ErrorMessages.IllegalGeneratedGuidComponentUnversionedKeypath(componentRow.SourceLineNumbers));
157 }
158 }
159 else
@@ -157,13 +161,13 @@ namespace WixToolset.Core.WindowsInstaller.Bind
161 // not a key path, so it must be an unversioned file if component has more than one file
162 if (1 < numFilesInComponent && !String.IsNullOrEmpty(fileRow.Version))
163 {
160 - Messaging.Instance.OnMessage(WixErrors.IllegalGeneratedGuidComponentVersionedNonkeypath(componentRow.SourceLineNumbers));
164 + this.Messaging.Write(ErrorMessages.IllegalGeneratedGuidComponentVersionedNonkeypath(componentRow.SourceLineNumbers));
165 }
166 }
167 }
168
169 // if the rules were followed, reward with a generated guid
166 - if (!Messaging.Instance.EncounteredError)
170 + if (!this.Messaging.EncounteredError)
171 {
172 componentRow.ComponentId = Uuid.NewUuid(BindDatabaseCommand.WixComponentGuidNamespace, path).ToString("B").ToUpperInvariant();
173 }
src/WixToolset.Core.WindowsInstaller/Bind/CopyTransformDataCommand.cs
+7 -4
@@ -12,13 +12,16 @@ namespace WixToolset.Core.WindowsInstaller.Bind
12 using WixToolset.Data.WindowsInstaller;
13 using WixToolset.Data.WindowsInstaller.Rows;
14 using WixToolset.Extensibility;
15 + using WixToolset.Extensibility.Services;
16
17 internal class CopyTransformDataCommand
18 {
19 public bool CopyOutFileRows { private get; set; }
20
21 public IEnumerable<IBinderExtension> Extensions { private get; set; }
21 -
22 +
23 + public IMessaging Messaging { private get; set; }
24 +
25 public Output Output { private get; set; }
26
27 public TableDefinitionCollection TableDefinitions { private get; set; }
@@ -465,14 +468,14 @@ namespace WixToolset.Core.WindowsInstaller.Bind
468 {
469 if (seqDuplicateFiles < seqInstallFiles)
470 {
468 - throw new WixException(WixErrors.InsertInvalidSequenceActionOrder(mainFileRow.SourceLineNumbers, iesTable.Name, "InstallFiles", "DuplicateFiles", wixPatchAction.Action));
471 + throw new WixException(ErrorMessages.InsertInvalidSequenceActionOrder(mainFileRow.SourceLineNumbers, iesTable.Name, "InstallFiles", "DuplicateFiles", wixPatchAction.Action));
472 }
473 else
474 {
475 sequence = (seqDuplicateFiles + seqInstallFiles) / 2;
476 if (seqInstallFiles == sequence || seqDuplicateFiles == sequence)
477 {
475 - throw new WixException(WixErrors.InsertSequenceNoSpace(mainFileRow.SourceLineNumbers, iesTable.Name, "InstallFiles", "DuplicateFiles", wixPatchAction.Action));
478 + throw new WixException(ErrorMessages.InsertSequenceNoSpace(mainFileRow.SourceLineNumbers, iesTable.Name, "InstallFiles", "DuplicateFiles", wixPatchAction.Action));
479 }
480 }
481 }
@@ -579,7 +582,7 @@ namespace WixToolset.Core.WindowsInstaller.Bind
582 // Make sure all changes to non keypath files also had a change in the keypath.
583 if (!componentWithChangedKeyPath.ContainsKey(componentFile.Key) && componentKeyPath.ContainsKey(componentFile.Key))
584 {
582 - Messaging.Instance.OnMessage(WixWarnings.UpdateOfNonKeyPathFile((string)componentFile.Value, (string)componentFile.Key, (string)componentKeyPath[componentFile.Key]));
585 + this.Messaging.Write(WarningMessages.UpdateOfNonKeyPathFile((string)componentFile.Value, (string)componentFile.Key, (string)componentKeyPath[componentFile.Key]));
586 }
587 }
588 }
src/WixToolset.Core.WindowsInstaller/Bind/CreateCabinetsCommand.cs
+22 -19
@@ -16,6 +16,7 @@ namespace WixToolset.Core.WindowsInstaller.Bind
16 using WixToolset.Data.WindowsInstaller;
17 using WixToolset.Data.WindowsInstaller.Rows;
18 using WixToolset.Extensibility;
19 + using WixToolset.Extensibility.Services;
20
21 /// <summary>
22 /// Creates cabinet files.
@@ -45,6 +46,8 @@ namespace WixToolset.Core.WindowsInstaller.Bind
46
47 public string CabCachePath { private get; set; }
48
49 + public IMessaging Messaging { private get; set; }
50 +
51 public string TempFilesLocation { private get; set; }
52
53 /// <summary>
@@ -85,7 +88,7 @@ namespace WixToolset.Core.WindowsInstaller.Bind
88 this.SetCabbingThreadCount();
89
90 // Send Binder object to Facilitate NewCabNamesCallBack Callback
88 - CabinetBuilder cabinetBuilder = new CabinetBuilder(this.CabbingThreadCount, Marshal.GetFunctionPointerForDelegate(this.newCabNamesCallBack));
91 + CabinetBuilder cabinetBuilder = new CabinetBuilder(this.Messaging, this.CabbingThreadCount, Marshal.GetFunctionPointerForDelegate(this.newCabNamesCallBack));
92
93 // Supply Compile MediaTemplate Attributes to Cabinet Builder
94 this.GetMediaTemplateAttributes(out var MaximumCabinetSizeForLargeFileSplitting, out var MaximumUncompressedMediaSize);
@@ -120,14 +123,14 @@ namespace WixToolset.Core.WindowsInstaller.Bind
123 }
124
125 // stop processing if an error previously occurred
123 - if (Messaging.Instance.EncounteredError)
126 + if (this.Messaging.EncounteredError)
127 {
128 return;
129 }
130
131 // create queued cabinets with multiple threads
132 cabinetBuilder.CreateQueuedCabinets();
130 - if (Messaging.Instance.EncounteredError)
133 + if (this.Messaging.EncounteredError)
134 {
135 return;
136 }
@@ -152,7 +155,7 @@ namespace WixToolset.Core.WindowsInstaller.Bind
155
156 if (0 >= this.CabbingThreadCount)
157 {
155 - throw new WixException(WixErrors.IllegalEnvironmentVariable("NUMBER_OF_PROCESSORS", numberOfProcessors));
158 + throw new WixException(ErrorMessages.IllegalEnvironmentVariable("NUMBER_OF_PROCESSORS", numberOfProcessors));
159 }
160 }
161 else // default to 1 if the environment variable is not set
@@ -160,15 +163,15 @@ namespace WixToolset.Core.WindowsInstaller.Bind
163 this.CabbingThreadCount = 1;
164 }
165
163 - Messaging.Instance.OnMessage(WixVerboses.SetCabbingThreadCount(this.CabbingThreadCount.ToString()));
166 + this.Messaging.Write(VerboseMessages.SetCabbingThreadCount(this.CabbingThreadCount.ToString()));
167 }
168 catch (ArgumentException)
169 {
167 - throw new WixException(WixErrors.IllegalEnvironmentVariable("NUMBER_OF_PROCESSORS", numberOfProcessors));
170 + throw new WixException(ErrorMessages.IllegalEnvironmentVariable("NUMBER_OF_PROCESSORS", numberOfProcessors));
171 }
172 catch (FormatException)
173 {
171 - throw new WixException(WixErrors.IllegalEnvironmentVariable("NUMBER_OF_PROCESSORS", numberOfProcessors));
174 + throw new WixException(ErrorMessages.IllegalEnvironmentVariable("NUMBER_OF_PROCESSORS", numberOfProcessors));
175 }
176 }
177 }
@@ -202,11 +205,11 @@ namespace WixToolset.Core.WindowsInstaller.Bind
205 // If building a patch, remind them to run -p for torch.
206 if (OutputType.Patch == output.Type)
207 {
205 - Messaging.Instance.OnMessage(WixWarnings.EmptyCabinet(mediaRow.SourceLineNumbers, cabinetName, true));
208 + this.Messaging.Write(WarningMessages.EmptyCabinet(mediaRow.SourceLineNumbers, cabinetName, true));
209 }
210 else
211 {
209 - Messaging.Instance.OnMessage(WixWarnings.EmptyCabinet(mediaRow.SourceLineNumbers, cabinetName));
212 + this.Messaging.Write(WarningMessages.EmptyCabinet(mediaRow.SourceLineNumbers, cabinetName));
213 }
214 }
215
@@ -223,7 +226,7 @@ namespace WixToolset.Core.WindowsInstaller.Bind
226 }
227 else // reuse the cabinet from the cabinet cache.
228 {
226 - Messaging.Instance.OnMessage(WixVerboses.ReusingCabCache(mediaRow.SourceLineNumbers, mediaRow.Cabinet, resolvedCabinet.Path));
229 + this.Messaging.Write(VerboseMessages.ReusingCabCache(mediaRow.SourceLineNumbers, mediaRow.Cabinet, resolvedCabinet.Path));
230
231 try
232 {
@@ -237,7 +240,7 @@ namespace WixToolset.Core.WindowsInstaller.Bind
240 }
241 catch (Exception e)
242 {
240 - Messaging.Instance.OnMessage(WixWarnings.CannotUpdateCabCache(mediaRow.SourceLineNumbers, resolvedCabinet.Path, e.Message));
243 + this.Messaging.Write(WarningMessages.CannotUpdateCabCache(mediaRow.SourceLineNumbers, resolvedCabinet.Path, e.Message));
244 }
245 }
246
@@ -303,7 +306,7 @@ namespace WixToolset.Core.WindowsInstaller.Bind
306 if (!mutex.WaitOne(0, false)) // Check if you can get the lock
307 {
308 // Cound not get the Lock
306 - Messaging.Instance.OnMessage(WixVerboses.CabinetsSplitInParallel());
309 + this.Messaging.Write(VerboseMessages.CabinetsSplitInParallel());
310 mutex.WaitOne(); // Wait on other thread
311 }
312
@@ -333,7 +336,7 @@ namespace WixToolset.Core.WindowsInstaller.Bind
336 // Check if File Transfer was added
337 if (!transferAdded)
338 {
336 - throw new WixException(WixErrors.SplitCabinetCopyRegistrationFailed(newCabinetName, firstCabinetName));
339 + throw new WixException(ErrorMessages.SplitCabinetCopyRegistrationFailed(newCabinetName, firstCabinetName));
340 }
341
342 // Add the new Cabinets to media table using LastSequence of Base Cabinet
@@ -365,14 +368,14 @@ namespace WixToolset.Core.WindowsInstaller.Bind
368 if (newCabinetName.Equals(mediaRow.Cabinet, StringComparison.InvariantCultureIgnoreCase))
369 {
370 // Name Collision of generated Split Cabinet Name and user Specified Cab name for current row
368 - throw new WixException(WixErrors.SplitCabinetNameCollision(newCabinetName, firstCabinetName));
371 + throw new WixException(ErrorMessages.SplitCabinetNameCollision(newCabinetName, firstCabinetName));
372 }
373 }
374
375 // Check if the last Split Cabinet was found in the Media Table
376 if (!lastSplitCabinetFound)
377 {
375 - throw new WixException(WixErrors.SplitCabinetInsertionFailed(newCabinetName, firstCabinetName, lastCabinetOfThisSequence));
378 + throw new WixException(ErrorMessages.SplitCabinetInsertionFailed(newCabinetName, firstCabinetName, lastCabinetOfThisSequence));
379 }
380
381 // The new Row has to be inserted just after the last cab in this cabinet split chain according to DiskID Sort
@@ -454,11 +457,11 @@ namespace WixToolset.Core.WindowsInstaller.Bind
457 }
458 catch (FormatException)
459 {
457 - throw new WixException(WixErrors.IllegalEnvironmentVariable("WIX_MCSLFS", mcslfsString));
460 + throw new WixException(ErrorMessages.IllegalEnvironmentVariable("WIX_MCSLFS", mcslfsString));
461 }
462 catch (OverflowException)
463 {
461 - throw new WixException(WixErrors.MaximumCabinetSizeForLargeFileSplittingTooLarge(null, maxCabSizeForLargeFileInMB, MaxValueOfMaxCabSizeForLargeFileSplitting));
464 + throw new WixException(ErrorMessages.MaximumCabinetSizeForLargeFileSplittingTooLarge(null, maxCabSizeForLargeFileInMB, MaxValueOfMaxCabSizeForLargeFileSplitting));
465 }
466
467 try
@@ -476,11 +479,11 @@ namespace WixToolset.Core.WindowsInstaller.Bind
479 }
480 catch (FormatException)
481 {
479 - throw new WixException(WixErrors.IllegalEnvironmentVariable("WIX_MUMS", mumsString));
482 + throw new WixException(ErrorMessages.IllegalEnvironmentVariable("WIX_MUMS", mumsString));
483 }
484 catch (OverflowException)
485 {
483 - throw new WixException(WixErrors.MaximumUncompressedMediaSizeTooLarge(null, maxPreCompressedSizeInMB));
486 + throw new WixException(ErrorMessages.MaximumUncompressedMediaSizeTooLarge(null, maxPreCompressedSizeInMB));
487 }
488
489 maxCabSizeForLargeFileSplitting = maxCabSizeForLargeFileInMB;
src/WixToolset.Core.WindowsInstaller/Bind/CreateIdtFileCommand.cs
+7 -3
@@ -8,17 +8,21 @@ namespace WixToolset.Core.WindowsInstaller.Bind
8 using System.Text;
9 using WixToolset.Data;
10 using WixToolset.Data.WindowsInstaller;
11 + using WixToolset.Extensibility.Services;
12
13 internal class CreateIdtFileCommand
14 {
14 - public CreateIdtFileCommand(Table table, int codepage, string intermediateFolder, bool keepAddedColumns)
15 + public CreateIdtFileCommand(IMessaging messaging, Table table, int codepage, string intermediateFolder, bool keepAddedColumns)
16 {
17 + this.Messaging = messaging;
18 this.Table = table;
19 this.Codepage = codepage;
20 this.IntermediateFolder = intermediateFolder;
21 this.KeepAddedColumns = keepAddedColumns;
22 }
23
24 + private IMessaging Messaging { get; }
25 +
26 private Table Table { get; }
27
28 private int Codepage { get; set; }
@@ -67,7 +71,7 @@ namespace WixToolset.Core.WindowsInstaller.Bind
71
72 if (TableDefinition.MaxColumnsInRealTable < table.Definition.Columns.Count)
73 {
70 - throw new WixException(WixDataErrors.TooManyColumnsInRealTable(table.Definition.Name, table.Definition.Columns.Count, TableDefinition.MaxColumnsInRealTable));
74 + throw new WixException(ErrorMessages.TooManyColumnsInRealTable(table.Definition.Name, table.Definition.Columns.Count, TableDefinition.MaxColumnsInRealTable));
75 }
76
77 // Tack on the table header, and flush before we start writing bytes directly to the stream.
@@ -98,7 +102,7 @@ namespace WixToolset.Core.WindowsInstaller.Bind
102 }
103 catch (EncoderFallbackException)
104 {
101 - Messaging.Instance.OnMessage(WixDataErrors.InvalidStringForCodepage(row.SourceLineNumbers, Convert.ToString(writer.Encoding.WindowsCodePage, CultureInfo.InvariantCulture)));
105 + this.Messaging.Write(ErrorMessages.InvalidStringForCodepage(row.SourceLineNumbers, Convert.ToString(writer.Encoding.WindowsCodePage, CultureInfo.InvariantCulture)));
106
107 rowBytes = convertEncoding.GetBytes(rowString);
108 }
src/WixToolset.Core.WindowsInstaller/Bind/ExtractMergeModuleFilesCommand.cs
+15 -11
@@ -15,18 +15,22 @@ namespace WixToolset.Core.WindowsInstaller.Bind
15 using WixToolset.Core.Native;
16 using WixToolset.Core.Bind;
17 using WixToolset.Data.Tuples;
18 + using WixToolset.Extensibility.Services;
19
20 /// <summary>
21 /// Retrieve files information and extract them from merge modules.
22 /// </summary>
23 internal class ExtractMergeModuleFilesCommand
24 {
24 - public ExtractMergeModuleFilesCommand(IntermediateSection section, List<WixMergeTuple> wixMergeTuples)
25 + public ExtractMergeModuleFilesCommand(IMessaging messaging, IntermediateSection section, List<WixMergeTuple> wixMergeTuples)
26 {
27 + this.Messaging = messaging;
28 this.Section = section;
29 this.WixMergeTuples = wixMergeTuples;
30 }
31
32 + private IMessaging Messaging { get; }
33 +
34 private IntermediateSection Section { get; }
35
36 private List<WixMergeTuple> WixMergeTuples { get; }
@@ -121,11 +125,11 @@ namespace WixToolset.Core.WindowsInstaller.Bind
125 // If case-sensitive collision with another merge module or a user-authored file identifier.
126 if (indexedFileFacades.TryGetValue(mergeModuleFileFacade.File.File, out var collidingFacade))
127 {
124 - Messaging.Instance.OnMessage(WixErrors.DuplicateModuleFileIdentifier(wixMergeRow.SourceLineNumbers, wixMergeRow.Id.Id, collidingFacade.File.File));
128 + this.Messaging.Write(ErrorMessages.DuplicateModuleFileIdentifier(wixMergeRow.SourceLineNumbers, wixMergeRow.Id.Id, collidingFacade.File.File));
129 }
130 else if (uniqueModuleFileIdentifiers.TryGetValue(mergeModuleFileFacade.File.File, out collidingFacade)) // case-insensitive collision with another file identifier in the same merge module
131 {
128 - Messaging.Instance.OnMessage(WixErrors.DuplicateModuleCaseInsensitiveFileIdentifier(wixMergeRow.SourceLineNumbers, wixMergeRow.Id.Id, mergeModuleFileFacade.File.File, collidingFacade.File.File));
132 + this.Messaging.Write(ErrorMessages.DuplicateModuleCaseInsensitiveFileIdentifier(wixMergeRow.SourceLineNumbers, wixMergeRow.Id.Id, mergeModuleFileFacade.File.File, collidingFacade.File.File));
133 }
134 else // no collision
135 {
@@ -152,23 +156,23 @@ namespace WixToolset.Core.WindowsInstaller.Bind
156 int moduleInstallerVersion = Convert.ToInt32(moduleInstallerVersionString, CultureInfo.InvariantCulture);
157 if (moduleInstallerVersion > this.OutputInstallerVersion)
158 {
155 - Messaging.Instance.OnMessage(WixWarnings.InvalidHigherInstallerVersionInModule(wixMergeRow.SourceLineNumbers, wixMergeRow.Id.Id, moduleInstallerVersion, this.OutputInstallerVersion));
159 + this.Messaging.Write(WarningMessages.InvalidHigherInstallerVersionInModule(wixMergeRow.SourceLineNumbers, wixMergeRow.Id.Id, moduleInstallerVersion, this.OutputInstallerVersion));
160 }
161 }
162 catch (FormatException)
163 {
160 - throw new WixException(WixErrors.MissingOrInvalidModuleInstallerVersion(wixMergeRow.SourceLineNumbers, wixMergeRow.Id.Id, wixMergeRow.SourceFile, moduleInstallerVersionString));
164 + throw new WixException(ErrorMessages.MissingOrInvalidModuleInstallerVersion(wixMergeRow.SourceLineNumbers, wixMergeRow.Id.Id, wixMergeRow.SourceFile, moduleInstallerVersionString));
165 }
166 }
167 }
168 }
169 catch (FileNotFoundException)
170 {
167 - throw new WixException(WixErrors.FileNotFound(wixMergeRow.SourceLineNumbers, wixMergeRow.SourceFile));
171 + throw new WixException(ErrorMessages.FileNotFound(wixMergeRow.SourceLineNumbers, wixMergeRow.SourceFile));
172 }
173 catch (Win32Exception)
174 {
171 - throw new WixException(WixErrors.CannotOpenMergeModule(wixMergeRow.SourceLineNumbers, wixMergeRow.Id.Id, wixMergeRow.SourceFile));
175 + throw new WixException(ErrorMessages.CannotOpenMergeModule(wixMergeRow.SourceLineNumbers, wixMergeRow.Id.Id, wixMergeRow.SourceFile));
176 }
177
178 return containsFiles;
@@ -187,7 +191,7 @@ namespace WixToolset.Core.WindowsInstaller.Bind
191 }
192 catch (FormatException)
193 {
190 - Messaging.Instance.OnMessage(WixErrors.InvalidMergeLanguage(wixMergeRow.SourceLineNumbers, mergeId, wixMergeRow.Language.ToString()));
194 + this.Messaging.Write(ErrorMessages.InvalidMergeLanguage(wixMergeRow.SourceLineNumbers, mergeId, wixMergeRow.Language.ToString()));
195 return;
196 }
197
@@ -210,16 +214,16 @@ namespace WixToolset.Core.WindowsInstaller.Bind
214 }
215 catch (FileNotFoundException)
216 {
213 - throw new WixException(WixErrors.CabFileDoesNotExist(moduleCabPath, wixMergeRow.SourceFile, mergeIdPath));
217 + throw new WixException(ErrorMessages.CabFileDoesNotExist(moduleCabPath, wixMergeRow.SourceFile, mergeIdPath));
218 }
219 catch
220 {
217 - throw new WixException(WixErrors.CabExtractionFailed(moduleCabPath, wixMergeRow.SourceFile, mergeIdPath));
221 + throw new WixException(ErrorMessages.CabExtractionFailed(moduleCabPath, wixMergeRow.SourceFile, mergeIdPath));
222 }
223 }
224 catch (COMException ce)
225 {
222 - throw new WixException(WixErrors.UnableToOpenModule(wixMergeRow.SourceLineNumbers, wixMergeRow.SourceFile, ce.Message));
226 + throw new WixException(ErrorMessages.UnableToOpenModule(wixMergeRow.SourceLineNumbers, wixMergeRow.SourceFile, ce.Message));
227 }
228 finally
229 {
src/WixToolset.Core.WindowsInstaller/Bind/GenerateDatabaseCommand.cs
+11 -7
@@ -13,6 +13,7 @@ namespace WixToolset.Core.WindowsInstaller.Bind
13 using WixToolset.Msi;
14 using WixToolset.Core.Native;
15 using WixToolset.Data.WindowsInstaller;
16 + using WixToolset.Extensibility.Services;
17
18 internal class GenerateDatabaseCommand
19 {
@@ -25,6 +26,8 @@ namespace WixToolset.Core.WindowsInstaller.Bind
26 /// </summary>
27 public bool KeepAddedColumns { private get; set; }
28
29 + public IMessaging Messaging { private get; set; }
30 +
31 public Output Output { private get; set; }
32
33 public string OutputPath { private get; set; }
@@ -177,7 +180,7 @@ namespace WixToolset.Core.WindowsInstaller.Bind
180 try
181 {
182 //db.ImportTable(this.Output.Codepage, importTable, baseDirectory, this.KeepAddedColumns);
180 - var command = new CreateIdtFileCommand(importTable, this.Output.Codepage, baseDirectory, this.KeepAddedColumns);
183 + var command = new CreateIdtFileCommand(this.Messaging, importTable, this.Output.Codepage, baseDirectory, this.KeepAddedColumns);
184 command.Execute();
185
186 db.Import(command.IdtPath);
@@ -262,11 +265,11 @@ namespace WixToolset.Core.WindowsInstaller.Bind
265 {
266 if (0xA1 == e.NativeErrorCode) // ERROR_BAD_PATHNAME
267 {
265 - throw new WixException(WixErrors.FileNotFound(row.SourceLineNumbers, (string)row[i]));
268 + throw new WixException(ErrorMessages.FileNotFound(row.SourceLineNumbers, (string)row[i]));
269 }
270 else
271 {
269 - throw new WixException(WixErrors.Win32Exception(e.NativeErrorCode, e.Message));
272 + throw new WixException(ErrorMessages.Win32Exception(e.NativeErrorCode, e.Message));
273 }
274 }
275 }
@@ -279,7 +282,7 @@ namespace WixToolset.Core.WindowsInstaller.Bind
282 // check for a stream name that is more than 62 characters long (the maximum allowed length)
283 if (needStream && MsiInterop.MsiMaxStreamNameLength < streamName.Length)
284 {
282 - Messaging.Instance.OnMessage(WixErrors.StreamNameTooLong(row.SourceLineNumbers, table.Name, streamName.ToString(), streamName.Length));
285 + this.Messaging.Write(ErrorMessages.StreamNameTooLong(row.SourceLineNumbers, table.Name, streamName.ToString(), streamName.Length));
286 }
287 else // add the row to the database
288 {
@@ -309,7 +312,7 @@ namespace WixToolset.Core.WindowsInstaller.Bind
312 // Bind the transform.
313 this.BindTransform(subStorage.Data, transformFile);
314
312 - if (Messaging.Instance.EncounteredError)
315 + if (this.Messaging.EncounteredError)
316 {
317 continue;
318 }
@@ -338,7 +341,8 @@ namespace WixToolset.Core.WindowsInstaller.Bind
341
342 private void BindTransform(Output transform, string outputPath)
343 {
341 - BindTransformCommand command = new BindTransformCommand();
344 + var command = new BindTransformCommand();
345 + command.Messaging = this.Messaging;
346 command.Extensions = this.Extensions;
347 command.TempFilesLocation = this.TempFilesLocation;
348 command.Transform = transform;
@@ -372,7 +376,7 @@ namespace WixToolset.Core.WindowsInstaller.Bind
376 catch (WixInvalidIdtException)
377 {
378 // the IDT should be valid, so an invalid code page was given
375 - throw new WixException(WixErrors.IllegalCodepage(codepage));
379 + throw new WixException(ErrorMessages.IllegalCodepage(codepage));
380 }
381 }
382 }
src/WixToolset.Core.WindowsInstaller/Bind/MergeModulesCommand.cs
+20 -17
@@ -13,6 +13,7 @@ namespace WixToolset.Core.WindowsInstaller.Bind
13 using WixToolset.Data;
14 using WixToolset.Data.WindowsInstaller;
15 using WixToolset.Data.WindowsInstaller.Rows;
16 + using WixToolset.Extensibility.Services;
17 using WixToolset.MergeMod;
18 using WixToolset.Msi;
19
@@ -23,6 +24,8 @@ namespace WixToolset.Core.WindowsInstaller.Bind
24 {
25 public IEnumerable<FileFacade> FileFacades { private get; set; }
26
27 + public IMessaging Messaging { private get; set; }
28 +
29 public Output Output { private get; set; }
30
31 public string OutputPath { private get; set; }
@@ -73,11 +76,11 @@ namespace WixToolset.Core.WindowsInstaller.Bind
76 }
77 catch (FormatException)
78 {
76 - Messaging.Instance.OnMessage(WixErrors.InvalidMergeLanguage(wixMergeRow.SourceLineNumbers, wixMergeRow.Id, wixMergeRow.Language));
79 + this.Messaging.Write(ErrorMessages.InvalidMergeLanguage(wixMergeRow.SourceLineNumbers, wixMergeRow.Id, wixMergeRow.Language));
80 continue;
81 }
82
80 - Messaging.Instance.OnMessage(WixVerboses.OpeningMergeModule(wixMergeRow.SourceFile, mergeLanguage));
83 + this.Messaging.Write(VerboseMessages.OpeningMergeModule(wixMergeRow.SourceFile, mergeLanguage));
84 merge.OpenModule(wixMergeRow.SourceFile, mergeLanguage);
85 moduleOpen = true;
86
@@ -89,7 +92,7 @@ namespace WixToolset.Core.WindowsInstaller.Bind
92 }
93
94 // merge the module into the database that's being built
92 - Messaging.Instance.OnMessage(WixVerboses.MergingMergeModule(wixMergeRow.SourceFile));
95 + this.Messaging.Write(VerboseMessages.MergingMergeModule(wixMergeRow.SourceFile));
96 merge.MergeEx(wixMergeRow.Feature, wixMergeRow.Directory, callback);
97
98 // connect any non-primary features
@@ -99,7 +102,7 @@ namespace WixToolset.Core.WindowsInstaller.Bind
102 {
103 if (wixMergeRow.Id == (string)row[1])
104 {
102 - Messaging.Instance.OnMessage(WixVerboses.ConnectingMergeModule(wixMergeRow.SourceFile, (string)row[0]));
105 + this.Messaging.Write(VerboseMessages.ConnectingMergeModule(wixMergeRow.SourceFile, (string)row[0]));
106 merge.Connect((string)row[0]);
107 }
108 }
@@ -144,38 +147,38 @@ namespace WixToolset.Core.WindowsInstaller.Bind
147 switch (mergeError.Type)
148 {
149 case MsmErrorType.msmErrorExclusion:
147 - Messaging.Instance.OnMessage(WixErrors.MergeExcludedModule(wixMergeRow.SourceLineNumbers, wixMergeRow.Id, moduleKeys.ToString()));
150 + this.Messaging.Write(ErrorMessages.MergeExcludedModule(wixMergeRow.SourceLineNumbers, wixMergeRow.Id, moduleKeys.ToString()));
151 break;
152 case MsmErrorType.msmErrorFeatureRequired:
150 - Messaging.Instance.OnMessage(WixErrors.MergeFeatureRequired(wixMergeRow.SourceLineNumbers, mergeError.ModuleTable, moduleKeys.ToString(), wixMergeRow.SourceFile, wixMergeRow.Id));
153 + this.Messaging.Write(ErrorMessages.MergeFeatureRequired(wixMergeRow.SourceLineNumbers, mergeError.ModuleTable, moduleKeys.ToString(), wixMergeRow.SourceFile, wixMergeRow.Id));
154 break;
155 case MsmErrorType.msmErrorLanguageFailed:
153 - Messaging.Instance.OnMessage(WixErrors.MergeLanguageFailed(wixMergeRow.SourceLineNumbers, mergeError.Language, wixMergeRow.SourceFile));
156 + this.Messaging.Write(ErrorMessages.MergeLanguageFailed(wixMergeRow.SourceLineNumbers, mergeError.Language, wixMergeRow.SourceFile));
157 break;
158 case MsmErrorType.msmErrorLanguageUnsupported:
156 - Messaging.Instance.OnMessage(WixErrors.MergeLanguageUnsupported(wixMergeRow.SourceLineNumbers, mergeError.Language, wixMergeRow.SourceFile));
159 + this.Messaging.Write(ErrorMessages.MergeLanguageUnsupported(wixMergeRow.SourceLineNumbers, mergeError.Language, wixMergeRow.SourceFile));
160 break;
161 case MsmErrorType.msmErrorResequenceMerge:
159 - Messaging.Instance.OnMessage(WixWarnings.MergeRescheduledAction(wixMergeRow.SourceLineNumbers, mergeError.DatabaseTable, databaseKeys.ToString(), wixMergeRow.SourceFile));
162 + this.Messaging.Write(WarningMessages.MergeRescheduledAction(wixMergeRow.SourceLineNumbers, mergeError.DatabaseTable, databaseKeys.ToString(), wixMergeRow.SourceFile));
163 break;
164 case MsmErrorType.msmErrorTableMerge:
165 if ("_Validation" != mergeError.DatabaseTable) // ignore merge errors in the _Validation table
166 {
164 - Messaging.Instance.OnMessage(WixWarnings.MergeTableFailed(wixMergeRow.SourceLineNumbers, mergeError.DatabaseTable, databaseKeys.ToString(), wixMergeRow.SourceFile));
167 + this.Messaging.Write(WarningMessages.MergeTableFailed(wixMergeRow.SourceLineNumbers, mergeError.DatabaseTable, databaseKeys.ToString(), wixMergeRow.SourceFile));
168 }
169 break;
170 case MsmErrorType.msmErrorPlatformMismatch:
168 - Messaging.Instance.OnMessage(WixErrors.MergePlatformMismatch(wixMergeRow.SourceLineNumbers, wixMergeRow.SourceFile));
171 + this.Messaging.Write(ErrorMessages.MergePlatformMismatch(wixMergeRow.SourceLineNumbers, wixMergeRow.SourceFile));
172 break;
173 default:
171 - Messaging.Instance.OnMessage(WixErrors.UnexpectedException(String.Format(CultureInfo.CurrentUICulture, WixStrings.EXP_UnexpectedMergerErrorWithType, Enum.GetName(typeof(MsmErrorType), mergeError.Type), logPath), "InvalidOperationException", Environment.StackTrace));
174 + this.Messaging.Write(ErrorMessages.UnexpectedException(String.Format(CultureInfo.CurrentUICulture, WixStrings.EXP_UnexpectedMergerErrorWithType, Enum.GetName(typeof(MsmErrorType), mergeError.Type), logPath), "InvalidOperationException", Environment.StackTrace));
175 break;
176 }
177 }
178
179 if (0 >= mergeErrors.Count && !commit)
180 {
178 - Messaging.Instance.OnMessage(WixErrors.UnexpectedException(String.Format(CultureInfo.CurrentUICulture, WixStrings.EXP_UnexpectedMergerErrorInSourceFile, wixMergeRow.SourceFile, logPath), "InvalidOperationException", Environment.StackTrace));
181 + this.Messaging.Write(ErrorMessages.UnexpectedException(String.Format(CultureInfo.CurrentUICulture, WixStrings.EXP_UnexpectedMergerErrorInSourceFile, wixMergeRow.SourceFile, logPath), "InvalidOperationException", Environment.StackTrace));
182 }
183
184 if (moduleOpen)
@@ -199,7 +202,7 @@ namespace WixToolset.Core.WindowsInstaller.Bind
202 }
203
204 // stop processing if an error previously occurred
202 - if (Messaging.Instance.EncounteredError)
205 + if (this.Messaging.EncounteredError)
206 {
207 return;
208 }
@@ -223,7 +226,7 @@ namespace WixToolset.Core.WindowsInstaller.Bind
226 {
227 if (null != record)
228 {
226 - Messaging.Instance.OnMessage(WixWarnings.SuppressMergedAction((string)row[1], row[0].ToString()));
229 + this.Messaging.Write(WarningMessages.SuppressMergedAction((string)row[1], row[0].ToString()));
230 view.Modify(ModifyView.Delete, record);
231 }
232 }
@@ -251,7 +254,7 @@ namespace WixToolset.Core.WindowsInstaller.Bind
254 break;
255 }
256
254 - Messaging.Instance.OnMessage(WixWarnings.SuppressMergedAction(resultRecord.GetString(1), tableName));
257 + this.Messaging.Write(WarningMessages.SuppressMergedAction(resultRecord.GetString(1), tableName));
258 }
259 }
260 }
@@ -273,7 +276,7 @@ namespace WixToolset.Core.WindowsInstaller.Bind
276 }
277
278 // now update the Attributes column for the files from the Merge Modules
276 - Messaging.Instance.OnMessage(WixVerboses.ResequencingMergeModuleFiles());
279 + this.Messaging.Write(VerboseMessages.ResequencingMergeModuleFiles());
280 using (View view = db.OpenView("SELECT `Sequence`, `Attributes` FROM `File` WHERE `File`=?"))
281 {
282 foreach (var file in this.FileFacades)
src/WixToolset.Core.WindowsInstaller/Bind/ProcessUncompressedFilesCommand.cs
+1 -1
@@ -97,7 +97,7 @@ namespace WixToolset.Core.WindowsInstaller.Bind
97 {
98 if (null == fileRecord)
99 {
100 - throw new WixException(WixErrors.FileIdentifierNotFound(facade.File.SourceLineNumbers, facade.File.File));
100 + throw new WixException(ErrorMessages.FileIdentifierNotFound(facade.File.SourceLineNumbers, facade.File.File));
101 }
102
103 relativeFileLayoutPath = Binder.GetFileSourcePath(directories, fileRecord[1], fileRecord[2], this.Compressed, this.LongNamesInImage);
src/WixToolset.Core.WindowsInstaller/Bind/SequenceActionsCommand.cs
+22 -21
@@ -9,6 +9,7 @@ namespace WixToolset.Core.WindowsInstaller.Bind
9 using WixToolset.Core.Native;
10 using WixToolset.Data;
11 using WixToolset.Data.Tuples;
12 + using WixToolset.Extensibility.Services;
13
14 internal class SequenceActionsCommand
15 {
@@ -27,7 +28,7 @@ namespace WixToolset.Core.WindowsInstaller.Bind
28
29 private Dictionary<string, WixActionTuple> StandardActionsById { get; }
30
30 - public Messaging Messaging { private get; set; }
31 + public IMessaging Messaging { private get; set; }
32
33 public void Execute()
34 {
@@ -64,10 +65,10 @@ namespace WixToolset.Core.WindowsInstaller.Bind
65 {
66 if (overridableActionRows.TryGetValue(actionRow.Id.Id, out var collidingActionRow))
67 {
67 - this.Messaging.OnMessage(WixErrors.OverridableActionCollision(actionRow.SourceLineNumbers, actionRow.SequenceTable.ToString(), actionRow.Action));
68 + this.Messaging.Write(ErrorMessages.OverridableActionCollision(actionRow.SourceLineNumbers, actionRow.SequenceTable.ToString(), actionRow.Action));
69 if (null != collidingActionRow.SourceLineNumbers)
70 {
70 - this.Messaging.OnMessage(WixErrors.OverridableActionCollision2(collidingActionRow.SourceLineNumbers));
71 + this.Messaging.Write(ErrorMessages.OverridableActionCollision2(collidingActionRow.SourceLineNumbers));
72 }
73 }
74 else
@@ -93,10 +94,10 @@ namespace WixToolset.Core.WindowsInstaller.Bind
94
95 if (overridableActionRows.TryGetValue(actionRow.Id.Id, out var collidingActionRow))
96 {
96 - this.Messaging.OnMessage(WixErrors.ActionCollision(actionRow.SourceLineNumbers, actionRow.SequenceTable.ToString(), actionRow.Action));
97 + this.Messaging.Write(ErrorMessages.ActionCollision(actionRow.SourceLineNumbers, actionRow.SequenceTable.ToString(), actionRow.Action));
98 if (null != collidingActionRow.SourceLineNumbers)
99 {
99 - this.Messaging.OnMessage(WixErrors.ActionCollision2(collidingActionRow.SourceLineNumbers));
100 + this.Messaging.Write(ErrorMessages.ActionCollision2(collidingActionRow.SourceLineNumbers));
101 }
102 }
103 else
@@ -127,20 +128,20 @@ namespace WixToolset.Core.WindowsInstaller.Bind
128 {
129 if (requiredActionRow.Overridable)
130 {
130 - this.Messaging.OnMessage(WixWarnings.SuppressAction(suppressActionRow.SourceLineNumbers, suppressActionRow.Action, suppressActionRow.SequenceTable.ToString()));
131 + this.Messaging.Write(WarningMessages.SuppressAction(suppressActionRow.SourceLineNumbers, suppressActionRow.Action, suppressActionRow.SequenceTable.ToString()));
132 if (null != requiredActionRow.SourceLineNumbers)
133 {
133 - this.Messaging.OnMessage(WixWarnings.SuppressAction2(requiredActionRow.SourceLineNumbers));
134 + this.Messaging.Write(WarningMessages.SuppressAction2(requiredActionRow.SourceLineNumbers));
135 }
136
137 requiredActionRows.Remove(key);
138 }
139 else // suppressing a non-overridable action row
140 {
140 - this.Messaging.OnMessage(WixErrors.SuppressNonoverridableAction(suppressActionRow.SourceLineNumbers, suppressActionRow.SequenceTable.ToString(), suppressActionRow.Action));
141 + this.Messaging.Write(ErrorMessages.SuppressNonoverridableAction(suppressActionRow.SourceLineNumbers, suppressActionRow.SequenceTable.ToString(), suppressActionRow.Action));
142 if (null != requiredActionRow.SourceLineNumbers)
143 {
143 - this.Messaging.OnMessage(WixErrors.SuppressNonoverridableAction2(requiredActionRow.SourceLineNumbers));
144 + this.Messaging.Write(ErrorMessages.SuppressNonoverridableAction2(requiredActionRow.SourceLineNumbers));
145 }
146 }
147 }
@@ -156,14 +157,14 @@ namespace WixToolset.Core.WindowsInstaller.Bind
157 // check for standard actions that don't have a sequence number in a merge module
158 if (SectionType.Module == this.Section.Type && WindowsInstallerStandard.IsStandardAction(actionRow.Action))
159 {
159 - this.Messaging.OnMessage(WixErrors.StandardActionRelativelyScheduledInModule(actionRow.SourceLineNumbers, actionRow.SequenceTable.ToString(), actionRow.Action));
160 + this.Messaging.Write(ErrorMessages.StandardActionRelativelyScheduledInModule(actionRow.SourceLineNumbers, actionRow.SequenceTable.ToString(), actionRow.Action));
161 }
162
163 this.SequenceActionRow(actionRow, requiredActionRows);
164 }
165 else if (SectionType.Module == this.Section.Type && 0 < actionRow.Sequence && !WindowsInstallerStandard.IsStandardAction(actionRow.Action)) // check for custom actions and dialogs that have a sequence number
166 {
166 - this.Messaging.OnMessage(WixErrors.CustomActionSequencedInModule(actionRow.SourceLineNumbers, actionRow.SequenceTable.ToString(), actionRow.Action));
167 + this.Messaging.Write(ErrorMessages.CustomActionSequencedInModule(actionRow.SourceLineNumbers, actionRow.SequenceTable.ToString(), actionRow.Action));
168 }
169 }
170
@@ -231,10 +232,10 @@ namespace WixToolset.Core.WindowsInstaller.Bind
232 {
233 if (sequenceScheduledActionRow.Sequence == actionRow.Sequence)
234 {
234 - this.Messaging.OnMessage(WixWarnings.ActionSequenceCollision(actionRow.SourceLineNumbers, actionRow.SequenceTable.ToString(), actionRow.Action, sequenceScheduledActionRow.Action, actionRow.Sequence));
235 + this.Messaging.Write(WarningMessages.ActionSequenceCollision(actionRow.SourceLineNumbers, actionRow.SequenceTable.ToString(), actionRow.Action, sequenceScheduledActionRow.Action, actionRow.Sequence));
236 if (null != sequenceScheduledActionRow.SourceLineNumbers)
237 {
237 - this.Messaging.OnMessage(WixWarnings.ActionSequenceCollision2(sequenceScheduledActionRow.SourceLineNumbers));
238 + this.Messaging.Write(WarningMessages.ActionSequenceCollision2(sequenceScheduledActionRow.SourceLineNumbers));
239 }
240 }
241 }
@@ -262,19 +263,19 @@ namespace WixToolset.Core.WindowsInstaller.Bind
263 // Create errors for all the before actions.
264 foreach (var actionRow in relativeActions.PreviousActions)
265 {
265 - this.Messaging.OnMessage(WixErrors.ActionScheduledRelativeToTerminationAction(actionRow.SourceLineNumbers, actionRow.SequenceTable.ToString(), actionRow.Action, absoluteActionRow.Action));
266 + this.Messaging.Write(ErrorMessages.ActionScheduledRelativeToTerminationAction(actionRow.SourceLineNumbers, actionRow.SequenceTable.ToString(), actionRow.Action, absoluteActionRow.Action));
267 }
268
269 // Create errors for all the after actions.
270 foreach (var actionRow in relativeActions.NextActions)
271 {
271 - this.Messaging.OnMessage(WixErrors.ActionScheduledRelativeToTerminationAction(actionRow.SourceLineNumbers, actionRow.SequenceTable.ToString(), actionRow.Action, absoluteActionRow.Action));
272 + this.Messaging.Write(ErrorMessages.ActionScheduledRelativeToTerminationAction(actionRow.SourceLineNumbers, actionRow.SequenceTable.ToString(), actionRow.Action, absoluteActionRow.Action));
273 }
274
275 // If there is source line information for the absolutely scheduled action display it
276 if (absoluteActionRow.SourceLineNumbers != null)
277 {
277 - this.Messaging.OnMessage(WixErrors.ActionScheduledRelativeToTerminationAction2(absoluteActionRow.SourceLineNumbers));
278 + this.Messaging.Write(ErrorMessages.ActionScheduledRelativeToTerminationAction2(absoluteActionRow.SourceLineNumbers));
279 }
280
281 continue;
@@ -289,10 +290,10 @@ namespace WixToolset.Core.WindowsInstaller.Bind
290 // look for collisions
291 if (unusedSequence == previousUsedSequence)
292 {
292 - this.Messaging.OnMessage(WixErrors.NoUniqueActionSequenceNumber(relativeActionRow.SourceLineNumbers, relativeActionRow.SequenceTable.ToString(), relativeActionRow.Action, absoluteActionRow.Action));
293 + this.Messaging.Write(ErrorMessages.NoUniqueActionSequenceNumber(relativeActionRow.SourceLineNumbers, relativeActionRow.SequenceTable.ToString(), relativeActionRow.Action, absoluteActionRow.Action));
294 if (absoluteActionRow.SourceLineNumbers != null)
295 {
295 - this.Messaging.OnMessage(WixErrors.NoUniqueActionSequenceNumber2(absoluteActionRow.SourceLineNumbers));
296 + this.Messaging.Write(ErrorMessages.NoUniqueActionSequenceNumber2(absoluteActionRow.SourceLineNumbers));
297 }
298
299 unusedSequence++;
@@ -319,10 +320,10 @@ namespace WixToolset.Core.WindowsInstaller.Bind
320
321 if (unusedSequence == nextUsedSequence)
322 {
322 - this.Messaging.OnMessage(WixErrors.NoUniqueActionSequenceNumber(relativeActionRow.SourceLineNumbers, relativeActionRow.SequenceTable.ToString(), relativeActionRow.Action, absoluteActionRow.Action));
323 + this.Messaging.Write(ErrorMessages.NoUniqueActionSequenceNumber(relativeActionRow.SourceLineNumbers, relativeActionRow.SequenceTable.ToString(), relativeActionRow.Action, absoluteActionRow.Action));
324 if (absoluteActionRow.SourceLineNumbers != null)
325 {
325 - this.Messaging.OnMessage(WixErrors.NoUniqueActionSequenceNumber2(absoluteActionRow.SourceLineNumbers));
326 + this.Messaging.Write(ErrorMessages.NoUniqueActionSequenceNumber2(absoluteActionRow.SourceLineNumbers));
327 }
328
329 unusedSequence--;
@@ -596,7 +597,7 @@ namespace WixToolset.Core.WindowsInstaller.Bind
597 }
598 else if (actionRow == parentActionRow || this.ContainsChildActionRow(actionRow, parentActionRow)) // cycle detected
599 {
599 - throw new WixException(WixErrors.ActionCircularDependency(actionRow.SourceLineNumbers, actionRow.SequenceTable.ToString(), actionRow.Action, parentActionRow.Action));
600 + throw new WixException(ErrorMessages.ActionCircularDependency(actionRow.SourceLineNumbers, actionRow.SequenceTable.ToString(), actionRow.Action, parentActionRow.Action));
601 }
602
603 // Add this action to the appropriate list of dependent action rows.
src/WixToolset.Core.WindowsInstaller/Bind/UpdateControlTextCommand.cs
+7 -4
@@ -7,9 +7,12 @@ namespace WixToolset.Core.WindowsInstaller.Bind
7 using WixToolset.Data;
8 using WixToolset.Data.WindowsInstaller;
9 using WixToolset.Data.WindowsInstaller.Rows;
10 + using WixToolset.Extensibility.Services;
11
12 internal class UpdateControlTextCommand
13 {
14 + public IMessaging Messaging { private get; set; }
15 +
16 public Table BBControlTable { private get; set; }
17
18 public Table WixBBControlTable { private get; set; }
@@ -60,19 +63,19 @@ namespace WixToolset.Core.WindowsInstaller.Bind
63 }
64 catch (DirectoryNotFoundException e)
65 {
63 - Messaging.Instance.OnMessage(WixErrors.BinderFileManagerMissingFile(sourceLineNumbers, e.Message));
66 + this.Messaging.Write(ErrorMessages.BinderFileManagerMissingFile(sourceLineNumbers, e.Message));
67 }
68 catch (FileNotFoundException e)
69 {
67 - Messaging.Instance.OnMessage(WixErrors.BinderFileManagerMissingFile(sourceLineNumbers, e.Message));
70 + this.Messaging.Write(ErrorMessages.BinderFileManagerMissingFile(sourceLineNumbers, e.Message));
71 }
72 catch (IOException e)
73 {
71 - Messaging.Instance.OnMessage(WixErrors.BinderFileManagerMissingFile(sourceLineNumbers, e.Message));
74 + this.Messaging.Write(ErrorMessages.BinderFileManagerMissingFile(sourceLineNumbers, e.Message));
75 }
76 catch (NotSupportedException)
77 {
75 - Messaging.Instance.OnMessage(WixErrors.FileNotFound(sourceLineNumbers, source));
78 + this.Messaging.Write(ErrorMessages.FileNotFound(sourceLineNumbers, source));
79 }
80
81 return text;
src/WixToolset.Core.WindowsInstaller/Bind/UpdateFileFacadesCommand.cs
+25 -21
@@ -15,6 +15,7 @@ namespace WixToolset.Core.WindowsInstaller.Bind
15 using WixToolset.Data;
16 using WixToolset.Data.Tuples;
17 using WixToolset.Data.WindowsInstaller;
18 + using WixToolset.Extensibility.Services;
19 using WixToolset.Msi;
20
21 /// <summary>
@@ -22,11 +23,14 @@ namespace WixToolset.Core.WindowsInstaller.Bind
23 /// </summary>
24 internal class UpdateFileFacadesCommand
25 {
25 - public UpdateFileFacadesCommand(IntermediateSection section)
26 + public UpdateFileFacadesCommand(IMessaging messaging, IntermediateSection section)
27 {
28 + this.Messaging = messaging;
29 this.Section = section;
30 }
31
32 + private IMessaging Messaging { get; }
33 +
34 private IntermediateSection Section { get; }
35
36 public IEnumerable<FileFacade> FileFacades { private get; set; }
@@ -62,23 +66,23 @@ namespace WixToolset.Core.WindowsInstaller.Bind
66 }
67 catch (ArgumentException)
68 {
65 - Messaging.Instance.OnMessage(WixDataErrors.InvalidFileName(file.File.SourceLineNumbers, file.WixFile.Source.Path));
69 + this.Messaging.Write(ErrorMessages.InvalidFileName(file.File.SourceLineNumbers, file.WixFile.Source.Path));
70 return;
71 }
72 catch (PathTooLongException)
73 {
70 - Messaging.Instance.OnMessage(WixDataErrors.InvalidFileName(file.File.SourceLineNumbers, file.WixFile.Source.Path));
74 + this.Messaging.Write(ErrorMessages.InvalidFileName(file.File.SourceLineNumbers, file.WixFile.Source.Path));
75 return;
76 }
77 catch (NotSupportedException)
78 {
75 - Messaging.Instance.OnMessage(WixDataErrors.InvalidFileName(file.File.SourceLineNumbers, file.WixFile.Source.Path));
79 + this.Messaging.Write(ErrorMessages.InvalidFileName(file.File.SourceLineNumbers, file.WixFile.Source.Path));
80 return;
81 }
82
83 if (!fileInfo.Exists)
84 {
81 - Messaging.Instance.OnMessage(WixErrors.CannotFindFile(file.File.SourceLineNumbers, file.File.File, file.File.LongFileName, file.WixFile.Source.Path));
85 + this.Messaging.Write(ErrorMessages.CannotFindFile(file.File.SourceLineNumbers, file.File.File, file.File.LongFileName, file.WixFile.Source.Path));
86 return;
87 }
88
@@ -86,7 +90,7 @@ namespace WixToolset.Core.WindowsInstaller.Bind
90 {
91 if (Int32.MaxValue < fileStream.Length)
92 {
89 - throw new WixException(WixErrors.FileTooLarge(file.File.SourceLineNumbers, file.WixFile.Source.Path));
93 + throw new WixException(ErrorMessages.FileTooLarge(file.File.SourceLineNumbers, file.WixFile.Source.Path));
94 }
95
96 file.File.FileSize = Convert.ToInt32(fileStream.Length, CultureInfo.InvariantCulture);
@@ -102,11 +106,11 @@ namespace WixToolset.Core.WindowsInstaller.Bind
106 {
107 if (0x2 == e.NativeErrorCode) // ERROR_FILE_NOT_FOUND
108 {
105 - throw new WixException(WixErrors.FileNotFound(file.File.SourceLineNumbers, fileInfo.FullName));
109 + throw new WixException(ErrorMessages.FileNotFound(file.File.SourceLineNumbers, fileInfo.FullName));
110 }
111 else
112 {
109 - throw new WixException(WixErrors.Win32Exception(e.NativeErrorCode, e.Message));
113 + throw new WixException(ErrorMessages.Win32Exception(e.NativeErrorCode, e.Message));
114 }
115 }
116
@@ -128,14 +132,14 @@ namespace WixToolset.Core.WindowsInstaller.Bind
132 // for unversioned file. That's allowed but generally a dangerous thing to do so let's point that out to the user.
133 if (!this.FileFacades.Any(r => file.File.Version.Equals(r.File.File, StringComparison.Ordinal)))
134 {
131 - Messaging.Instance.OnMessage(WixWarnings.DefaultVersionUsedForUnversionedFile(file.File.SourceLineNumbers, file.File.Version, file.File.File));
135 + this.Messaging.Write(WarningMessages.DefaultVersionUsedForUnversionedFile(file.File.SourceLineNumbers, file.File.Version, file.File.File));
136 }
137 }
138 else
139 {
140 if (null != file.File.Language)
141 {
138 - Messaging.Instance.OnMessage(WixWarnings.DefaultLanguageUsedForUnversionedFile(file.File.SourceLineNumbers, file.File.Language, file.File.File));
142 + this.Messaging.Write(WarningMessages.DefaultLanguageUsedForUnversionedFile(file.File.SourceLineNumbers, file.File.Language, file.File.File));
143 }
144
145 int[] hash;
@@ -147,11 +151,11 @@ namespace WixToolset.Core.WindowsInstaller.Bind
151 {
152 if (0x2 == e.NativeErrorCode) // ERROR_FILE_NOT_FOUND
153 {
150 - throw new WixException(WixErrors.FileNotFound(file.File.SourceLineNumbers, fileInfo.FullName));
154 + throw new WixException(ErrorMessages.FileNotFound(file.File.SourceLineNumbers, fileInfo.FullName));
155 }
156 else
157 {
154 - throw new WixException(WixErrors.Win32Exception(e.NativeErrorCode, fileInfo.FullName, e.Message));
158 + throw new WixException(ErrorMessages.Win32Exception(e.NativeErrorCode, fileInfo.FullName, e.Message));
159 }
160 }
161
@@ -193,7 +197,7 @@ namespace WixToolset.Core.WindowsInstaller.Bind
197
198 if (!String.IsNullOrEmpty(file.File.Language) && String.IsNullOrEmpty(language))
199 {
196 - Messaging.Instance.OnMessage(WixWarnings.DefaultLanguageUsedForVersionedFile(file.File.SourceLineNumbers, file.File.Language, file.File.File));
200 + this.Messaging.Write(WarningMessages.DefaultLanguageUsedForVersionedFile(file.File.SourceLineNumbers, file.File.Language, file.File.File));
201 }
202 else // override the default provided by the user (usually nothing) with the actual language from the file itself.
203 {
@@ -260,7 +264,7 @@ namespace WixToolset.Core.WindowsInstaller.Bind
264 }
265 else if (file.WixFile.File_AssemblyApplication == null)
266 {
263 - throw new WixException(WixErrors.GacAssemblyNoStrongName(file.File.SourceLineNumbers, fileInfo.FullName, file.File.Component_));
267 + throw new WixException(ErrorMessages.GacAssemblyNoStrongName(file.File.SourceLineNumbers, fileInfo.FullName, file.File.Component_));
268 }
269
270 string assemblyVersion = referenceIdentity.GetAttribute(null, "Version");
@@ -271,7 +275,7 @@ namespace WixToolset.Core.WindowsInstaller.Bind
275 }
276 else
277 {
274 - Messaging.Instance.OnMessage(WixErrors.InvalidAssemblyFile(file.File.SourceLineNumbers, fileInfo.FullName, String.Format(CultureInfo.InvariantCulture, "HRESULT: 0x{0:x8}", result)));
278 + this.Messaging.Write(ErrorMessages.InvalidAssemblyFile(file.File.SourceLineNumbers, fileInfo.FullName, String.Format(CultureInfo.InvariantCulture, "HRESULT: 0x{0:x8}", result)));
279 return;
280 }
281
@@ -360,7 +364,7 @@ namespace WixToolset.Core.WindowsInstaller.Bind
364 FileFacade fileManifest = this.FileFacades.SingleOrDefault(r => r.File.File.Equals(file.WixFile.File_AssemblyManifest, StringComparison.Ordinal));
365 if (null == fileManifest)
366 {
363 - Messaging.Instance.OnMessage(WixErrors.MissingManifestForWin32Assembly(file.File.SourceLineNumbers, file.File.File, file.WixFile.File_AssemblyManifest));
367 + this.Messaging.Write(ErrorMessages.MissingManifestForWin32Assembly(file.File.SourceLineNumbers, file.File.File, file.WixFile.File_AssemblyManifest));
368 }
369
370 string win32Type = null;
@@ -397,7 +401,7 @@ namespace WixToolset.Core.WindowsInstaller.Bind
401 }
402 if (!hasNextSibling)
403 {
400 - Messaging.Instance.OnMessage(WixErrors.InvalidManifestContent(file.File.SourceLineNumbers, fileManifest.WixFile.Source.Path));
404 + this.Messaging.Write(ErrorMessages.InvalidManifestContent(file.File.SourceLineNumbers, fileManifest.WixFile.Source.Path));
405 return;
406 }
407
@@ -435,11 +439,11 @@ namespace WixToolset.Core.WindowsInstaller.Bind
439 }
440 catch (FileNotFoundException fe)
441 {
438 - Messaging.Instance.OnMessage(WixErrors.FileNotFound(new SourceLineNumber(fileManifest.WixFile.Source.Path), fe.FileName, "AssemblyManifest"));
442 + this.Messaging.Write(ErrorMessages.FileNotFound(new SourceLineNumber(fileManifest.WixFile.Source.Path), fe.FileName, "AssemblyManifest"));
443 }
444 catch (XmlException xe)
445 {
442 - Messaging.Instance.OnMessage(WixErrors.InvalidXml(new SourceLineNumber(fileManifest.WixFile.Source.Path), "manifest", xe.Message));
446 + this.Messaging.Write(ErrorMessages.InvalidXml(new SourceLineNumber(fileManifest.WixFile.Source.Path), "manifest", xe.Message));
447 }
448
449 if (!String.IsNullOrEmpty(win32Name))
@@ -482,7 +486,7 @@ namespace WixToolset.Core.WindowsInstaller.Bind
486 // check for null value (this can occur when grabbing the file version from an assembly without one)
487 if (String.IsNullOrEmpty(value))
488 {
485 - Messaging.Instance.OnMessage(WixWarnings.NullMsiAssemblyNameValue(file.File.SourceLineNumbers, file.File.Component_, name));
489 + this.Messaging.Write(WarningMessages.NullMsiAssemblyNameValue(file.File.SourceLineNumbers, file.File.Component_, name));
490 }
491 else
492 {
@@ -491,7 +495,7 @@ namespace WixToolset.Core.WindowsInstaller.Bind
495 String.IsNullOrEmpty(file.WixFile.File_AssemblyApplication) &&
496 !String.Equals(Path.GetFileNameWithoutExtension(file.File.LongFileName), value, StringComparison.OrdinalIgnoreCase))
497 {
494 - Messaging.Instance.OnMessage(WixErrors.GACAssemblyIdentityWarning(file.File.SourceLineNumbers, Path.GetFileNameWithoutExtension(file.File.LongFileName), value));
498 + this.Messaging.Write(ErrorMessages.GACAssemblyIdentityWarning(file.File.SourceLineNumbers, Path.GetFileNameWithoutExtension(file.File.LongFileName), value));
499 }
500
501 // override directly authored value
src/WixToolset.Core.WindowsInstaller/Data/Xsd/actions.xsd new
+73
@@ -0,0 +1,73 @@
1 +<?xml version="1.0" encoding="utf-8"?>
2 +<!-- 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. -->
3 +
4 +
5 +<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
6 + targetNamespace="http://wixtoolset.org/schemas/v4/wi/actions"
7 + xmlns="http://wixtoolset.org/schemas/v4/wi/actions">
8 + <xs:annotation>
9 + <xs:documentation>
10 + Schema for describing standard actions in the Windows Installer.
11 + </xs:documentation>
12 + </xs:annotation>
13 +
14 + <xs:element name="actions">
15 + <xs:complexType>
16 + <xs:sequence maxOccurs="unbounded">
17 + <xs:element ref="action" />
18 + </xs:sequence>
19 + </xs:complexType>
20 + </xs:element>
21 +
22 + <xs:element name="action">
23 + <xs:complexType>
24 + <xs:attribute name="name" type="xs:string" use="required">
25 + <xs:annotation>
26 + <xs:documentation>Name of action</xs:documentation>
27 + </xs:annotation>
28 + </xs:attribute>
29 + <xs:attribute name="condition" type="xs:string">
30 + <xs:annotation>
31 + <xs:documentation>Default condition for action</xs:documentation>
32 + </xs:annotation>
33 + </xs:attribute>
34 + <xs:attribute name="sequence" type="xs:integer" use="required">
35 + <xs:annotation>
36 + <xs:documentation>Sequence of action</xs:documentation>
37 + </xs:annotation>
38 + </xs:attribute>
39 + <xs:attribute name="AdminExecuteSequence" type="ActionsYesNoType">
40 + <xs:annotation>
41 + <xs:documentation>Specifies if action is allowed in AdminExecuteSequence</xs:documentation>
42 + </xs:annotation>
43 + </xs:attribute>
44 + <xs:attribute name="AdminUISequence" type="ActionsYesNoType">
45 + <xs:annotation>
46 + <xs:documentation>Specifies if action is allowed in AdminUISequence</xs:documentation>
47 + </xs:annotation>
48 + </xs:attribute>
49 + <xs:attribute name="AdvtExecuteSequence" type="ActionsYesNoType">
50 + <xs:annotation>
51 + <xs:documentation>Specifies if action is allowed in AdvtExecuteSequence</xs:documentation>
52 + </xs:annotation>
53 + </xs:attribute>
54 + <xs:attribute name="InstallExecuteSequence" type="ActionsYesNoType">
55 + <xs:annotation>
56 + <xs:documentation>Specifies if action is allowed in InstallExecuteSequence</xs:documentation>
57 + </xs:annotation>
58 + </xs:attribute>
59 + <xs:attribute name="InstallUISequence" type="ActionsYesNoType">
60 + <xs:annotation>
61 + <xs:documentation>Specifies if action is allowed in InstallUISequence</xs:documentation>
62 + </xs:annotation>
63 + </xs:attribute>
64 + </xs:complexType>
65 + </xs:element>
66 +
67 + <xs:simpleType name="ActionsYesNoType">
68 + <xs:restriction base="xs:NMTOKEN">
69 + <xs:enumeration value="no" />
70 + <xs:enumeration value="yes" />
71 + </xs:restriction>
72 + </xs:simpleType>
73 +</xs:schema>
src/WixToolset.Core.WindowsInstaller/Data/Xsd/tables.xsd new
+248
@@ -0,0 +1,248 @@
1 +<?xml version="1.0" encoding="utf-8"?>
2 +<!-- 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. -->
3 +
4 +
5 +<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
6 + targetNamespace="http://wixtoolset.org/schemas/v4/wi/tables"
7 + xmlns="http://wixtoolset.org/schemas/v4/wi/tables">
8 + <xs:annotation>
9 + <xs:documentation>
10 + Schema for describing table definitions in Windows Installer.
11 + </xs:documentation>
12 + </xs:annotation>
13 +
14 + <xs:element name="tableDefinitions">
15 + <xs:complexType>
16 + <xs:sequence maxOccurs="unbounded">
17 + <xs:element ref="tableDefinition" />
18 + </xs:sequence>
19 + </xs:complexType>
20 + </xs:element>
21 +
22 + <xs:element name="tableDefinition">
23 + <xs:complexType>
24 + <xs:sequence maxOccurs="unbounded">
25 + <xs:element ref="columnDefinition" />
26 + </xs:sequence>
27 + <xs:attribute name="createSymbols" type="TablesYesNoType">
28 + <xs:annotation>
29 + <xs:documentation>Boolean whether rows in this table create symbols</xs:documentation>
30 + </xs:annotation>
31 + </xs:attribute>
32 + <xs:attribute name="name" type="NameType" use="required">
33 + <xs:annotation>
34 + <xs:documentation>Name of table in Windows Installer database</xs:documentation>
35 + </xs:annotation>
36 + </xs:attribute>
37 + <xs:attribute name="unreal" type="TablesYesNoType">
38 + <xs:annotation>
39 + <xs:documentation>Specifies if table is virtual or not</xs:documentation>
40 + </xs:annotation>
41 + </xs:attribute>
42 + <xs:attribute name="bootstrapperApplicationData" type="TablesYesNoType">
43 + <xs:annotation>
44 + <xs:documentation>Specifies if the table is a part of the Bootstrapper Application Data manifest</xs:documentation>
45 + </xs:annotation>
46 + </xs:attribute>
47 + </xs:complexType>
48 + </xs:element>
49 +
50 + <xs:element name="columnDefinition">
51 + <xs:complexType>
52 + <xs:attribute name="name" type="NameType" use="required">
53 + <xs:annotation>
54 + <xs:documentation>Name of column in Windows Installer table</xs:documentation>
55 + </xs:annotation>
56 + </xs:attribute>
57 +
58 + <xs:attribute name="added" type="TablesYesNoType">
59 + <xs:annotation>
60 + <xs:documentation>Whether this column was added by a transform.</xs:documentation>
61 + </xs:annotation>
62 + </xs:attribute>
63 +
64 + <xs:attribute name="type" type="ColumnDefinitionType" use="required">
65 + <xs:annotation>
66 + <xs:documentation>Type of column in Windows Installer table</xs:documentation>
67 + </xs:annotation>
68 + </xs:attribute>
69 +
70 + <xs:attribute name="length" use="required">
71 + <xs:annotation>
72 + <xs:documentation>Type of column in Windows Installer table</xs:documentation>
73 + </xs:annotation>
74 + <xs:simpleType>
75 + <xs:restriction base="xs:integer">
76 + <xs:minInclusive value="0" />
77 + <xs:maxInclusive value="255" />
78 + </xs:restriction>
79 + </xs:simpleType>
80 + </xs:attribute>
81 +
82 + <xs:attribute name="primaryKey" type="TablesYesNoType">
83 + <xs:annotation>
84 + <xs:documentation>Boolean whether column is primary key of Windows Installer table</xs:documentation>
85 + </xs:annotation>
86 + </xs:attribute>
87 +
88 + <xs:attribute name="nullable" type="TablesYesNoType">
89 + <xs:annotation>
90 + <xs:documentation>Boolean whether column is nullable in Windows Installer table</xs:documentation>
91 + </xs:annotation>
92 + </xs:attribute>
93 +
94 + <xs:attribute name="unreal" type="TablesYesNoType">
95 + <xs:annotation>
96 + <xs:documentation>Boolean whether column is virtual in Windows Installer table</xs:documentation>
97 + </xs:annotation>
98 + </xs:attribute>
99 +
100 + <xs:attribute name="modularize" type="TablesModularizeType">
101 + <xs:annotation>
102 + <xs:documentation>Enumeration specifying how column should have the ModuleId appended</xs:documentation>
103 + </xs:annotation>
104 + </xs:attribute>
105 +
106 + <xs:attribute name="localizable" type="TablesYesNoType">
107 + <xs:annotation>
108 + <xs:documentation>Set to "yes" in order to allow substitution for localized variables.</xs:documentation>
109 + </xs:annotation>
110 + </xs:attribute>
111 +
112 + <xs:attribute name="minValue" type="xs:long">
113 + <xs:annotation>
114 + <xs:documentation>Minimum value for column in Windows Installer table</xs:documentation>
115 + </xs:annotation>
116 + </xs:attribute>
117 +
118 + <xs:attribute name="maxValue" type="xs:long">
119 + <xs:annotation>
120 + <xs:documentation>Maximum value for column in Windows Installer table</xs:documentation>
121 + </xs:annotation>
122 + </xs:attribute>
123 +
124 + <xs:attribute name="keyTable" type="NameType">
125 + <xs:annotation>
126 + <xs:documentation>Foreign key table for column in Windows Installer table</xs:documentation>
127 + </xs:annotation>
128 + </xs:attribute>
129 +
130 + <xs:attribute name="keyColumn">
131 + <xs:annotation>
132 + <xs:documentation>Maximum value for column in Windows Installer table</xs:documentation>
133 + </xs:annotation>
134 + <xs:simpleType>
135 + <xs:restriction base="xs:integer">
136 + <xs:minInclusive value="1" />
137 + <xs:maxInclusive value="32" />
138 + </xs:restriction>
139 + </xs:simpleType>
140 + </xs:attribute>
141 +
142 + <xs:attribute name="category" type="TablesCategoryType">
143 + <xs:annotation>
144 + <xs:documentation>Specific column data types for column</xs:documentation>
145 + </xs:annotation>
146 + </xs:attribute>
147 +
148 + <xs:attribute name="set" type="TablesSetType">
149 + <xs:annotation>
150 + <xs:documentation>List of permissible values for the column</xs:documentation>
151 + </xs:annotation>
152 + </xs:attribute>
153 +
154 + <xs:attribute name="description" type="xs:string">
155 + <xs:annotation>
156 + <xs:documentation>Description of column</xs:documentation>
157 + </xs:annotation>
158 + </xs:attribute>
159 +
160 + <xs:attribute name="escapeIdtCharacters" type="TablesYesNoType">
161 + <xs:annotation>
162 + <xs:documentation>Set to "yes" in order to make the idt exporter escape whitespace characters \r, \n, and \t.</xs:documentation>
163 + </xs:annotation>
164 + </xs:attribute>
165 +
166 + <xs:attribute name="useCData" type="TablesYesNoType">
167 + <xs:annotation>
168 + <xs:documentation>Set to "yes" in order to make the Intermediate and Output objects wrap their data in a CDATA element to preserve whitespace.</xs:documentation>
169 + </xs:annotation>
170 + </xs:attribute>
171 + </xs:complexType>
172 + </xs:element>
173 +
174 + <xs:simpleType name="NameType">
175 + <xs:restriction base="xs:string">
176 + <xs:minLength value="1" />
177 + <xs:maxLength value="64" />
178 + </xs:restriction>
179 + </xs:simpleType>
180 +
181 + <xs:simpleType name="ColumnDefinitionType">
182 + <xs:restriction base="xs:NMTOKEN">
183 + <xs:enumeration value="string" />
184 + <xs:enumeration value="localized" />
185 + <xs:enumeration value="number" />
186 + <xs:enumeration value="object" />
187 + <xs:enumeration value="preserved" />
188 + </xs:restriction>
189 + </xs:simpleType>
190 +
191 + <xs:simpleType name="TablesYesNoType">
192 + <xs:restriction base="xs:NMTOKEN">
193 + <xs:enumeration value="yes" />
194 + <xs:enumeration value="no" />
195 + </xs:restriction>
196 + </xs:simpleType>
197 +
198 + <xs:simpleType name="TablesModularizeType">
199 + <xs:restriction base="xs:NMTOKEN">
200 + <xs:enumeration value="column" />
201 + <xs:enumeration value="companionFile" />
202 + <xs:enumeration value="condition" />
203 + <xs:enumeration value="controlEventArgument" />
204 + <xs:enumeration value="controlText" />
205 + <xs:enumeration value="icon" />
206 + <xs:enumeration value="none" />
207 + <xs:enumeration value="property" />
208 + <xs:enumeration value="semicolonDelimited" />
209 + </xs:restriction>
210 + </xs:simpleType>
211 +
212 + <xs:simpleType name="TablesCategoryType">
213 + <xs:restriction base="xs:NMTOKEN">
214 + <xs:enumeration value="text" />
215 + <xs:enumeration value="upperCase" />
216 + <xs:enumeration value="lowerCase" />
217 + <xs:enumeration value="integer" />
218 + <xs:enumeration value="doubleInteger" />
219 + <xs:enumeration value="timeDate" />
220 + <xs:enumeration value="identifier" />
221 + <xs:enumeration value="property" />
222 + <xs:enumeration value="filename" />
223 + <xs:enumeration value="wildCardFilename" />
224 + <xs:enumeration value="path" />
225 + <xs:enumeration value="paths" />
226 + <xs:enumeration value="anyPath" />
227 + <xs:enumeration value="defaultDir" />
228 + <xs:enumeration value="regPath" />
229 + <xs:enumeration value="formatted" />
230 + <xs:enumeration value="formattedSddl" />
231 + <xs:enumeration value="template" />
232 + <xs:enumeration value="condition" />
233 + <xs:enumeration value="guid" />
234 + <xs:enumeration value="version" />
235 + <xs:enumeration value="language" />
236 + <xs:enumeration value="binary" />
237 + <xs:enumeration value="customSource" />
238 + <xs:enumeration value="cabinet" />
239 + <xs:enumeration value="shortcut" />
240 + </xs:restriction>
241 + </xs:simpleType>
242 +
243 + <xs:simpleType name="TablesSetType">
244 + <xs:restriction base="xs:string">
245 + <xs:pattern value="\w+(;\w+)*" />
246 + </xs:restriction>
247 + </xs:simpleType>
248 +</xs:schema>
src/WixToolset.Core.WindowsInstaller/Differ.cs
+12 -18
@@ -10,26 +10,29 @@ namespace WixToolset.Core.WindowsInstaller
10 using WixToolset.Data.WindowsInstaller;
11 using WixToolset.Data.WindowsInstaller.Rows;
12 using WixToolset.Extensibility;
13 + using WixToolset.Extensibility.Services;
14 using WixToolset.Msi;
15
16 /// <summary>
17 /// Creates a transform by diffing two outputs.
18 /// </summary>
18 - public sealed class Differ : IMessageHandler
19 + public sealed class Differ
20 {
21 private List<IInspectorExtension> inspectorExtensions;
22 private bool showPedanticMessages;
23 private bool suppressKeepingSpecialRows;
24 private bool preserveUnchangedRows;
25 private const char sectionDelimiter = '/';
26 + private readonly IMessaging messaging;
27 private SummaryInformationStreams transformSummaryInfo;
28
29 /// <summary>
30 /// Instantiates a new Differ class.
31 /// </summary>
30 - public Differ()
32 + public Differ(IMessaging messaging)
33 {
34 this.inspectorExtensions = new List<IInspectorExtension>();
35 + this.messaging = messaging;
36 }
37
38 /// <summary>
@@ -99,17 +102,17 @@ namespace WixToolset.Core.WindowsInstaller
102 // compare the codepages
103 if (targetOutput.Codepage != updatedOutput.Codepage && 0 == (TransformFlags.ErrorChangeCodePage & validationFlags))
104 {
102 - this.OnMessage(WixErrors.OutputCodepageMismatch(targetOutput.SourceLineNumbers, targetOutput.Codepage, updatedOutput.Codepage));
105 + this.messaging.Write(ErrorMessages.OutputCodepageMismatch(targetOutput.SourceLineNumbers, targetOutput.Codepage, updatedOutput.Codepage));
106 if (null != updatedOutput.SourceLineNumbers)
107 {
105 - this.OnMessage(WixErrors.OutputCodepageMismatch2(updatedOutput.SourceLineNumbers));
108 + this.messaging.Write(ErrorMessages.OutputCodepageMismatch2(updatedOutput.SourceLineNumbers));
109 }
110 }
111
112 // compare the output types
113 if (targetOutput.Type != updatedOutput.Type)
114 {
112 - throw new WixException(WixErrors.OutputTypeMismatch(targetOutput.SourceLineNumbers, targetOutput.Type.ToString(), updatedOutput.Type.ToString()));
115 + throw new WixException(ErrorMessages.OutputTypeMismatch(targetOutput.SourceLineNumbers, targetOutput.Type.ToString(), updatedOutput.Type.ToString()));
116 }
117
118 // compare the contents of the tables
@@ -159,15 +162,6 @@ namespace WixToolset.Core.WindowsInstaller
162 return transform;
163 }
164
162 - /// <summary>
163 - /// Sends a message to the message delegate if there is one.
164 - /// </summary>
165 - /// <param name="mea">Message event arguments.</param>
166 - public void OnMessage(MessageEventArgs e)
167 - {
168 - Messaging.Instance.OnMessage(e);
169 - }
170 -
165 /// <summary>
166 /// Add a row to the <paramref name="index"/> using the primary key.
167 /// </summary>
@@ -210,7 +204,7 @@ namespace WixToolset.Core.WindowsInstaller
204 }
205 else if (this.showPedanticMessages)
206 {
213 - this.OnMessage(WixWarnings.DuplicatePrimaryKey(row.SourceLineNumbers, primaryKey, row.Table.Name));
207 + this.messaging.Write(ErrorMessages.DuplicatePrimaryKey(row.SourceLineNumbers, primaryKey, row.Table.Name));
208 }
209 }
210 else // use the string representation of the row as its primary key (it may not be unique)
@@ -370,7 +364,7 @@ namespace WixToolset.Core.WindowsInstaller
364 if (0 != targetTable.Definition.CompareTo(updatedTable.Definition))
365 {
366 // continue to the next table; may be more mismatches
373 - this.OnMessage(WixErrors.DatabaseSchemaMismatch(targetOutput.SourceLineNumbers, targetTable.Name));
367 + this.messaging.Write(ErrorMessages.DatabaseSchemaMismatch(targetOutput.SourceLineNumbers, targetTable.Name));
368 }
369 else
370 {
@@ -425,7 +419,7 @@ namespace WixToolset.Core.WindowsInstaller
419 this.transformSummaryInfo.TargetProductCode = (string)row[1];
420 if ("*" == this.transformSummaryInfo.TargetProductCode)
421 {
428 - this.OnMessage(WixErrors.ProductCodeInvalidForTransform(row.SourceLineNumbers));
422 + this.messaging.Write(ErrorMessages.ProductCodeInvalidForTransform(row.SourceLineNumbers));
423 }
424 }
425 else if ("ProductVersion" == (string)row[0])
@@ -466,7 +460,7 @@ namespace WixToolset.Core.WindowsInstaller
460 this.transformSummaryInfo.UpdatedProductCode = (string)row[1];
461 if ("*" == this.transformSummaryInfo.UpdatedProductCode)
462 {
469 - this.OnMessage(WixErrors.ProductCodeInvalidForTransform(row.SourceLineNumbers));
463 + this.messaging.Write(ErrorMessages.ProductCodeInvalidForTransform(row.SourceLineNumbers));
464 }
465 }
466 else if ("ProductVersion" == (string)row[0])
src/WixToolset.Core.WindowsInstaller/Inscribe/InscribeMsiPackageCommand.cs
+7 -7
@@ -36,7 +36,7 @@ namespace WixToolset.Core.WindowsInstaller.Inscribe
36 FileAttributes attributes = File.GetAttributes(this.Context.InputFilePath);
37 if (FileAttributes.ReadOnly == (attributes & FileAttributes.ReadOnly))
38 {
39 - this.Context.Messaging.OnMessage(WixErrors.ReadOnlyOutputFile(this.Context.InputFilePath));
39 + this.Context.Messaging.Write(ErrorMessages.ReadOnlyOutputFile(this.Context.InputFilePath));
40 return shouldCommit;
41 }
42
@@ -179,7 +179,7 @@ namespace WixToolset.Core.WindowsInstaller.Inscribe
179 // If the cabs aren't there, throw an error but continue to catch the other errors
180 if (!File.Exists(cabPath))
181 {
182 - this.Context.Messaging.OnMessage(WixErrors.WixFileNotFound(cabPath));
182 + this.Context.Messaging.Write(ErrorMessages.WixFileNotFound(cabPath));
183 continue;
184 }
185
@@ -205,11 +205,11 @@ namespace WixToolset.Core.WindowsInstaller.Inscribe
205 if ((5 == Environment.OSVersion.Version.Major && 2 == Environment.OSVersion.Version.Minor) || // W2K3
206 (5 == Environment.OSVersion.Version.Major && 1 == Environment.OSVersion.Version.Minor)) // XP
207 {
208 - this.Context.Messaging.OnMessage(WixErrors.UnableToGetAuthenticodeCertOfFileDownlevelOS(cabPath, String.Format(CultureInfo.InvariantCulture, "HRESULT: 0x{0:x8}", HResult)));
208 + this.Context.Messaging.Write(ErrorMessages.UnableToGetAuthenticodeCertOfFileDownlevelOS(cabPath, String.Format(CultureInfo.InvariantCulture, "HRESULT: 0x{0:x8}", HResult)));
209 }
210 else // otherwise, generic error
211 {
212 - this.Context.Messaging.OnMessage(WixErrors.UnableToGetAuthenticodeCertOfFile(cabPath, String.Format(CultureInfo.InvariantCulture, "HRESULT: 0x{0:x8}", HResult)));
212 + this.Context.Messaging.Write(ErrorMessages.UnableToGetAuthenticodeCertOfFile(cabPath, String.Format(CultureInfo.InvariantCulture, "HRESULT: 0x{0:x8}", HResult)));
213 }
214 }
215
@@ -252,7 +252,7 @@ namespace WixToolset.Core.WindowsInstaller.Inscribe
252
253 if (digitalCertificateTable.Rows.Count > 0)
254 {
255 - var command = new CreateIdtFileCommand(digitalCertificateTable, codepage, this.Context.IntermediateFolder, true);
255 + var command = new CreateIdtFileCommand(this.Context.Messaging, digitalCertificateTable, codepage, this.Context.IntermediateFolder, true);
256 command.Execute();
257
258 database.Import(command.IdtPath);
@@ -261,7 +261,7 @@ namespace WixToolset.Core.WindowsInstaller.Inscribe
261
262 if (digitalSignatureTable.Rows.Count > 0)
263 {
264 - var command = new CreateIdtFileCommand(digitalSignatureTable, codepage, this.Context.IntermediateFolder, true);
264 + var command = new CreateIdtFileCommand(this.Context.Messaging, digitalSignatureTable, codepage, this.Context.IntermediateFolder, true);
265 command.Execute();
266
267 database.Import(command.IdtPath);
@@ -275,7 +275,7 @@ namespace WixToolset.Core.WindowsInstaller.Inscribe
275 // If we did find external cabs but none of them were signed, give a warning
276 if (foundUnsignedExternals)
277 {
278 - this.Context.Messaging.OnMessage(WixWarnings.ExternalCabsAreNotSigned(this.Context.InputFilePath));
278 + this.Context.Messaging.Write(WarningMessages.ExternalCabsAreNotSigned(this.Context.InputFilePath));
279 }
280
281 if (shouldCommit)
src/WixToolset.Core.WindowsInstaller/MelterCore.cs
+3 -1
@@ -7,8 +7,9 @@ namespace WixToolset
7 /// <summary>
8 /// Melts a Module Wix document into a ComponentGroup representation.
9 /// </summary>
10 - public sealed class MelterCore : IMessageHandler
10 + public sealed class MelterCore
11 {
12 +#if TODO_MELT
13 /// <summary>
14 /// Gets whether the melter core encountered an error while processing.
15 /// </summary>
@@ -26,5 +27,6 @@ namespace WixToolset
27 {
28 Messaging.Instance.OnMessage(e);
29 }
30 +#endif
31 }
32 }
src/WixToolset.Core.WindowsInstaller/Msi/WixInvalidIdtException.cs
+2 -2
@@ -16,7 +16,7 @@ namespace WixToolset.Msi
16 /// </summary>
17 /// <param name="idtFile">The invalid idt file.</param>
18 public WixInvalidIdtException(string idtFile) :
19 - base(WixDataErrors.InvalidIdt(new SourceLineNumber(idtFile), idtFile))
19 + base(ErrorMessages.InvalidIdt(new SourceLineNumber(idtFile), idtFile))
20 {
21 }
22
@@ -26,7 +26,7 @@ namespace WixToolset.Msi
26 /// <param name="idtFile">The invalid idt file.</param>
27 /// <param name="tableName">The table name of the invalid idt file.</param>
28 public WixInvalidIdtException(string idtFile, string tableName) :
29 - base(WixDataErrors.InvalidIdt(new SourceLineNumber(idtFile), idtFile, tableName))
29 + base(ErrorMessages.InvalidIdt(new SourceLineNumber(idtFile), idtFile, tableName))
30 {
31 }
32 }
src/WixToolset.Core.WindowsInstaller/Patch.cs
-9
@@ -1232,14 +1232,5 @@ namespace WixToolset.Data
1232 #endif
1233 throw new NotImplementedException();
1234 }
1235 -
1236 - /// <summary>
1237 - /// Sends a message to the message delegate if there is one.
1238 - /// </summary>
1239 - /// <param name="mea">Message event arguments.</param>
1240 - public void OnMessage(MessageEventArgs mea)
1241 - {
1242 - Messaging.Instance.OnMessage(mea);
1243 - }
1235 }
1236 }
src/WixToolset.Core.WindowsInstaller/PatchTransform.cs
+1 -10
@@ -10,7 +10,7 @@ namespace WixToolset
10 using WixToolset.Data;
11 using WixToolset.Extensibility;
12
13 - public class PatchTransform : IMessageHandler
13 + public class PatchTransform
14 {
15 private string baseline;
16 private Intermediate transform;
@@ -264,14 +264,5 @@ namespace WixToolset
264 #endif
265 throw new NotImplementedException();
266 }
267 -
268 - /// <summary>
269 - /// Sends a message to the message delegate if there is one.
270 - /// </summary>
271 - /// <param name="mea">Message event arguments.</param>
272 - public void OnMessage(MessageEventArgs e)
273 - {
274 - Messaging.Instance.OnMessage(e);
275 - }
267 }
268 }
src/WixToolset.Core.WindowsInstaller/Unbind/ExtractCabinetsCommand.cs
+1 -1
@@ -136,7 +136,7 @@ namespace WixToolset.Core.WindowsInstaller.Unbind
136 }
137 catch (FileNotFoundException)
138 {
139 - throw new WixException(WixErrors.FileNotFound(new SourceLineNumber(this.InputFilePath), cabinetFile));
139 + throw new WixException(ErrorMessages.FileNotFound(new SourceLineNumber(this.InputFilePath), cabinetFile));
140 }
141 }
142 }
src/WixToolset.Core.WindowsInstaller/Unbind/UnbindDatabaseCommand.cs
+5 -4
@@ -12,11 +12,12 @@ namespace WixToolset.Core.WindowsInstaller.Unbind
12 using WixToolset.Data;
13 using WixToolset.Data.WindowsInstaller;
14 using WixToolset.Data.WindowsInstaller.Rows;
15 + using WixToolset.Extensibility.Services;
16 using WixToolset.Msi;
17
18 internal class UnbindDatabaseCommand
19 {
19 - public UnbindDatabaseCommand(Messaging messaging, Database database, string databasePath, OutputType outputType, string exportBasePath, string intermediateFolder, bool isAdminImage, bool suppressDemodularization, bool skipSummaryInfo)
20 + public UnbindDatabaseCommand(IMessaging messaging, Database database, string databasePath, OutputType outputType, string exportBasePath, string intermediateFolder, bool isAdminImage, bool suppressDemodularization, bool skipSummaryInfo)
21 {
22 this.Messaging = messaging;
23 this.Database = database;
@@ -31,7 +32,7 @@ namespace WixToolset.Core.WindowsInstaller.Unbind
32 this.TableDefinitions = WindowsInstallerStandardInternal.GetTableDefinitions();
33 }
34
34 - public Messaging Messaging { get; }
35 + public IMessaging Messaging { get; }
36
37 public Database Database { get; }
38
@@ -316,7 +317,7 @@ namespace WixToolset.Core.WindowsInstaller.Unbind
317
318 if (!success)
319 {
319 - this.Messaging.OnMessage(WixWarnings.BadColumnDataIgnored(row.SourceLineNumbers, Convert.ToString(intValue, CultureInfo.InvariantCulture), tableName, row.Fields[i].Column.Name));
320 + this.Messaging.Write(WarningMessages.BadColumnDataIgnored(row.SourceLineNumbers, Convert.ToString(intValue, CultureInfo.InvariantCulture), tableName, row.Fields[i].Column.Name));
321 }
322 break;
323 case ColumnType.Object:
@@ -480,7 +481,7 @@ namespace WixToolset.Core.WindowsInstaller.Unbind
481
482 if (!File.Exists(wixFileRow.Source))
483 {
483 - throw new WixException(WixErrors.WixFileNotFound(wixFileRow.Source));
484 + throw new WixException(ErrorMessages.WixFileNotFound(wixFileRow.Source));
485 }
486
487 wixFileTable.Rows.Add(wixFileRow);
src/WixToolset.Core.WindowsInstaller/Unbind/UnbindTranformCommand.cs
+4 -3
@@ -13,11 +13,12 @@ namespace WixToolset.Core.WindowsInstaller.Unbind
13 using WixToolset.Data;
14 using WixToolset.Data.WindowsInstaller;
15 using WixToolset.Extensibility;
16 + using WixToolset.Extensibility.Services;
17 using WixToolset.Msi;
18
19 internal class UnbindTransformCommand
20 {
20 - public UnbindTransformCommand(Messaging messaging, string transformFile, string exportBasePath, string intermediateFolder)
21 + public UnbindTransformCommand(IMessaging messaging, string transformFile, string exportBasePath, string intermediateFolder)
22 {
23 this.Messaging = messaging;
24 this.TransformFile = transformFile;
@@ -27,7 +28,7 @@ namespace WixToolset.Core.WindowsInstaller.Unbind
28 this.TableDefinitions = WindowsInstallerStandardInternal.GetTableDefinitions();
29 }
30
30 - private Messaging Messaging { get; }
31 + private IMessaging Messaging { get; }
32
33 private string TransformFile { get; }
34
@@ -152,7 +153,7 @@ namespace WixToolset.Core.WindowsInstaller.Unbind
153 // this commonly happens when the transform was built
154 // against a database schema different from the internal
155 // table definitions
155 - throw new WixException(WixErrors.TransformSchemaMismatch());
156 + throw new WixException(ErrorMessages.TransformSchemaMismatch());
157 }
158 }
159
src/WixToolset.Core.WindowsInstaller/UnbindContext.cs
+5 -2
@@ -2,12 +2,15 @@
2
3 namespace WixToolset.Core
4 {
5 - using WixToolset.Data;
5 + using System;
6 using WixToolset.Extensibility;
7 + using WixToolset.Extensibility.Services;
8
9 internal class UnbindContext : IUnbindContext
10 {
10 - public Messaging Messaging { get; } = Messaging.Instance;
11 + public IServiceProvider ServiceProvider { get; }
12 +
13 + public IMessaging Messaging { get; set; }
14
15 public string ExportBasePath { get; set; }
16
src/WixToolset.Core.WindowsInstaller/Unbinder.cs
+2 -2
@@ -53,11 +53,11 @@ namespace WixToolset.Core
53 {
54 if (OutputType.Transform == outputType)
55 {
56 - throw new WixException(WixErrors.FileNotFound(null, file, "Transform"));
56 + throw new WixException(ErrorMessages.FileNotFound(null, file, "Transform"));
57 }
58 else
59 {
60 - throw new WixException(WixErrors.FileNotFound(null, file, "Database"));
60 + throw new WixException(ErrorMessages.FileNotFound(null, file, "Database"));
61 }
62 }
63
src/WixToolset.Core.WindowsInstaller/Validator.cs
+17 -25
@@ -22,7 +22,7 @@ namespace WixToolset.Core.WindowsInstaller
22 /// <summary>
23 /// Runs internal consistency evaluators (ICEs) from cub files against a database.
24 /// </summary>
25 - public sealed class Validator : IMessageHandler
25 + public sealed class Validator
26 {
27 private string actionName;
28 private StringCollection cubeFiles;
@@ -30,15 +30,17 @@ namespace WixToolset.Core.WindowsInstaller
30 private Output output;
31 private InstallUIHandler validationUIHandler;
32 private bool validationSessionComplete;
33 + private readonly IMessaging messaging;
34
35 /// <summary>
36 /// Instantiate a new Validator.
37 /// </summary>
37 - public Validator()
38 + public Validator(IMessaging messaging)
39 {
40 this.cubeFiles = new StringCollection();
40 - this.extension = new ValidatorExtension();
41 + this.extension = new ValidatorExtension(messaging);
42 this.validationUIHandler = new InstallUIHandler(this.ValidationUIHandler);
43 + this.messaging = messaging;
44 }
45
46 /// <summary>
@@ -127,7 +129,7 @@ namespace WixToolset.Core.WindowsInstaller
129 {
130 if (!mutex.WaitOne(0, false))
131 {
130 - this.OnMessage(WixVerboses.ValidationSerialized());
132 + this.messaging.Write(VerboseMessages.ValidationSerialized());
133 mutex.WaitOne();
134 }
135
@@ -176,7 +178,7 @@ namespace WixToolset.Core.WindowsInstaller
178 {
179 if (0x6E == e.NativeErrorCode) // ERROR_OPEN_FAILED
180 {
179 - throw new WixException(WixErrors.CubeFileNotFound(cubeFile));
181 + throw new WixException(ErrorMessages.CubeFileNotFound(cubeFile));
182 }
183
184 throw;
@@ -248,7 +250,7 @@ namespace WixToolset.Core.WindowsInstaller
250 }
251 catch (Win32Exception e)
252 {
251 - if (!Messaging.Instance.EncounteredError)
253 + if (!this.messaging.EncounteredError)
254 {
255 throw e;
256 }
@@ -270,7 +272,7 @@ namespace WixToolset.Core.WindowsInstaller
272 catch (Win32Exception e)
273 {
274 // avoid displaying errors twice since one may have already occurred in the UI handler
273 - if (!Messaging.Instance.EncounteredError)
275 + if (!this.messaging.EncounteredError)
276 {
277 if (0x6E == e.NativeErrorCode) // ERROR_OPEN_FAILED
278 {
@@ -278,23 +280,23 @@ namespace WixToolset.Core.WindowsInstaller
280 // this would be the temporary copy and there would be
281 // no final output since the error occured; during smoke
282 // they should know the path passed into smoke
281 - this.OnMessage(WixErrors.ValidationFailedToOpenDatabase());
283 + this.messaging.Write(ErrorMessages.ValidationFailedToOpenDatabase());
284 }
285 else if (0x64D == e.NativeErrorCode)
286 {
285 - this.OnMessage(WixErrors.ValidationFailedDueToLowMsiEngine());
287 + this.messaging.Write(ErrorMessages.ValidationFailedDueToLowMsiEngine());
288 }
289 else if (0x654 == e.NativeErrorCode)
290 {
289 - this.OnMessage(WixErrors.ValidationFailedDueToInvalidPackage());
291 + this.messaging.Write(ErrorMessages.ValidationFailedDueToInvalidPackage());
292 }
293 else if (0x658 == e.NativeErrorCode)
294 {
293 - this.OnMessage(WixErrors.ValidationFailedDueToMultilanguageMergeModule());
295 + this.messaging.Write(ErrorMessages.ValidationFailedDueToMultilanguageMergeModule());
296 }
297 else if (0x659 == e.NativeErrorCode)
298 {
297 - this.OnMessage(WixWarnings.ValidationFailedDueToSystemPolicy());
299 + this.messaging.Write(WarningMessages.ValidationFailedDueToSystemPolicy());
300 }
301 else
302 {
@@ -305,7 +307,7 @@ namespace WixToolset.Core.WindowsInstaller
307 msgTemp = String.Concat("Action - '", this.actionName, "' ", e.Message);
308 }
309
308 - this.OnMessage(WixErrors.Win32Exception(e.NativeErrorCode, msgTemp));
310 + this.messaging.Write(ErrorMessages.Win32Exception(e.NativeErrorCode, msgTemp));
311 }
312 }
313 }
@@ -322,16 +324,6 @@ namespace WixToolset.Core.WindowsInstaller
324 }
325 }
326
325 - /// <summary>
326 - /// Sends a message to the message delegate if there is one.
327 - /// </summary>
328 - /// <param name="mea">Message event arguments.</param>
329 - public void OnMessage(MessageEventArgs e)
330 - {
331 - Messaging.Instance.OnMessage(e);
332 - this.extension.OnMessage(e);
333 - }
334 -
327 public static Validator CreateFromContext(IBindContext context, string cubeFilename)
328 {
329 Validator validator = null;
@@ -339,7 +331,7 @@ namespace WixToolset.Core.WindowsInstaller
331 // Tell the binder about the validator if validation isn't suppressed
332 if (!context.SuppressValidation)
333 {
342 - validator = new Validator();
334 + validator = new Validator(context.Messaging);
335 validator.IntermediateFolder = Path.Combine(context.IntermediateFolder, "validate");
336
337 // set the default cube file
@@ -378,7 +370,7 @@ namespace WixToolset.Core.WindowsInstaller
370 }
371 catch (WixException ex)
372 {
381 - this.OnMessage(ex.Error);
373 + this.messaging.Write(ex.Error);
374 }
375
376 return 1;
src/WixToolset.Core.WindowsInstaller/ValidatorExtension.cs
+12 -24
@@ -6,23 +6,26 @@ namespace WixToolset.Extensibility
6 using System.Collections;
7 using WixToolset.Data;
8 using WixToolset.Data.WindowsInstaller;
9 + using WixToolset.Extensibility.Services;
10
11 /// <summary>
12 /// Base class for creating a validator extension. This default implementation
13 /// will fire and event with the ICE name and description.
14 /// </summary>
14 - public class ValidatorExtension : IMessageHandler
15 + public class ValidatorExtension
16 {
17 private string databaseFile;
18 private Hashtable indexedSourceLineNumbers;
19 private Output output;
20 private SourceLineNumber sourceLineNumbers;
21 + private readonly IMessaging messaging;
22
23 /// <summary>
24 /// Instantiate a new <see cref="ValidatorExtension"/>.
25 /// </summary>
24 - public ValidatorExtension()
26 + public ValidatorExtension(IMessaging messaging)
27 {
28 + this.messaging = messaging;
29 }
30
31 /// <summary>
@@ -183,11 +186,11 @@ namespace WixToolset.Extensibility
186 {
187 if (null == action)
188 {
186 - throw new WixException(WixErrors.UnexpectedExternalUIMessage(message));
189 + throw new WixException(ErrorMessages.UnexpectedExternalUIMessage(message));
190 }
191 else
192 {
190 - throw new WixException(WixErrors.UnexpectedExternalUIMessage(message, action));
193 + throw new WixException(ErrorMessages.UnexpectedExternalUIMessage(message, action));
194 }
195 }
196
@@ -209,16 +212,16 @@ namespace WixToolset.Extensibility
212 {
213 case "0":
214 case "1":
212 - this.OnMessage(WixErrors.ValidationError(messageSourceLineNumbers, messageParts[0], messageParts[2]));
215 + this.messaging.Write(ErrorMessages.ValidationError(messageSourceLineNumbers, messageParts[0], messageParts[2]));
216 break;
217 case "2":
215 - this.OnMessage(WixWarnings.ValidationWarning(messageSourceLineNumbers, messageParts[0], messageParts[2]));
218 + this.messaging.Write(WarningMessages.ValidationWarning(messageSourceLineNumbers, messageParts[0], messageParts[2]));
219 break;
220 case "3":
218 - this.OnMessage(WixVerboses.ValidationInfo(messageParts[0], messageParts[2]));
221 + this.messaging.Write(VerboseMessages.ValidationInfo(messageParts[0], messageParts[2]));
222 break;
223 default:
221 - throw new WixException(WixErrors.InvalidValidatorMessageType(messageParts[1]));
224 + throw new WixException(ErrorMessages.InvalidValidatorMessageType(messageParts[1]));
225 }
226 }
227
@@ -264,7 +267,7 @@ namespace WixToolset.Extensibility
267
268 if (this.indexedSourceLineNumbers.ContainsKey(key))
269 {
267 - this.OnMessage(WixWarnings.DuplicatePrimaryKey(row.SourceLineNumbers, primaryKey, table.Name));
270 + this.messaging.Write(WarningMessages.DuplicatePrimaryKey(row.SourceLineNumbers, primaryKey, table.Name));
271 }
272 else
273 {
@@ -281,20 +284,5 @@ namespace WixToolset.Extensibility
284 // use the file name as the source line information
285 return this.sourceLineNumbers;
286 }
284 -
285 - /// <summary>
286 - /// Sends a message to the <see cref="Message"/> delegate if there is one.
287 - /// </summary>
288 - /// <param name="e">Message event arguments.</param>
289 - /// <remarks>
290 - /// <para><b>Notes to Inheritors:</b> When overriding <b>OnMessage</b>
291 - /// in a derived class, be sure to call the base class's
292 - /// <b>OnMessage</b> method so that registered delegates recieve
293 - /// the event.</para>
294 - /// </remarks>
295 - public virtual void OnMessage(MessageEventArgs e)
296 - {
297 - Messaging.Instance.OnMessage(e);
298 - }
287 }
288 }
src/WixToolset.Core.WindowsInstaller/WindowsInstallerStandardInternal.cs
+3 -1
@@ -16,7 +16,9 @@ namespace WixToolset.Core.WindowsInstaller
16 private static readonly object lockObject = new object();
17
18 private static TableDefinitionCollection tableDefinitions;
19 +#if REVISIT_FOR_PATCHING
20 private static WixActionRowCollection standardActions;
21 +#endif
22
23 /// <summary>
24 /// Gets the table definitions stored in this assembly.
@@ -57,7 +59,7 @@ namespace WixToolset.Core.WindowsInstaller
59 }
60
61 return WindowsInstallerStandardInternal.standardActions;
60 -#endif
62 +#endif
63 throw new NotImplementedException();
64 }
65 }
src/WixToolset.Core/AppCommon.cs
-102
@@ -3,115 +3,13 @@
3 namespace WixToolset.Core
4 {
5 using System;
6 - using System.Collections.Specialized;
7 - using System.Globalization;
8 - using System.IO;
6 using System.Reflection;
10 - using System.Text;
11 - using System.Threading;
12 - using WixToolset.Data;
7
8 /// <summary>
9 /// Common utilities for Wix applications.
10 /// </summary>
11 public static class AppCommon
12 {
19 - /// <summary>
20 - /// Read the configuration file (*.exe.config).
21 - /// </summary>
22 - /// <param name="extensions">Extensions to load.</param>
23 - public static void ReadConfiguration(StringCollection extensions)
24 - {
25 - if (null == extensions)
26 - {
27 - throw new ArgumentNullException("extensions");
28 - }
29 -
30 -#if REDO_IN_NETCORE
31 - // Don't use the default AppSettings reader because
32 - // the tool may be called from within another process.
33 - // Instead, read the .exe.config file from the tool location.
34 - string toolPath = (new System.Uri(Assembly.GetCallingAssembly().CodeBase)).LocalPath;
35 - Configuration config = ConfigurationManager.OpenExeConfiguration(toolPath);
36 - if (config.HasFile)
37 - {
38 - KeyValueConfigurationElement configVal = config.AppSettings.Settings["extensions"];
39 - if (configVal != null)
40 - {
41 - string extensionTypes = configVal.Value;
42 - foreach (string extensionType in extensionTypes.Split(";".ToCharArray()))
43 - {
44 - extensions.Add(extensionType);
45 - }
46 - }
47 - }
48 -#endif
49 - }
50 -
51 - /// <summary>
52 - /// Gets a unique temporary location or uses the provided temporary location.
53 - /// </summary>
54 - /// <param name="tempLocation">Optional temporary location to use.</param>
55 - /// <returns>Temporary location.</returns>
56 - public static string GetTempLocation(string tempLocation = null)
57 - {
58 - if (String.IsNullOrEmpty(tempLocation))
59 - {
60 - tempLocation = Environment.GetEnvironmentVariable("WIX_TEMP") ?? Path.GetTempPath();
61 -
62 - do
63 - {
64 - tempLocation = Path.Combine(tempLocation, DateTime.Now.ToString("wixyyMMddTHHmmssffff"));
65 - } while (Directory.Exists(tempLocation));
66 - }
67 -
68 - return tempLocation;
69 - }
70 -
71 - /// <summary>
72 - /// Delete a directory with retries and best-effort cleanup.
73 - /// </summary>
74 - /// <param name="path">The directory to delete.</param>
75 - /// <param name="messageHandler">The message handler.</param>
76 - /// <returns>True if all files were deleted, false otherwise.</returns>
77 - public static bool DeleteDirectory(string path, IMessageHandler messageHandler)
78 - {
79 - return Common.DeleteTempFiles(path, messageHandler);
80 - }
81 -
82 - /// <summary>
83 - /// Prepares the console for localization.
84 - /// </summary>
85 - public static void PrepareConsoleForLocalization()
86 - {
87 - Thread.CurrentThread.CurrentUICulture = CultureInfo.CurrentUICulture.GetConsoleFallbackUICulture();
88 - if ((Console.OutputEncoding.CodePage != Encoding.UTF8.CodePage) &&
89 - (Console.OutputEncoding.CodePage != Thread.CurrentThread.CurrentUICulture.TextInfo.OEMCodePage) &&
90 - (Console.OutputEncoding.CodePage != Thread.CurrentThread.CurrentUICulture.TextInfo.ANSICodePage))
91 - {
92 - Thread.CurrentThread.CurrentUICulture = new CultureInfo("en-US");
93 - }
94 - }
95 -
96 - /// <summary>
97 - /// Handler for display message events.
98 - /// </summary>
99 - /// <param name="sender">Sender of message.</param>
100 - /// <param name="e">Event arguments containing message to display.</param>
101 - public static void ConsoleDisplayMessage(object sender, DisplayEventArgs e)
102 - {
103 - switch (e.Level)
104 - {
105 - case MessageLevel.Warning:
106 - case MessageLevel.Error:
107 - Console.Error.WriteLine(e.Message);
108 - break;
109 - default:
110 - Console.WriteLine(e.Message);
111 - break;
112 - }
113 - }
114 -
13 /// <summary>
14 /// Creates and returns the string for CreatingApplication field (MSI Summary Information Stream).
15 /// </summary>
src/WixToolset.Core/BackendContext.cs deleted
-16
@@ -1,16 +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.Core
4 -{
5 - using WixToolset.Data;
6 -
7 - public class BackendContext
8 - {
9 - internal BackendContext()
10 - {
11 - this.Messaging = Messaging.Instance;
12 - }
13 -
14 - public Messaging Messaging { get; }
15 - }
16 -}
src/WixToolset.Core/Bind/FileResolver.cs
+1 -1
@@ -221,7 +221,7 @@ namespace WixToolset.Core.Bind
221 }
222 catch (ArgumentException)
223 {
224 - throw new WixException(WixErrors.IllegalCharactersInPath(path));
224 + throw new WixException(ErrorMessages.IllegalCharactersInPath(path));
225 }
226 }
227
src/WixToolset.Core/Bind/ResolveDelayedFieldsCommand.cs
+7 -3
@@ -7,6 +7,7 @@ namespace WixToolset.Core.Bind
7 using System.Globalization;
8 using WixToolset.Data;
9 using WixToolset.Extensibility;
10 + using WixToolset.Extensibility.Services;
11
12 /// <summary>
13 /// Resolves the fields which had variables that needed to be resolved after the file information
@@ -19,12 +20,15 @@ namespace WixToolset.Core.Bind
20 /// </summary>
21 /// <param name="delayedFields">The fields which had resolution delayed.</param>
22 /// <param name="variableCache">The file information to use when resolving variables.</param>
22 - public ResolveDelayedFieldsCommand(IEnumerable<IDelayedField> delayedFields, Dictionary<string, string> variableCache)
23 + public ResolveDelayedFieldsCommand(IMessaging messaging, IEnumerable<IDelayedField> delayedFields, Dictionary<string, string> variableCache)
24 {
25 + this.Messaging = messaging;
26 this.DelayedFields = delayedFields;
27 this.VariableCache = variableCache;
28 }
29
30 + private IMessaging Messaging { get; }
31 +
32 private IEnumerable<IDelayedField> DelayedFields { get;}
33
34 private IDictionary<string, string> VariableCache { get; }
@@ -58,7 +62,7 @@ namespace WixToolset.Core.Bind
62 }
63 catch (WixException we)
64 {
61 - Messaging.Instance.OnMessage(we.Error);
65 + this.Messaging.Write(we.Error);
66 continue;
67 }
68 }
@@ -103,7 +107,7 @@ namespace WixToolset.Core.Bind
107 }
108 catch (WixException we)
109 {
106 - Messaging.Instance.OnMessage(we.Error);
110 + this.Messaging.Write(we.Error);
111 }
112 }
113 }
src/WixToolset.Core/Bind/ResolveFieldsCommand.cs
+6 -3
@@ -7,12 +7,15 @@ namespace WixToolset.Core.Bind
7 using WixToolset.Data;
8 using WixToolset.Data.Bind;
9 using WixToolset.Extensibility;
10 + using WixToolset.Extensibility.Services;
11
12 /// <summary>
13 /// Resolve source fields in the tables included in the output
14 /// </summary>
15 internal class ResolveFieldsCommand
16 {
17 + public IMessaging Messaging { private get; set; }
18 +
19 public bool BuildingPatch { private get; set; }
20
21 public IBindVariableResolver BindVariableResolver { private get; set; }
@@ -75,7 +78,7 @@ namespace WixToolset.Core.Bind
78 }
79
80 // Move to next row if we've hit an error resolving variables.
78 - if (Messaging.Instance.EncounteredError) // TODO: make this error handling more specific to just the failure to resolve variables in this field.
81 + if (this.Messaging.EncounteredError) // TODO: make this error handling more specific to just the failure to resolve variables in this field.
82 {
83 continue;
84 }
@@ -151,7 +154,7 @@ namespace WixToolset.Core.Bind
154 catch (WixFileNotFoundException)
155 {
156 // display the error with source line information
154 - Messaging.Instance.OnMessage(WixErrors.FileNotFound(row.SourceLineNumbers, objectField.Path));
157 + this.Messaging.Write(ErrorMessages.FileNotFound(row.SourceLineNumbers, objectField.Path));
158 }
159 }
160
@@ -208,7 +211,7 @@ namespace WixToolset.Core.Bind
211 catch (WixFileNotFoundException)
212 {
213 // display the error with source line information
211 - Messaging.Instance.OnMessage(WixErrors.FileNotFound(row.SourceLineNumbers, (string)objectField.PreviousData));
214 + Messaging.Instance.Write(WixErrors.FileNotFound(row.SourceLineNumbers, (string)objectField.PreviousData));
215 }
216 }
217 }
src/WixToolset.Core/Bind/TransferFilesCommand.cs
+15 -11
@@ -9,18 +9,22 @@ namespace WixToolset.Core.Bind
9 using WixToolset.Data;
10 using WixToolset.Data.Bind;
11 using WixToolset.Extensibility;
12 + using WixToolset.Extensibility.Services;
13
14 internal class TransferFilesCommand
15 {
15 - public TransferFilesCommand(IEnumerable<BindPath> bindPaths, IEnumerable<IBinderExtension> extensions, IEnumerable<FileTransfer> fileTransfers, bool suppressAclReset)
16 + public TransferFilesCommand(IMessaging messaging, IEnumerable<BindPath> bindPaths, IEnumerable<IBinderExtension> extensions, IEnumerable<FileTransfer> fileTransfers, bool suppressAclReset)
17 {
18 this.FileResolver = new FileResolver(bindPaths, extensions);
19 + this.Messaging = messaging;
20 this.FileTransfers = fileTransfers;
21 this.SuppressAclReset = suppressAclReset;
22 }
23
24 private FileResolver FileResolver { get; }
25
26 + private IMessaging Messaging { get; }
27 +
28 private IEnumerable<FileTransfer> FileTransfers { get; }
29
30 private bool SuppressAclReset { get; }
@@ -47,12 +51,12 @@ namespace WixToolset.Core.Bind
51 {
52 if (fileTransfer.Move)
53 {
50 - Messaging.Instance.OnMessage(WixVerboses.MoveFile(fileSource, fileTransfer.Destination));
54 + this.Messaging.Write(VerboseMessages.MoveFile(fileSource, fileTransfer.Destination));
55 this.TransferFile(true, fileSource, fileTransfer.Destination);
56 }
57 else
58 {
55 - Messaging.Instance.OnMessage(WixVerboses.CopyFile(fileSource, fileTransfer.Destination));
59 + this.Messaging.Write(VerboseMessages.CopyFile(fileSource, fileTransfer.Destination));
60 this.TransferFile(false, fileSource, fileTransfer.Destination);
61 }
62
@@ -61,7 +65,7 @@ namespace WixToolset.Core.Bind
65 }
66 catch (FileNotFoundException e)
67 {
64 - throw new WixFileNotFoundException(e.FileName);
68 + throw new WixFileNotFoundException(fileTransfer.SourceLineNumbers, e.FileName);
69 }
70 catch (DirectoryNotFoundException)
71 {
@@ -72,7 +76,7 @@ namespace WixToolset.Core.Bind
76 }
77
78 string directory = Path.GetDirectoryName(fileTransfer.Destination);
75 - Messaging.Instance.OnMessage(WixVerboses.CreateDirectory(directory));
79 + this.Messaging.Write(VerboseMessages.CreateDirectory(directory));
80 Directory.CreateDirectory(directory);
81 retry = true;
82 }
@@ -86,7 +90,7 @@ namespace WixToolset.Core.Bind
90
91 if (File.Exists(fileTransfer.Destination))
92 {
89 - Messaging.Instance.OnMessage(WixVerboses.RemoveDestinationFile(fileTransfer.Destination));
93 + this.Messaging.Write(VerboseMessages.RemoveDestinationFile(fileTransfer.Destination));
94
95 // try to ensure the file is not read-only
96 FileAttributes attributes = File.GetAttributes(fileTransfer.Destination);
@@ -96,7 +100,7 @@ namespace WixToolset.Core.Bind
100 }
101 catch (ArgumentException) // thrown for unauthorized access errors
102 {
99 - throw new WixException(WixErrors.UnauthorizedAccess(fileTransfer.Destination));
103 + throw new WixException(ErrorMessages.UnauthorizedAccess(fileTransfer.Destination));
104 }
105
106 // try to delete the file
@@ -106,7 +110,7 @@ namespace WixToolset.Core.Bind
110 }
111 catch (IOException)
112 {
109 - throw new WixException(WixErrors.FileInUse(null, fileTransfer.Destination));
113 + throw new WixException(ErrorMessages.FileInUse(null, fileTransfer.Destination));
114 }
115
116 retry = true;
@@ -126,7 +130,7 @@ namespace WixToolset.Core.Bind
130
131 if (File.Exists(fileTransfer.Destination))
132 {
129 - Messaging.Instance.OnMessage(WixVerboses.RemoveDestinationFile(fileTransfer.Destination));
133 + this.Messaging.Write(VerboseMessages.RemoveDestinationFile(fileTransfer.Destination));
134
135 // ensure the file is not read-only, then delete it
136 FileAttributes attributes = File.GetAttributes(fileTransfer.Destination);
@@ -137,7 +141,7 @@ namespace WixToolset.Core.Bind
141 }
142 catch (IOException)
143 {
140 - throw new WixException(WixErrors.FileInUse(null, fileTransfer.Destination));
144 + throw new WixException(ErrorMessages.FileInUse(null, fileTransfer.Destination));
145 }
146
147 retry = true;
@@ -168,7 +172,7 @@ namespace WixToolset.Core.Bind
172 }
173 catch
174 {
171 - Messaging.Instance.OnMessage(WixWarnings.UnableToResetAcls());
175 + this.Messaging.Write(WarningMessages.UnableToResetAcls());
176 }
177 }
178 }
src/WixToolset.Core/BindContext.cs
+1 -1
@@ -17,7 +17,7 @@ namespace WixToolset.Core
17
18 public IServiceProvider ServiceProvider { get; }
19
20 - public Messaging Messaging { get; set; }
20 + public IMessaging Messaging { get; set; }
21
22 public IEnumerable<BindPath> BindPaths { get; set; }
23
src/WixToolset.Core/Binder.cs
+7 -6
@@ -215,7 +215,7 @@ namespace WixToolset.Core
215 this.Layout(bindResult);
216 }
217
218 - return Messaging.Instance.EncounteredError;
218 + return this.Context.Messaging.EncounteredError;
219 }
220
221 private ResolveResult Resolve()
@@ -227,6 +227,7 @@ namespace WixToolset.Core
227 IEnumerable<DelayedField> delayedFields;
228 {
229 var command = new ResolveFieldsCommand();
230 + command.Messaging = this.Context.Messaging;
231 command.BuildingPatch = buildingPatch;
232 command.BindVariableResolver = this.Context.WixVariableResolver;
233 command.BindPaths = this.Context.BindPaths;
@@ -437,12 +438,12 @@ namespace WixToolset.Core
438 {
439 if (!this.DeleteTempFiles())
440 {
440 - this.Context.Messaging.OnMessage(WixWarnings.FailedToDeleteTempDir(this.TempFilesLocation));
441 + this.Context.Messaging.Write(WarningMessages.FailedToDeleteTempDir(this.TempFilesLocation));
442 }
443 }
444 else
445 {
445 - this.Context.Messaging.OnMessage(WixVerboses.BinderTempDirLocatedAt(this.TempFilesLocation));
446 + this.Context.Messaging.Write(VerboseMessages.BinderTempDirLocatedAt(this.TempFilesLocation));
447 }
448 }
449
@@ -594,9 +595,9 @@ namespace WixToolset.Core
595 {
596 if (null != transfers && transfers.Any())
597 {
597 - this.Context.Messaging.OnMessage(WixVerboses.LayingOutMedia());
598 + this.Context.Messaging.Write(VerboseMessages.LayingOutMedia());
599
599 - var command = new TransferFilesCommand(this.Context.BindPaths, this.Context.Extensions, transfers, this.Context.SuppressAclReset);
600 + var command = new TransferFilesCommand(this.Context.Messaging, this.Context.BindPaths, this.Context.Extensions, transfers, this.Context.SuppressAclReset);
601 command.Execute();
602 }
603 }
@@ -613,7 +614,7 @@ namespace WixToolset.Core
614 {
615 if (!directories.ContainsKey(directory))
616 {
616 - throw new WixException(WixErrors.ExpectedDirectory(directory));
617 + throw new WixException(ErrorMessages.ExpectedDirectory(directory));
618 }
619
620 ResolvedDirectory resolvedDirectory = (ResolvedDirectory)directories[directory];
src/WixToolset.Core/BinderFileManagerCore.cs
-9
@@ -96,14 +96,5 @@ namespace WixToolset
96
97 return Enumerable.Empty<string>();
98 }
99 -
100 - /// <summary>
101 - /// Sends a message to the message delegate if there is one.
102 - /// </summary>
103 - /// <param name="e">Message event arguments.</param>
104 - public void OnMessage(MessageEventArgs e)
105 - {
106 - Messaging.Instance.OnMessage(e);
107 - }
99 }
100 }
src/WixToolset.Core/CommandLine/BuildCommand.cs
+34 -25
@@ -13,9 +13,10 @@ namespace WixToolset.Core
13
14 internal class BuildCommand : ICommandLineCommand
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 {
18 this.ServiceProvider = serviceProvider;
19 + this.Messaging = messaging;
20 this.ExtensionManager = extensions;
21 this.LocFiles = locFiles;
22 this.LibraryFiles = libraryFiles;
@@ -38,6 +39,8 @@ namespace WixToolset.Core
39
40 public IServiceProvider ServiceProvider { get; }
41
42 + public IMessaging Messaging { get; }
43 +
44 public IExtensionManager ExtensionManager { get; }
45
46 public IEnumerable<string> IncludeSearchPaths { get; }
@@ -91,13 +94,13 @@ namespace WixToolset.Core
94 {
95 var output = this.LinkPhase(intermediates);
96
94 - if (!Messaging.Instance.EncounteredError)
97 + if (!this.Messaging.EncounteredError)
98 {
99 this.BindPhase(output);
100 }
101 }
102
100 - return Messaging.Instance.LastErrorNumber;
103 + return this.Messaging.LastErrorNumber;
104 }
105
106 private IEnumerable<Intermediate> CompilePhase()
@@ -107,7 +110,7 @@ namespace WixToolset.Core
110 foreach (var sourceFile in this.SourceFiles)
111 {
112 var preprocessContext = this.ServiceProvider.GetService<IPreprocessContext>();
110 - preprocessContext.Messaging = Messaging.Instance;
113 + preprocessContext.Messaging = this.Messaging;
114 preprocessContext.Extensions = this.ExtensionManager.Create<IPreprocessorExtension>();
115 preprocessContext.Platform = Platform.X86; // TODO: set this correctly
116 preprocessContext.IncludeSearchPaths = this.IncludeSearchPaths?.ToList() ?? new List<string>();
@@ -117,18 +120,24 @@ namespace WixToolset.Core
120 var preprocessor = new Preprocessor();
121 var document = preprocessor.Process(preprocessContext);
122
120 - var compileContext = this.ServiceProvider.GetService<ICompileContext>();
121 - compileContext.Messaging = Messaging.Instance;
122 - compileContext.CompilationId = Guid.NewGuid().ToString("N");
123 - compileContext.Extensions = this.ExtensionManager.Create<ICompilerExtension>();
124 - compileContext.OutputPath = sourceFile.OutputPath;
125 - compileContext.Platform = Platform.X86; // TODO: set this correctly
126 - compileContext.Source = document;
127 -
128 - var compiler = new Compiler();
129 - var intermediate = compiler.Compile(compileContext);
130 -
131 - intermediates.Add(intermediate);
123 + if (!this.Messaging.EncounteredError)
124 + {
125 + var compileContext = this.ServiceProvider.GetService<ICompileContext>();
126 + compileContext.Messaging = this.Messaging;
127 + compileContext.CompilationId = Guid.NewGuid().ToString("N");
128 + compileContext.Extensions = this.ExtensionManager.Create<ICompilerExtension>();
129 + compileContext.OutputPath = sourceFile.OutputPath;
130 + compileContext.Platform = Platform.X86; // TODO: set this correctly
131 + compileContext.Source = document;
132 +
133 + var compiler = new Compiler();
134 + var intermediate = compiler.Compile(compileContext);
135 +
136 + if (!this.Messaging.EncounteredError)
137 + {
138 + intermediates.Add(intermediate);
139 + }
140 + }
141 }
142
143 return intermediates;
@@ -139,7 +148,7 @@ namespace WixToolset.Core
148 var localizations = this.LoadLocalizationFiles().ToList();
149
150 // If there was an error adding localization files, then bail.
142 - if (Messaging.Instance.EncounteredError)
151 + if (this.Messaging.EncounteredError)
152 {
153 return null;
154 }
@@ -166,7 +175,7 @@ namespace WixToolset.Core
175 var libraries = this.LoadLibraries(creator);
176
177 var context = this.ServiceProvider.GetService<ILinkContext>();
169 - context.Messaging = Messaging.Instance;
178 + context.Messaging = this.Messaging;
179 context.Extensions = this.ExtensionManager.Create<ILinkerExtension>();
180 context.ExtensionData = this.ExtensionManager.Create<IExtensionData>();
181 context.ExpectedOutputType = this.OutputType;
@@ -182,7 +191,7 @@ namespace WixToolset.Core
191 {
192 var localizations = this.LoadLocalizationFiles().ToList();
193
185 - var localizer = new Localizer(localizations);
194 + var localizer = new Localizer(this.Messaging, localizations);
195
196 var resolver = CreateWixResolverWithVariables(localizer, output);
197
@@ -193,7 +202,7 @@ namespace WixToolset.Core
202 }
203
204 var context = this.ServiceProvider.GetService<IBindContext>();
196 - context.Messaging = Messaging.Instance;
205 + context.Messaging = this.Messaging;
206 context.ExtensionManager = this.ExtensionManager;
207 context.BindPaths = this.BindPaths ?? Array.Empty<BindPath>();
208 //context.CabbingThreadCount = this.CabbingThreadCount;
@@ -234,11 +243,11 @@ namespace WixToolset.Core
243 }
244 catch (WixCorruptFileException e)
245 {
237 - Messaging.Instance.OnMessage(e.Error);
246 + this.Messaging.Write(e.Error);
247 }
248 catch (WixUnexpectedFileFormatException e)
249 {
241 - Messaging.Instance.OnMessage(e.Error);
250 + this.Messaging.Write(e.Error);
251 }
252 }
253 }
@@ -250,15 +259,15 @@ namespace WixToolset.Core
259 {
260 foreach (var loc in this.LocFiles)
261 {
253 - var localization = Localizer.ParseLocalizationFile(loc);
262 + var localization = Localizer.ParseLocalizationFile(this.Messaging, loc);
263
264 yield return localization;
265 }
266 }
267
259 - private static WixVariableResolver CreateWixResolverWithVariables(Localizer localizer, Intermediate output)
268 + private WixVariableResolver CreateWixResolverWithVariables(Localizer localizer, Intermediate output)
269 {
261 - var resolver = new WixVariableResolver(localizer);
270 + var resolver = new WixVariableResolver(this.Messaging, localizer);
271
272 // Gather all the wix variables.
273 var wixVariables = output?.Sections.SelectMany(s => s.Tuples).OfType<WixVariableTuple>();
src/WixToolset.Core/CommandLine/CommandLine.cs
+13 -13
@@ -24,12 +24,10 @@ namespace WixToolset.Core
24
25 internal class CommandLine : ICommandLine, IParseCommandLine
26 {
27 - public CommandLine()
28 - {
29 - }
30 -
27 private IServiceProvider ServiceProvider { get; set; }
28
29 + private IMessaging Messaging { get; set; }
30 +
31 public static string ExpectedArgument { get; } = "expected argument";
32
33 public string ActiveCommand { get; private set; }
@@ -48,6 +46,8 @@ namespace WixToolset.Core
46 {
47 this.ServiceProvider = context.ServiceProvider;
48
49 + this.Messaging = context.Messaging ?? this.ServiceProvider.GetService<IMessaging>();
50 +
51 this.ExtensionManager = context.ExtensionManager ?? this.ServiceProvider.GetService<IExtensionManager>();
52
53 var args = context.ParsedArguments ?? Array.Empty<string>();
@@ -186,7 +186,7 @@ namespace WixToolset.Core
186 }
187 });
188
189 - Messaging.Instance.ShowVerboseMessages = verbose;
189 + this.Messaging.ShowVerboseMessages = verbose;
190
191 if (showVersion)
192 {
@@ -208,17 +208,17 @@ namespace WixToolset.Core
208 case Commands.Build:
209 {
210 var sourceFiles = GatherSourceFiles(files, outputFolder);
211 - var variables = GatherPreprocessorVariables(defines);
212 - var bindPathList = GatherBindPaths(bindPaths);
211 + var variables = this.GatherPreprocessorVariables(defines);
212 + var bindPathList = this.GatherBindPaths(bindPaths);
213 var type = CalculateOutputType(outputType, outputFile);
214 - return new BuildCommand(this.ServiceProvider, this.ExtensionManager, sourceFiles, variables, locFiles, libraryFiles, outputFile, type, cabCachePath, cultures, bindFiles, bindPathList, intermediateFolder, contentsFile, outputsFile, builtOutputsFile, wixProjectFile);
214 + return new BuildCommand(this.ServiceProvider, this.Messaging, this.ExtensionManager, sourceFiles, variables, locFiles, libraryFiles, outputFile, type, cabCachePath, cultures, bindFiles, bindPathList, intermediateFolder, contentsFile, outputsFile, builtOutputsFile, wixProjectFile);
215 }
216
217 case Commands.Compile:
218 {
219 var sourceFiles = GatherSourceFiles(files, outputFolder);
220 var variables = GatherPreprocessorVariables(defines);
221 - return new CompileCommand(this.ServiceProvider, this.ExtensionManager, sourceFiles, variables);
221 + return new CompileCommand(this.ServiceProvider, this.Messaging, this.ExtensionManager, sourceFiles, variables);
222 }
223 }
224
@@ -305,7 +305,7 @@ namespace WixToolset.Core
305 return files;
306 }
307
308 - private static IDictionary<string, string> GatherPreprocessorVariables(IEnumerable<string> defineConstants)
308 + private IDictionary<string, string> GatherPreprocessorVariables(IEnumerable<string> defineConstants)
309 {
310 var variables = new Dictionary<string, string>();
311
@@ -315,7 +315,7 @@ namespace WixToolset.Core
315
316 if (variables.ContainsKey(value[0]))
317 {
318 - Messaging.Instance.OnMessage(WixErrors.DuplicateVariableDefinition(value[0], (1 == value.Length) ? String.Empty : value[1], variables[value[0]]));
318 + this.Messaging.Write(ErrorMessages.DuplicateVariableDefinition(value[0], (1 == value.Length) ? String.Empty : value[1], variables[value[0]]));
319 continue;
320 }
321
@@ -325,7 +325,7 @@ namespace WixToolset.Core
325 return variables;
326 }
327
328 - private static IEnumerable<BindPath> GatherBindPaths(IEnumerable<string> bindPaths)
328 + private IEnumerable<BindPath> GatherBindPaths(IEnumerable<string> bindPaths)
329 {
330 var result = new List<BindPath>();
331
@@ -339,7 +339,7 @@ namespace WixToolset.Core
339 }
340 else if (File.Exists(bp.Path))
341 {
342 - Messaging.Instance.OnMessage(WixErrors.ExpectedDirectoryGotFile("-bindpath", bp.Path));
342 + this.Messaging.Write(ErrorMessages.ExpectedDirectoryGotFile("-bindpath", bp.Path));
343 }
344 }
345
src/WixToolset.Core/CommandLine/CommandLineContext.cs
+1 -2
@@ -3,7 +3,6 @@
3 namespace WixToolset.Core
4 {
5 using System;
6 - using WixToolset.Data;
6 using WixToolset.Extensibility.Services;
7
8 internal class CommandLineContext : ICommandLineContext
@@ -15,7 +14,7 @@ namespace WixToolset.Core
14
15 public IServiceProvider ServiceProvider { get; }
16
18 - public Messaging Messaging { get; set; }
17 + public IMessaging Messaging { get; set; }
18
19 public IExtensionManager ExtensionManager { get; set; }
20
src/WixToolset.Core/CommandLine/CompileCommand.cs
+6 -3
@@ -11,16 +11,19 @@ namespace WixToolset.Core
11
12 internal class CompileCommand : ICommandLineCommand
13 {
14 - public CompileCommand(IServiceProvider serviceProvider, IExtensionManager extensions, IEnumerable<SourceFile> sources, IDictionary<string, string> preprocessorVariables)
14 + public CompileCommand(IServiceProvider serviceProvider, IMessaging messaging, IExtensionManager extensions, IEnumerable<SourceFile> sources, IDictionary<string, string> preprocessorVariables)
15 {
16 this.PreprocessorVariables = preprocessorVariables;
17 this.ServiceProvider = serviceProvider;
18 + this.Messaging = messaging;
19 this.ExtensionManager = extensions;
20 this.SourceFiles = sources;
21 }
22
23 private IServiceProvider ServiceProvider { get; }
24
25 + private IMessaging Messaging { get; }
26 +
27 private IExtensionManager ExtensionManager { get; }
28
29 public IEnumerable<string> IncludeSearchPaths { get; }
@@ -34,7 +37,7 @@ namespace WixToolset.Core
37 foreach (var sourceFile in this.SourceFiles)
38 {
39 var preprocessContext = this.ServiceProvider.GetService<IPreprocessContext>();
37 - preprocessContext.Messaging = Messaging.Instance;
40 + preprocessContext.Messaging = this.Messaging;
41 preprocessContext.Extensions = this.ExtensionManager.Create<IPreprocessorExtension>();
42 preprocessContext.Platform = Platform.X86; // TODO: set this correctly
43 preprocessContext.IncludeSearchPaths = this.IncludeSearchPaths?.ToList() ?? new List<string>();
@@ -45,7 +48,7 @@ namespace WixToolset.Core
48 var document = preprocessor.Process(preprocessContext);
49
50 var compileContext = this.ServiceProvider.GetService<ICompileContext>();
48 - compileContext.Messaging = Messaging.Instance;
51 + compileContext.Messaging = this.Messaging;
52 compileContext.CompilationId = Guid.NewGuid().ToString("N");
53 compileContext.Extensions = this.ExtensionManager.Create<ICompilerExtension>();
54 compileContext.OutputPath = sourceFile.OutputPath;
src/WixToolset.Core/Common.cs
+27 -26
@@ -14,6 +14,7 @@ namespace WixToolset.Core
14 using System.Xml.Linq;
15 using WixToolset.Data;
16 using WixToolset.Extensibility;
17 + using WixToolset.Extensibility.Services;
18
19 /// <summary>
20 /// Common Wix utility methods and types.
@@ -111,7 +112,7 @@ namespace WixToolset.Core
112 /// <param name="path">The temporary directory to delete.</param>
113 /// <param name="messageHandler">The message handler.</param>
114 /// <returns>True if all files were deleted, false otherwise.</returns>
114 - internal static bool DeleteTempFiles(string path, IMessageHandler messageHandler)
115 + internal static bool DeleteTempFiles(string path, IMessaging messageHandler)
116 {
117 // try three times and give up with a warning if the temp files aren't gone by then
118 int retryLimit = 3;
@@ -133,7 +134,7 @@ namespace WixToolset.Core
134 }
135 else
136 {
136 - messageHandler.OnMessage(WixWarnings.AccessDeniedForDeletion(null, path));
137 + messageHandler.Write(WarningMessages.AccessDeniedForDeletion(null, path));
138 return false;
139 }
140 }
@@ -146,7 +147,7 @@ namespace WixToolset.Core
147 {
148 if (i == (retryLimit - 1)) // last try failed still, give up
149 {
149 - messageHandler.OnMessage(WixWarnings.DirectoryInUse(null, path));
150 + messageHandler.Write(WarningMessages.DirectoryInUse(null, path));
151 return false;
152 }
153
@@ -203,7 +204,7 @@ namespace WixToolset.Core
204 codePage = encoding.CodePage;
205 if (0 > codePage || Int16.MaxValue < codePage)
206 {
206 - throw new WixException(WixErrors.InvalidSummaryInfoCodePage(sourceLineNumbers, codePage));
207 + throw new WixException(ErrorMessages.InvalidSummaryInfoCodePage(sourceLineNumbers, codePage));
208 }
209 }
210
@@ -327,7 +328,7 @@ namespace WixToolset.Core
328 case "true":
329 return true;
330 default:
330 - throw new WixException(WixErrors.IllegalAttributeValue(sourceLineNumbers, elementName, attributeName, value, "no", "yes"));
331 + throw new WixException(ErrorMessages.IllegalAttributeValue(sourceLineNumbers, elementName, attributeName, value, "no", "yes"));
332 }
333 }
334
@@ -433,7 +434,7 @@ namespace WixToolset.Core
434 /// <param name="fileAttribute">The FileAttribute to change on each file.</param>
435 /// <param name="messageHandler">The message handler.</param>
436 /// <param name="markAttribute">If true, add the attribute to each file. If false, remove it.</param>
436 - private static void RecursiveFileAttributes(string path, FileAttributes fileAttribute, bool markAttribute, IMessageHandler messageHandler)
437 + private static void RecursiveFileAttributes(string path, FileAttributes fileAttribute, bool markAttribute, IMessaging messageHandler)
438 {
439 foreach (string subDirectory in Directory.GetDirectories(path))
440 {
@@ -458,7 +459,7 @@ namespace WixToolset.Core
459 }
460 catch (UnauthorizedAccessException)
461 {
461 - messageHandler.OnMessage(WixWarnings.AccessDeniedForSettingAttributes(null, filePath));
462 + messageHandler.Write(WarningMessages.AccessDeniedForSettingAttributes(null, filePath));
463 }
464 }
465 }
@@ -624,14 +625,14 @@ namespace WixToolset.Core
625 /// <param name="emptyRule">A rule for the contents of the value. If the contents do not follow the rule, an error is thrown.</param>
626 /// <param name="messageHandler">A delegate that receives error messages.</param>
627 /// <returns>The attribute's value.</returns>
627 - internal static string GetAttributeValue(SourceLineNumber sourceLineNumbers, XAttribute attribute, EmptyRule emptyRule)
628 + internal static string GetAttributeValue(IMessaging messaging, SourceLineNumber sourceLineNumbers, XAttribute attribute, EmptyRule emptyRule)
629 {
630 string value = attribute.Value;
631
632 if ((emptyRule == EmptyRule.MustHaveNonWhitespaceCharacters && String.IsNullOrEmpty(value.Trim())) ||
633 (emptyRule == EmptyRule.CanBeWhitespaceOnly && String.IsNullOrEmpty(value)))
634 {
634 - Messaging.Instance.OnMessage(WixErrors.IllegalEmptyAttributeValue(sourceLineNumbers, attribute.Parent.Name.LocalName, attribute.Name.LocalName));
635 + messaging.Write(ErrorMessages.IllegalEmptyAttributeValue(sourceLineNumbers, attribute.Parent.Name.LocalName, attribute.Name.LocalName));
636 return String.Empty;
637 }
638
@@ -663,15 +664,15 @@ namespace WixToolset.Core
664 /// <param name="attribute">The attribute containing the value to get.</param>
665 /// <param name="messageHandler">A delegate that receives error messages.</param>
666 /// <returns>The attribute's identifier value or a special value if an error occurred.</returns>
666 - internal static string GetAttributeIdentifierValue(SourceLineNumber sourceLineNumbers, XAttribute attribute)
667 + internal static string GetAttributeIdentifierValue(IMessaging messaging, SourceLineNumber sourceLineNumbers, XAttribute attribute)
668 {
668 - string value = Common.GetAttributeValue(sourceLineNumbers, attribute, EmptyRule.CanBeWhitespaceOnly);
669 + string value = Common.GetAttributeValue(messaging, sourceLineNumbers, attribute, EmptyRule.CanBeWhitespaceOnly);
670
671 if (Common.IsIdentifier(value))
672 {
673 if (72 < value.Length)
674 {
674 - Messaging.Instance.OnMessage(WixWarnings.IdentifierTooLong(sourceLineNumbers, attribute.Parent.Name.LocalName, attribute.Name.LocalName, value));
675 + messaging.Write(WarningMessages.IdentifierTooLong(sourceLineNumbers, attribute.Parent.Name.LocalName, attribute.Name.LocalName, value));
676 }
677
678 return value;
@@ -680,11 +681,11 @@ namespace WixToolset.Core
681 {
682 if (value.StartsWith("[", StringComparison.Ordinal) && value.EndsWith("]", StringComparison.Ordinal))
683 {
683 - Messaging.Instance.OnMessage(WixErrors.IllegalIdentifierLooksLikeFormatted(sourceLineNumbers, attribute.Parent.Name.LocalName, attribute.Name.LocalName, value));
684 + messaging.Write(ErrorMessages.IllegalIdentifierLooksLikeFormatted(sourceLineNumbers, attribute.Parent.Name.LocalName, attribute.Name.LocalName, value));
685 }
686 else
687 {
687 - Messaging.Instance.OnMessage(WixErrors.IllegalIdentifier(sourceLineNumbers, attribute.Parent.Name.LocalName, attribute.Name.LocalName, value));
688 + messaging.Write(ErrorMessages.IllegalIdentifier(sourceLineNumbers, attribute.Parent.Name.LocalName, attribute.Name.LocalName, value));
689 }
690
691 return String.Empty;
@@ -700,11 +701,11 @@ namespace WixToolset.Core
701 /// <param name="maximum">The maximum legal value.</param>
702 /// <param name="messageHandler">A delegate that receives error messages.</param>
703 /// <returns>The attribute's integer value or a special value if an error occurred during conversion.</returns>
703 - public static int GetAttributeIntegerValue(SourceLineNumber sourceLineNumbers, XAttribute attribute, int minimum, int maximum)
704 + public static int GetAttributeIntegerValue(IMessaging messaging, SourceLineNumber sourceLineNumbers, XAttribute attribute, int minimum, int maximum)
705 {
706 Debug.Assert(minimum > CompilerConstants.IntegerNotSet && minimum > CompilerConstants.IllegalInteger, "The legal values for this attribute collide with at least one sentinel used during parsing.");
707
707 - string value = Common.GetAttributeValue(sourceLineNumbers, attribute, EmptyRule.CanBeWhitespaceOnly);
708 + string value = Common.GetAttributeValue(messaging, sourceLineNumbers, attribute, EmptyRule.CanBeWhitespaceOnly);
709 int integer = CompilerConstants.IllegalInteger;
710
711 if (0 < value.Length)
@@ -713,17 +714,17 @@ namespace WixToolset.Core
714 {
715 if (CompilerConstants.IntegerNotSet == integer || CompilerConstants.IllegalInteger == integer)
716 {
716 - Messaging.Instance.OnMessage(WixErrors.IntegralValueSentinelCollision(sourceLineNumbers, integer));
717 + messaging.Write(ErrorMessages.IntegralValueSentinelCollision(sourceLineNumbers, integer));
718 }
719 else if (minimum > integer || maximum < integer)
720 {
720 - Messaging.Instance.OnMessage(WixErrors.IntegralValueOutOfRange(sourceLineNumbers, attribute.Parent.Name.LocalName, attribute.Name.LocalName, integer, minimum, maximum));
721 + messaging.Write(ErrorMessages.IntegralValueOutOfRange(sourceLineNumbers, attribute.Parent.Name.LocalName, attribute.Name.LocalName, integer, minimum, maximum));
722 integer = CompilerConstants.IllegalInteger;
723 }
724 }
725 else
726 {
726 - Messaging.Instance.OnMessage(WixErrors.IllegalIntegerValue(sourceLineNumbers, attribute.Parent.Name.LocalName, attribute.Name.LocalName, value));
727 + messaging.Write(ErrorMessages.IllegalIntegerValue(sourceLineNumbers, attribute.Parent.Name.LocalName, attribute.Name.LocalName, value));
728 }
729 }
730
@@ -737,9 +738,9 @@ namespace WixToolset.Core
738 /// <param name="attribute">The attribute containing the value to get.</param>
739 /// <param name="messageHandler">A delegate that receives error messages.</param>
740 /// <returns>The attribute's YesNoType value.</returns>
740 - internal static YesNoType GetAttributeYesNoValue(SourceLineNumber sourceLineNumbers, XAttribute attribute)
741 + internal static YesNoType GetAttributeYesNoValue(IMessaging messaging, SourceLineNumber sourceLineNumbers, XAttribute attribute)
742 {
742 - string value = Common.GetAttributeValue(sourceLineNumbers, attribute, EmptyRule.CanBeWhitespaceOnly);
743 + string value = Common.GetAttributeValue(messaging, sourceLineNumbers, attribute, EmptyRule.CanBeWhitespaceOnly);
744 YesNoType yesNo = YesNoType.IllegalValue;
745
746 if ("yes".Equals(value) || "true".Equals(value))
@@ -752,7 +753,7 @@ namespace WixToolset.Core
753 }
754 else
755 {
755 - Messaging.Instance.OnMessage(WixErrors.IllegalYesNoValue(sourceLineNumbers, attribute.Parent.Name.LocalName, attribute.Name.LocalName, value));
756 + messaging.Write(ErrorMessages.IllegalYesNoValue(sourceLineNumbers, attribute.Parent.Name.LocalName, attribute.Name.LocalName, value));
757 }
758
759 return yesNo;
@@ -776,13 +777,13 @@ namespace WixToolset.Core
777 /// </summary>
778 /// <param name="sourceLineNumbers">Source line information about the owner element.</param>
779 /// <param name="attribute">The attribute.</param>
779 - public static void UnexpectedAttribute(SourceLineNumber sourceLineNumbers, XAttribute attribute)
780 + public static void UnexpectedAttribute(IMessaging messaging, SourceLineNumber sourceLineNumbers, XAttribute attribute)
781 {
782 // Ignore elements defined by the W3C because we'll assume they are always right.
783 if (!((String.IsNullOrEmpty(attribute.Name.NamespaceName) && attribute.Name.LocalName.Equals("xmlns", StringComparison.Ordinal)) ||
784 attribute.Name.NamespaceName.StartsWith(CompilerCore.W3SchemaPrefix.NamespaceName, StringComparison.Ordinal)))
785 {
785 - Messaging.Instance.OnMessage(WixErrors.UnexpectedAttribute(sourceLineNumbers, attribute.Parent.Name.LocalName, attribute.Name.LocalName));
786 + messaging.Write(ErrorMessages.UnexpectedAttribute(sourceLineNumbers, attribute.Parent.Name.LocalName, attribute.Name.LocalName));
787 }
788 }
789
@@ -791,13 +792,13 @@ namespace WixToolset.Core
792 /// </summary>
793 /// <param name="sourceLineNumbers">Source line information about the owner element.</param>
794 /// <param name="extensionAttribute">The extension attribute.</param>
794 - internal static void UnsupportedExtensionAttribute(SourceLineNumber sourceLineNumbers, XAttribute extensionAttribute)
795 + internal static void UnsupportedExtensionAttribute(IMessaging messaging, SourceLineNumber sourceLineNumbers, XAttribute extensionAttribute)
796 {
797 // Ignore elements defined by the W3C because we'll assume they are always right.
798 if (!((String.IsNullOrEmpty(extensionAttribute.Name.NamespaceName) && extensionAttribute.Name.LocalName.Equals("xmlns", StringComparison.Ordinal)) ||
799 extensionAttribute.Name.NamespaceName.StartsWith(CompilerCore.W3SchemaPrefix.NamespaceName, StringComparison.Ordinal)))
800 {
800 - Messaging.Instance.OnMessage(WixErrors.UnsupportedExtensionAttribute(sourceLineNumbers, extensionAttribute.Parent.Name.LocalName, extensionAttribute.Name.LocalName));
801 + messaging.Write(ErrorMessages.UnsupportedExtensionAttribute(sourceLineNumbers, extensionAttribute.Parent.Name.LocalName, extensionAttribute.Name.LocalName));
802 }
803 }
804 }
src/WixToolset.Core/CompileContext.cs
+2 -1
@@ -7,6 +7,7 @@ namespace WixToolset.Core
7 using System.Xml.Linq;
8 using WixToolset.Data;
9 using WixToolset.Extensibility;
10 + using WixToolset.Extensibility.Services;
11
12 public class CompileContext : ICompileContext
13 {
@@ -17,7 +18,7 @@ namespace WixToolset.Core
18
19 public IServiceProvider ServiceProvider { get; }
20
20 - public Messaging Messaging { get; set; }
21 + public IMessaging Messaging { get; set; }
22
23 public string CompilationId { get; set; }
24
src/WixToolset.Core/Compiler.cs
+625 -625
@@ -112,7 +112,7 @@ namespace WixToolset.Core
112 }
113 else
114 {
115 - Messaging.Instance.OnMessage(WixErrors.DuplicateExtensionXmlSchemaNamespace(extension.GetType().ToString(), extension.Namespace.NamespaceName, collidingExtension.GetType().ToString()));
115 + this.Context.Messaging.Write(ErrorMessages.DuplicateExtensionXmlSchemaNamespace(extension.GetType().ToString(), extension.Namespace.NamespaceName, collidingExtension.GetType().ToString()));
116 }
117
118 extension.PreCompile(context);
@@ -123,9 +123,9 @@ namespace WixToolset.Core
123 {
124 var parseHelper = context.ServiceProvider.GetService<IParseHelper>();
125
126 - this.Core = new CompilerCore(target, parseHelper, extensionsByNamespace);
126 + this.Core = new CompilerCore(target, this.Context.Messaging, parseHelper, extensionsByNamespace);
127 this.Core.ShowPedanticMessages = this.ShowPedanticMessages;
128 - this.componentIdPlaceholdersResolver = new WixVariableResolver();
128 + this.componentIdPlaceholdersResolver = new WixVariableResolver(this.Context.Messaging);
129
130 // parse the document
131 var source = context.Source;
@@ -140,17 +140,17 @@ namespace WixToolset.Core
140 {
141 if (String.IsNullOrEmpty(source.Root.Name.NamespaceName))
142 {
143 - this.Core.OnMessage(WixErrors.InvalidWixXmlNamespace(sourceLineNumbers, "Wix", CompilerCore.WixNamespace.ToString()));
143 + this.Core.Write(ErrorMessages.InvalidWixXmlNamespace(sourceLineNumbers, "Wix", CompilerCore.WixNamespace.ToString()));
144 }
145 else
146 {
147 - this.Core.OnMessage(WixErrors.InvalidWixXmlNamespace(sourceLineNumbers, "Wix", source.Root.Name.NamespaceName, CompilerCore.WixNamespace.ToString()));
147 + this.Core.Write(ErrorMessages.InvalidWixXmlNamespace(sourceLineNumbers, "Wix", source.Root.Name.NamespaceName, CompilerCore.WixNamespace.ToString()));
148 }
149 }
150 }
151 else
152 {
153 - this.Core.OnMessage(WixErrors.InvalidDocumentElement(sourceLineNumbers, source.Root.Name.LocalName, "source", "Wix"));
153 + this.Core.Write(ErrorMessages.InvalidDocumentElement(sourceLineNumbers, source.Root.Name.LocalName, "source", "Wix"));
154 }
155
156 // Resolve any Component Id placeholders compiled into the intermediate.
@@ -189,7 +189,7 @@ namespace WixToolset.Core
189 this.Core = null;
190 }
191
192 - return Messaging.Instance.EncounteredError ? null : target;
192 + return this.Context.Messaging.EncounteredError ? null : target;
193 }
194
195 /// <summary>
@@ -204,7 +204,7 @@ namespace WixToolset.Core
204 return s;
205 }
206
207 - return String.Concat(s.Substring(0, 1).ToUpper(CultureInfo.InvariantCulture), s.Substring(1));
207 + return String.Concat(s.Substring(0, 1).ToUpperInvariant(), s.Substring(1));
208 }
209
210 /// <summary>
@@ -254,7 +254,7 @@ namespace WixToolset.Core
254 {
255 if (property.Id != property.Id.ToUpperInvariant())
256 {
257 - this.Core.OnMessage(WixErrors.SearchPropertyNotUppercase(sourceLineNumbers, "Property", "Id", property.Id));
257 + this.Core.Write(ErrorMessages.SearchPropertyNotUppercase(sourceLineNumbers, "Property", "Id", property.Id));
258 }
259
260 var row = this.Core.CreateRow(sourceLineNumbers, TupleDefinitionType.AppSearch, property);
@@ -290,7 +290,7 @@ namespace WixToolset.Core
290 Group group = match.Groups["identifier"];
291 if (group.Success)
292 {
293 - this.Core.OnMessage(WixWarnings.PropertyValueContainsPropertyReference(sourceLineNumbers, property.Id, group.Value));
293 + this.Core.Write(WarningMessages.PropertyValueContainsPropertyReference(sourceLineNumbers, property.Id, group.Value));
294 }
295 }
296 }
@@ -330,7 +330,7 @@ namespace WixToolset.Core
330 {
331 if (secure && property.Id != property.Id.ToUpperInvariant())
332 {
333 - this.Core.OnMessage(WixErrors.SecurePropertyNotUppercase(sourceLineNumbers, "Property", "Id", property.Id));
333 + this.Core.Write(ErrorMessages.SecurePropertyNotUppercase(sourceLineNumbers, "Property", "Id", property.Id));
334 }
335
336 if (null == section)
@@ -426,12 +426,12 @@ namespace WixToolset.Core
426
427 if (null == appId)
428 {
429 - this.Core.OnMessage(WixErrors.ExpectedAttribute(sourceLineNumbers, node.Name.LocalName, "Id"));
429 + this.Core.Write(ErrorMessages.ExpectedAttribute(sourceLineNumbers, node.Name.LocalName, "Id"));
430 }
431
432 if ((YesNoType.No == advertise && YesNoType.Yes == appIdAdvertise) || (YesNoType.Yes == advertise && YesNoType.No == appIdAdvertise))
433 {
434 - this.Core.OnMessage(WixErrors.AppIdIncompatibleAdvertiseState(sourceLineNumbers, node.Name.LocalName, "Advertise", appIdAdvertise.ToString(), advertise.ToString()));
434 + this.Core.Write(ErrorMessages.AppIdIncompatibleAdvertiseState(sourceLineNumbers, node.Name.LocalName, "Advertise", appIdAdvertise.ToString(), advertise.ToString()));
435 }
436 else
437 {
@@ -468,7 +468,7 @@ namespace WixToolset.Core
468 {
469 if (null != description)
470 {
471 - this.Core.OnMessage(WixErrors.IllegalAttributeWhenAdvertised(sourceLineNumbers, node.Name.LocalName, "Description"));
471 + this.Core.Write(ErrorMessages.IllegalAttributeWhenAdvertised(sourceLineNumbers, node.Name.LocalName, "Description"));
472 }
473
474 if (!this.Core.EncounteredError)
@@ -569,7 +569,7 @@ namespace WixToolset.Core
569
570 if (null == id)
571 {
572 - this.Core.OnMessage(WixErrors.ExpectedAttribute(sourceLineNumbers, node.Name.LocalName, "Id"));
572 + this.Core.Write(ErrorMessages.ExpectedAttribute(sourceLineNumbers, node.Name.LocalName, "Id"));
573 }
574
575 this.Core.ParseForExtensionElements(node);
@@ -609,12 +609,12 @@ namespace WixToolset.Core
609 case "src":
610 if (null != sourceFile)
611 {
612 - this.Core.OnMessage(WixErrors.IllegalAttributeWithOtherAttribute(sourceLineNumbers, node.Name.LocalName, "SourceFile", "src"));
612 + this.Core.Write(ErrorMessages.IllegalAttributeWithOtherAttribute(sourceLineNumbers, node.Name.LocalName, "SourceFile", "src"));
613 }
614
615 if ("src" == attrib.Name.LocalName)
616 {
617 - this.Core.OnMessage(WixWarnings.DeprecatedAttribute(sourceLineNumbers, node.Name.LocalName, attrib.Name.LocalName, "SourceFile"));
617 + this.Core.Write(WarningMessages.DeprecatedAttribute(sourceLineNumbers, node.Name.LocalName, attrib.Name.LocalName, "SourceFile"));
618 }
619 sourceFile = this.Core.GetAttributeValue(sourceLineNumbers, attrib);
620 break;
@@ -634,27 +634,27 @@ namespace WixToolset.Core
634
635 if (null == id)
636 {
637 - this.Core.OnMessage(WixErrors.ExpectedAttribute(sourceLineNumbers, node.Name.LocalName, "Id"));
637 + this.Core.Write(ErrorMessages.ExpectedAttribute(sourceLineNumbers, node.Name.LocalName, "Id"));
638 id = Identifier.Invalid;
639 }
640 else if (!String.IsNullOrEmpty(id.Id)) // only check legal values
641 {
642 if (55 < id.Id.Length)
643 {
644 - this.Core.OnMessage(WixErrors.StreamNameTooLong(sourceLineNumbers, node.Name.LocalName, "Id", id.Id, id.Id.Length, 55));
644 + this.Core.Write(ErrorMessages.StreamNameTooLong(sourceLineNumbers, node.Name.LocalName, "Id", id.Id, id.Id.Length, 55));
645 }
646 else if (!this.compilingProduct) // if we're not doing a product then we can't be sure that a binary identifier will fit when modularized
647 {
648 if (18 < id.Id.Length)
649 {
650 - this.Core.OnMessage(WixWarnings.IdentifierCannotBeModularized(sourceLineNumbers, node.Name.LocalName, "Id", id.Id, id.Id.Length, 18));
650 + this.Core.Write(WarningMessages.IdentifierCannotBeModularized(sourceLineNumbers, node.Name.LocalName, "Id", id.Id, id.Id.Length, 18));
651 }
652 }
653 }
654
655 if (null == sourceFile)
656 {
657 - this.Core.OnMessage(WixErrors.ExpectedAttribute(sourceLineNumbers, node.Name.LocalName, "SourceFile"));
657 + this.Core.Write(ErrorMessages.ExpectedAttribute(sourceLineNumbers, node.Name.LocalName, "SourceFile"));
658 }
659
660 this.Core.ParseForExtensionElements(node);
@@ -710,27 +710,27 @@ namespace WixToolset.Core
710
711 if (null == id)
712 {
713 - this.Core.OnMessage(WixErrors.ExpectedAttribute(sourceLineNumbers, node.Name.LocalName, "Id"));
713 + this.Core.Write(ErrorMessages.ExpectedAttribute(sourceLineNumbers, node.Name.LocalName, "Id"));
714 id = Identifier.Invalid;
715 }
716 else if (!String.IsNullOrEmpty(id.Id)) // only check legal values
717 {
718 if (57 < id.Id.Length)
719 {
720 - this.Core.OnMessage(WixErrors.StreamNameTooLong(sourceLineNumbers, node.Name.LocalName, "Id", id.Id, id.Id.Length, 57));
720 + this.Core.Write(ErrorMessages.StreamNameTooLong(sourceLineNumbers, node.Name.LocalName, "Id", id.Id, id.Id.Length, 57));
721 }
722 else if (!this.compilingProduct) // if we're not doing a product then we can't be sure that a binary identifier will fit when modularized
723 {
724 if (20 < id.Id.Length)
725 {
726 - this.Core.OnMessage(WixWarnings.IdentifierCannotBeModularized(sourceLineNumbers, node.Name.LocalName, "Id", id.Id, id.Id.Length, 20));
726 + this.Core.Write(WarningMessages.IdentifierCannotBeModularized(sourceLineNumbers, node.Name.LocalName, "Id", id.Id, id.Id.Length, 20));
727 }
728 }
729 }
730
731 if (null == sourceFile)
732 {
733 - this.Core.OnMessage(WixErrors.ExpectedAttribute(sourceLineNumbers, node.Name.LocalName, "SourceFile"));
733 + this.Core.Write(ErrorMessages.ExpectedAttribute(sourceLineNumbers, node.Name.LocalName, "SourceFile"));
734 }
735
736 this.Core.ParseForExtensionElements(node);
@@ -776,7 +776,7 @@ namespace WixToolset.Core
776
777 if (null == property)
778 {
779 - this.Core.OnMessage(WixErrors.ExpectedAttribute(sourceLineNumbers, node.Name.LocalName, "Property"));
779 + this.Core.Write(ErrorMessages.ExpectedAttribute(sourceLineNumbers, node.Name.LocalName, "Property"));
780 }
781
782 // find unexpected child elements
@@ -845,12 +845,12 @@ namespace WixToolset.Core
845
846 if (null == id)
847 {
848 - this.Core.OnMessage(WixErrors.ExpectedAttribute(sourceLineNumbers, node.Name.LocalName, "Id"));
848 + this.Core.Write(ErrorMessages.ExpectedAttribute(sourceLineNumbers, node.Name.LocalName, "Id"));
849 }
850
851 if (null == productCode)
852 {
853 - this.Core.OnMessage(WixErrors.ExpectedAttribute(sourceLineNumbers, node.Name.LocalName, "ProductCode"));
853 + this.Core.Write(ErrorMessages.ExpectedAttribute(sourceLineNumbers, node.Name.LocalName, "ProductCode"));
854 }
855
856 this.Core.ParseForExtensionElements(node);
@@ -917,12 +917,12 @@ namespace WixToolset.Core
917
918 if (null == id)
919 {
920 - this.Core.OnMessage(WixErrors.ExpectedAttribute(sourceLineNumbers, node.Name.LocalName, "Id"));
920 + this.Core.Write(ErrorMessages.ExpectedAttribute(sourceLineNumbers, node.Name.LocalName, "Id"));
921 }
922
923 if (null == qualifier)
924 {
925 - this.Core.OnMessage(WixErrors.ExpectedAttribute(sourceLineNumbers, node.Name.LocalName, "Qualifier"));
925 + this.Core.Write(ErrorMessages.ExpectedAttribute(sourceLineNumbers, node.Name.LocalName, "Qualifier"));
926 }
927
928 this.Core.ParseForExtensionElements(node);
@@ -1066,7 +1066,7 @@ namespace WixToolset.Core
1066
1067 if (null == classId)
1068 {
1069 - this.Core.OnMessage(WixErrors.ExpectedAttribute(sourceLineNumbers, node.Name.LocalName, "Id"));
1069 + this.Core.Write(ErrorMessages.ExpectedAttribute(sourceLineNumbers, node.Name.LocalName, "Id"));
1070 }
1071
1072 HashSet<string> uniqueContexts = new HashSet<string>();
@@ -1074,7 +1074,7 @@ namespace WixToolset.Core
1074 {
1075 if (uniqueContexts.Contains(context))
1076 {
1077 - this.Core.OnMessage(WixErrors.DuplicateContextValue(sourceLineNumbers, context));
1077 + this.Core.Write(ErrorMessages.DuplicateContextValue(sourceLineNumbers, context));
1078 }
1079 else
1080 {
@@ -1093,7 +1093,7 @@ namespace WixToolset.Core
1093
1094 if ((YesNoType.No == advertise && YesNoType.Yes == classAdvertise) || (YesNoType.Yes == advertise && YesNoType.No == classAdvertise))
1095 {
1096 - this.Core.OnMessage(WixErrors.AdvertiseStateMustMatch(sourceLineNumbers, classAdvertise.ToString(), advertise.ToString()));
1096 + this.Core.Write(ErrorMessages.AdvertiseStateMustMatch(sourceLineNumbers, classAdvertise.ToString(), advertise.ToString()));
1097 }
1098 else
1099 {
@@ -1108,12 +1108,12 @@ namespace WixToolset.Core
1108
1109 if (YesNoType.Yes == advertise && 0 == contexts.Length)
1110 {
1111 - this.Core.OnMessage(WixErrors.ExpectedAttribute(sourceLineNumbers, node.Name.LocalName, "Context", "Advertise", "yes"));
1111 + this.Core.Write(ErrorMessages.ExpectedAttribute(sourceLineNumbers, node.Name.LocalName, "Context", "Advertise", "yes"));
1112 }
1113
1114 if (!String.IsNullOrEmpty(parentAppId) && !String.IsNullOrEmpty(appId))
1115 {
1116 - this.Core.OnMessage(WixErrors.IllegalAttributeWhenNested(sourceLineNumbers, node.Name.LocalName, "AppId", node.Parent.Name.LocalName));
1116 + this.Core.Write(ErrorMessages.IllegalAttributeWhenNested(sourceLineNumbers, node.Name.LocalName, "AppId", node.Parent.Name.LocalName));
1117 }
1118
1119 if (!String.IsNullOrEmpty(localFileServer))
@@ -1173,12 +1173,12 @@ namespace WixToolset.Core
1173 {
1174 if (null != fileServer || null != localFileServer)
1175 {
1176 - this.Core.OnMessage(WixErrors.IllegalAttributeWithOtherAttribute(sourceLineNumbers, node.Name.LocalName, "Server", "Advertise", "yes"));
1176 + this.Core.Write(ErrorMessages.IllegalAttributeWithOtherAttribute(sourceLineNumbers, node.Name.LocalName, "Server", "Advertise", "yes"));
1177 }
1178
1179 if (null != foreignServer)
1180 {
1181 - this.Core.OnMessage(WixErrors.IllegalAttributeWithOtherAttribute(sourceLineNumbers, node.Name.LocalName, "ForeignServer", "Advertise", "yes"));
1181 + this.Core.Write(ErrorMessages.IllegalAttributeWithOtherAttribute(sourceLineNumbers, node.Name.LocalName, "ForeignServer", "Advertise", "yes"));
1182 }
1183
1184 if (null == appId && null != parentAppId)
@@ -1226,16 +1226,16 @@ namespace WixToolset.Core
1226 {
1227 if (null == fileServer && null == localFileServer && null == foreignServer)
1228 {
1229 - this.Core.OnMessage(WixErrors.ExpectedAttributes(sourceLineNumbers, node.Name.LocalName, "ForeignServer", "Server"));
1229 + this.Core.Write(ErrorMessages.ExpectedAttributes(sourceLineNumbers, node.Name.LocalName, "ForeignServer", "Server"));
1230 }
1231
1232 if (null != fileServer && null != foreignServer)
1233 {
1234 - this.Core.OnMessage(WixErrors.IllegalAttributeWhenNested(sourceLineNumbers, node.Name.LocalName, "ForeignServer", "File"));
1234 + this.Core.Write(ErrorMessages.IllegalAttributeWhenNested(sourceLineNumbers, node.Name.LocalName, "ForeignServer", "File"));
1235 }
1236 else if (null != localFileServer && null != foreignServer)
1237 {
1238 - this.Core.OnMessage(WixErrors.IllegalAttributeWithOtherAttribute(sourceLineNumbers, node.Name.LocalName, "ForeignServer", "Server"));
1238 + this.Core.Write(ErrorMessages.IllegalAttributeWithOtherAttribute(sourceLineNumbers, node.Name.LocalName, "ForeignServer", "Server"));
1239 }
1240 else if (null == fileServer)
1241 {
@@ -1244,7 +1244,7 @@ namespace WixToolset.Core
1244
1245 if (null != appId) // need to use nesting (not a reference) for the unadvertised Class elements
1246 {
1247 - this.Core.OnMessage(WixErrors.IllegalAttributeWithOtherAttribute(sourceLineNumbers, node.Name.LocalName, "AppId", "Advertise", "no"));
1247 + this.Core.Write(ErrorMessages.IllegalAttributeWithOtherAttribute(sourceLineNumbers, node.Name.LocalName, "AppId", "Advertise", "no"));
1248 }
1249
1250 // add the core registry keys for each context in the class
@@ -1254,7 +1254,7 @@ namespace WixToolset.Core
1254 {
1255 if (null != argument)
1256 {
1257 - this.Core.OnMessage(WixErrors.IllegalAttributeWithOtherAttribute(sourceLineNumbers, node.Name.LocalName, "Arguments", "Context", context));
1257 + this.Core.Write(ErrorMessages.IllegalAttributeWithOtherAttribute(sourceLineNumbers, node.Name.LocalName, "Arguments", "Context", context));
1258 }
1259
1260 if (null != fileServer)
@@ -1291,7 +1291,7 @@ namespace WixToolset.Core
1291 }
1292 else
1293 {
1294 - this.Core.OnMessage(WixErrors.IllegalAttributeValue(sourceLineNumbers, node.Name.LocalName, "Context", context, "InprocServer", "InprocServer32", "LocalServer", "LocalServer32"));
1294 + this.Core.Write(ErrorMessages.IllegalAttributeValue(sourceLineNumbers, node.Name.LocalName, "Context", context, "InprocServer", "InprocServer32", "LocalServer", "LocalServer32"));
1295 }
1296
1297 this.Core.CreateRegistryRow(sourceLineNumbers, MsiInterop.MsidbRegistryRootClassesRoot, String.Concat("CLSID\\", classId, "\\", context), String.Empty, formattedContextString, componentId); // ClassId context
@@ -1342,7 +1342,7 @@ namespace WixToolset.Core
1342
1343 if (YesNoType.NotSet != relativePath) // ClassId's RelativePath
1344 {
1345 - this.Core.OnMessage(WixErrors.RelativePathForRegistryElement(sourceLineNumbers));
1345 + this.Core.Write(ErrorMessages.RelativePathForRegistryElement(sourceLineNumbers));
1346 }
1347 }
1348
@@ -1454,12 +1454,12 @@ namespace WixToolset.Core
1454
1455 if (null == interfaceId)
1456 {
1457 - this.Core.OnMessage(WixErrors.ExpectedAttribute(sourceLineNumbers, node.Name.LocalName, "Id"));
1457 + this.Core.Write(ErrorMessages.ExpectedAttribute(sourceLineNumbers, node.Name.LocalName, "Id"));
1458 }
1459
1460 if (null == name)
1461 {
1462 - this.Core.OnMessage(WixErrors.ExpectedAttribute(sourceLineNumbers, node.Name.LocalName, "Name"));
1462 + this.Core.Write(ErrorMessages.ExpectedAttribute(sourceLineNumbers, node.Name.LocalName, "Name"));
1463 }
1464
1465 this.Core.ParseForExtensionElements(node);
@@ -1537,17 +1537,17 @@ namespace WixToolset.Core
1537
1538 if (null == mask)
1539 {
1540 - this.Core.OnMessage(WixErrors.ExpectedAttribute(sourceLineNumbers, node.Name.LocalName, "Mask"));
1540 + this.Core.Write(ErrorMessages.ExpectedAttribute(sourceLineNumbers, node.Name.LocalName, "Mask"));
1541 }
1542
1543 if (CompilerConstants.IntegerNotSet == offset)
1544 {
1545 - this.Core.OnMessage(WixErrors.ExpectedAttribute(sourceLineNumbers, node.Name.LocalName, "Offset"));
1545 + this.Core.Write(ErrorMessages.ExpectedAttribute(sourceLineNumbers, node.Name.LocalName, "Offset"));
1546 }
1547
1548 if (null == value)
1549 {
1550 - this.Core.OnMessage(WixErrors.ExpectedAttribute(sourceLineNumbers, node.Name.LocalName, "Value"));
1550 + this.Core.Write(ErrorMessages.ExpectedAttribute(sourceLineNumbers, node.Name.LocalName, "Value"));
1551 }
1552
1553 this.Core.ParseForExtensionElements(node);
@@ -1556,7 +1556,7 @@ namespace WixToolset.Core
1556 {
1557 if (mask.Length != value.Length)
1558 {
1559 - this.Core.OnMessage(WixErrors.ValueAndMaskMustBeSameLength(sourceLineNumbers));
1559 + this.Core.Write(ErrorMessages.ValueAndMaskMustBeSameLength(sourceLineNumbers));
1560 }
1561 cb = mask.Length / 2;
1562 }
@@ -1628,7 +1628,7 @@ namespace WixToolset.Core
1628
1629 if (null == minimum && null == maximum)
1630 {
1631 - this.Core.OnMessage(WixErrors.ExpectedAttributes(sourceLineNumbers, node.Name.LocalName, "Minimum", "Maximum"));
1631 + this.Core.Write(ErrorMessages.ExpectedAttributes(sourceLineNumbers, node.Name.LocalName, "Minimum", "Maximum"));
1632 }
1633
1634 this.Core.ParseForExtensionElements(node);
@@ -1697,7 +1697,7 @@ namespace WixToolset.Core
1697 type = 2;
1698 break;
1699 default:
1700 - this.Core.OnMessage(WixErrors.IllegalAttributeValue(sourceLineNumbers, node.Name.LocalName, "Type", typeValue, "directory", "file", "raw"));
1700 + this.Core.Write(ErrorMessages.IllegalAttributeValue(sourceLineNumbers, node.Name.LocalName, "Type", typeValue, "directory", "file", "raw"));
1701 break;
1702 }
1703 }
@@ -1729,17 +1729,17 @@ namespace WixToolset.Core
1729
1730 if (null == key)
1731 {
1732 - this.Core.OnMessage(WixErrors.ExpectedAttribute(sourceLineNumbers, node.Name.LocalName, "Key"));
1732 + this.Core.Write(ErrorMessages.ExpectedAttribute(sourceLineNumbers, node.Name.LocalName, "Key"));
1733 }
1734
1735 if (CompilerConstants.IntegerNotSet == root)
1736 {
1737 - this.Core.OnMessage(WixErrors.ExpectedAttribute(sourceLineNumbers, node.Name.LocalName, "Root"));
1737 + this.Core.Write(ErrorMessages.ExpectedAttribute(sourceLineNumbers, node.Name.LocalName, "Root"));
1738 }
1739
1740 if (CompilerConstants.IntegerNotSet == type)
1741 {
1742 - this.Core.OnMessage(WixErrors.ExpectedAttribute(sourceLineNumbers, node.Name.LocalName, "Type"));
1742 + this.Core.Write(ErrorMessages.ExpectedAttribute(sourceLineNumbers, node.Name.LocalName, "Type"));
1743 }
1744
1745 signature = id.Id;
@@ -1753,7 +1753,7 @@ namespace WixToolset.Core
1753 case "DirectorySearch":
1754 if (oneChild)
1755 {
1756 - this.Core.OnMessage(WixErrors.TooManySearchElements(sourceLineNumbers, node.Name.LocalName));
1756 + this.Core.Write(ErrorMessages.TooManySearchElements(sourceLineNumbers, node.Name.LocalName));
1757 }
1758 oneChild = true;
1759
@@ -1763,7 +1763,7 @@ namespace WixToolset.Core
1763 case "DirectorySearchRef":
1764 if (oneChild)
1765 {
1766 - this.Core.OnMessage(WixErrors.TooManySearchElements(sourceLineNumbers, node.Name.LocalName));
1766 + this.Core.Write(ErrorMessages.TooManySearchElements(sourceLineNumbers, node.Name.LocalName));
1767 }
1768 oneChild = true;
1769 signature = this.ParseDirectorySearchRefElement(child, id.Id);
@@ -1771,7 +1771,7 @@ namespace WixToolset.Core
1771 case "FileSearch":
1772 if (oneChild)
1773 {
1774 - this.Core.OnMessage(WixErrors.TooManySearchElements(sourceLineNumbers, node.Name.LocalName));
1774 + this.Core.Write(ErrorMessages.TooManySearchElements(sourceLineNumbers, node.Name.LocalName));
1775 }
1776 oneChild = true;
1777 signature = this.ParseFileSearchElement(child, id.Id, false, CompilerConstants.IntegerNotSet);
@@ -1780,7 +1780,7 @@ namespace WixToolset.Core
1780 case "FileSearchRef":
1781 if (oneChild)
1782 {
1783 - this.Core.OnMessage(WixErrors.TooManySearchElements(sourceLineNumbers, node.Name.LocalName));
1783 + this.Core.Write(ErrorMessages.TooManySearchElements(sourceLineNumbers, node.Name.LocalName));
1784 }
1785 oneChild = true;
1786 string newId = this.ParseSimpleRefElement(child, "Signature"); // FileSearch signatures override parent signatures
@@ -1844,7 +1844,7 @@ namespace WixToolset.Core
1844
1845 if (null == id)
1846 {
1847 - this.Core.OnMessage(WixErrors.ExpectedAttribute(sourceLineNumbers, node.Name.LocalName, "Id"));
1847 + this.Core.Write(ErrorMessages.ExpectedAttribute(sourceLineNumbers, node.Name.LocalName, "Id"));
1848 }
1849
1850 this.Core.ParseForExtensionElements(node);
@@ -1933,7 +1933,7 @@ namespace WixToolset.Core
1933 case "DirectorySearch":
1934 if (oneChild)
1935 {
1936 - this.Core.OnMessage(WixErrors.TooManySearchElements(childSourceLineNumbers, node.Name.LocalName));
1936 + this.Core.Write(ErrorMessages.TooManySearchElements(childSourceLineNumbers, node.Name.LocalName));
1937 }
1938 oneChild = true;
1939 signature = this.ParseDirectorySearchElement(child, "CCP_DRIVE");
@@ -1941,7 +1941,7 @@ namespace WixToolset.Core
1941 case "DirectorySearchRef":
1942 if (oneChild)
1943 {
1944 - this.Core.OnMessage(WixErrors.TooManySearchElements(childSourceLineNumbers, node.Name.LocalName));
1944 + this.Core.Write(ErrorMessages.TooManySearchElements(childSourceLineNumbers, node.Name.LocalName));
1945 }
1946 oneChild = true;
1947 signature = this.ParseDirectorySearchRefElement(child, "CCP_DRIVE");
@@ -1959,7 +1959,7 @@ namespace WixToolset.Core
1959
1960 if (null == signature)
1961 {
1962 - this.Core.OnMessage(WixErrors.SearchElementRequired(sourceLineNumbers, node.Name.LocalName));
1962 + this.Core.Write(ErrorMessages.SearchElementRequired(sourceLineNumbers, node.Name.LocalName));
1963 }
1964
1965 return signature;
@@ -2005,13 +2005,13 @@ namespace WixToolset.Core
2005 else if (signature != sig)
2006 {
2007 // all signatures under a ComplianceCheck must be the same
2008 - this.Core.OnMessage(WixErrors.MultipleIdentifiersFound(sourceLineNumbers, node.Name.LocalName, sig, signature));
2008 + this.Core.Write(ErrorMessages.MultipleIdentifiersFound(sourceLineNumbers, node.Name.LocalName, sig, signature));
2009 }
2010 }
2011
2012 if (null == signature)
2013 {
2014 - this.Core.OnMessage(WixErrors.SearchElementRequired(sourceLineNumbers, node.Name.LocalName));
2014 + this.Core.Write(ErrorMessages.SearchElementRequired(sourceLineNumbers, node.Name.LocalName));
2015 }
2016
2017 if (!this.Core.EncounteredError)
@@ -2110,7 +2110,7 @@ namespace WixToolset.Core
2110 bits |= MsiInterop.MsidbComponentAttributesSourceOnly;
2111 break;
2112 default:
2113 - this.Core.OnMessage(WixErrors.IllegalAttributeValue(sourceLineNumbers, node.Name.LocalName, attrib.Name.LocalName, "either", "local", "source"));
2113 + this.Core.Write(ErrorMessages.IllegalAttributeValue(sourceLineNumbers, node.Name.LocalName, attrib.Name.LocalName, "either", "local", "source"));
2114 break;
2115 }
2116 }
@@ -2181,30 +2181,30 @@ namespace WixToolset.Core
2181
2182 if (null == directoryId)
2183 {
2184 - this.Core.OnMessage(WixErrors.ExpectedAttribute(sourceLineNumbers, node.Name.LocalName, "Directory"));
2184 + this.Core.Write(ErrorMessages.ExpectedAttribute(sourceLineNumbers, node.Name.LocalName, "Directory"));
2185 }
2186
2187 if (String.IsNullOrEmpty(guid) && MsiInterop.MsidbComponentAttributesShared == (bits & MsiInterop.MsidbComponentAttributesShared))
2188 {
2189 - this.Core.OnMessage(WixErrors.IllegalAttributeValueWithOtherAttribute(sourceLineNumbers, node.Name.LocalName, "Shared", "yes", "Guid", ""));
2189 + this.Core.Write(ErrorMessages.IllegalAttributeValueWithOtherAttribute(sourceLineNumbers, node.Name.LocalName, "Shared", "yes", "Guid", ""));
2190 }
2191
2192 if (String.IsNullOrEmpty(guid) && MsiInterop.MsidbComponentAttributesPermanent == (bits & MsiInterop.MsidbComponentAttributesPermanent))
2193 {
2194 - this.Core.OnMessage(WixErrors.IllegalAttributeValueWithOtherAttribute(sourceLineNumbers, node.Name.LocalName, "Permanent", "yes", "Guid", ""));
2194 + this.Core.Write(ErrorMessages.IllegalAttributeValueWithOtherAttribute(sourceLineNumbers, node.Name.LocalName, "Permanent", "yes", "Guid", ""));
2195 }
2196
2197 if (null != feature)
2198 {
2199 if (this.compilingModule)
2200 {
2201 - this.Core.OnMessage(WixErrors.IllegalAttributeInMergeModule(sourceLineNumbers, node.Name.LocalName, "Feature"));
2201 + this.Core.Write(ErrorMessages.IllegalAttributeInMergeModule(sourceLineNumbers, node.Name.LocalName, "Feature"));
2202 }
2203 else
2204 {
2205 if (ComplexReferenceParentType.Feature == parentType || ComplexReferenceParentType.FeatureGroup == parentType)
2206 {
2207 - this.Core.OnMessage(WixErrors.IllegalAttributeWhenNested(sourceLineNumbers, node.Name.LocalName, "Feature", node.Parent.Name.LocalName));
2207 + this.Core.Write(ErrorMessages.IllegalAttributeWhenNested(sourceLineNumbers, node.Name.LocalName, "Feature", node.Parent.Name.LocalName));
2208 }
2209 else
2210 {
@@ -2236,7 +2236,7 @@ namespace WixToolset.Core
2236 if (null != condition)
2237 {
2238 SourceLineNumber childSourceLineNumbers = Preprocessor.GetSourceLineNumbers(node);
2239 - this.Core.OnMessage(WixErrors.TooManyChildren(childSourceLineNumbers, node.Name.LocalName, child.Name.LocalName));
2239 + this.Core.Write(ErrorMessages.TooManyChildren(childSourceLineNumbers, node.Name.LocalName, child.Name.LocalName));
2240 }
2241 condition = this.ParseConditionElement(child, node.Name.LocalName, null, null);
2242 break;
@@ -2369,7 +2369,7 @@ namespace WixToolset.Core
2369
2370 if (keyFound && YesNoType.Yes == keyPathSet)
2371 {
2372 - this.Core.OnMessage(WixErrors.ComponentMultipleKeyPaths(sourceLineNumbers, node.Name.LocalName, "KeyPath", "yes", "File", "RegistryValue", "ODBCDataSource"));
2372 + this.Core.Write(ErrorMessages.ComponentMultipleKeyPaths(sourceLineNumbers, node.Name.LocalName, "KeyPath", "yes", "File", "RegistryValue", "ODBCDataSource"));
2373 }
2374
2375 // if a possible KeyPath has been found and that value was explicitly set as
@@ -2398,13 +2398,13 @@ namespace WixToolset.Core
2398 {
2399 if (encounteredODBCDataSource)
2400 {
2401 - this.Core.OnMessage(WixErrors.IllegalComponentWithAutoGeneratedGuid(sourceLineNumbers));
2401 + this.Core.Write(ErrorMessages.IllegalComponentWithAutoGeneratedGuid(sourceLineNumbers));
2402 isGeneratableGuidOk = false;
2403 }
2404
2405 if (0 != files && MsiInterop.MsidbComponentAttributesRegistryKeyPath == keyBits)
2406 {
2407 - this.Core.OnMessage(WixErrors.IllegalComponentWithAutoGeneratedGuid(sourceLineNumbers, true));
2407 + this.Core.Write(ErrorMessages.IllegalComponentWithAutoGeneratedGuid(sourceLineNumbers, true));
2408 isGeneratableGuidOk = false;
2409 }
2410 }
@@ -2412,7 +2412,7 @@ namespace WixToolset.Core
2412 // check for implicit KeyPath which can easily be accidentally changed
2413 if (this.ShowPedanticMessages && !keyFound && !isGeneratableGuidOk)
2414 {
2415 - this.Core.OnMessage(WixErrors.ImplicitComponentKeyPath(sourceLineNumbers, id.Id));
2415 + this.Core.Write(ErrorMessages.ImplicitComponentKeyPath(sourceLineNumbers, id.Id));
2416 }
2417
2418 // if there isn't an @Id attribute value, replace the placeholder with the id of the keypath.
@@ -2428,14 +2428,14 @@ namespace WixToolset.Core
2428 }
2429 else
2430 {
2431 - this.Core.OnMessage(WixErrors.CannotDefaultComponentId(sourceLineNumbers));
2431 + this.Core.Write(ErrorMessages.CannotDefaultComponentId(sourceLineNumbers));
2432 }
2433 }
2434
2435 // If an id was not determined by now, we have to error.
2436 if (null == id)
2437 {
2438 - this.Core.OnMessage(WixErrors.ExpectedAttribute(sourceLineNumbers, node.Name.LocalName, "Id"));
2438 + this.Core.Write(ErrorMessages.ExpectedAttribute(sourceLineNumbers, node.Name.LocalName, "Id"));
2439 }
2440
2441 // finally add the Component table row
@@ -2524,7 +2524,7 @@ namespace WixToolset.Core
2524
2525 if (null == id)
2526 {
2527 - this.Core.OnMessage(WixErrors.ExpectedAttribute(sourceLineNumbers, node.Name.LocalName, "Id"));
2527 + this.Core.Write(ErrorMessages.ExpectedAttribute(sourceLineNumbers, node.Name.LocalName, "Id"));
2528 id = Identifier.Invalid;
2529 }
2530
@@ -2609,7 +2609,7 @@ namespace WixToolset.Core
2609
2610 if (null == id)
2611 {
2612 - this.Core.OnMessage(WixErrors.ExpectedAttribute(sourceLineNumbers, node.Name.LocalName, "Id"));
2612 + this.Core.Write(ErrorMessages.ExpectedAttribute(sourceLineNumbers, node.Name.LocalName, "Id"));
2613 }
2614
2615 this.Core.ParseForExtensionElements(node);
@@ -2658,7 +2658,7 @@ namespace WixToolset.Core
2658
2659 if (null == id)
2660 {
2661 - this.Core.OnMessage(WixErrors.ExpectedAttribute(sourceLineNumbers, node.Name.LocalName, "Id"));
2661 + this.Core.Write(ErrorMessages.ExpectedAttribute(sourceLineNumbers, node.Name.LocalName, "Id"));
2662 }
2663
2664 this.Core.ParseForExtensionElements(node);
@@ -2705,7 +2705,7 @@ namespace WixToolset.Core
2705 type = MsiInterop.MsidbLocatorTypeFileName;
2706 break;
2707 default:
2708 - this.Core.OnMessage(WixErrors.IllegalAttributeValue(sourceLineNumbers, node.Name.LocalName, attrib.Name.LocalName, typeValue, "directory", "file"));
2708 + this.Core.Write(ErrorMessages.IllegalAttributeValue(sourceLineNumbers, node.Name.LocalName, attrib.Name.LocalName, typeValue, "directory", "file"));
2709 break;
2710 }
2711 }
@@ -2737,7 +2737,7 @@ namespace WixToolset.Core
2737 case "DirectorySearch":
2738 if (oneChild)
2739 {
2740 - this.Core.OnMessage(WixErrors.TooManySearchElements(sourceLineNumbers, node.Name.LocalName));
2740 + this.Core.Write(ErrorMessages.TooManySearchElements(sourceLineNumbers, node.Name.LocalName));
2741 }
2742 oneChild = true;
2743
@@ -2747,7 +2747,7 @@ namespace WixToolset.Core
2747 case "DirectorySearchRef":
2748 if (oneChild)
2749 {
2750 - this.Core.OnMessage(WixErrors.TooManySearchElements(sourceLineNumbers, node.Name.LocalName));
2750 + this.Core.Write(ErrorMessages.TooManySearchElements(sourceLineNumbers, node.Name.LocalName));
2751 }
2752 oneChild = true;
2753 signature = this.ParseDirectorySearchRefElement(child, id.Id);
@@ -2755,7 +2755,7 @@ namespace WixToolset.Core
2755 case "FileSearch":
2756 if (oneChild)
2757 {
2758 - this.Core.OnMessage(WixErrors.TooManySearchElements(sourceLineNumbers, node.Name.LocalName));
2758 + this.Core.Write(ErrorMessages.TooManySearchElements(sourceLineNumbers, node.Name.LocalName));
2759 }
2760 oneChild = true;
2761 signature = this.ParseFileSearchElement(child, id.Id, false, CompilerConstants.IntegerNotSet);
@@ -2764,7 +2764,7 @@ namespace WixToolset.Core
2764 case "FileSearchRef":
2765 if (oneChild)
2766 {
2767 - this.Core.OnMessage(WixErrors.TooManySearchElements(sourceLineNumbers, node.Name.LocalName));
2767 + this.Core.Write(ErrorMessages.TooManySearchElements(sourceLineNumbers, node.Name.LocalName));
2768 }
2769 oneChild = true;
2770 string newId = this.ParseSimpleRefElement(child, "Signature"); // FileSearch signatures override parent signatures
@@ -2907,7 +2907,7 @@ namespace WixToolset.Core
2907 case "FileId":
2908 if (null != fileId)
2909 {
2910 - this.Core.OnMessage(WixErrors.IllegalAttributeWhenNested(sourceLineNumbers, node.Name.LocalName, attrib.Name.LocalName, node.Parent.Name.LocalName));
2910 + this.Core.Write(ErrorMessages.IllegalAttributeWhenNested(sourceLineNumbers, node.Name.LocalName, attrib.Name.LocalName, node.Parent.Name.LocalName));
2911 }
2912 fileId = this.Core.GetAttributeIdentifierValue(sourceLineNumbers, attrib);
2913 this.Core.CreateSimpleReference(sourceLineNumbers, "File", fileId);
@@ -2934,22 +2934,22 @@ namespace WixToolset.Core
2934
2935 if (null != sourceFolder && null != sourceDirectory) // SourceFolder and SourceDirectory cannot coexist
2936 {
2937 - this.Core.OnMessage(WixErrors.IllegalAttributeWithOtherAttribute(sourceLineNumbers, node.Name.LocalName, "SourceFolder", "SourceDirectory"));
2937 + this.Core.Write(ErrorMessages.IllegalAttributeWithOtherAttribute(sourceLineNumbers, node.Name.LocalName, "SourceFolder", "SourceDirectory"));
2938 }
2939
2940 if (null != sourceFolder && null != sourceProperty) // SourceFolder and SourceProperty cannot coexist
2941 {
2942 - this.Core.OnMessage(WixErrors.IllegalAttributeWithOtherAttribute(sourceLineNumbers, node.Name.LocalName, "SourceFolder", "SourceProperty"));
2942 + this.Core.Write(ErrorMessages.IllegalAttributeWithOtherAttribute(sourceLineNumbers, node.Name.LocalName, "SourceFolder", "SourceProperty"));
2943 }
2944
2945 if (null != sourceDirectory && null != sourceProperty) // SourceDirectory and SourceProperty cannot coexist
2946 {
2947 - this.Core.OnMessage(WixErrors.IllegalAttributeWithOtherAttribute(sourceLineNumbers, node.Name.LocalName, "SourceProperty", "SourceDirectory"));
2947 + this.Core.Write(ErrorMessages.IllegalAttributeWithOtherAttribute(sourceLineNumbers, node.Name.LocalName, "SourceProperty", "SourceDirectory"));
2948 }
2949
2950 if (null != destinationDirectory && null != destinationProperty) // DestinationDirectory and DestinationProperty cannot coexist
2951 {
2952 - this.Core.OnMessage(WixErrors.IllegalAttributeWithOtherAttribute(sourceLineNumbers, node.Name.LocalName, "DestinationProperty", "DestinationDirectory"));
2952 + this.Core.Write(ErrorMessages.IllegalAttributeWithOtherAttribute(sourceLineNumbers, node.Name.LocalName, "DestinationProperty", "DestinationDirectory"));
2953 }
2954
2955 // generate a short file name
@@ -2970,7 +2970,7 @@ namespace WixToolset.Core
2970 // DestinationDirectory or DestinationProperty must be specified
2971 if (null == destinationDirectory && null == destinationProperty)
2972 {
2973 - this.Core.OnMessage(WixErrors.ExpectedAttributesWithoutOtherAttribute(sourceLineNumbers, node.Name.LocalName, "DestinationDirectory", "DestinationProperty", "FileId"));
2973 + this.Core.Write(ErrorMessages.ExpectedAttributesWithoutOtherAttribute(sourceLineNumbers, node.Name.LocalName, "DestinationDirectory", "DestinationProperty", "FileId"));
2974 }
2975
2976 if (!this.Core.EncounteredError)
@@ -3007,32 +3007,32 @@ namespace WixToolset.Core
3007 {
3008 if (null != sourceDirectory)
3009 {
3010 - this.Core.OnMessage(WixErrors.IllegalAttributeWithOtherAttribute(sourceLineNumbers, node.Name.LocalName, "SourceDirectory", "FileId"));
3010 + this.Core.Write(ErrorMessages.IllegalAttributeWithOtherAttribute(sourceLineNumbers, node.Name.LocalName, "SourceDirectory", "FileId"));
3011 }
3012
3013 if (null != sourceFolder)
3014 {
3015 - this.Core.OnMessage(WixErrors.IllegalAttributeWithOtherAttribute(sourceLineNumbers, node.Name.LocalName, "SourceFolder", "FileId"));
3015 + this.Core.Write(ErrorMessages.IllegalAttributeWithOtherAttribute(sourceLineNumbers, node.Name.LocalName, "SourceFolder", "FileId"));
3016 }
3017
3018 if (null != sourceName)
3019 {
3020 - this.Core.OnMessage(WixErrors.IllegalAttributeWithOtherAttribute(sourceLineNumbers, node.Name.LocalName, "SourceName", "FileId"));
3020 + this.Core.Write(ErrorMessages.IllegalAttributeWithOtherAttribute(sourceLineNumbers, node.Name.LocalName, "SourceName", "FileId"));
3021 }
3022
3023 if (null != sourceProperty)
3024 {
3025 - this.Core.OnMessage(WixErrors.IllegalAttributeWithOtherAttribute(sourceLineNumbers, node.Name.LocalName, "SourceProperty", "FileId"));
3025 + this.Core.Write(ErrorMessages.IllegalAttributeWithOtherAttribute(sourceLineNumbers, node.Name.LocalName, "SourceProperty", "FileId"));
3026 }
3027
3028 if (delete)
3029 {
3030 - this.Core.OnMessage(WixErrors.IllegalAttributeWithOtherAttribute(sourceLineNumbers, node.Name.LocalName, "Delete", "FileId"));
3030 + this.Core.Write(ErrorMessages.IllegalAttributeWithOtherAttribute(sourceLineNumbers, node.Name.LocalName, "Delete", "FileId"));
3031 }
3032
3033 if (null == destinationName && null == destinationDirectory && null == destinationProperty)
3034 {
3035 - this.Core.OnMessage(WixWarnings.CopyFileFileIdUseless(sourceLineNumbers));
3035 + this.Core.Write(WarningMessages.CopyFileFileIdUseless(sourceLineNumbers));
3036 }
3037
3038 if (!this.Core.EncounteredError)
@@ -3084,7 +3084,7 @@ namespace WixToolset.Core
3084 case "BinaryKey":
3085 if (null != source)
3086 {
3087 - this.Core.OnMessage(WixErrors.CustomActionMultipleSources(sourceLineNumbers, node.Name.LocalName, attrib.Name.LocalName, "BinaryKey", "Directory", "FileKey", "Property", "Script"));
3087 + this.Core.Write(ErrorMessages.CustomActionMultipleSources(sourceLineNumbers, node.Name.LocalName, attrib.Name.LocalName, "BinaryKey", "Directory", "FileKey", "Property", "Script"));
3088 }
3089 source = this.Core.GetAttributeIdentifierValue(sourceLineNumbers, attrib);
3090 sourceBits = MsiInterop.MsidbCustomActionTypeBinaryData;
@@ -3093,7 +3093,7 @@ namespace WixToolset.Core
3093 case "Directory":
3094 if (null != source)
3095 {
3096 - this.Core.OnMessage(WixErrors.CustomActionMultipleSources(sourceLineNumbers, node.Name.LocalName, attrib.Name.LocalName, "BinaryKey", "Directory", "FileKey", "Property", "Script"));
3096 + this.Core.Write(ErrorMessages.CustomActionMultipleSources(sourceLineNumbers, node.Name.LocalName, attrib.Name.LocalName, "BinaryKey", "Directory", "FileKey", "Property", "Script"));
3097 }
3098 source = this.Core.CreateDirectoryReferenceFromInlineSyntax(sourceLineNumbers, attrib, null);
3099 sourceBits = MsiInterop.MsidbCustomActionTypeDirectory;
@@ -3101,7 +3101,7 @@ namespace WixToolset.Core
3101 case "DllEntry":
3102 if (null != target)
3103 {
3104 - this.Core.OnMessage(WixErrors.CustomActionMultipleTargets(sourceLineNumbers, node.Name.LocalName, attrib.Name.LocalName, "DllEntry", "Error", "ExeCommand", "JScriptCall", "Script", "Value", "VBScriptCall"));
3104 + this.Core.Write(ErrorMessages.CustomActionMultipleTargets(sourceLineNumbers, node.Name.LocalName, attrib.Name.LocalName, "DllEntry", "Error", "ExeCommand", "JScriptCall", "Script", "Value", "VBScriptCall"));
3105 }
3106 target = this.Core.GetAttributeValue(sourceLineNumbers, attrib);
3107 targetBits = MsiInterop.MsidbCustomActionTypeDll;
@@ -3109,7 +3109,7 @@ namespace WixToolset.Core
3109 case "Error":
3110 if (null != target)
3111 {
3112 - this.Core.OnMessage(WixErrors.CustomActionMultipleTargets(sourceLineNumbers, node.Name.LocalName, attrib.Name.LocalName, "DllEntry", "Error", "ExeCommand", "JScriptCall", "Script", "Value", "VBScriptCall"));
3112 + this.Core.Write(ErrorMessages.CustomActionMultipleTargets(sourceLineNumbers, node.Name.LocalName, attrib.Name.LocalName, "DllEntry", "Error", "ExeCommand", "JScriptCall", "Script", "Value", "VBScriptCall"));
3113 }
3114 target = this.Core.GetAttributeValue(sourceLineNumbers, attrib);
3115 targetBits = MsiInterop.MsidbCustomActionTypeTextData | MsiInterop.MsidbCustomActionTypeSourceFile;
@@ -3140,7 +3140,7 @@ namespace WixToolset.Core
3140 case "ExeCommand":
3141 if (null != target)
3142 {
3143 - this.Core.OnMessage(WixErrors.CustomActionMultipleTargets(sourceLineNumbers, node.Name.LocalName, attrib.Name.LocalName, "DllEntry", "Error", "ExeCommand", "JScriptCall", "Script", "Value", "VBScriptCall"));
3143 + this.Core.Write(ErrorMessages.CustomActionMultipleTargets(sourceLineNumbers, node.Name.LocalName, attrib.Name.LocalName, "DllEntry", "Error", "ExeCommand", "JScriptCall", "Script", "Value", "VBScriptCall"));
3144 }
3145 target = this.Core.GetAttributeValue(sourceLineNumbers, attrib, EmptyRule.CanBeEmpty); // one of the few cases where an empty string value is valid
3146 targetBits = MsiInterop.MsidbCustomActionTypeExe;
@@ -3173,7 +3173,7 @@ namespace WixToolset.Core
3173 bits |= MsiInterop.MsidbCustomActionTypeClientRepeat;
3174 break;
3175 default:
3176 - this.Core.OnMessage(WixErrors.IllegalAttributeValue(sourceLineNumbers, node.Name.LocalName, attrib.Name.LocalName, execute, "commit", "deferred", "firstSequence", "immediate", "oncePerProcess", "rollback", "secondSequence"));
3176 + this.Core.Write(ErrorMessages.IllegalAttributeValue(sourceLineNumbers, node.Name.LocalName, attrib.Name.LocalName, execute, "commit", "deferred", "firstSequence", "immediate", "oncePerProcess", "rollback", "secondSequence"));
3177 break;
3178 }
3179 }
@@ -3181,7 +3181,7 @@ namespace WixToolset.Core
3181 case "FileKey":
3182 if (null != source)
3183 {
3184 - this.Core.OnMessage(WixErrors.CustomActionMultipleSources(sourceLineNumbers, node.Name.LocalName, attrib.Name.LocalName, "BinaryKey", "Directory", "FileKey", "Property", "Script"));
3184 + this.Core.Write(ErrorMessages.CustomActionMultipleSources(sourceLineNumbers, node.Name.LocalName, attrib.Name.LocalName, "BinaryKey", "Directory", "FileKey", "Property", "Script"));
3185 }
3186 source = this.Core.GetAttributeIdentifierValue(sourceLineNumbers, attrib);
3187 sourceBits = MsiInterop.MsidbCustomActionTypeSourceFile;
@@ -3202,7 +3202,7 @@ namespace WixToolset.Core
3202 case "JScriptCall":
3203 if (null != target)
3204 {
3205 - this.Core.OnMessage(WixErrors.CustomActionMultipleTargets(sourceLineNumbers, node.Name.LocalName, attrib.Name.LocalName, "DllEntry", "Error", "ExeCommand", "JScriptCall", "Script", "Value", "VBScriptCall"));
3205 + this.Core.Write(ErrorMessages.CustomActionMultipleTargets(sourceLineNumbers, node.Name.LocalName, attrib.Name.LocalName, "DllEntry", "Error", "ExeCommand", "JScriptCall", "Script", "Value", "VBScriptCall"));
3206 }
3207 target = this.Core.GetAttributeValue(sourceLineNumbers, attrib, EmptyRule.CanBeEmpty); // one of the few cases where an empty string value is valid
3208 targetBits = MsiInterop.MsidbCustomActionTypeJScript;
@@ -3216,7 +3216,7 @@ namespace WixToolset.Core
3216 case "Property":
3217 if (null != source)
3218 {
3219 - this.Core.OnMessage(WixErrors.CustomActionMultipleSources(sourceLineNumbers, node.Name.LocalName, attrib.Name.LocalName, "BinaryKey", "Directory", "FileKey", "Property", "Script"));
3219 + this.Core.Write(ErrorMessages.CustomActionMultipleSources(sourceLineNumbers, node.Name.LocalName, attrib.Name.LocalName, "BinaryKey", "Directory", "FileKey", "Property", "Script"));
3220 }
3221 source = this.Core.GetAttributeValue(sourceLineNumbers, attrib);
3222 sourceBits = MsiInterop.MsidbCustomActionTypeProperty;
@@ -3240,7 +3240,7 @@ namespace WixToolset.Core
3240 bits |= MsiInterop.MsidbCustomActionTypeContinue;
3241 break;
3242 default:
3243 - this.Core.OnMessage(WixErrors.IllegalAttributeValue(sourceLineNumbers, node.Name.LocalName, attrib.Name.LocalName, returnValue, "asyncNoWait", "asyncWait", "check", "ignore"));
3243 + this.Core.Write(ErrorMessages.IllegalAttributeValue(sourceLineNumbers, node.Name.LocalName, attrib.Name.LocalName, returnValue, "asyncNoWait", "asyncWait", "check", "ignore"));
3244 break;
3245 }
3246 }
@@ -3248,12 +3248,12 @@ namespace WixToolset.Core
3248 case "Script":
3249 if (null != source)
3250 {
3251 - this.Core.OnMessage(WixErrors.CustomActionMultipleSources(sourceLineNumbers, node.Name.LocalName, attrib.Name.LocalName, "BinaryKey", "Directory", "FileKey", "Property", "Script"));
3251 + this.Core.Write(ErrorMessages.CustomActionMultipleSources(sourceLineNumbers, node.Name.LocalName, attrib.Name.LocalName, "BinaryKey", "Directory", "FileKey", "Property", "Script"));
3252 }
3253
3254 if (null != target)
3255 {
3256 - this.Core.OnMessage(WixErrors.CustomActionMultipleTargets(sourceLineNumbers, node.Name.LocalName, attrib.Name.LocalName, "DllEntry", "Error", "ExeCommand", "JScriptCall", "Script", "Value", "VBScriptCall"));
3256 + this.Core.Write(ErrorMessages.CustomActionMultipleTargets(sourceLineNumbers, node.Name.LocalName, attrib.Name.LocalName, "DllEntry", "Error", "ExeCommand", "JScriptCall", "Script", "Value", "VBScriptCall"));
3257 }
3258
3259 // set the source and target to empty string for error messages when the user sets multiple sources or targets
@@ -3277,7 +3277,7 @@ namespace WixToolset.Core
3277 targetBits = MsiInterop.MsidbCustomActionTypeVBScript;
3278 break;
3279 default:
3280 - this.Core.OnMessage(WixErrors.IllegalAttributeValue(sourceLineNumbers, node.Name.LocalName, attrib.Name.LocalName, script, "jscript", "vbscript"));
3280 + this.Core.Write(ErrorMessages.IllegalAttributeValue(sourceLineNumbers, node.Name.LocalName, attrib.Name.LocalName, script, "jscript", "vbscript"));
3281 break;
3282 }
3283 }
@@ -3294,7 +3294,7 @@ namespace WixToolset.Core
3294 case "Value":
3295 if (null != target)
3296 {
3297 - this.Core.OnMessage(WixErrors.CustomActionMultipleTargets(sourceLineNumbers, node.Name.LocalName, attrib.Name.LocalName, "DllEntry", "Error", "ExeCommand", "JScriptCall", "Script", "Value", "VBScriptCall"));
3297 + this.Core.Write(ErrorMessages.CustomActionMultipleTargets(sourceLineNumbers, node.Name.LocalName, attrib.Name.LocalName, "DllEntry", "Error", "ExeCommand", "JScriptCall", "Script", "Value", "VBScriptCall"));
3298 }
3299 target = this.Core.GetAttributeValue(sourceLineNumbers, attrib, EmptyRule.CanBeEmpty); // one of the few cases where an empty string value is valid
3300 targetBits = MsiInterop.MsidbCustomActionTypeTextData;
@@ -3302,7 +3302,7 @@ namespace WixToolset.Core
3302 case "VBScriptCall":
3303 if (null != target)
3304 {
3305 - this.Core.OnMessage(WixErrors.CustomActionMultipleTargets(sourceLineNumbers, node.Name.LocalName, attrib.Name.LocalName, "DllEntry", "Error", "ExeCommand", "JScriptCall", "Script", "Value", "VBScriptCall"));
3305 + this.Core.Write(ErrorMessages.CustomActionMultipleTargets(sourceLineNumbers, node.Name.LocalName, attrib.Name.LocalName, "DllEntry", "Error", "ExeCommand", "JScriptCall", "Script", "Value", "VBScriptCall"));
3306 }
3307 target = this.Core.GetAttributeValue(sourceLineNumbers, attrib, EmptyRule.CanBeEmpty); // one of the few cases where an empty string value is valid
3308 targetBits = MsiInterop.MsidbCustomActionTypeVBScript;
@@ -3327,7 +3327,7 @@ namespace WixToolset.Core
3327
3328 if (null == id)
3329 {
3330 - this.Core.OnMessage(WixErrors.ExpectedAttribute(sourceLineNumbers, node.Name.LocalName, "Id"));
3330 + this.Core.Write(ErrorMessages.ExpectedAttribute(sourceLineNumbers, node.Name.LocalName, "Id"));
3331 id = Identifier.Invalid;
3332 }
3333
@@ -3348,48 +3348,48 @@ namespace WixToolset.Core
3348 {
3349 if (null == source)
3350 {
3351 - this.Core.OnMessage(WixErrors.IllegalAttributeWithoutOtherAttributes(sourceLineNumbers, node.Name.LocalName, "VBScriptCall", "BinaryKey", "FileKey", "Property"));
3351 + this.Core.Write(ErrorMessages.IllegalAttributeWithoutOtherAttributes(sourceLineNumbers, node.Name.LocalName, "VBScriptCall", "BinaryKey", "FileKey", "Property"));
3352 }
3353 else if (MsiInterop.MsidbCustomActionTypeDirectory == sourceBits)
3354 {
3355 - this.Core.OnMessage(WixErrors.IllegalAttributeWithOtherAttribute(sourceLineNumbers, node.Name.LocalName, "VBScriptCall", "Directory"));
3355 + this.Core.Write(ErrorMessages.IllegalAttributeWithOtherAttribute(sourceLineNumbers, node.Name.LocalName, "VBScriptCall", "Directory"));
3356 }
3357 }
3358 else if (MsiInterop.MsidbCustomActionTypeJScript == targetBits) // non-inline jscript
3359 {
3360 if (null == source)
3361 {
3362 - this.Core.OnMessage(WixErrors.IllegalAttributeWithoutOtherAttributes(sourceLineNumbers, node.Name.LocalName, "JScriptCall", "BinaryKey", "FileKey", "Property"));
3362 + this.Core.Write(ErrorMessages.IllegalAttributeWithoutOtherAttributes(sourceLineNumbers, node.Name.LocalName, "JScriptCall", "BinaryKey", "FileKey", "Property"));
3363 }
3364 else if (MsiInterop.MsidbCustomActionTypeDirectory == sourceBits)
3365 {
3366 - this.Core.OnMessage(WixErrors.IllegalAttributeWithOtherAttribute(sourceLineNumbers, node.Name.LocalName, "JScriptCall", "Directory"));
3366 + this.Core.Write(ErrorMessages.IllegalAttributeWithOtherAttribute(sourceLineNumbers, node.Name.LocalName, "JScriptCall", "Directory"));
3367 }
3368 }
3369 else if (MsiInterop.MsidbCustomActionTypeExe == targetBits) // exe-command
3370 {
3371 if (null == source)
3372 {
3373 - this.Core.OnMessage(WixErrors.IllegalAttributeWithoutOtherAttributes(sourceLineNumbers, node.Name.LocalName, "ExeCommand", "BinaryKey", "Directory", "FileKey", "Property"));
3373 + this.Core.Write(ErrorMessages.IllegalAttributeWithoutOtherAttributes(sourceLineNumbers, node.Name.LocalName, "ExeCommand", "BinaryKey", "Directory", "FileKey", "Property"));
3374 }
3375 }
3376 else if (MsiInterop.MsidbCustomActionTypeTextData == (bits | sourceBits | targetBits))
3377 {
3378 - this.Core.OnMessage(WixErrors.IllegalAttributeWithoutOtherAttributes(sourceLineNumbers, node.Name.LocalName, "Value", "Directory", "Property"));
3378 + this.Core.Write(ErrorMessages.IllegalAttributeWithoutOtherAttributes(sourceLineNumbers, node.Name.LocalName, "Value", "Directory", "Property"));
3379 }
3380 else if (!String.IsNullOrEmpty(innerText)) // inner text cannot be specified with non-script CAs
3381 {
3382 - this.Core.OnMessage(WixErrors.CustomActionIllegalInnerText(sourceLineNumbers, node.Name.LocalName, innerText, "Script"));
3382 + this.Core.Write(ErrorMessages.CustomActionIllegalInnerText(sourceLineNumbers, node.Name.LocalName, innerText, "Script"));
3383 }
3384
3385 if (MsiInterop.MsidbCustomActionType64BitScript == (bits & MsiInterop.MsidbCustomActionType64BitScript) && MsiInterop.MsidbCustomActionTypeVBScript != targetBits && MsiInterop.MsidbCustomActionTypeJScript != targetBits)
3386 {
3387 - this.Core.OnMessage(WixErrors.IllegalAttributeWithoutOtherAttributes(sourceLineNumbers, node.Name.LocalName, "Win64", "Script", "VBScriptCall", "JScriptCall"));
3387 + this.Core.Write(ErrorMessages.IllegalAttributeWithoutOtherAttributes(sourceLineNumbers, node.Name.LocalName, "Win64", "Script", "VBScriptCall", "JScriptCall"));
3388 }
3389
3390 if ((MsiInterop.MsidbCustomActionTypeAsync | MsiInterop.MsidbCustomActionTypeContinue) == (bits & (MsiInterop.MsidbCustomActionTypeAsync | MsiInterop.MsidbCustomActionTypeContinue)) && MsiInterop.MsidbCustomActionTypeExe != targetBits)
3391 {
3392 - this.Core.OnMessage(WixErrors.IllegalAttributeValueWithoutOtherAttribute(sourceLineNumbers, node.Name.LocalName, "Return", "asyncNoWait", "ExeCommand"));
3392 + this.Core.Write(ErrorMessages.IllegalAttributeValueWithoutOtherAttribute(sourceLineNumbers, node.Name.LocalName, "Return", "asyncNoWait", "ExeCommand"));
3393 }
3394
3395 if (MsiInterop.MsidbCustomActionTypeTSAware == (bits & MsiInterop.MsidbCustomActionTypeTSAware))
@@ -3397,7 +3397,7 @@ namespace WixToolset.Core
3397 // TS-aware CAs are valid only when deferred so require the in-script Type bit...
3398 if (0 == (bits & MsiInterop.MsidbCustomActionTypeInScript))
3399 {
3400 - this.Core.OnMessage(WixErrors.IllegalTerminalServerCustomActionAttributes(sourceLineNumbers));
3400 + this.Core.Write(ErrorMessages.IllegalTerminalServerCustomActionAttributes(sourceLineNumbers));
3401 }
3402 }
3403
@@ -3406,12 +3406,12 @@ namespace WixToolset.Core
3406 MsiInterop.MsidbCustomActionTypeTextData == targetBits &&
3407 0 != (bits & MsiInterop.MsidbCustomActionTypeInScript))
3408 {
3409 - this.Core.OnMessage(WixErrors.IllegalPropertyCustomActionAttributes(sourceLineNumbers));
3409 + this.Core.Write(ErrorMessages.IllegalPropertyCustomActionAttributes(sourceLineNumbers));
3410 }
3411
3412 if (0 == targetBits)
3413 {
3414 - this.Core.OnMessage(WixErrors.ExpectedAttributes(sourceLineNumbers, node.Name.LocalName, "DllEntry", "Error", "ExeCommand", "JScriptCall", "Script", "Value", "VBScriptCall"));
3414 + this.Core.Write(ErrorMessages.ExpectedAttributes(sourceLineNumbers, node.Name.LocalName, "DllEntry", "Error", "ExeCommand", "JScriptCall", "Script", "Value", "VBScriptCall"));
3415 }
3416
3417 this.Core.ParseForExtensionElements(node);
@@ -3475,7 +3475,7 @@ namespace WixToolset.Core
3475
3476 if (null == id)
3477 {
3478 - this.Core.OnMessage(WixErrors.ExpectedAttribute(sourceLineNumbers, node.Name.LocalName, "Id"));
3478 + this.Core.Write(ErrorMessages.ExpectedAttribute(sourceLineNumbers, node.Name.LocalName, "Id"));
3479 }
3480
3481 this.Core.ParseForExtensionElements(node);
@@ -3520,7 +3520,7 @@ namespace WixToolset.Core
3520
3521 if (null == primaryKeys[0])
3522 {
3523 - this.Core.OnMessage(WixErrors.ExpectedAttribute(sourceLineNumbers, node.Name.LocalName, "Id"));
3523 + this.Core.Write(ErrorMessages.ExpectedAttribute(sourceLineNumbers, node.Name.LocalName, "Id"));
3524 }
3525
3526 this.Core.CreateSimpleReference(sourceLineNumbers, "MsiPatchSequence", primaryKeys);
@@ -3565,7 +3565,7 @@ namespace WixToolset.Core
3565
3566 if (null == id)
3567 {
3568 - this.Core.OnMessage(WixErrors.ExpectedAttribute(sourceLineNumbers, node.Name.LocalName, "Id"));
3568 + this.Core.Write(ErrorMessages.ExpectedAttribute(sourceLineNumbers, node.Name.LocalName, "Id"));
3569 id = Identifier.Invalid;
3570 }
3571
@@ -3640,7 +3640,7 @@ namespace WixToolset.Core
3640
3641 if (null == id)
3642 {
3643 - this.Core.OnMessage(WixErrors.ExpectedAttribute(sourceLineNumbers, node.Name.LocalName, "Id"));
3643 + this.Core.Write(ErrorMessages.ExpectedAttribute(sourceLineNumbers, node.Name.LocalName, "Id"));
3644 }
3645
3646 this.Core.ParseForExtensionElements(node);
@@ -3682,11 +3682,11 @@ namespace WixToolset.Core
3682
3683 if (null == id)
3684 {
3685 - this.Core.OnMessage(WixErrors.ExpectedAttribute(sourceLineNumbers, node.Name.LocalName, "Id"));
3685 + this.Core.Write(ErrorMessages.ExpectedAttribute(sourceLineNumbers, node.Name.LocalName, "Id"));
3686 }
3687 else if (31 < id.Length)
3688 {
3689 - this.Core.OnMessage(WixErrors.TableNameTooLong(sourceLineNumbers, node.Name.LocalName, "Id", id));
3689 + this.Core.Write(ErrorMessages.TableNameTooLong(sourceLineNumbers, node.Name.LocalName, "Id", id));
3690 }
3691
3692 this.Core.ParseForExtensionElements(node);
@@ -3743,11 +3743,11 @@ namespace WixToolset.Core
3743
3744 if (null == tableId)
3745 {
3746 - this.Core.OnMessage(WixErrors.ExpectedAttribute(sourceLineNumbers, node.Name.LocalName, "Id"));
3746 + this.Core.Write(ErrorMessages.ExpectedAttribute(sourceLineNumbers, node.Name.LocalName, "Id"));
3747 }
3748 else if (31 < tableId.Length)
3749 {
3750 - this.Core.OnMessage(WixErrors.CustomTableNameTooLong(sourceLineNumbers, node.Name.LocalName, "Id", tableId));
3750 + this.Core.Write(ErrorMessages.CustomTableNameTooLong(sourceLineNumbers, node.Name.LocalName, "Id", tableId));
3751 }
3752
3753 foreach (XElement child in node.Elements())
@@ -3833,7 +3833,7 @@ namespace WixToolset.Core
3833 typeName = "CHAR";
3834 break;
3835 default:
3836 - this.Core.OnMessage(WixErrors.IllegalAttributeValue(childSourceLineNumbers, child.Name.LocalName, "Type", typeValue, "binary", "int", "string"));
3836 + this.Core.Write(ErrorMessages.IllegalAttributeValue(childSourceLineNumbers, child.Name.LocalName, "Type", typeValue, "binary", "int", "string"));
3837 break;
3838 }
3839 }
@@ -3849,18 +3849,18 @@ namespace WixToolset.Core
3849
3850 if (null == columnName)
3851 {
3852 - this.Core.OnMessage(WixErrors.ExpectedAttribute(childSourceLineNumbers, child.Name.LocalName, "Id"));
3852 + this.Core.Write(ErrorMessages.ExpectedAttribute(childSourceLineNumbers, child.Name.LocalName, "Id"));
3853 }
3854
3855 if (null == typeName)
3856 {
3857 - this.Core.OnMessage(WixErrors.ExpectedAttribute(childSourceLineNumbers, child.Name.LocalName, "Type"));
3857 + this.Core.Write(ErrorMessages.ExpectedAttribute(childSourceLineNumbers, child.Name.LocalName, "Type"));
3858 }
3859 else if ("SHORT" == typeName)
3860 {
3861 if (2 != width && 4 != width)
3862 {
3863 - this.Core.OnMessage(WixErrors.CustomTableIllegalColumnWidth(childSourceLineNumbers, child.Name.LocalName, "Width", width));
3863 + this.Core.Write(ErrorMessages.CustomTableIllegalColumnWidth(childSourceLineNumbers, child.Name.LocalName, "Width", width));
3864 }
3865 columnType = String.Concat(nullable ? "I" : "i", width);
3866 }
@@ -3873,7 +3873,7 @@ namespace WixToolset.Core
3873 {
3874 if ("Binary" != category)
3875 {
3876 - this.Core.OnMessage(WixErrors.ExpectedBinaryCategory(childSourceLineNumbers));
3876 + this.Core.Write(ErrorMessages.ExpectedBinaryCategory(childSourceLineNumbers));
3877 }
3878 columnType = String.Concat(nullable ? "V" : "v", width);
3879 }
@@ -3927,7 +3927,7 @@ namespace WixToolset.Core
3927
3928 if (null == columnName)
3929 {
3930 - this.Core.OnMessage(WixErrors.ExpectedAttribute(dataSourceLineNumbers, data.Name.LocalName, "Column"));
3930 + this.Core.Write(ErrorMessages.ExpectedAttribute(dataSourceLineNumbers, data.Name.LocalName, "Column"));
3931 }
3932
3933 dataValue = String.Concat(dataValue, null == dataValue ? String.Empty : Common.CustomRowFieldSeparator.ToString(), columnName, ":", Common.GetInnerText(data));
@@ -3959,7 +3959,7 @@ namespace WixToolset.Core
3959 {
3960 if (null == primaryKeys || 0 == primaryKeys.Length)
3961 {
3962 - this.Core.OnMessage(WixErrors.CustomTableMissingPrimaryKey(sourceLineNumbers));
3962 + this.Core.Write(ErrorMessages.CustomTableMissingPrimaryKey(sourceLineNumbers));
3963 }
3964
3965 if (!this.Core.EncounteredError)
@@ -4097,12 +4097,12 @@ namespace WixToolset.Core
4097 {
4098 if (!String.IsNullOrEmpty(shortName))
4099 {
4100 - this.Core.OnMessage(WixErrors.IllegalAttributeWithoutOtherAttributes(sourceLineNumbers, node.Name.LocalName, "ShortName", "Name"));
4100 + this.Core.Write(ErrorMessages.IllegalAttributeWithoutOtherAttributes(sourceLineNumbers, node.Name.LocalName, "ShortName", "Name"));
4101 }
4102
4103 if (null == parentId)
4104 {
4105 - this.Core.OnMessage(WixErrors.DirectoryRootWithoutName(sourceLineNumbers, node.Name.LocalName, "Name"));
4105 + this.Core.Write(ErrorMessages.DirectoryRootWithoutName(sourceLineNumbers, node.Name.LocalName, "Name"));
4106 }
4107 }
4108 else if (!String.IsNullOrEmpty(name))
@@ -4116,11 +4116,11 @@ namespace WixToolset.Core
4116 }
4117 else if (name.Equals("."))
4118 {
4119 - this.Core.OnMessage(WixErrors.IllegalAttributeWithOtherAttribute(sourceLineNumbers, node.Name.LocalName, "ShortName", "Name", name));
4119 + this.Core.Write(ErrorMessages.IllegalAttributeWithOtherAttribute(sourceLineNumbers, node.Name.LocalName, "ShortName", "Name", name));
4120 }
4121 else if (name.Equals(shortName))
4122 {
4123 - this.Core.OnMessage(WixWarnings.DirectoryRedundantNames(sourceLineNumbers, node.Name.LocalName, "Name", "ShortName", name));
4123 + this.Core.Write(WarningMessages.DirectoryRedundantNames(sourceLineNumbers, node.Name.LocalName, "Name", "ShortName", name));
4124 }
4125 }
4126
@@ -4128,7 +4128,7 @@ namespace WixToolset.Core
4128 {
4129 if (!String.IsNullOrEmpty(shortSourceName))
4130 {
4131 - this.Core.OnMessage(WixErrors.IllegalAttributeWithoutOtherAttributes(sourceLineNumbers, node.Name.LocalName, "ShortSourceName", "SourceName"));
4131 + this.Core.Write(ErrorMessages.IllegalAttributeWithoutOtherAttributes(sourceLineNumbers, node.Name.LocalName, "ShortSourceName", "SourceName"));
4132 }
4133 }
4134 else
@@ -4142,11 +4142,11 @@ namespace WixToolset.Core
4142 }
4143 else if (sourceName.Equals("."))
4144 {
4145 - this.Core.OnMessage(WixErrors.IllegalAttributeWithOtherAttribute(sourceLineNumbers, node.Name.LocalName, "ShortSourceName", "SourceName", sourceName));
4145 + this.Core.Write(ErrorMessages.IllegalAttributeWithOtherAttribute(sourceLineNumbers, node.Name.LocalName, "ShortSourceName", "SourceName", sourceName));
4146 }
4147 else if (sourceName.Equals(shortSourceName))
4148 {
4149 - this.Core.OnMessage(WixWarnings.DirectoryRedundantNames(sourceLineNumbers, node.Name.LocalName, "SourceName", "ShortSourceName", sourceName));
4149 + this.Core.Write(WarningMessages.DirectoryRedundantNames(sourceLineNumbers, node.Name.LocalName, "SourceName", "ShortSourceName", sourceName));
4150 }
4151 }
4152
@@ -4191,7 +4191,7 @@ namespace WixToolset.Core
4191
4192 if ("TARGETDIR".Equals(id.Id) && !"SourceDir".Equals(defaultDir))
4193 {
4194 - this.Core.OnMessage(WixErrors.IllegalTargetDirDefaultDir(sourceLineNumbers, defaultDir));
4194 + this.Core.Write(ErrorMessages.IllegalTargetDirDefaultDir(sourceLineNumbers, defaultDir));
4195 }
4196
4197 foreach (XElement child in node.Elements())
@@ -4293,7 +4293,7 @@ namespace WixToolset.Core
4293
4294 if (null == id)
4295 {
4296 - this.Core.OnMessage(WixErrors.ExpectedAttribute(sourceLineNumbers, node.Name.LocalName, "Id"));
4296 + this.Core.Write(ErrorMessages.ExpectedAttribute(sourceLineNumbers, node.Name.LocalName, "Id"));
4297 }
4298
4299 if (!String.IsNullOrEmpty(fileSource) && !fileSource.EndsWith(Path.DirectorySeparatorChar.ToString(), StringComparison.Ordinal))
@@ -4391,7 +4391,7 @@ namespace WixToolset.Core
4391 case "DirectorySearch":
4392 if (oneChild)
4393 {
4394 - this.Core.OnMessage(WixErrors.TooManySearchElements(childSourceLineNumbers, node.Name.LocalName));
4394 + this.Core.Write(ErrorMessages.TooManySearchElements(childSourceLineNumbers, node.Name.LocalName));
4395 }
4396 oneChild = true;
4397 signature = this.ParseDirectorySearchElement(child, id.Id);
@@ -4399,7 +4399,7 @@ namespace WixToolset.Core
4399 case "DirectorySearchRef":
4400 if (oneChild)
4401 {
4402 - this.Core.OnMessage(WixErrors.TooManySearchElements(childSourceLineNumbers, node.Name.LocalName));
4402 + this.Core.Write(ErrorMessages.TooManySearchElements(childSourceLineNumbers, node.Name.LocalName));
4403 }
4404 oneChild = true;
4405 signature = this.ParseDirectorySearchRefElement(child, id.Id);
@@ -4407,7 +4407,7 @@ namespace WixToolset.Core
4407 case "FileSearch":
4408 if (oneChild)
4409 {
4410 - this.Core.OnMessage(WixErrors.TooManySearchElements(sourceLineNumbers, node.Name.LocalName));
4410 + this.Core.Write(ErrorMessages.TooManySearchElements(sourceLineNumbers, node.Name.LocalName));
4411 }
4412 oneChild = true;
4413 hasFileSearch = true;
@@ -4416,7 +4416,7 @@ namespace WixToolset.Core
4416 case "FileSearchRef":
4417 if (oneChild)
4418 {
4419 - this.Core.OnMessage(WixErrors.TooManySearchElements(sourceLineNumbers, node.Name.LocalName));
4419 + this.Core.Write(ErrorMessages.TooManySearchElements(sourceLineNumbers, node.Name.LocalName));
4420 }
4421 oneChild = true;
4422 signature = this.ParseSimpleRefElement(child, "Signature");
@@ -4432,7 +4432,7 @@ namespace WixToolset.Core
4432 {
4433 if (!hasFileSearch)
4434 {
4435 - this.Core.OnMessage(WixErrors.IllegalParentAttributeWhenNested(sourceLineNumbers, node.Name.LocalName, "AssignToProperty", child.Name.LocalName));
4435 + this.Core.Write(ErrorMessages.IllegalParentAttributeWhenNested(sourceLineNumbers, node.Name.LocalName, "AssignToProperty", child.Name.LocalName));
4436 }
4437 else if (!oneChild)
4438 {
@@ -4518,7 +4518,7 @@ namespace WixToolset.Core
4518 {
4519 if (!String.IsNullOrEmpty(parentSignature))
4520 {
4521 - this.Core.OnMessage(WixErrors.CanNotHaveTwoParents(sourceLineNumbers, id.Id, parent.Id, parentSignature));
4521 + this.Core.Write(ErrorMessages.CanNotHaveTwoParents(sourceLineNumbers, id.Id, parent.Id, parentSignature));
4522 }
4523 else
4524 {
@@ -4544,7 +4544,7 @@ namespace WixToolset.Core
4544 case "DirectorySearch":
4545 if (oneChild)
4546 {
4547 - this.Core.OnMessage(WixErrors.TooManySearchElements(childSourceLineNumbers, node.Name.LocalName));
4547 + this.Core.Write(ErrorMessages.TooManySearchElements(childSourceLineNumbers, node.Name.LocalName));
4548 }
4549 oneChild = true;
4550 signature = this.ParseDirectorySearchElement(child, id.Id);
@@ -4552,7 +4552,7 @@ namespace WixToolset.Core
4552 case "DirectorySearchRef":
4553 if (oneChild)
4554 {
4555 - this.Core.OnMessage(WixErrors.TooManySearchElements(childSourceLineNumbers, node.Name.LocalName));
4555 + this.Core.Write(ErrorMessages.TooManySearchElements(childSourceLineNumbers, node.Name.LocalName));
4556 }
4557 oneChild = true;
4558 signature = this.ParseDirectorySearchRefElement(child, id.Id);
@@ -4560,7 +4560,7 @@ namespace WixToolset.Core
4560 case "FileSearch":
4561 if (oneChild)
4562 {
4563 - this.Core.OnMessage(WixErrors.TooManySearchElements(childSourceLineNumbers, node.Name.LocalName));
4563 + this.Core.Write(ErrorMessages.TooManySearchElements(childSourceLineNumbers, node.Name.LocalName));
4564 }
4565 oneChild = true;
4566 signature = this.ParseFileSearchElement(child, id.Id, false, CompilerConstants.IntegerNotSet);
@@ -4568,7 +4568,7 @@ namespace WixToolset.Core
4568 case "FileSearchRef":
4569 if (oneChild)
4570 {
4571 - this.Core.OnMessage(WixErrors.TooManySearchElements(sourceLineNumbers, node.Name.LocalName));
4571 + this.Core.Write(ErrorMessages.TooManySearchElements(sourceLineNumbers, node.Name.LocalName));
4572 }
4573 oneChild = true;
4574 signature = this.ParseSimpleRefElement(child, "Signature");
@@ -4636,7 +4636,7 @@ namespace WixToolset.Core
4636 bits = bits | MsiInterop.MsidbFeatureAttributesUIDisallowAbsent;
4637 break;
4638 default:
4639 - this.Core.OnMessage(WixErrors.IllegalAttributeValue(sourceLineNumbers, node.Name.LocalName, attrib.Name.LocalName, absent, "allow", "disallow"));
4639 + this.Core.Write(ErrorMessages.IllegalAttributeValue(sourceLineNumbers, node.Name.LocalName, attrib.Name.LocalName, absent, "allow", "disallow"));
4640 break;
4641 }
4642 }
@@ -4657,7 +4657,7 @@ namespace WixToolset.Core
4657 case Wix.Feature.AllowAdvertiseType.yes: // this is the default
4658 break;
4659 default:
4660 - this.Core.OnMessage(WixErrors.IllegalAttributeValue(sourceLineNumbers, node.Name.LocalName, attrib.Name.LocalName, allowAdvertise, "no", "system", "yes"));
4660 + this.Core.Write(ErrorMessages.IllegalAttributeValue(sourceLineNumbers, node.Name.LocalName, attrib.Name.LocalName, allowAdvertise, "no", "system", "yes"));
4661 break;
4662 }
4663 }
@@ -4681,7 +4681,7 @@ namespace WixToolset.Core
4681 case Wix.Feature.InstallDefaultType.followParent:
4682 if (ComplexReferenceParentType.Product == parentType)
4683 {
4684 - this.Core.OnMessage(WixErrors.RootFeatureCannotFollowParent(sourceLineNumbers));
4684 + this.Core.Write(ErrorMessages.RootFeatureCannotFollowParent(sourceLineNumbers));
4685 }
4686 bits = bits | MsiInterop.MsidbFeatureAttributesFollowParent;
4687 break;
@@ -4691,7 +4691,7 @@ namespace WixToolset.Core
4691 bits = bits | MsiInterop.MsidbFeatureAttributesFavorSource;
4692 break;
4693 default:
4694 - this.Core.OnMessage(WixErrors.IllegalAttributeValue(sourceLineNumbers, node.Name.LocalName, attrib.Name.LocalName, installDefault, "followParent", "local", "source"));
4694 + this.Core.Write(ErrorMessages.IllegalAttributeValue(sourceLineNumbers, node.Name.LocalName, attrib.Name.LocalName, installDefault, "followParent", "local", "source"));
4695 break;
4696 }
4697 }
@@ -4703,7 +4703,7 @@ namespace WixToolset.Core
4703 title = this.Core.GetAttributeValue(sourceLineNumbers, attrib);
4704 if ("PUT-FEATURE-TITLE-HERE" == title)
4705 {
4706 - this.Core.OnMessage(WixWarnings.PlaceholderValue(sourceLineNumbers, node.Name.LocalName, attrib.Name.LocalName, title));
4706 + this.Core.Write(WarningMessages.PlaceholderValue(sourceLineNumbers, node.Name.LocalName, attrib.Name.LocalName, title));
4707 }
4708 break;
4709 case "TypicalDefault":
@@ -4719,7 +4719,7 @@ namespace WixToolset.Core
4719 case Wix.Feature.TypicalDefaultType.install: // this is the default
4720 break;
4721 default:
4722 - this.Core.OnMessage(WixErrors.IllegalAttributeValue(sourceLineNumbers, node.Name.LocalName, attrib.Name.LocalName, typicalDefault, "advertise", "install"));
4722 + this.Core.Write(ErrorMessages.IllegalAttributeValue(sourceLineNumbers, node.Name.LocalName, attrib.Name.LocalName, typicalDefault, "advertise", "install"));
4723 break;
4724 }
4725 }
@@ -4737,27 +4737,27 @@ namespace WixToolset.Core
4737
4738 if (null == id)
4739 {
4740 - this.Core.OnMessage(WixErrors.ExpectedAttribute(sourceLineNumbers, node.Name.LocalName, "Id"));
4740 + this.Core.Write(ErrorMessages.ExpectedAttribute(sourceLineNumbers, node.Name.LocalName, "Id"));
4741 id = Identifier.Invalid;
4742 }
4743 else if (38 < id.Id.Length)
4744 {
4745 - this.Core.OnMessage(WixErrors.FeatureNameTooLong(sourceLineNumbers, node.Name.LocalName, "Id", id.Id));
4745 + this.Core.Write(ErrorMessages.FeatureNameTooLong(sourceLineNumbers, node.Name.LocalName, "Id", id.Id));
4746 }
4747
4748 if (null != configurableDirectory && configurableDirectory.ToUpper(CultureInfo.InvariantCulture) != configurableDirectory)
4749 {
4750 - this.Core.OnMessage(WixErrors.FeatureConfigurableDirectoryNotUppercase(sourceLineNumbers, node.Name.LocalName, "ConfigurableDirectory", configurableDirectory));
4750 + this.Core.Write(ErrorMessages.FeatureConfigurableDirectoryNotUppercase(sourceLineNumbers, node.Name.LocalName, "ConfigurableDirectory", configurableDirectory));
4751 }
4752
4753 if ("advertise" == typicalDefault && "no" == allowAdvertise)
4754 {
4755 - this.Core.OnMessage(WixErrors.FeatureCannotFavorAndDisallowAdvertise(sourceLineNumbers, node.Name.LocalName, "TypicalDefault", typicalDefault, "AllowAdvertise", allowAdvertise));
4755 + this.Core.Write(ErrorMessages.FeatureCannotFavorAndDisallowAdvertise(sourceLineNumbers, node.Name.LocalName, "TypicalDefault", typicalDefault, "AllowAdvertise", allowAdvertise));
4756 }
4757
4758 if (YesNoType.Yes == followParent && ("local" == installDefault || "source" == installDefault))
4759 {
4760 - this.Core.OnMessage(WixErrors.FeatureCannotFollowParentAndFavorLocalOrSource(sourceLineNumbers, node.Name.LocalName, "InstallDefault", "FollowParent", "yes"));
4760 + this.Core.Write(ErrorMessages.FeatureCannotFollowParentAndFavorLocalOrSource(sourceLineNumbers, node.Name.LocalName, "InstallDefault", "FollowParent", "yes"));
4761 }
4762
4763 int childDisplay = 0;
@@ -4827,7 +4827,7 @@ namespace WixToolset.Core
4827 int value;
4828 if (!Int32.TryParse(display, NumberStyles.Integer, CultureInfo.InvariantCulture, out value))
4829 {
4830 - this.Core.OnMessage(WixErrors.IllegalAttributeValue(sourceLineNumbers, node.Name.LocalName, "Display", display, "collapse", "expand", "hidden"));
4830 + this.Core.Write(ErrorMessages.IllegalAttributeValue(sourceLineNumbers, node.Name.LocalName, "Display", display, "collapse", "expand", "hidden"));
4831 }
4832 else
4833 {
@@ -4892,7 +4892,7 @@ namespace WixToolset.Core
4892
4893 if (null == id)
4894 {
4895 - this.Core.OnMessage(WixErrors.ExpectedAttribute(sourceLineNumbers, node.Name.LocalName, "Id"));
4895 + this.Core.Write(ErrorMessages.ExpectedAttribute(sourceLineNumbers, node.Name.LocalName, "Id"));
4896 }
4897
4898 int lastDisplay = 0;
@@ -4978,7 +4978,7 @@ namespace WixToolset.Core
4978
4979 if (null == id)
4980 {
4981 - this.Core.OnMessage(WixErrors.ExpectedAttribute(sourceLineNumbers, node.Name.LocalName, "Id"));
4981 + this.Core.Write(ErrorMessages.ExpectedAttribute(sourceLineNumbers, node.Name.LocalName, "Id"));
4982 id = Identifier.Invalid;
4983 }
4984
@@ -5074,7 +5074,7 @@ namespace WixToolset.Core
5074
5075 if (null == id)
5076 {
5077 - this.Core.OnMessage(WixErrors.ExpectedAttribute(sourceLineNumbers, node.Name.LocalName, "Id"));
5077 + this.Core.Write(ErrorMessages.ExpectedAttribute(sourceLineNumbers, node.Name.LocalName, "Id"));
5078 }
5079
5080 this.Core.ParseForExtensionElements(node);
@@ -5133,7 +5133,7 @@ namespace WixToolset.Core
5133 action = "!";
5134 break;
5135 default:
5136 - this.Core.OnMessage(WixErrors.IllegalAttributeValue(sourceLineNumbers, node.Name.LocalName, attrib.Name.LocalName, value, "create", "set", "remove"));
5136 + this.Core.Write(ErrorMessages.IllegalAttributeValue(sourceLineNumbers, node.Name.LocalName, attrib.Name.LocalName, value, "create", "set", "remove"));
5137 break;
5138 }
5139 }
@@ -5145,7 +5145,7 @@ namespace WixToolset.Core
5145 part = this.Core.GetAttributeValue(sourceLineNumbers, attrib);
5146 if (!Wix.Environment.TryParsePartType(part, out partType))
5147 {
5148 - this.Core.OnMessage(WixErrors.IllegalAttributeValue(sourceLineNumbers, node.Name.LocalName, "Part", part, "all", "first", "last"));
5148 + this.Core.Write(ErrorMessages.IllegalAttributeValue(sourceLineNumbers, node.Name.LocalName, "Part", part, "all", "first", "last"));
5149 }
5150 break;
5151 case "Permanent":
@@ -5178,14 +5178,14 @@ namespace WixToolset.Core
5178
5179 if (null == name)
5180 {
5181 - this.Core.OnMessage(WixErrors.ExpectedAttribute(sourceLineNumbers, node.Name.LocalName, "Name"));
5181 + this.Core.Write(ErrorMessages.ExpectedAttribute(sourceLineNumbers, node.Name.LocalName, "Name"));
5182 }
5183
5184 if (Wix.Environment.PartType.NotSet != partType)
5185 {
5186 if ("+" == action)
5187 {
5188 - this.Core.OnMessage(WixErrors.IllegalAttributeWithOtherAttribute(sourceLineNumbers, node.Name.LocalName, "Part", "Action", "create"));
5188 + this.Core.Write(ErrorMessages.IllegalAttributeWithOtherAttribute(sourceLineNumbers, node.Name.LocalName, "Part", "Action", "create"));
5189 }
5190
5191 switch (partType)
@@ -5248,7 +5248,7 @@ namespace WixToolset.Core
5248
5249 if (CompilerConstants.IntegerNotSet == id)
5250 {
5251 - this.Core.OnMessage(WixErrors.ExpectedAttribute(sourceLineNumbers, node.Name.LocalName, "Id"));
5251 + this.Core.Write(ErrorMessages.ExpectedAttribute(sourceLineNumbers, node.Name.LocalName, "Id"));
5252 id = CompilerConstants.IllegalInteger;
5253 }
5254
@@ -5288,7 +5288,7 @@ namespace WixToolset.Core
5288 YesNoType extensionAdvertise = this.Core.GetAttributeYesNoValue(sourceLineNumbers, attrib);
5289 if ((YesNoType.No == advertise && YesNoType.Yes == extensionAdvertise) || (YesNoType.Yes == advertise && YesNoType.No == extensionAdvertise))
5290 {
5291 - this.Core.OnMessage(WixErrors.AdvertiseStateMustMatch(sourceLineNumbers, extensionAdvertise.ToString(), advertise.ToString()));
5291 + this.Core.Write(ErrorMessages.AdvertiseStateMustMatch(sourceLineNumbers, extensionAdvertise.ToString(), advertise.ToString()));
5292 }
5293 advertise = extensionAdvertise;
5294 break;
@@ -5445,7 +5445,7 @@ namespace WixToolset.Core
5445 assemblyType = FileAssemblyType.Win32Assembly;
5446 break;
5447 default:
5448 - this.Core.OnMessage(WixErrors.IllegalAttributeValue(sourceLineNumbers, "File", "Assembly", assemblyValue, "no", "win32", ".net"));
5448 + this.Core.Write(ErrorMessages.IllegalAttributeValue(sourceLineNumbers, "File", "Assembly", assemblyValue, "no", "win32", ".net"));
5449 break;
5450 }
5451 }
@@ -5545,7 +5545,7 @@ namespace WixToolset.Core
5545 procArch = "ia64";
5546 break;
5547 default:
5548 - this.Core.OnMessage(WixErrors.IllegalAttributeValue(sourceLineNumbers, "File", "ProcessorArchitecture", procArchValue, "msil", "x86", "x64", "ia64"));
5548 + this.Core.Write(ErrorMessages.IllegalAttributeValue(sourceLineNumbers, "File", "ProcessorArchitecture", procArchValue, "msil", "x86", "x64", "ia64"));
5549 break;
5550 }
5551 }
@@ -5609,7 +5609,7 @@ namespace WixToolset.Core
5609 // the companion file cannot be the key path of a component
5610 if (YesNoType.Yes == keyPath)
5611 {
5612 - this.Core.OnMessage(WixErrors.IllegalAttributeWithOtherAttribute(sourceLineNumbers, node.Name.LocalName, "CompanionFile", "KeyPath", "yes"));
5612 + this.Core.Write(ErrorMessages.IllegalAttributeWithOtherAttribute(sourceLineNumbers, node.Name.LocalName, "CompanionFile", "KeyPath", "yes"));
5613 }
5614 }
5615
@@ -5618,7 +5618,7 @@ namespace WixToolset.Core
5618 name = Path.GetFileName(source);
5619 if (!this.Core.IsValidLongFilename(name, false))
5620 {
5621 - this.Core.OnMessage(WixErrors.IllegalLongFilename(sourceLineNumbers, node.Name.LocalName, "Source", name));
5621 + this.Core.Write(ErrorMessages.IllegalLongFilename(sourceLineNumbers, node.Name.LocalName, "Source", name));
5622 }
5623 }
5624
@@ -5641,32 +5641,32 @@ namespace WixToolset.Core
5641
5642 if (null != defaultVersion && null != companionFile)
5643 {
5644 - this.Core.OnMessage(WixErrors.IllegalAttributeWithOtherAttribute(sourceLineNumbers, node.Name.LocalName, "DefaultVersion", "CompanionFile", companionFile));
5644 + this.Core.Write(ErrorMessages.IllegalAttributeWithOtherAttribute(sourceLineNumbers, node.Name.LocalName, "DefaultVersion", "CompanionFile", companionFile));
5645 }
5646
5647 if (FileAssemblyType.NotAnAssembly == assemblyType)
5648 {
5649 if (null != assemblyManifest)
5650 {
5651 - this.Core.OnMessage(WixErrors.ExpectedAttribute(sourceLineNumbers, node.Name.LocalName, "Assembly", "AssemblyManifest"));
5651 + this.Core.Write(ErrorMessages.ExpectedAttribute(sourceLineNumbers, node.Name.LocalName, "Assembly", "AssemblyManifest"));
5652 }
5653
5654 if (null != assemblyApplication)
5655 {
5656 - this.Core.OnMessage(WixErrors.ExpectedAttribute(sourceLineNumbers, node.Name.LocalName, "Assembly", "AssemblyApplication"));
5656 + this.Core.Write(ErrorMessages.ExpectedAttribute(sourceLineNumbers, node.Name.LocalName, "Assembly", "AssemblyApplication"));
5657 }
5658 }
5659 else
5660 {
5661 if (FileAssemblyType.Win32Assembly == assemblyType && null == assemblyManifest)
5662 {
5663 - this.Core.OnMessage(WixErrors.ExpectedAttribute(sourceLineNumbers, node.Name.LocalName, "AssemblyManifest", "Assembly", "win32"));
5663 + this.Core.Write(ErrorMessages.ExpectedAttribute(sourceLineNumbers, node.Name.LocalName, "AssemblyManifest", "Assembly", "win32"));
5664 }
5665
5666 // allow "*" guid components to omit explicit KeyPath as they can have only one file and therefore this file is the keypath
5667 if (YesNoType.Yes != keyPath && "*" != componentGuid)
5668 {
5669 - this.Core.OnMessage(WixErrors.IllegalAttributeValueWithoutOtherAttribute(sourceLineNumbers, node.Name.LocalName, "Assembly", (FileAssemblyType.DotNetAssembly == assemblyType ? ".net" : "win32"), "KeyPath", "yes"));
5669 + this.Core.Write(ErrorMessages.IllegalAttributeValueWithoutOtherAttribute(sourceLineNumbers, node.Name.LocalName, "Assembly", (FileAssemblyType.DotNetAssembly == assemblyType ? ".net" : "win32"), "KeyPath", "yes"));
5670 }
5671 }
5672
@@ -5942,11 +5942,11 @@ namespace WixToolset.Core
5942 // Using both ShortName and Name will not always work due to a Windows Installer bug.
5943 if (null != shortName && null != name)
5944 {
5945 - this.Core.OnMessage(WixWarnings.FileSearchFileNameIssue(sourceLineNumbers, node.Name.LocalName, "ShortName", "Name"));
5945 + this.Core.Write(WarningMessages.FileSearchFileNameIssue(sourceLineNumbers, node.Name.LocalName, "ShortName", "Name"));
5946 }
5947 else if (null == shortName && null == name) // at least one name must be specified.
5948 {
5949 - this.Core.OnMessage(WixErrors.ExpectedAttribute(sourceLineNumbers, node.Name.LocalName, "Name"));
5949 + this.Core.Write(ErrorMessages.ExpectedAttribute(sourceLineNumbers, node.Name.LocalName, "Name"));
5950 }
5951
5952 if (this.Core.IsValidShortFilename(name, false))
@@ -5958,7 +5958,7 @@ namespace WixToolset.Core
5958 }
5959 else
5960 {
5961 - this.Core.OnMessage(WixErrors.IllegalAttributeValueWithOtherAttribute(sourceLineNumbers, node.Name.LocalName, "Name", name, "ShortName"));
5961 + this.Core.Write(ErrorMessages.IllegalAttributeValueWithOtherAttribute(sourceLineNumbers, node.Name.LocalName, "Name", name, "ShortName"));
5962 }
5963 }
5964
@@ -5981,7 +5981,7 @@ namespace WixToolset.Core
5981 // value must be specified and unique.
5982 if (isSameId)
5983 {
5984 - this.Core.OnMessage(WixErrors.UniqueFileSearchIdRequired(sourceLineNumbers, parentSignature, node.Name.LocalName));
5984 + this.Core.Write(ErrorMessages.UniqueFileSearchIdRequired(sourceLineNumbers, parentSignature, node.Name.LocalName));
5985 }
5986 }
5987 else if (parentDepth > 1)
@@ -5990,7 +5990,7 @@ namespace WixToolset.Core
5990 // as the parent DirectorySearch if AssignToProperty is not set.
5991 if (!isSameId)
5992 {
5993 - this.Core.OnMessage(WixErrors.IllegalSearchIdForParentDepth(sourceLineNumbers, id.Id, parentSignature));
5993 + this.Core.Write(ErrorMessages.IllegalSearchIdForParentDepth(sourceLineNumbers, id.Id, parentSignature));
5994 }
5995 }
5996
@@ -6284,7 +6284,7 @@ namespace WixToolset.Core
6284 }
6285 else
6286 {
6287 - this.Core.OnMessage(WixErrors.IllegalAttributeValue(sourceLineNumbers, node.Name.LocalName, attrib.Name.LocalName, action, "default", "disable", "enable", "hide", "show"));
6287 + this.Core.Write(ErrorMessages.IllegalAttributeValue(sourceLineNumbers, node.Name.LocalName, attrib.Name.LocalName, action, "default", "disable", "enable", "hide", "show"));
6288 }
6289 }
6290 }
@@ -6333,7 +6333,7 @@ namespace WixToolset.Core
6333 if (null == condition || 0 == condition.Length)
6334 {
6335 condition = null;
6336 - this.Core.OnMessage(WixErrors.ConditionExpected(sourceLineNumbers, node.Name.LocalName));
6336 + this.Core.Write(ErrorMessages.ConditionExpected(sourceLineNumbers, node.Name.LocalName));
6337 }
6338
6339 switch (parentElementLocalName)
@@ -6341,7 +6341,7 @@ namespace WixToolset.Core
6341 case "Control":
6342 if (null == action)
6343 {
6344 - this.Core.OnMessage(WixErrors.ExpectedAttribute(sourceLineNumbers, node.Name.LocalName, "Action"));
6344 + this.Core.Write(ErrorMessages.ExpectedAttribute(sourceLineNumbers, node.Name.LocalName, "Action"));
6345 }
6346
6347 if (!this.Core.EncounteredError)
@@ -6356,7 +6356,7 @@ namespace WixToolset.Core
6356 case "Feature":
6357 if (CompilerConstants.IntegerNotSet == level)
6358 {
6359 - this.Core.OnMessage(WixErrors.ExpectedAttribute(sourceLineNumbers, node.Name.LocalName, "Level"));
6359 + this.Core.Write(ErrorMessages.ExpectedAttribute(sourceLineNumbers, node.Name.LocalName, "Level"));
6360 level = CompilerConstants.IllegalInteger;
6361 }
6362
@@ -6372,7 +6372,7 @@ namespace WixToolset.Core
6372 case "Product":
6373 if (null == message)
6374 {
6375 - this.Core.OnMessage(WixErrors.ExpectedAttribute(sourceLineNumbers, node.Name.LocalName, "Message"));
6375 + this.Core.Write(ErrorMessages.ExpectedAttribute(sourceLineNumbers, node.Name.LocalName, "Message"));
6376 }
6377
6378 if (!this.Core.EncounteredError)
@@ -6437,7 +6437,7 @@ namespace WixToolset.Core
6437 action = MsiInterop.MsidbIniFileActionRemoveTag;
6438 break;
6439 default:
6440 - this.Core.OnMessage(WixErrors.IllegalAttributeValue(sourceLineNumbers, node.Name.LocalName, "Action", actionValue, "addLine", "addTag", "createLine", "removeLine", "removeTag"));
6440 + this.Core.Write(ErrorMessages.IllegalAttributeValue(sourceLineNumbers, node.Name.LocalName, "Action", actionValue, "addLine", "addTag", "createLine", "removeLine", "removeTag"));
6441 break;
6442 }
6443 }
@@ -6473,18 +6473,18 @@ namespace WixToolset.Core
6473
6474 if (CompilerConstants.IntegerNotSet == action)
6475 {
6476 - this.Core.OnMessage(WixErrors.ExpectedAttribute(sourceLineNumbers, node.Name.LocalName, "Action"));
6476 + this.Core.Write(ErrorMessages.ExpectedAttribute(sourceLineNumbers, node.Name.LocalName, "Action"));
6477 action = CompilerConstants.IllegalInteger;
6478 }
6479
6480 if (null == key)
6481 {
6482 - this.Core.OnMessage(WixErrors.ExpectedAttribute(sourceLineNumbers, node.Name.LocalName, "Key"));
6482 + this.Core.Write(ErrorMessages.ExpectedAttribute(sourceLineNumbers, node.Name.LocalName, "Key"));
6483 }
6484
6485 if (null == name)
6486 {
6487 - this.Core.OnMessage(WixErrors.ExpectedAttribute(sourceLineNumbers, node.Name.LocalName, "Name"));
6487 + this.Core.Write(ErrorMessages.ExpectedAttribute(sourceLineNumbers, node.Name.LocalName, "Name"));
6488 }
6489 else if (0 < name.Length)
6490 {
@@ -6497,7 +6497,7 @@ namespace WixToolset.Core
6497 }
6498 else
6499 {
6500 - this.Core.OnMessage(WixErrors.IllegalAttributeValueWithOtherAttribute(sourceLineNumbers, node.Name.LocalName, "Name", name, "ShortName"));
6500 + this.Core.Write(ErrorMessages.IllegalAttributeValueWithOtherAttribute(sourceLineNumbers, node.Name.LocalName, "Name", name, "ShortName"));
6501 }
6502 }
6503 else // generate a short file name.
@@ -6511,7 +6511,7 @@ namespace WixToolset.Core
6511
6512 if (null == section)
6513 {
6514 - this.Core.OnMessage(WixErrors.ExpectedAttribute(sourceLineNumbers, node.Name.LocalName, "Section"));
6514 + this.Core.Write(ErrorMessages.ExpectedAttribute(sourceLineNumbers, node.Name.LocalName, "Section"));
6515 }
6516
6517 if (null == id)
@@ -6529,7 +6529,7 @@ namespace WixToolset.Core
6529 {
6530 if (null == value)
6531 {
6532 - this.Core.OnMessage(WixErrors.ExpectedAttribute(sourceLineNumbers, node.Name.LocalName, "Value"));
6532 + this.Core.Write(ErrorMessages.ExpectedAttribute(sourceLineNumbers, node.Name.LocalName, "Value"));
6533 }
6534
6535 tableName = TupleDefinitionType.IniFile;
@@ -6606,7 +6606,7 @@ namespace WixToolset.Core
6606 type = 2;
6607 break;
6608 default:
6609 - this.Core.OnMessage(WixErrors.IllegalAttributeValue(sourceLineNumbers, node.Name.LocalName, "Type", typeValue, "directory", "file", "registry"));
6609 + this.Core.Write(ErrorMessages.IllegalAttributeValue(sourceLineNumbers, node.Name.LocalName, "Type", typeValue, "directory", "file", "registry"));
6610 break;
6611 }
6612 }
@@ -6624,12 +6624,12 @@ namespace WixToolset.Core
6624
6625 if (null == key)
6626 {
6627 - this.Core.OnMessage(WixErrors.ExpectedAttribute(sourceLineNumbers, node.Name.LocalName, "Key"));
6627 + this.Core.Write(ErrorMessages.ExpectedAttribute(sourceLineNumbers, node.Name.LocalName, "Key"));
6628 }
6629
6630 if (null == name)
6631 {
6632 - this.Core.OnMessage(WixErrors.ExpectedAttribute(sourceLineNumbers, node.Name.LocalName, "Name"));
6632 + this.Core.Write(ErrorMessages.ExpectedAttribute(sourceLineNumbers, node.Name.LocalName, "Name"));
6633 }
6634 else if (0 < name.Length)
6635 {
@@ -6642,7 +6642,7 @@ namespace WixToolset.Core
6642 }
6643 else
6644 {
6645 - this.Core.OnMessage(WixErrors.IllegalAttributeValueWithOtherAttribute(sourceLineNumbers, node.Name.LocalName, "Name", name, "ShortName"));
6645 + this.Core.Write(ErrorMessages.IllegalAttributeValueWithOtherAttribute(sourceLineNumbers, node.Name.LocalName, "Name", name, "ShortName"));
6646 }
6647 }
6648 else if (null == shortName) // generate a short file name.
@@ -6653,7 +6653,7 @@ namespace WixToolset.Core
6653
6654 if (null == section)
6655 {
6656 - this.Core.OnMessage(WixErrors.ExpectedAttribute(sourceLineNumbers, node.Name.LocalName, "Section"));
6656 + this.Core.Write(ErrorMessages.ExpectedAttribute(sourceLineNumbers, node.Name.LocalName, "Section"));
6657 }
6658
6659 if (null == id)
@@ -6674,7 +6674,7 @@ namespace WixToolset.Core
6674 case "DirectorySearch":
6675 if (oneChild)
6676 {
6677 - this.Core.OnMessage(WixErrors.TooManySearchElements(childSourceLineNumbers, node.Name.LocalName));
6677 + this.Core.Write(ErrorMessages.TooManySearchElements(childSourceLineNumbers, node.Name.LocalName));
6678 }
6679 oneChild = true;
6680
@@ -6684,7 +6684,7 @@ namespace WixToolset.Core
6684 case "DirectorySearchRef":
6685 if (oneChild)
6686 {
6687 - this.Core.OnMessage(WixErrors.TooManySearchElements(childSourceLineNumbers, node.Name.LocalName));
6687 + this.Core.Write(ErrorMessages.TooManySearchElements(childSourceLineNumbers, node.Name.LocalName));
6688 }
6689 oneChild = true;
6690 signature = this.ParseDirectorySearchRefElement(child, id.Id);
@@ -6692,7 +6692,7 @@ namespace WixToolset.Core
6692 case "FileSearch":
6693 if (oneChild)
6694 {
6695 - this.Core.OnMessage(WixErrors.TooManySearchElements(sourceLineNumbers, node.Name.LocalName));
6695 + this.Core.Write(ErrorMessages.TooManySearchElements(sourceLineNumbers, node.Name.LocalName));
6696 }
6697 oneChild = true;
6698 signature = this.ParseFileSearchElement(child, id.Id, false, CompilerConstants.IntegerNotSet);
@@ -6701,7 +6701,7 @@ namespace WixToolset.Core
6701 case "FileSearchRef":
6702 if (oneChild)
6703 {
6704 - this.Core.OnMessage(WixErrors.TooManySearchElements(sourceLineNumbers, node.Name.LocalName));
6704 + this.Core.Write(ErrorMessages.TooManySearchElements(sourceLineNumbers, node.Name.LocalName));
6705 }
6706 oneChild = true;
6707 string newId = this.ParseSimpleRefElement(child, "Signature"); // FileSearch signatures override parent signatures
@@ -6768,7 +6768,7 @@ namespace WixToolset.Core
6768
6769 if (null == shared)
6770 {
6771 - this.Core.OnMessage(WixErrors.ExpectedAttribute(sourceLineNumbers, node.Name.LocalName, "Shared"));
6771 + this.Core.Write(ErrorMessages.ExpectedAttribute(sourceLineNumbers, node.Name.LocalName, "Shared"));
6772 }
6773
6774 this.Core.ParseForExtensionElements(node);
@@ -6866,12 +6866,12 @@ namespace WixToolset.Core
6866
6867 if (null == id)
6868 {
6869 - this.Core.OnMessage(WixErrors.ExpectedAttribute(sourceLineNumbers, node.Name.LocalName, "Id"));
6869 + this.Core.Write(ErrorMessages.ExpectedAttribute(sourceLineNumbers, node.Name.LocalName, "Id"));
6870 id = Identifier.Invalid;
6871 }
6872 else if (40 < id.Id.Length)
6873 {
6874 - this.Core.OnMessage(WixErrors.StreamNameTooLong(sourceLineNumbers, node.Name.LocalName, "Id", id.Id, id.Id.Length, 40));
6874 + this.Core.Write(ErrorMessages.StreamNameTooLong(sourceLineNumbers, node.Name.LocalName, "Id", id.Id, id.Id.Length, 40));
6875
6876 // No need to check for modularization problems since DigitalSignature and thus DigitalCertificate
6877 // currently have no usage in merge modules.
@@ -6879,7 +6879,7 @@ namespace WixToolset.Core
6879
6880 if (null == sourceFile)
6881 {
6882 - this.Core.OnMessage(WixErrors.ExpectedAttribute(sourceLineNumbers, node.Name.LocalName, "SourceFile"));
6882 + this.Core.Write(ErrorMessages.ExpectedAttribute(sourceLineNumbers, node.Name.LocalName, "SourceFile"));
6883 }
6884
6885 this.Core.ParseForExtensionElements(node);
@@ -6952,7 +6952,7 @@ namespace WixToolset.Core
6952
6953 if (null == certificateId)
6954 {
6955 - this.Core.OnMessage(WixErrors.ExpectedElement(sourceLineNumbers, node.Name.LocalName, "DigitalCertificate"));
6955 + this.Core.Write(ErrorMessages.ExpectedElement(sourceLineNumbers, node.Name.LocalName, "DigitalCertificate"));
6956 }
6957
6958 if (!this.Core.EncounteredError)
@@ -6985,13 +6985,13 @@ namespace WixToolset.Core
6985 string upgradeCode = contextValues["UpgradeCode"];
6986 if (String.IsNullOrEmpty(upgradeCode))
6987 {
6988 - this.Core.OnMessage(WixErrors.ParentElementAttributeRequired(sourceLineNumbers, "Product", "UpgradeCode", node.Name.LocalName));
6988 + this.Core.Write(ErrorMessages.ParentElementAttributeRequired(sourceLineNumbers, "Product", "UpgradeCode", node.Name.LocalName));
6989 }
6990
6991 string productVersion = contextValues["ProductVersion"];
6992 if (String.IsNullOrEmpty(productVersion))
6993 {
6994 - this.Core.OnMessage(WixErrors.ParentElementAttributeRequired(sourceLineNumbers, "Product", "Version", node.Name.LocalName));
6994 + this.Core.Write(ErrorMessages.ParentElementAttributeRequired(sourceLineNumbers, "Product", "Version", node.Name.LocalName));
6995 }
6996
6997 string productLanguage = contextValues["ProductLanguage"];
@@ -7056,27 +7056,27 @@ namespace WixToolset.Core
7056
7057 if (!allowDowngrades && String.IsNullOrEmpty(downgradeErrorMessage))
7058 {
7059 - this.Core.OnMessage(WixErrors.ExpectedAttribute(sourceLineNumbers, node.Name.LocalName, "DowngradeErrorMessage", "AllowDowngrades", "yes", true));
7059 + this.Core.Write(ErrorMessages.ExpectedAttribute(sourceLineNumbers, node.Name.LocalName, "DowngradeErrorMessage", "AllowDowngrades", "yes", true));
7060 }
7061
7062 if (allowDowngrades && !String.IsNullOrEmpty(downgradeErrorMessage))
7063 {
7064 - this.Core.OnMessage(WixErrors.IllegalAttributeWithOtherAttribute(sourceLineNumbers, node.Name.LocalName, "DowngradeErrorMessage", "AllowDowngrades", "yes"));
7064 + this.Core.Write(ErrorMessages.IllegalAttributeWithOtherAttribute(sourceLineNumbers, node.Name.LocalName, "DowngradeErrorMessage", "AllowDowngrades", "yes"));
7065 }
7066
7067 if (allowDowngrades && allowSameVersionUpgrades)
7068 {
7069 - this.Core.OnMessage(WixErrors.IllegalAttributeWithOtherAttribute(sourceLineNumbers, node.Name.LocalName, "AllowSameVersionUpgrades", "AllowDowngrades", "yes"));
7069 + this.Core.Write(ErrorMessages.IllegalAttributeWithOtherAttribute(sourceLineNumbers, node.Name.LocalName, "AllowSameVersionUpgrades", "AllowDowngrades", "yes"));
7070 }
7071
7072 if (blockUpgrades && String.IsNullOrEmpty(disallowUpgradeErrorMessage))
7073 {
7074 - this.Core.OnMessage(WixErrors.ExpectedAttribute(sourceLineNumbers, node.Name.LocalName, "DisallowUpgradeErrorMessage", "Disallow", "yes", true));
7074 + this.Core.Write(ErrorMessages.ExpectedAttribute(sourceLineNumbers, node.Name.LocalName, "DisallowUpgradeErrorMessage", "Disallow", "yes", true));
7075 }
7076
7077 if (!blockUpgrades && !String.IsNullOrEmpty(disallowUpgradeErrorMessage))
7078 {
7079 - this.Core.OnMessage(WixErrors.IllegalAttributeWithOtherAttribute(sourceLineNumbers, node.Name.LocalName, "DisallowUpgradeErrorMessage", "Disallow", "yes"));
7079 + this.Core.Write(ErrorMessages.IllegalAttributeWithOtherAttribute(sourceLineNumbers, node.Name.LocalName, "DisallowUpgradeErrorMessage", "Disallow", "yes"));
7080 }
7081
7082 if (!this.Core.EncounteredError)
@@ -7207,7 +7207,7 @@ namespace WixToolset.Core
7207 Wix.CompressionLevelType compressionLevelType;
7208 if (!Wix.Enums.TryParseCompressionLevelType(compressionLevelString, out compressionLevelType))
7209 {
7210 - this.Core.OnMessage(WixErrors.IllegalAttributeValue(sourceLineNumbers, node.Name.LocalName, attrib.Name.LocalName, compressionLevelString, "high", "low", "medium", "mszip", "none"));
7210 + this.Core.Write(ErrorMessages.IllegalAttributeValue(sourceLineNumbers, node.Name.LocalName, attrib.Name.LocalName, compressionLevelString, "high", "low", "medium", "mszip", "none"));
7211 }
7212 else
7213 {
@@ -7226,12 +7226,12 @@ namespace WixToolset.Core
7226 case "src":
7227 if (null != layout)
7228 {
7229 - this.Core.OnMessage(WixErrors.IllegalAttributeWithOtherAttribute(sourceLineNumbers, node.Name.LocalName, "Layout", "src"));
7229 + this.Core.Write(ErrorMessages.IllegalAttributeWithOtherAttribute(sourceLineNumbers, node.Name.LocalName, "Layout", "src"));
7230 }
7231
7232 if ("src" == attrib.Name.LocalName)
7233 {
7234 - this.Core.OnMessage(WixWarnings.DeprecatedAttribute(sourceLineNumbers, node.Name.LocalName, attrib.Name.LocalName, "Layout"));
7234 + this.Core.Write(WarningMessages.DeprecatedAttribute(sourceLineNumbers, node.Name.LocalName, attrib.Name.LocalName, "Layout"));
7235 }
7236 layout = this.Core.GetAttributeValue(sourceLineNumbers, attrib);
7237 break;
@@ -7254,7 +7254,7 @@ namespace WixToolset.Core
7254
7255 if (CompilerConstants.IntegerNotSet == id)
7256 {
7257 - this.Core.OnMessage(WixErrors.ExpectedAttribute(sourceLineNumbers, node.Name.LocalName, "Id"));
7257 + this.Core.Write(ErrorMessages.ExpectedAttribute(sourceLineNumbers, node.Name.LocalName, "Id"));
7258 id = CompilerConstants.IllegalInteger;
7259 }
7260
@@ -7264,13 +7264,13 @@ namespace WixToolset.Core
7264 {
7265 if (null == cabinet)
7266 {
7267 - this.Core.OnMessage(WixErrors.ExpectedAttribute(sourceLineNumbers, node.Name.LocalName, "Cabinet", "EmbedCab", "yes"));
7267 + this.Core.Write(ErrorMessages.ExpectedAttribute(sourceLineNumbers, node.Name.LocalName, "Cabinet", "EmbedCab", "yes"));
7268 }
7269 else
7270 {
7271 if (62 < cabinet.Length)
7272 {
7273 - this.Core.OnMessage(WixErrors.MediaEmbeddedCabinetNameTooLong(sourceLineNumbers, node.Name.LocalName, "Cabinet", cabinet, cabinet.Length));
7273 + this.Core.Write(ErrorMessages.MediaEmbeddedCabinetNameTooLong(sourceLineNumbers, node.Name.LocalName, "Cabinet", cabinet, cabinet.Length));
7274 }
7275
7276 cabinet = String.Concat("#", cabinet);
@@ -7284,7 +7284,7 @@ namespace WixToolset.Core
7284 // WiX variables in the name will trip the "not a valid 8.3 name" switch, so let them through
7285 if (!Common.WixVariableRegex.Match(cabinet).Success)
7286 {
7287 - this.Core.OnMessage(WixWarnings.MediaExternalCabinetFilenameIllegal(sourceLineNumbers, node.Name.LocalName, "Cabinet", cabinet));
7287 + this.Core.Write(WarningMessages.MediaExternalCabinetFilenameIllegal(sourceLineNumbers, node.Name.LocalName, "Cabinet", cabinet));
7288 }
7289 }
7290 }
@@ -7292,7 +7292,7 @@ namespace WixToolset.Core
7292
7293 if (null != compressionLevel && null == cabinet)
7294 {
7295 - this.Core.OnMessage(WixErrors.ExpectedAttribute(sourceLineNumbers, node.Name.LocalName, "Cabinet", "CompressionLevel"));
7295 + this.Core.Write(ErrorMessages.ExpectedAttribute(sourceLineNumbers, node.Name.LocalName, "Cabinet", "CompressionLevel"));
7296 }
7297
7298 if (patch)
@@ -7314,11 +7314,11 @@ namespace WixToolset.Core
7314 case "DigitalSignature":
7315 if (YesNoType.Yes == embedCab)
7316 {
7317 - this.Core.OnMessage(WixErrors.SignedEmbeddedCabinet(childSourceLineNumbers));
7317 + this.Core.Write(ErrorMessages.SignedEmbeddedCabinet(childSourceLineNumbers));
7318 }
7319 else if (null == cabinet)
7320 {
7321 - this.Core.OnMessage(WixErrors.ExpectedSignedCabinetName(childSourceLineNumbers));
7321 + this.Core.Write(ErrorMessages.ExpectedSignedCabinetName(childSourceLineNumbers));
7322 }
7323 else
7324 {
@@ -7428,11 +7428,11 @@ namespace WixToolset.Core
7428 // reason for having multiple cabients. External cabinet files must also be valid file names.
7429 if (exampleCabinetName.Equals(authoredCabinetTemplateValue) || !this.Core.IsValidLongFilename(exampleCabinetName, false))
7430 {
7431 - this.Core.OnMessage(WixErrors.InvalidCabinetTemplate(sourceLineNumbers, cabinetTemplate));
7431 + this.Core.Write(ErrorMessages.InvalidCabinetTemplate(sourceLineNumbers, cabinetTemplate));
7432 }
7433 else if (!this.Core.IsValidShortFilename(exampleCabinetName, false) && !Common.WixVariableRegex.Match(exampleCabinetName).Success) // ignore short names with wix variables because it rarely works out.
7434 {
7435 - this.Core.OnMessage(WixWarnings.MediaExternalCabinetFilenameIllegal(sourceLineNumbers, node.Name.LocalName, "CabinetTemplate", cabinetTemplate));
7435 + this.Core.Write(WarningMessages.MediaExternalCabinetFilenameIllegal(sourceLineNumbers, node.Name.LocalName, "CabinetTemplate", cabinetTemplate));
7436 }
7437 }
7438 break;
@@ -7442,21 +7442,21 @@ namespace WixToolset.Core
7442 {
7443 if (!Wix.Enums.TryParseCompressionLevelType(compressionLevel, out compressionLevelType))
7444 {
7445 - this.Core.OnMessage(WixErrors.IllegalAttributeValue(sourceLineNumbers, node.Name.LocalName, attrib.Name.LocalName, compressionLevel, "high", "low", "medium", "mszip", "none"));
7445 + this.Core.Write(ErrorMessages.IllegalAttributeValue(sourceLineNumbers, node.Name.LocalName, attrib.Name.LocalName, compressionLevel, "high", "low", "medium", "mszip", "none"));
7446 }
7447 }
7448 break;
7449 case "DiskPrompt":
7450 diskPrompt = this.Core.GetAttributeValue(sourceLineNumbers, attrib);
7451 this.Core.CreateSimpleReference(sourceLineNumbers, "Property", "DiskPrompt"); // ensure the output has a DiskPrompt Property defined
7452 - this.Core.OnMessage(WixWarnings.ReservedAttribute(sourceLineNumbers, node.Name.LocalName, attrib.Name.LocalName));
7452 + this.Core.Write(WarningMessages.ReservedAttribute(sourceLineNumbers, node.Name.LocalName, attrib.Name.LocalName));
7453 break;
7454 case "EmbedCab":
7455 embedCab = this.Core.GetAttributeYesNoValue(sourceLineNumbers, attrib);
7456 break;
7457 case "VolumeLabel":
7458 volumeLabel = this.Core.GetAttributeValue(sourceLineNumbers, attrib);
7459 - this.Core.OnMessage(WixWarnings.ReservedAttribute(sourceLineNumbers, node.Name.LocalName, attrib.Name.LocalName));
7459 + this.Core.Write(WarningMessages.ReservedAttribute(sourceLineNumbers, node.Name.LocalName, attrib.Name.LocalName));
7460 break;
7461 case "MaximumUncompressedMediaSize":
7462 maximumUncompressedMediaSize = this.Core.GetAttributeIntegerValue(sourceLineNumbers, attrib, 1, int.MaxValue);
@@ -7582,22 +7582,22 @@ namespace WixToolset.Core
7582
7583 if (null == id)
7584 {
7585 - this.Core.OnMessage(WixErrors.ExpectedAttribute(sourceLineNumbers, node.Name.LocalName, "Id"));
7585 + this.Core.Write(ErrorMessages.ExpectedAttribute(sourceLineNumbers, node.Name.LocalName, "Id"));
7586 }
7587
7588 if (null == language)
7589 {
7590 - this.Core.OnMessage(WixErrors.ExpectedAttribute(sourceLineNumbers, node.Name.LocalName, "Language"));
7590 + this.Core.Write(ErrorMessages.ExpectedAttribute(sourceLineNumbers, node.Name.LocalName, "Language"));
7591 }
7592
7593 if (null == sourceFile)
7594 {
7595 - this.Core.OnMessage(WixErrors.ExpectedAttribute(sourceLineNumbers, node.Name.LocalName, "SourceFile"));
7595 + this.Core.Write(ErrorMessages.ExpectedAttribute(sourceLineNumbers, node.Name.LocalName, "SourceFile"));
7596 }
7597
7598 if (CompilerConstants.IntegerNotSet == diskId)
7599 {
7600 - this.Core.OnMessage(WixErrors.ExpectedAttributeInElementOrParent(sourceLineNumbers, node.Name.LocalName, "DiskId", "Directory"));
7600 + this.Core.Write(ErrorMessages.ExpectedAttributeInElementOrParent(sourceLineNumbers, node.Name.LocalName, "DiskId", "Directory"));
7601 diskId = CompilerConstants.IllegalInteger;
7602 }
7603
@@ -7688,7 +7688,7 @@ namespace WixToolset.Core
7688
7689 if (null == name)
7690 {
7691 - this.Core.OnMessage(WixErrors.ExpectedAttribute(sourceLineNumbers, node.Name.LocalName, "Name"));
7691 + this.Core.Write(ErrorMessages.ExpectedAttribute(sourceLineNumbers, node.Name.LocalName, "Name"));
7692 }
7693 else // need to hex encode these characters
7694 {
@@ -7699,7 +7699,7 @@ namespace WixToolset.Core
7699
7700 if (null == value)
7701 {
7702 - this.Core.OnMessage(WixErrors.ExpectedAttribute(sourceLineNumbers, node.Name.LocalName, "Value"));
7702 + this.Core.Write(ErrorMessages.ExpectedAttribute(sourceLineNumbers, node.Name.LocalName, "Value"));
7703 }
7704 else // need to hex encode these characters
7705 {
@@ -7751,7 +7751,7 @@ namespace WixToolset.Core
7751
7752 if (null == id)
7753 {
7754 - this.Core.OnMessage(WixErrors.ExpectedAttribute(sourceLineNumbers, node.Name.LocalName, "Id"));
7754 + this.Core.Write(ErrorMessages.ExpectedAttribute(sourceLineNumbers, node.Name.LocalName, "Id"));
7755 }
7756
7757 this.Core.ParseForExtensionElements(node);
@@ -7806,7 +7806,7 @@ namespace WixToolset.Core
7806
7807 if (null == contentType)
7808 {
7809 - this.Core.OnMessage(WixErrors.ExpectedAttribute(sourceLineNumbers, node.Name.LocalName, "ContentType"));
7809 + this.Core.Write(ErrorMessages.ExpectedAttribute(sourceLineNumbers, node.Name.LocalName, "ContentType"));
7810 }
7811
7812 // if the advertise state has not been set, default to non-advertised
@@ -7821,7 +7821,7 @@ namespace WixToolset.Core
7821 {
7822 if (YesNoType.Yes != parentAdvertised)
7823 {
7824 - this.Core.OnMessage(WixErrors.AdvertiseStateMustMatch(sourceLineNumbers, advertise.ToString(), parentAdvertised.ToString()));
7824 + this.Core.Write(ErrorMessages.AdvertiseStateMustMatch(sourceLineNumbers, advertise.ToString(), parentAdvertised.ToString()));
7825 }
7826
7827 if (!this.Core.EncounteredError)
@@ -7836,7 +7836,7 @@ namespace WixToolset.Core
7836 {
7837 if (YesNoType.Yes == returnContentType && YesNoType.Yes == parentAdvertised)
7838 {
7839 - this.Core.OnMessage(WixErrors.CannotDefaultMismatchedAdvertiseStates(sourceLineNumbers));
7839 + this.Core.Write(ErrorMessages.CannotDefaultMismatchedAdvertiseStates(sourceLineNumbers));
7840 }
7841
7842 this.Core.CreateRegistryRow(sourceLineNumbers, MsiInterop.MsidbRegistryRootClassesRoot, String.Concat("MIME\\Database\\Content Type\\", contentType), "Extension", String.Concat(".", extension), componentId);
@@ -7873,7 +7873,7 @@ namespace WixToolset.Core
7873 this.activeName = this.Core.GetAttributeValue(sourceLineNumbers, attrib);
7874 if ("PUT-MODULE-NAME-HERE" == this.activeName)
7875 {
7876 - this.Core.OnMessage(WixWarnings.PlaceholderValue(sourceLineNumbers, node.Name.LocalName, attrib.Name.LocalName, this.activeName));
7876 + this.Core.Write(WarningMessages.PlaceholderValue(sourceLineNumbers, node.Name.LocalName, attrib.Name.LocalName, this.activeName));
7877 }
7878 else
7879 {
@@ -7885,7 +7885,7 @@ namespace WixToolset.Core
7885 break;
7886 case "Guid":
7887 moduleId = this.Core.GetAttributeGuidValue(sourceLineNumbers, attrib, false);
7888 - this.Core.OnMessage(WixWarnings.DeprecatedModuleGuidAttribute(sourceLineNumbers));
7888 + this.Core.Write(WarningMessages.DeprecatedModuleGuidAttribute(sourceLineNumbers));
7889 break;
7890 case "Language":
7891 this.activeLanguage = this.Core.GetAttributeLocalizableIntegerValue(sourceLineNumbers, attrib, 0, short.MaxValue);
@@ -7906,21 +7906,21 @@ namespace WixToolset.Core
7906
7907 if (null == this.activeName)
7908 {
7909 - this.Core.OnMessage(WixErrors.ExpectedAttribute(sourceLineNumbers, node.Name.LocalName, "Id"));
7909 + this.Core.Write(ErrorMessages.ExpectedAttribute(sourceLineNumbers, node.Name.LocalName, "Id"));
7910 }
7911
7912 if (null == this.activeLanguage)
7913 {
7914 - this.Core.OnMessage(WixErrors.ExpectedAttribute(sourceLineNumbers, node.Name.LocalName, "Language"));
7914 + this.Core.Write(ErrorMessages.ExpectedAttribute(sourceLineNumbers, node.Name.LocalName, "Language"));
7915 }
7916
7917 if (null == version)
7918 {
7919 - this.Core.OnMessage(WixErrors.ExpectedAttribute(sourceLineNumbers, node.Name.LocalName, "Version"));
7919 + this.Core.Write(ErrorMessages.ExpectedAttribute(sourceLineNumbers, node.Name.LocalName, "Version"));
7920 }
7921 else if (!CompilerCore.IsValidModuleOrBundleVersion(version))
7922 {
7923 - this.Core.OnMessage(WixWarnings.InvalidModuleOrBundleVersion(sourceLineNumbers, "Module", version));
7923 + this.Core.Write(WarningMessages.InvalidModuleOrBundleVersion(sourceLineNumbers, "Module", version));
7924 }
7925
7926 try
@@ -8119,7 +8119,7 @@ namespace WixToolset.Core
8119
8120 if (null == this.activeName)
8121 {
8122 - this.Core.OnMessage(WixErrors.ExpectedAttribute(sourceLineNumbers, node.Name.LocalName, "Id"));
8122 + this.Core.Write(ErrorMessages.ExpectedAttribute(sourceLineNumbers, node.Name.LocalName, "Id"));
8123 }
8124
8125 this.Core.CreateActiveSection(this.activeName, SectionType.PatchCreation, codepage, this.Context.CompilationId);
@@ -8250,13 +8250,13 @@ namespace WixToolset.Core
8250
8251 if (null == name)
8252 {
8253 - this.Core.OnMessage(WixErrors.ExpectedAttribute(sourceLineNumbers, node.Name.LocalName, "Name"));
8253 + this.Core.Write(ErrorMessages.ExpectedAttribute(sourceLineNumbers, node.Name.LocalName, "Name"));
8254 }
8255 else if (0 < name.Length)
8256 {
8257 if (8 < name.Length) // check the length
8258 {
8259 - this.Core.OnMessage(WixErrors.FamilyNameTooLong(sourceLineNumbers, node.Name.LocalName, "Name", name, name.Length));
8259 + this.Core.Write(ErrorMessages.FamilyNameTooLong(sourceLineNumbers, node.Name.LocalName, "Name", name, name.Length));
8260 }
8261 else // check for illegal characters
8262 {
@@ -8264,7 +8264,7 @@ namespace WixToolset.Core
8264 {
8265 if (!Char.IsLetterOrDigit(character) && '_' != character)
8266 {
8267 - this.Core.OnMessage(WixErrors.IllegalFamilyName(sourceLineNumbers, node.Name.LocalName, "Name", name));
8267 + this.Core.Write(ErrorMessages.IllegalFamilyName(sourceLineNumbers, node.Name.LocalName, "Name", name));
8268 }
8269 }
8270 }
@@ -8338,19 +8338,19 @@ namespace WixToolset.Core
8338 upgrade = this.Core.GetAttributeValue(sourceLineNumbers, attrib);
8339 if (13 < upgrade.Length)
8340 {
8341 - this.Core.OnMessage(WixErrors.IdentifierTooLongError(sourceLineNumbers, node.Name.LocalName, "Id", upgrade, 13));
8341 + this.Core.Write(ErrorMessages.IdentifierTooLongError(sourceLineNumbers, node.Name.LocalName, "Id", upgrade, 13));
8342 }
8343 break;
8344 case "SourceFile":
8345 case "src":
8346 if (null != sourceFile)
8347 {
8348 - this.Core.OnMessage(WixErrors.IllegalAttributeWithOtherAttribute(sourceLineNumbers, node.Name.LocalName, "src", "SourceFile"));
8348 + this.Core.Write(ErrorMessages.IllegalAttributeWithOtherAttribute(sourceLineNumbers, node.Name.LocalName, "src", "SourceFile"));
8349 }
8350
8351 if ("src" == attrib.Name.LocalName)
8352 {
8353 - this.Core.OnMessage(WixWarnings.DeprecatedAttribute(sourceLineNumbers, node.Name.LocalName, attrib.Name.LocalName, "SourceFile"));
8353 + this.Core.Write(WarningMessages.DeprecatedAttribute(sourceLineNumbers, node.Name.LocalName, attrib.Name.LocalName, "SourceFile"));
8354 }
8355 sourceFile = this.Core.GetAttributeValue(sourceLineNumbers, attrib);
8356 break;
@@ -8358,12 +8358,12 @@ namespace WixToolset.Core
8358 case "srcPatch":
8359 if (null != sourcePatch)
8360 {
8361 - this.Core.OnMessage(WixErrors.IllegalAttributeWithOtherAttribute(sourceLineNumbers, node.Name.LocalName, "srcPatch", "SourcePatch"));
8361 + this.Core.Write(ErrorMessages.IllegalAttributeWithOtherAttribute(sourceLineNumbers, node.Name.LocalName, "srcPatch", "SourcePatch"));
8362 }
8363
8364 if ("srcPatch" == attrib.Name.LocalName)
8365 {
8366 - this.Core.OnMessage(WixWarnings.DeprecatedAttribute(sourceLineNumbers, node.Name.LocalName, attrib.Name.LocalName, "SourcePatch"));
8366 + this.Core.Write(WarningMessages.DeprecatedAttribute(sourceLineNumbers, node.Name.LocalName, attrib.Name.LocalName, "SourcePatch"));
8367 }
8368 sourcePatch = this.Core.GetAttributeValue(sourceLineNumbers, attrib);
8369 break;
@@ -8380,12 +8380,12 @@ namespace WixToolset.Core
8380
8381 if (null == upgrade)
8382 {
8383 - this.Core.OnMessage(WixErrors.ExpectedAttribute(sourceLineNumbers, node.Name.LocalName, "Id"));
8383 + this.Core.Write(ErrorMessages.ExpectedAttribute(sourceLineNumbers, node.Name.LocalName, "Id"));
8384 }
8385
8386 if (null == sourceFile)
8387 {
8388 - this.Core.OnMessage(WixErrors.ExpectedAttribute(sourceLineNumbers, node.Name.LocalName, "SourceFile"));
8388 + this.Core.Write(ErrorMessages.ExpectedAttribute(sourceLineNumbers, node.Name.LocalName, "SourceFile"));
8389 }
8390
8391 foreach (XElement child in node.Elements())
@@ -8470,7 +8470,7 @@ namespace WixToolset.Core
8470
8471 if (null == file)
8472 {
8473 - this.Core.OnMessage(WixErrors.ExpectedAttribute(sourceLineNumbers, node.Name.LocalName, "File"));
8473 + this.Core.Write(ErrorMessages.ExpectedAttribute(sourceLineNumbers, node.Name.LocalName, "File"));
8474 }
8475
8476 foreach (XElement child in node.Elements())
@@ -8539,7 +8539,7 @@ namespace WixToolset.Core
8539 target = this.Core.GetAttributeValue(sourceLineNumbers, attrib);
8540 if (target.Length > 13)
8541 {
8542 - this.Core.OnMessage(WixErrors.IdentifierTooLongError(sourceLineNumbers, node.Name.LocalName, "Id", target, 13));
8542 + this.Core.Write(ErrorMessages.IdentifierTooLongError(sourceLineNumbers, node.Name.LocalName, "Id", target, 13));
8543 }
8544 break;
8545 case "IgnoreMissingFiles":
@@ -8552,12 +8552,12 @@ namespace WixToolset.Core
8552 case "src":
8553 if (null != sourceFile)
8554 {
8555 - this.Core.OnMessage(WixErrors.IllegalAttributeWithOtherAttribute(sourceLineNumbers, node.Name.LocalName, "src", "SourceFile"));
8555 + this.Core.Write(ErrorMessages.IllegalAttributeWithOtherAttribute(sourceLineNumbers, node.Name.LocalName, "src", "SourceFile"));
8556 }
8557
8558 if ("src" == attrib.Name.LocalName)
8559 {
8560 - this.Core.OnMessage(WixWarnings.DeprecatedAttribute(sourceLineNumbers, node.Name.LocalName, attrib.Name.LocalName, "SourceFile"));
8560 + this.Core.Write(WarningMessages.DeprecatedAttribute(sourceLineNumbers, node.Name.LocalName, attrib.Name.LocalName, "SourceFile"));
8561 }
8562 sourceFile = this.Core.GetAttributeValue(sourceLineNumbers, attrib);
8563 break;
@@ -8577,17 +8577,17 @@ namespace WixToolset.Core
8577
8578 if (null == target)
8579 {
8580 - this.Core.OnMessage(WixErrors.ExpectedAttribute(sourceLineNumbers, node.Name.LocalName, "Id"));
8580 + this.Core.Write(ErrorMessages.ExpectedAttribute(sourceLineNumbers, node.Name.LocalName, "Id"));
8581 }
8582
8583 if (null == sourceFile)
8584 {
8585 - this.Core.OnMessage(WixErrors.ExpectedAttribute(sourceLineNumbers, node.Name.LocalName, "SourceFile"));
8585 + this.Core.Write(ErrorMessages.ExpectedAttribute(sourceLineNumbers, node.Name.LocalName, "SourceFile"));
8586 }
8587
8588 if (CompilerConstants.IntegerNotSet == order)
8589 {
8590 - this.Core.OnMessage(WixErrors.ExpectedAttribute(sourceLineNumbers, node.Name.LocalName, "Order"));
8590 + this.Core.Write(ErrorMessages.ExpectedAttribute(sourceLineNumbers, node.Name.LocalName, "Order"));
8591 }
8592
8593 foreach (XElement child in node.Elements())
@@ -8671,7 +8671,7 @@ namespace WixToolset.Core
8671
8672 if (null == file)
8673 {
8674 - this.Core.OnMessage(WixErrors.ExpectedAttribute(sourceLineNumbers, node.Name.LocalName, "Id"));
8674 + this.Core.Write(ErrorMessages.ExpectedAttribute(sourceLineNumbers, node.Name.LocalName, "Id"));
8675 }
8676
8677 foreach (XElement child in node.Elements())
@@ -8755,12 +8755,12 @@ namespace WixToolset.Core
8755 case "src":
8756 if (null != source)
8757 {
8758 - this.Core.OnMessage(WixErrors.IllegalAttributeWithOtherAttribute(sourceLineNumbers, node.Name.LocalName, "src", "Source"));
8758 + this.Core.Write(ErrorMessages.IllegalAttributeWithOtherAttribute(sourceLineNumbers, node.Name.LocalName, "src", "Source"));
8759 }
8760
8761 if ("src" == attrib.Name.LocalName)
8762 {
8763 - this.Core.OnMessage(WixWarnings.DeprecatedAttribute(sourceLineNumbers, node.Name.LocalName, attrib.Name.LocalName, "Source"));
8763 + this.Core.Write(WarningMessages.DeprecatedAttribute(sourceLineNumbers, node.Name.LocalName, attrib.Name.LocalName, "Source"));
8764 }
8765 source = this.Core.GetAttributeValue(sourceLineNumbers, attrib);
8766 break;
@@ -8777,17 +8777,17 @@ namespace WixToolset.Core
8777
8778 if (null == file)
8779 {
8780 - this.Core.OnMessage(WixErrors.ExpectedAttribute(sourceLineNumbers, node.Name.LocalName, "File"));
8780 + this.Core.Write(ErrorMessages.ExpectedAttribute(sourceLineNumbers, node.Name.LocalName, "File"));
8781 }
8782
8783 if (null == source)
8784 {
8785 - this.Core.OnMessage(WixErrors.ExpectedAttribute(sourceLineNumbers, node.Name.LocalName, "Source"));
8785 + this.Core.Write(ErrorMessages.ExpectedAttribute(sourceLineNumbers, node.Name.LocalName, "Source"));
8786 }
8787
8788 if (CompilerConstants.IntegerNotSet == order)
8789 {
8790 - this.Core.OnMessage(WixErrors.ExpectedAttribute(sourceLineNumbers, node.Name.LocalName, "Order"));
8790 + this.Core.Write(ErrorMessages.ExpectedAttribute(sourceLineNumbers, node.Name.LocalName, "Order"));
8791 }
8792
8793 foreach (XElement child in node.Elements())
@@ -8880,7 +8880,7 @@ namespace WixToolset.Core
8880
8881 if (null == file)
8882 {
8883 - this.Core.OnMessage(WixErrors.ExpectedAttribute(sourceLineNumbers, node.Name.LocalName, "File"));
8883 + this.Core.Write(ErrorMessages.ExpectedAttribute(sourceLineNumbers, node.Name.LocalName, "File"));
8884 }
8885
8886 foreach (XElement child in node.Elements())
@@ -8905,7 +8905,7 @@ namespace WixToolset.Core
8905
8906 if (null == protectOffsets || null == protectLengths)
8907 {
8908 - this.Core.OnMessage(WixErrors.ExpectedElement(sourceLineNumbers, node.Name.LocalName, "ProtectRange"));
8908 + this.Core.Write(ErrorMessages.ExpectedElement(sourceLineNumbers, node.Name.LocalName, "ProtectRange"));
8909 }
8910
8911 if (!this.Core.EncounteredError)
@@ -8955,12 +8955,12 @@ namespace WixToolset.Core
8955
8956 if (null == length)
8957 {
8958 - this.Core.OnMessage(WixErrors.ExpectedAttribute(sourceLineNumbers, node.Name.LocalName, "Length"));
8958 + this.Core.Write(ErrorMessages.ExpectedAttribute(sourceLineNumbers, node.Name.LocalName, "Length"));
8959 }
8960
8961 if (null == offset)
8962 {
8963 - this.Core.OnMessage(WixErrors.ExpectedAttribute(sourceLineNumbers, node.Name.LocalName, "Offset"));
8963 + this.Core.Write(ErrorMessages.ExpectedAttribute(sourceLineNumbers, node.Name.LocalName, "Offset"));
8964 }
8965
8966 this.Core.ParseForExtensionElements(node);
@@ -9025,12 +9025,12 @@ namespace WixToolset.Core
9025
9026 if (null == name)
9027 {
9028 - this.Core.OnMessage(WixErrors.ExpectedAttribute(sourceLineNumbers, node.Name.LocalName, "Name"));
9028 + this.Core.Write(ErrorMessages.ExpectedAttribute(sourceLineNumbers, node.Name.LocalName, "Name"));
9029 }
9030
9031 if (null == value)
9032 {
9033 - this.Core.OnMessage(WixErrors.ExpectedAttribute(sourceLineNumbers, node.Name.LocalName, "Value"));
9033 + this.Core.Write(ErrorMessages.ExpectedAttribute(sourceLineNumbers, node.Name.LocalName, "Value"));
9034 }
9035
9036 this.Core.ParseForExtensionElements(node);
@@ -9047,7 +9047,7 @@ namespace WixToolset.Core
9047 {
9048 if (null != company)
9049 {
9050 - this.Core.OnMessage(WixErrors.UnexpectedAttribute(sourceLineNumbers, node.Name.LocalName, "Company"));
9050 + this.Core.Write(ErrorMessages.UnexpectedAttribute(sourceLineNumbers, node.Name.LocalName, "Company"));
9051 }
9052 this.ProcessProperties(sourceLineNumbers, name, value);
9053 }
@@ -9077,22 +9077,22 @@ namespace WixToolset.Core
9077 case "ProductCode":
9078 if (null != target)
9079 {
9080 - this.Core.OnMessage(WixErrors.IllegalAttributeWithOtherAttributes(sourceLineNumbers, node.Name.LocalName, attrib.Name.LocalName, "Target", "TargetImage"));
9080 + this.Core.Write(ErrorMessages.IllegalAttributeWithOtherAttributes(sourceLineNumbers, node.Name.LocalName, attrib.Name.LocalName, "Target", "TargetImage"));
9081 }
9082 target = this.Core.GetAttributeGuidValue(sourceLineNumbers, attrib, false);
9083 break;
9084 case "Target":
9085 if (null != target)
9086 {
9087 - this.Core.OnMessage(WixErrors.IllegalAttributeWithOtherAttributes(sourceLineNumbers, node.Name.LocalName, attrib.Name.LocalName, "TargetImage", "ProductCode"));
9087 + this.Core.Write(ErrorMessages.IllegalAttributeWithOtherAttributes(sourceLineNumbers, node.Name.LocalName, attrib.Name.LocalName, "TargetImage", "ProductCode"));
9088 }
9089 - this.Core.OnMessage(WixWarnings.DeprecatedPatchSequenceTargetAttribute(sourceLineNumbers, node.Name.LocalName, attrib.Name.LocalName));
9089 + this.Core.Write(WarningMessages.DeprecatedPatchSequenceTargetAttribute(sourceLineNumbers, node.Name.LocalName, attrib.Name.LocalName));
9090 target = this.Core.GetAttributeValue(sourceLineNumbers, attrib);
9091 break;
9092 case "TargetImage":
9093 if (null != target)
9094 {
9095 - this.Core.OnMessage(WixErrors.IllegalAttributeWithOtherAttributes(sourceLineNumbers, node.Name.LocalName, attrib.Name.LocalName, "Target", "ProductCode"));
9095 + this.Core.Write(ErrorMessages.IllegalAttributeWithOtherAttributes(sourceLineNumbers, node.Name.LocalName, attrib.Name.LocalName, "Target", "ProductCode"));
9096 }
9097 target = this.Core.GetAttributeValue(sourceLineNumbers, attrib);
9098 this.Core.CreateSimpleReference(sourceLineNumbers, "TargetImages", target);
@@ -9119,7 +9119,7 @@ namespace WixToolset.Core
9119
9120 if (null == family)
9121 {
9122 - this.Core.OnMessage(WixErrors.ExpectedAttribute(sourceLineNumbers, node.Name.LocalName, "PatchFamily"));
9122 + this.Core.Write(ErrorMessages.ExpectedAttribute(sourceLineNumbers, node.Name.LocalName, "PatchFamily"));
9123 }
9124
9125 this.Core.ParseForExtensionElements(node);
@@ -9173,7 +9173,7 @@ namespace WixToolset.Core
9173
9174 if (null == id)
9175 {
9176 - this.Core.OnMessage(WixErrors.ExpectedAttribute(sourceLineNumbers, node.Name.LocalName, "Id"));
9176 + this.Core.Write(ErrorMessages.ExpectedAttribute(sourceLineNumbers, node.Name.LocalName, "Id"));
9177 }
9178
9179 this.Core.ParseForExtensionElements(node);
@@ -9221,7 +9221,7 @@ namespace WixToolset.Core
9221 string id = this.ParseTargetProductCodeElement(child);
9222 if (0 == String.CompareOrdinal("*", id))
9223 {
9224 - this.Core.OnMessage(WixErrors.IllegalAttributeValueWhenNested(sourceLineNumbers, child.Name.LocalName, "Id", id, node.Name.LocalName));
9224 + this.Core.Write(ErrorMessages.IllegalAttributeValueWhenNested(sourceLineNumbers, child.Name.LocalName, "Id", id, node.Name.LocalName));
9225 }
9226 else
9227 {
@@ -9288,7 +9288,7 @@ namespace WixToolset.Core
9288
9289 if (null == id)
9290 {
9291 - this.Core.OnMessage(WixErrors.ExpectedAttribute(sourceLineNumbers, node.Name.LocalName, "Id"));
9291 + this.Core.Write(ErrorMessages.ExpectedAttribute(sourceLineNumbers, node.Name.LocalName, "Id"));
9292 }
9293
9294 this.Core.ParseForExtensionElements(node);
@@ -9328,7 +9328,7 @@ namespace WixToolset.Core
9328
9329 if (null == path)
9330 {
9331 - this.Core.OnMessage(WixErrors.ExpectedAttribute(sourceLineNumbers, node.Name.LocalName, "Path"));
9331 + this.Core.Write(ErrorMessages.ExpectedAttribute(sourceLineNumbers, node.Name.LocalName, "Path"));
9332 }
9333
9334 this.Core.ParseForExtensionElements(node);
@@ -9446,11 +9446,11 @@ namespace WixToolset.Core
9446
9447 if (null == this.activeName)
9448 {
9449 - this.Core.OnMessage(WixErrors.ExpectedAttribute(sourceLineNumbers, node.Name.LocalName, "Id"));
9449 + this.Core.Write(ErrorMessages.ExpectedAttribute(sourceLineNumbers, node.Name.LocalName, "Id"));
9450 }
9451 if (null == classification)
9452 {
9453 - this.Core.OnMessage(WixErrors.ExpectedAttribute(sourceLineNumbers, node.Name.LocalName, "Classification"));
9453 + this.Core.Write(ErrorMessages.ExpectedAttribute(sourceLineNumbers, node.Name.LocalName, "Classification"));
9454 }
9455 if (null == clientPatchId)
9456 {
@@ -9458,15 +9458,15 @@ namespace WixToolset.Core
9458 }
9459 if (null == description)
9460 {
9461 - this.Core.OnMessage(WixErrors.ExpectedAttribute(sourceLineNumbers, node.Name.LocalName, "Description"));
9461 + this.Core.Write(ErrorMessages.ExpectedAttribute(sourceLineNumbers, node.Name.LocalName, "Description"));
9462 }
9463 if (null == displayName)
9464 {
9465 - this.Core.OnMessage(WixErrors.ExpectedAttribute(sourceLineNumbers, node.Name.LocalName, "DisplayName"));
9465 + this.Core.Write(ErrorMessages.ExpectedAttribute(sourceLineNumbers, node.Name.LocalName, "DisplayName"));
9466 }
9467 if (null == manufacturer)
9468 {
9469 - this.Core.OnMessage(WixErrors.ExpectedAttribute(sourceLineNumbers, node.Name.LocalName, "Manufacturer"));
9469 + this.Core.Write(ErrorMessages.ExpectedAttribute(sourceLineNumbers, node.Name.LocalName, "Manufacturer"));
9470 }
9471
9472 this.Core.CreateActiveSection(this.activeName, SectionType.Patch, codepage, this.Context.CompilationId);
@@ -9668,17 +9668,17 @@ namespace WixToolset.Core
9668
9669 if (null == id)
9670 {
9671 - this.Core.OnMessage(WixErrors.ExpectedAttribute(sourceLineNumbers, node.Name.LocalName, "Id"));
9671 + this.Core.Write(ErrorMessages.ExpectedAttribute(sourceLineNumbers, node.Name.LocalName, "Id"));
9672 id = Identifier.Invalid;
9673 }
9674
9675 if (String.IsNullOrEmpty(version))
9676 {
9677 - this.Core.OnMessage(WixErrors.ExpectedAttribute(sourceLineNumbers, node.Name.LocalName, "Version"));
9677 + this.Core.Write(ErrorMessages.ExpectedAttribute(sourceLineNumbers, node.Name.LocalName, "Version"));
9678 }
9679 else if (!CompilerCore.IsValidProductVersion(version))
9680 {
9681 - this.Core.OnMessage(WixErrors.InvalidProductVersion(sourceLineNumbers, version));
9681 + this.Core.Write(ErrorMessages.InvalidProductVersion(sourceLineNumbers, version));
9682 }
9683
9684 // find unexpected child elements
@@ -9768,7 +9768,7 @@ namespace WixToolset.Core
9768 this.Core.ParseForExtensionElements(node);
9769
9770 // Always warn when using the All element.
9771 - this.Core.OnMessage(WixWarnings.AllChangesIncludedInPatch(sourceLineNumbers));
9771 + this.Core.Write(WarningMessages.AllChangesIncludedInPatch(sourceLineNumbers));
9772
9773 if (!this.Core.EncounteredError)
9774 {
@@ -9808,7 +9808,7 @@ namespace WixToolset.Core
9808
9809 if (null == id)
9810 {
9811 - this.Core.OnMessage(WixErrors.ExpectedAttribute(sourceLineNumbers, node.Name.LocalName, "Id"));
9811 + this.Core.Write(ErrorMessages.ExpectedAttribute(sourceLineNumbers, node.Name.LocalName, "Id"));
9812 }
9813
9814 this.Core.ParseForExtensionElements(node);
@@ -9853,12 +9853,12 @@ namespace WixToolset.Core
9853
9854 if (null == id)
9855 {
9856 - this.Core.OnMessage(WixErrors.ExpectedAttribute(sourceLineNumbers, node.Name.LocalName, "Id"));
9856 + this.Core.Write(ErrorMessages.ExpectedAttribute(sourceLineNumbers, node.Name.LocalName, "Id"));
9857 id = Identifier.Invalid;
9858 }
9859 else if (27 < id.Id.Length)
9860 {
9861 - this.Core.OnMessage(WixErrors.IdentifierTooLongError(sourceLineNumbers, node.Name.LocalName, "Id", id.Id, 27));
9861 + this.Core.Write(ErrorMessages.IdentifierTooLongError(sourceLineNumbers, node.Name.LocalName, "Id", id.Id, 27));
9862 }
9863
9864 foreach (XElement child in node.Elements())
@@ -9871,7 +9871,7 @@ namespace WixToolset.Core
9871 if (parsedValidate)
9872 {
9873 SourceLineNumber childSourceLineNumbers = Preprocessor.GetSourceLineNumbers(child);
9874 - this.Core.OnMessage(WixErrors.TooManyChildren(childSourceLineNumbers, node.Name.LocalName, child.Name.LocalName));
9874 + this.Core.Write(ErrorMessages.TooManyChildren(childSourceLineNumbers, node.Name.LocalName, child.Name.LocalName));
9875 }
9876 else
9877 {
@@ -9949,7 +9949,7 @@ namespace WixToolset.Core
9949 validationFlags |= TransformFlags.ValidateUpdateVersion;
9950 break;
9951 default:
9952 - this.Core.OnMessage(WixErrors.IllegalAttributeValue(sourceLineNumbers, node.Name.LocalName, "Version", check, "Major", "Minor", "Update"));
9952 + this.Core.Write(ErrorMessages.IllegalAttributeValue(sourceLineNumbers, node.Name.LocalName, "Version", check, "Major", "Minor", "Update"));
9953 break;
9954 }
9955 break;
@@ -9975,7 +9975,7 @@ namespace WixToolset.Core
9975 validationFlags |= TransformFlags.ValidateNewGreaterBaseVersion;
9976 break;
9977 default:
9978 - this.Core.OnMessage(WixErrors.IllegalAttributeValue(sourceLineNumbers, node.Name.LocalName, "Operator", op, "Lesser", "LesserOrEqual", "Equal", "GreaterOrEqual", "Greater"));
9978 + this.Core.Write(ErrorMessages.IllegalAttributeValue(sourceLineNumbers, node.Name.LocalName, "Operator", op, "Lesser", "LesserOrEqual", "Equal", "GreaterOrEqual", "Greater"));
9979 break;
9980 }
9981 break;
@@ -10117,13 +10117,13 @@ namespace WixToolset.Core
10117
10118 if (null == requiredId)
10119 {
10120 - this.Core.OnMessage(WixErrors.ExpectedAttribute(sourceLineNumbers, node.Name.LocalName, "RequiredId"));
10120 + this.Core.Write(ErrorMessages.ExpectedAttribute(sourceLineNumbers, node.Name.LocalName, "RequiredId"));
10121 requiredId = String.Empty;
10122 }
10123
10124 if (CompilerConstants.IntegerNotSet == requiredLanguage)
10125 {
10126 - this.Core.OnMessage(WixErrors.ExpectedAttribute(sourceLineNumbers, node.Name.LocalName, "RequiredLanguage"));
10126 + this.Core.Write(ErrorMessages.ExpectedAttribute(sourceLineNumbers, node.Name.LocalName, "RequiredLanguage"));
10127 requiredLanguage = CompilerConstants.IllegalInteger;
10128 }
10129
@@ -10188,13 +10188,13 @@ namespace WixToolset.Core
10188
10189 if (null == excludedId)
10190 {
10191 - this.Core.OnMessage(WixErrors.ExpectedAttribute(sourceLineNumbers, node.Name.LocalName, "ExcludedId"));
10191 + this.Core.Write(ErrorMessages.ExpectedAttribute(sourceLineNumbers, node.Name.LocalName, "ExcludedId"));
10192 excludedId = String.Empty;
10193 }
10194
10195 if (CompilerConstants.IntegerNotSet != excludeExceptLanguage && CompilerConstants.IntegerNotSet != excludeLanguage)
10196 {
10197 - this.Core.OnMessage(WixErrors.IllegalModuleExclusionLanguageAttributes(sourceLineNumbers));
10197 + this.Core.Write(ErrorMessages.IllegalModuleExclusionLanguageAttributes(sourceLineNumbers));
10198 }
10199 else if (CompilerConstants.IntegerNotSet != excludeExceptLanguage)
10200 {
@@ -10278,7 +10278,7 @@ namespace WixToolset.Core
10278 format = 3;
10279 break;
10280 default:
10281 - this.Core.OnMessage(WixErrors.IllegalAttributeValue(sourceLineNumbers, node.Name.LocalName, "Format", formatStr, "Text", "Key", "Integer", "Bitfield"));
10281 + this.Core.Write(ErrorMessages.IllegalAttributeValue(sourceLineNumbers, node.Name.LocalName, "Format", formatStr, "Text", "Key", "Integer", "Bitfield"));
10282 break;
10283 }
10284 }
@@ -10317,13 +10317,13 @@ namespace WixToolset.Core
10317
10318 if (null == name)
10319 {
10320 - this.Core.OnMessage(WixErrors.ExpectedAttribute(sourceLineNumbers, node.Name.LocalName, "Name"));
10320 + this.Core.Write(ErrorMessages.ExpectedAttribute(sourceLineNumbers, node.Name.LocalName, "Name"));
10321 name = String.Empty;
10322 }
10323
10324 if (CompilerConstants.IntegerNotSet == format)
10325 {
10326 - this.Core.OnMessage(WixErrors.ExpectedAttribute(sourceLineNumbers, node.Name.LocalName, "Format"));
10326 + this.Core.Write(ErrorMessages.ExpectedAttribute(sourceLineNumbers, node.Name.LocalName, "Format"));
10327 format = CompilerConstants.IllegalInteger;
10328 }
10329
@@ -10388,19 +10388,19 @@ namespace WixToolset.Core
10388
10389 if (null == column)
10390 {
10391 - this.Core.OnMessage(WixErrors.ExpectedAttribute(sourceLineNumbers, node.Name.LocalName, "Column"));
10391 + this.Core.Write(ErrorMessages.ExpectedAttribute(sourceLineNumbers, node.Name.LocalName, "Column"));
10392 column = String.Empty;
10393 }
10394
10395 if (null == table)
10396 {
10397 - this.Core.OnMessage(WixErrors.ExpectedAttribute(sourceLineNumbers, node.Name.LocalName, "Table"));
10397 + this.Core.Write(ErrorMessages.ExpectedAttribute(sourceLineNumbers, node.Name.LocalName, "Table"));
10398 table = String.Empty;
10399 }
10400
10401 if (null == rowKeys)
10402 {
10403 - this.Core.OnMessage(WixErrors.ExpectedAttribute(sourceLineNumbers, node.Name.LocalName, "Row"));
10403 + this.Core.Write(ErrorMessages.ExpectedAttribute(sourceLineNumbers, node.Name.LocalName, "Row"));
10404 }
10405
10406 this.Core.ParseForExtensionElements(node);
@@ -10446,7 +10446,7 @@ namespace WixToolset.Core
10446
10447 if (null == id)
10448 {
10449 - this.Core.OnMessage(WixErrors.ExpectedAttribute(sourceLineNumbers, node.Name.LocalName, "Id"));
10449 + this.Core.Write(ErrorMessages.ExpectedAttribute(sourceLineNumbers, node.Name.LocalName, "Id"));
10450 }
10451
10452 this.Core.ParseForExtensionElements(node);
@@ -10506,7 +10506,7 @@ namespace WixToolset.Core
10506
10507 if (null == name)
10508 {
10509 - this.Core.OnMessage(WixErrors.ExpectedAttribute(sourceLineNumbers, node.Name.LocalName, "Name"));
10509 + this.Core.Write(ErrorMessages.ExpectedAttribute(sourceLineNumbers, node.Name.LocalName, "Name"));
10510 }
10511
10512 if (null == id)
@@ -10594,7 +10594,7 @@ namespace WixToolset.Core
10594
10595 if (null == id)
10596 {
10597 - this.Core.OnMessage(WixErrors.ExpectedAttribute(sourceLineNumbers, node.Name.LocalName, "Id"));
10597 + this.Core.Write(ErrorMessages.ExpectedAttribute(sourceLineNumbers, node.Name.LocalName, "Id"));
10598 }
10599
10600 this.Core.ParseForExtensionElements(node);
@@ -10656,7 +10656,7 @@ namespace WixToolset.Core
10656 registration = 1;
10657 break;
10658 default:
10659 - this.Core.OnMessage(WixErrors.IllegalAttributeValue(sourceLineNumbers, node.Name.LocalName, "Registration", registrationValue, "machine", "user"));
10659 + this.Core.Write(ErrorMessages.IllegalAttributeValue(sourceLineNumbers, node.Name.LocalName, "Registration", registrationValue, "machine", "user"));
10660 break;
10661 }
10662 }
@@ -10674,7 +10674,7 @@ namespace WixToolset.Core
10674
10675 if (CompilerConstants.IntegerNotSet == registration)
10676 {
10677 - this.Core.OnMessage(WixErrors.ExpectedAttribute(sourceLineNumbers, node.Name.LocalName, "Registration"));
10677 + this.Core.Write(ErrorMessages.ExpectedAttribute(sourceLineNumbers, node.Name.LocalName, "Registration"));
10678 registration = CompilerConstants.IllegalInteger;
10679 }
10680
@@ -10784,7 +10784,7 @@ namespace WixToolset.Core
10784 // merge modules must always be compressed, so this attribute is invalid
10785 if (this.compilingModule)
10786 {
10787 - this.Core.OnMessage(WixWarnings.DeprecatedPackageCompressedAttribute(sourceLineNumbers));
10787 + this.Core.Write(WarningMessages.DeprecatedPackageCompressedAttribute(sourceLineNumbers));
10788 // this.core.OnMessage(WixErrors.IllegalAttributeWhenNested(sourceLineNumbers, node.Name.LocalName, "Compressed", "Module"));
10789 }
10790 else if (YesNoType.Yes == this.Core.GetAttributeYesNoValue(sourceLineNumbers, attrib))
@@ -10810,7 +10810,7 @@ namespace WixToolset.Core
10810 sourceBits = sourceBits | 8;
10811 break;
10812 default:
10813 - this.Core.OnMessage(WixErrors.IllegalAttributeValue(sourceLineNumbers, node.Name.LocalName, attrib.Name.LocalName, installPrivileges, "elevated", "limited"));
10813 + this.Core.Write(ErrorMessages.IllegalAttributeValue(sourceLineNumbers, node.Name.LocalName, attrib.Name.LocalName, installPrivileges, "elevated", "limited"));
10814 break;
10815 }
10816 }
@@ -10833,7 +10833,7 @@ namespace WixToolset.Core
10833 sourceBits = sourceBits | 8;
10834 break;
10835 default:
10836 - this.Core.OnMessage(WixErrors.IllegalAttributeValue(sourceLineNumbers, node.Name.LocalName, attrib.Name.LocalName, installScope, "perMachine", "perUser"));
10836 + this.Core.Write(ErrorMessages.IllegalAttributeValue(sourceLineNumbers, node.Name.LocalName, attrib.Name.LocalName, installScope, "perMachine", "perUser"));
10837 break;
10838 }
10839 }
@@ -10851,13 +10851,13 @@ namespace WixToolset.Core
10851 packageAuthor = this.Core.GetAttributeValue(sourceLineNumbers, attrib);
10852 if ("PUT-COMPANY-NAME-HERE" == packageAuthor)
10853 {
10854 - this.Core.OnMessage(WixWarnings.PlaceholderValue(sourceLineNumbers, node.Name.LocalName, attrib.Name.LocalName, packageAuthor));
10854 + this.Core.Write(WarningMessages.PlaceholderValue(sourceLineNumbers, node.Name.LocalName, attrib.Name.LocalName, packageAuthor));
10855 }
10856 break;
10857 case "Platform":
10858 if (null != platformValue)
10859 {
10860 - this.Core.OnMessage(WixErrors.IllegalAttributeWithOtherAttribute(sourceLineNumbers, node.Name.LocalName, attrib.Name.LocalName, "Platforms"));
10860 + this.Core.Write(ErrorMessages.IllegalAttributeWithOtherAttribute(sourceLineNumbers, node.Name.LocalName, attrib.Name.LocalName, "Platforms"));
10861 }
10862
10863 platformValue = this.Core.GetAttributeValue(sourceLineNumbers, attrib);
@@ -10865,7 +10865,7 @@ namespace WixToolset.Core
10865 switch (platformType)
10866 {
10867 case Wix.Package.PlatformType.intel:
10868 - this.Core.OnMessage(WixWarnings.DeprecatedAttributeValue(sourceLineNumbers, platformValue, node.Name.LocalName, attrib.Name.LocalName, "x86"));
10868 + this.Core.Write(WarningMessages.DeprecatedAttributeValue(sourceLineNumbers, platformValue, node.Name.LocalName, attrib.Name.LocalName, "x86"));
10869 goto case Wix.Package.PlatformType.x86;
10870 case Wix.Package.PlatformType.x86:
10871 platform = "Intel";
@@ -10874,7 +10874,7 @@ namespace WixToolset.Core
10874 platform = "x64";
10875 break;
10876 case Wix.Package.PlatformType.intel64:
10877 - this.Core.OnMessage(WixWarnings.DeprecatedAttributeValue(sourceLineNumbers, platformValue, node.Name.LocalName, attrib.Name.LocalName, "ia64"));
10877 + this.Core.Write(WarningMessages.DeprecatedAttributeValue(sourceLineNumbers, platformValue, node.Name.LocalName, attrib.Name.LocalName, "ia64"));
10878 goto case Wix.Package.PlatformType.ia64;
10879 case Wix.Package.PlatformType.ia64:
10880 platform = "Intel64";
@@ -10883,17 +10883,17 @@ namespace WixToolset.Core
10883 platform = "Arm";
10884 break;
10885 default:
10886 - this.Core.OnMessage(WixErrors.InvalidPlatformValue(sourceLineNumbers, platformValue));
10886 + this.Core.Write(ErrorMessages.InvalidPlatformValue(sourceLineNumbers, platformValue));
10887 break;
10888 }
10889 break;
10890 case "Platforms":
10891 if (null != platformValue)
10892 {
10893 - this.Core.OnMessage(WixErrors.IllegalAttributeWithOtherAttribute(sourceLineNumbers, node.Name.LocalName, attrib.Name.LocalName, "Platform"));
10893 + this.Core.Write(ErrorMessages.IllegalAttributeWithOtherAttribute(sourceLineNumbers, node.Name.LocalName, attrib.Name.LocalName, "Platform"));
10894 }
10895
10896 - this.Core.OnMessage(WixWarnings.DeprecatedAttribute(sourceLineNumbers, node.Name.LocalName, attrib.Name.LocalName, "Platform"));
10896 + this.Core.Write(WarningMessages.DeprecatedAttribute(sourceLineNumbers, node.Name.LocalName, attrib.Name.LocalName, "Platform"));
10897 platformValue = this.Core.GetAttributeValue(sourceLineNumbers, attrib);
10898 platform = platformValue;
10899 break;
@@ -10923,31 +10923,31 @@ namespace WixToolset.Core
10923
10924 if (installPrivilegeSeen && installScopeSeen)
10925 {
10926 - this.Core.OnMessage(WixErrors.IllegalAttributeWithOtherAttribute(sourceLineNumbers, node.Name.LocalName, "InstallPrivileges", "InstallScope"));
10926 + this.Core.Write(ErrorMessages.IllegalAttributeWithOtherAttribute(sourceLineNumbers, node.Name.LocalName, "InstallPrivileges", "InstallScope"));
10927 }
10928
10929 if ((0 != String.Compare(platform, "Intel", StringComparison.OrdinalIgnoreCase)) && 200 > msiVersion)
10930 {
10931 msiVersion = 200;
10932 - this.Core.OnMessage(WixWarnings.RequiresMsi200for64bitPackage(sourceLineNumbers));
10932 + this.Core.Write(WarningMessages.RequiresMsi200for64bitPackage(sourceLineNumbers));
10933 }
10934
10935 if ((0 == String.Compare(platform, "Arm", StringComparison.OrdinalIgnoreCase)) && 500 > msiVersion)
10936 {
10937 msiVersion = 500;
10938 - this.Core.OnMessage(WixWarnings.RequiresMsi500forArmPackage(sourceLineNumbers));
10938 + this.Core.Write(WarningMessages.RequiresMsi500forArmPackage(sourceLineNumbers));
10939 }
10940
10941 if (null == packageAuthor)
10942 {
10943 - this.Core.OnMessage(WixErrors.ExpectedAttribute(sourceLineNumbers, node.Name.LocalName, "Manufacturer"));
10943 + this.Core.Write(ErrorMessages.ExpectedAttribute(sourceLineNumbers, node.Name.LocalName, "Manufacturer"));
10944 }
10945
10946 if (this.compilingModule)
10947 {
10948 if (null == packageCode)
10949 {
10950 - this.Core.OnMessage(WixErrors.ExpectedAttribute(sourceLineNumbers, node.Name.LocalName, "Id"));
10950 + this.Core.Write(ErrorMessages.ExpectedAttribute(sourceLineNumbers, node.Name.LocalName, "Id"));
10951 }
10952
10953 // merge modules use the modularization guid as the package code
@@ -10968,7 +10968,7 @@ namespace WixToolset.Core
10968
10969 if ("*" != packageCode)
10970 {
10971 - this.Core.OnMessage(WixWarnings.PackageCodeSet(sourceLineNumbers));
10971 + this.Core.Write(WarningMessages.PackageCodeSet(sourceLineNumbers));
10972 }
10973 }
10974
@@ -11101,37 +11101,37 @@ namespace WixToolset.Core
11101
11102 if (YesNoType.NotSet == allowRemoval)
11103 {
11104 - this.Core.OnMessage(WixErrors.ExpectedAttribute(sourceLineNumbers, node.Name.LocalName, "AllowRemoval"));
11104 + this.Core.Write(ErrorMessages.ExpectedAttribute(sourceLineNumbers, node.Name.LocalName, "AllowRemoval"));
11105 }
11106
11107 if (null == classification)
11108 {
11109 - this.Core.OnMessage(WixErrors.ExpectedAttribute(sourceLineNumbers, node.Name.LocalName, "Classification"));
11109 + this.Core.Write(ErrorMessages.ExpectedAttribute(sourceLineNumbers, node.Name.LocalName, "Classification"));
11110 }
11111
11112 if (null == description)
11113 {
11114 - this.Core.OnMessage(WixErrors.ExpectedAttribute(sourceLineNumbers, node.Name.LocalName, "Description"));
11114 + this.Core.Write(ErrorMessages.ExpectedAttribute(sourceLineNumbers, node.Name.LocalName, "Description"));
11115 }
11116
11117 if (null == displayName)
11118 {
11119 - this.Core.OnMessage(WixErrors.ExpectedAttribute(sourceLineNumbers, node.Name.LocalName, "DisplayName"));
11119 + this.Core.Write(ErrorMessages.ExpectedAttribute(sourceLineNumbers, node.Name.LocalName, "DisplayName"));
11120 }
11121
11122 if (null == manufacturerName)
11123 {
11124 - this.Core.OnMessage(WixErrors.ExpectedAttribute(sourceLineNumbers, node.Name.LocalName, "ManufacturerName"));
11124 + this.Core.Write(ErrorMessages.ExpectedAttribute(sourceLineNumbers, node.Name.LocalName, "ManufacturerName"));
11125 }
11126
11127 if (null == moreInfoUrl)
11128 {
11129 - this.Core.OnMessage(WixErrors.ExpectedAttribute(sourceLineNumbers, node.Name.LocalName, "MoreInfoURL"));
11129 + this.Core.Write(ErrorMessages.ExpectedAttribute(sourceLineNumbers, node.Name.LocalName, "MoreInfoURL"));
11130 }
11131
11132 if (null == targetProductName)
11133 {
11134 - this.Core.OnMessage(WixErrors.ExpectedAttribute(sourceLineNumbers, node.Name.LocalName, "TargetProductName"));
11134 + this.Core.Write(ErrorMessages.ExpectedAttribute(sourceLineNumbers, node.Name.LocalName, "TargetProductName"));
11135 }
11136
11137 foreach (XElement child in node.Elements())
@@ -11288,17 +11288,17 @@ namespace WixToolset.Core
11288
11289 if (null == company)
11290 {
11291 - this.Core.OnMessage(WixErrors.ExpectedAttribute(sourceLineNumbers, node.Name.LocalName, "Company"));
11291 + this.Core.Write(ErrorMessages.ExpectedAttribute(sourceLineNumbers, node.Name.LocalName, "Company"));
11292 }
11293
11294 if (null == property)
11295 {
11296 - this.Core.OnMessage(WixErrors.ExpectedAttribute(sourceLineNumbers, node.Name.LocalName, "Property"));
11296 + this.Core.Write(ErrorMessages.ExpectedAttribute(sourceLineNumbers, node.Name.LocalName, "Property"));
11297 }
11298
11299 if (null == value)
11300 {
11301 - this.Core.OnMessage(WixErrors.ExpectedAttribute(sourceLineNumbers, node.Name.LocalName, "Value"));
11301 + this.Core.Write(ErrorMessages.ExpectedAttribute(sourceLineNumbers, node.Name.LocalName, "Value"));
11302 }
11303
11304 this.Core.ParseForExtensionElements(node);
@@ -11382,13 +11382,13 @@ namespace WixToolset.Core
11382 switch (attrib.Name.LocalName)
11383 {
11384 case "AdminImage":
11385 - this.Core.OnMessage(WixWarnings.DeprecatedAttribute(sourceLineNumbers, node.Name.LocalName, attrib.Name.LocalName));
11385 + this.Core.Write(WarningMessages.DeprecatedAttribute(sourceLineNumbers, node.Name.LocalName, attrib.Name.LocalName));
11386 break;
11387 case "Comments":
11388 comments = this.Core.GetAttributeValue(sourceLineNumbers, attrib);
11389 break;
11390 case "Compressed":
11391 - this.Core.OnMessage(WixWarnings.DeprecatedAttribute(sourceLineNumbers, node.Name.LocalName, attrib.Name.LocalName));
11391 + this.Core.Write(WarningMessages.DeprecatedAttribute(sourceLineNumbers, node.Name.LocalName, attrib.Name.LocalName));
11392 break;
11393 case "Description":
11394 packageName = this.Core.GetAttributeValue(sourceLineNumbers, attrib);
@@ -11397,19 +11397,19 @@ namespace WixToolset.Core
11397 keywords = this.Core.GetAttributeValue(sourceLineNumbers, attrib);
11398 break;
11399 case "Languages":
11400 - this.Core.OnMessage(WixWarnings.DeprecatedAttribute(sourceLineNumbers, node.Name.LocalName, attrib.Name.LocalName));
11400 + this.Core.Write(WarningMessages.DeprecatedAttribute(sourceLineNumbers, node.Name.LocalName, attrib.Name.LocalName));
11401 break;
11402 case "Manufacturer":
11403 packageAuthor = this.Core.GetAttributeValue(sourceLineNumbers, attrib);
11404 break;
11405 case "Platforms":
11406 - this.Core.OnMessage(WixWarnings.DeprecatedAttribute(sourceLineNumbers, node.Name.LocalName, attrib.Name.LocalName));
11406 + this.Core.Write(WarningMessages.DeprecatedAttribute(sourceLineNumbers, node.Name.LocalName, attrib.Name.LocalName));
11407 break;
11408 case "ReadOnly":
11409 security = this.Core.GetAttributeYesNoDefaultValue(sourceLineNumbers, attrib);
11410 break;
11411 case "ShortNames":
11412 - this.Core.OnMessage(WixWarnings.DeprecatedAttribute(sourceLineNumbers, node.Name.LocalName, attrib.Name.LocalName));
11412 + this.Core.Write(WarningMessages.DeprecatedAttribute(sourceLineNumbers, node.Name.LocalName, attrib.Name.LocalName));
11413 break;
11414 case "SummaryCodepage":
11415 codepage = this.Core.GetAttributeLocalizableCodePageValue(sourceLineNumbers, attrib);
@@ -11508,7 +11508,7 @@ namespace WixToolset.Core
11508 SourceLineNumber sourceLineNumbers = Preprocessor.GetSourceLineNumbers(node);
11509 string name = null;
11510
11511 - this.Core.OnMessage(WixWarnings.DeprecatedIgnoreModularizationElement(sourceLineNumbers));
11511 + this.Core.Write(WarningMessages.DeprecatedIgnoreModularizationElement(sourceLineNumbers));
11512
11513 foreach (XAttribute attrib in node.Attributes())
11514 {
@@ -11535,7 +11535,7 @@ namespace WixToolset.Core
11535
11536 if (null == name)
11537 {
11538 - this.Core.OnMessage(WixErrors.ExpectedAttribute(sourceLineNumbers, node.Name.LocalName, "Name"));
11538 + this.Core.Write(ErrorMessages.ExpectedAttribute(sourceLineNumbers, node.Name.LocalName, "Name"));
11539 }
11540
11541 this.Core.ParseForExtensionElements(node);
@@ -11624,12 +11624,12 @@ namespace WixToolset.Core
11624
11625 if (null == user)
11626 {
11627 - this.Core.OnMessage(WixErrors.ExpectedAttribute(sourceLineNumbers, node.Name.LocalName, "User"));
11627 + this.Core.Write(ErrorMessages.ExpectedAttribute(sourceLineNumbers, node.Name.LocalName, "User"));
11628 }
11629
11630 if (int.MinValue == permission) // just GENERIC_READ, which is MSI_NULL
11631 {
11632 - this.Core.OnMessage(WixErrors.GenericReadNotAllowed(sourceLineNumbers));
11632 + this.Core.Write(ErrorMessages.GenericReadNotAllowed(sourceLineNumbers));
11633 }
11634
11635 this.Core.ParseForExtensionElements(node);
@@ -11695,7 +11695,7 @@ namespace WixToolset.Core
11695
11696 if (null == sddl)
11697 {
11698 - this.Core.OnMessage(WixErrors.ExpectedAttribute(sourceLineNumbers, node.Name.LocalName, "Sddl"));
11698 + this.Core.Write(ErrorMessages.ExpectedAttribute(sourceLineNumbers, node.Name.LocalName, "Sddl"));
11699 }
11700
11701 if (null == id)
@@ -11713,7 +11713,7 @@ namespace WixToolset.Core
11713 if (null != condition)
11714 {
11715 SourceLineNumber childSourceLineNumbers = Preprocessor.GetSourceLineNumbers(node);
11716 - this.Core.OnMessage(WixErrors.TooManyChildren(childSourceLineNumbers, node.Name.LocalName, child.Name.LocalName));
11716 + this.Core.Write(ErrorMessages.TooManyChildren(childSourceLineNumbers, node.Name.LocalName, child.Name.LocalName));
11717 }
11718
11719 condition = this.ParseConditionElement(child, node.Name.LocalName, null, null);
@@ -11776,14 +11776,14 @@ namespace WixToolset.Core
11776 manufacturer = this.Core.GetAttributeValue(sourceLineNumbers, attrib, EmptyRule.MustHaveNonWhitespaceCharacters);
11777 if ("PUT-COMPANY-NAME-HERE" == manufacturer)
11778 {
11779 - this.Core.OnMessage(WixWarnings.PlaceholderValue(sourceLineNumbers, node.Name.LocalName, attrib.Name.LocalName, manufacturer));
11779 + this.Core.Write(WarningMessages.PlaceholderValue(sourceLineNumbers, node.Name.LocalName, attrib.Name.LocalName, manufacturer));
11780 }
11781 break;
11782 case "Name":
11783 this.activeName = this.Core.GetAttributeValue(sourceLineNumbers, attrib, EmptyRule.MustHaveNonWhitespaceCharacters);
11784 if ("PUT-PRODUCT-NAME-HERE" == this.activeName)
11785 {
11786 - this.Core.OnMessage(WixWarnings.PlaceholderValue(sourceLineNumbers, node.Name.LocalName, attrib.Name.LocalName, this.activeName));
11786 + this.Core.Write(WarningMessages.PlaceholderValue(sourceLineNumbers, node.Name.LocalName, attrib.Name.LocalName, this.activeName));
11787 }
11788 break;
11789 case "UpgradeCode":
@@ -11809,36 +11809,36 @@ namespace WixToolset.Core
11809
11810 if (null == productCode)
11811 {
11812 - this.Core.OnMessage(WixErrors.ExpectedAttribute(sourceLineNumbers, node.Name.LocalName, "Id"));
11812 + this.Core.Write(ErrorMessages.ExpectedAttribute(sourceLineNumbers, node.Name.LocalName, "Id"));
11813 }
11814
11815 if (null == this.activeLanguage)
11816 {
11817 - this.Core.OnMessage(WixErrors.ExpectedAttribute(sourceLineNumbers, node.Name.LocalName, "Language"));
11817 + this.Core.Write(ErrorMessages.ExpectedAttribute(sourceLineNumbers, node.Name.LocalName, "Language"));
11818 }
11819
11820 if (null == manufacturer)
11821 {
11822 - this.Core.OnMessage(WixErrors.ExpectedAttribute(sourceLineNumbers, node.Name.LocalName, "Manufacturer"));
11822 + this.Core.Write(ErrorMessages.ExpectedAttribute(sourceLineNumbers, node.Name.LocalName, "Manufacturer"));
11823 }
11824
11825 if (null == this.activeName)
11826 {
11827 - this.Core.OnMessage(WixErrors.ExpectedAttribute(sourceLineNumbers, node.Name.LocalName, "Name"));
11827 + this.Core.Write(ErrorMessages.ExpectedAttribute(sourceLineNumbers, node.Name.LocalName, "Name"));
11828 }
11829
11830 if (null == upgradeCode)
11831 {
11832 - this.Core.OnMessage(WixWarnings.MissingUpgradeCode(sourceLineNumbers));
11832 + this.Core.Write(WarningMessages.MissingUpgradeCode(sourceLineNumbers));
11833 }
11834
11835 if (null == version)
11836 {
11837 - this.Core.OnMessage(WixErrors.ExpectedAttribute(sourceLineNumbers, node.Name.LocalName, "Version"));
11837 + this.Core.Write(ErrorMessages.ExpectedAttribute(sourceLineNumbers, node.Name.LocalName, "Version"));
11838 }
11839 else if (!CompilerCore.IsValidProductVersion(version))
11840 {
11841 - this.Core.OnMessage(WixErrors.InvalidProductVersion(sourceLineNumbers, version));
11841 + this.Core.Write(ErrorMessages.InvalidProductVersion(sourceLineNumbers, version));
11842 }
11843
11844 if (this.Core.EncounteredError)
@@ -12079,7 +12079,7 @@ namespace WixToolset.Core
12079
12080 if ((YesNoType.No == advertise && YesNoType.Yes == progIdAdvertise) || (YesNoType.Yes == advertise && YesNoType.No == progIdAdvertise))
12081 {
12082 - this.Core.OnMessage(WixErrors.AdvertiseStateMustMatch(sourceLineNumbers, advertise.ToString(), progIdAdvertise.ToString()));
12082 + this.Core.Write(ErrorMessages.AdvertiseStateMustMatch(sourceLineNumbers, advertise.ToString(), progIdAdvertise.ToString()));
12083 }
12084 else
12085 {
@@ -12093,7 +12093,7 @@ namespace WixToolset.Core
12093
12094 if (null != parent && (null != icon || CompilerConstants.IntegerNotSet != iconIndex))
12095 {
12096 - this.Core.OnMessage(WixErrors.VersionIndependentProgIdsCannotHaveIcons(sourceLineNumbers));
12096 + this.Core.Write(ErrorMessages.VersionIndependentProgIdsCannotHaveIcons(sourceLineNumbers));
12097 }
12098
12099 YesNoType firstProgIdForNestedClass = YesNoType.Yes;
@@ -12125,7 +12125,7 @@ namespace WixToolset.Core
12125 else
12126 {
12127 SourceLineNumber childSourceLineNumbers = Preprocessor.GetSourceLineNumbers(child);
12128 - this.Core.OnMessage(WixErrors.ProgIdNestedTooDeep(childSourceLineNumbers));
12128 + this.Core.Write(ErrorMessages.ProgIdNestedTooDeep(childSourceLineNumbers));
12129 }
12130 break;
12131 default:
@@ -12209,7 +12209,7 @@ namespace WixToolset.Core
12209 // raise an error for an orphaned ProgId
12210 if (YesNoType.Yes == advertise && !foundExtension && null == parent && null == classId)
12211 {
12212 - this.Core.OnMessage(WixWarnings.OrphanedProgId(sourceLineNumbers, progId));
12212 + this.Core.Write(WarningMessages.OrphanedProgId(sourceLineNumbers, progId));
12213 }
12214
12215 return progId;
@@ -12270,16 +12270,16 @@ namespace WixToolset.Core
12270
12271 if (null == id)
12272 {
12273 - this.Core.OnMessage(WixErrors.ExpectedAttribute(sourceLineNumbers, node.Name.LocalName, "Id"));
12273 + this.Core.Write(ErrorMessages.ExpectedAttribute(sourceLineNumbers, node.Name.LocalName, "Id"));
12274 id = Identifier.Invalid;
12275 }
12276 else if ("ProductID" == id.Id)
12277 {
12278 - this.Core.OnMessage(WixWarnings.ProductIdAuthored(sourceLineNumbers));
12278 + this.Core.Write(WarningMessages.ProductIdAuthored(sourceLineNumbers));
12279 }
12280 else if ("SecureCustomProperties" == id.Id || "AdminProperties" == id.Id || "MsiHiddenProperties" == id.Id)
12281 {
12282 - this.Core.OnMessage(WixErrors.CannotAuthorSpecialProperties(sourceLineNumbers, id.Id));
12282 + this.Core.Write(ErrorMessages.CannotAuthorSpecialProperties(sourceLineNumbers, id.Id));
12283 }
12284
12285 string innerText = this.Core.GetTrimmedInnerText(node);
@@ -12288,7 +12288,7 @@ namespace WixToolset.Core
12288 // cannot specify both the value attribute and inner text
12289 if (!String.IsNullOrEmpty(innerText))
12290 {
12291 - this.Core.OnMessage(WixErrors.IllegalAttributeWithInnerText(sourceLineNumbers, node.Name.LocalName, "Value"));
12291 + this.Core.Write(ErrorMessages.IllegalAttributeWithInnerText(sourceLineNumbers, node.Name.LocalName, "Value"));
12292 }
12293 }
12294 else // value attribute not specified, use inner text if any.
@@ -12326,7 +12326,7 @@ namespace WixToolset.Core
12326 // If we're doing CCP then there must be a signature.
12327 if (complianceCheck && 0 == signatures.Count)
12328 {
12329 - this.Core.OnMessage(WixErrors.SearchElementRequiredWithAttribute(sourceLineNumbers, node.Name.LocalName, "ComplianceCheck", "yes"));
12329 + this.Core.Write(ErrorMessages.SearchElementRequiredWithAttribute(sourceLineNumbers, node.Name.LocalName, "ComplianceCheck", "yes"));
12330 }
12331
12332 foreach (string sig in signatures)
@@ -12350,7 +12350,7 @@ namespace WixToolset.Core
12350 // the element.
12351 if (String.IsNullOrEmpty(value) && !admin && !secure && !hidden)
12352 {
12353 - this.Core.OnMessage(WixWarnings.PropertyUseless(sourceLineNumbers, id.Id));
12353 + this.Core.Write(WarningMessages.PropertyUseless(sourceLineNumbers, id.Id));
12354 }
12355 else // there is a value and/or a flag set, do that.
12356 {
@@ -12360,7 +12360,7 @@ namespace WixToolset.Core
12360
12361 if (!this.Core.EncounteredError && YesNoType.Yes == suppressModularization)
12362 {
12363 - this.Core.OnMessage(WixWarnings.PropertyModularizationSuppressed(sourceLineNumbers));
12363 + this.Core.Write(WarningMessages.PropertyModularizationSuppressed(sourceLineNumbers));
12364
12365 this.Core.CreateRow(sourceLineNumbers, TupleDefinitionType.WixSuppressModularization, id);
12366 }
@@ -12402,7 +12402,7 @@ namespace WixToolset.Core
12402 id = this.Core.GetAttributeIdentifier(sourceLineNumbers, attrib);
12403 break;
12404 case "Action":
12405 - this.Core.OnMessage(WixWarnings.DeprecatedRegistryKeyActionAttribute(sourceLineNumbers));
12405 + this.Core.Write(WarningMessages.DeprecatedRegistryKeyActionAttribute(sourceLineNumbers));
12406 action = this.Core.GetAttributeValue(sourceLineNumbers, attrib);
12407 if (0 < action.Length)
12408 {
@@ -12419,7 +12419,7 @@ namespace WixToolset.Core
12419 case Wix.RegistryKey.ActionType.none:
12420 break;
12421 default:
12422 - this.Core.OnMessage(WixErrors.IllegalAttributeValue(sourceLineNumbers, node.Name.LocalName, attrib.Name.LocalName, action, "create", "createAndRemoveOnUninstall", "none"));
12422 + this.Core.Write(ErrorMessages.IllegalAttributeValue(sourceLineNumbers, node.Name.LocalName, attrib.Name.LocalName, action, "create", "createAndRemoveOnUninstall", "none"));
12423 break;
12424 }
12425 }
@@ -12440,7 +12440,7 @@ namespace WixToolset.Core
12440 case "Root":
12441 if (CompilerConstants.IntegerNotSet != root)
12442 {
12443 - this.Core.OnMessage(WixErrors.RegistryRootInvalid(sourceLineNumbers));
12443 + this.Core.Write(ErrorMessages.RegistryRootInvalid(sourceLineNumbers));
12444 }
12445
12446 root = this.Core.GetAttributeMsidbRegistryRootValue(sourceLineNumbers, attrib, true);
@@ -12470,19 +12470,19 @@ namespace WixToolset.Core
12470 {
12471 if (null != id)
12472 {
12473 - this.Core.OnMessage(WixErrors.IllegalAttributeWithoutOtherAttributes(sourceLineNumbers, node.Name.LocalName, "Id", "ForceCreateOnInstall", "ForceDeleteOnUninstall", "yes", true));
12473 + this.Core.Write(ErrorMessages.IllegalAttributeWithoutOtherAttributes(sourceLineNumbers, node.Name.LocalName, "Id", "ForceCreateOnInstall", "ForceDeleteOnUninstall", "yes", true));
12474 }
12475 }
12476
12477 if (CompilerConstants.IntegerNotSet == root)
12478 {
12479 - this.Core.OnMessage(WixErrors.ExpectedAttribute(sourceLineNumbers, node.Name.LocalName, "Root"));
12479 + this.Core.Write(ErrorMessages.ExpectedAttribute(sourceLineNumbers, node.Name.LocalName, "Root"));
12480 root = CompilerConstants.IllegalInteger;
12481 }
12482
12483 if (null == key)
12484 {
12485 - this.Core.OnMessage(WixErrors.ExpectedAttribute(sourceLineNumbers, node.Name.LocalName, "Key"));
12485 + this.Core.Write(ErrorMessages.ExpectedAttribute(sourceLineNumbers, node.Name.LocalName, "Key"));
12486 key = String.Empty; // set the key to something to prevent null reference exceptions
12487 }
12488
@@ -12499,7 +12499,7 @@ namespace WixToolset.Core
12499 {
12500 if (YesNoType.Yes == keyPath)
12501 {
12502 - this.Core.OnMessage(WixErrors.ComponentMultipleKeyPaths(sourceLineNumbers, child.Name.LocalName, "KeyPath", "yes", "File", "RegistryValue", "ODBCDataSource"));
12502 + this.Core.Write(ErrorMessages.ComponentMultipleKeyPaths(sourceLineNumbers, child.Name.LocalName, "KeyPath", "yes", "File", "RegistryValue", "ODBCDataSource"));
12503 }
12504
12505 possibleKeyPath = possibleChildKeyPath; // the child is the key path
@@ -12515,7 +12515,7 @@ namespace WixToolset.Core
12515 {
12516 if (YesNoType.Yes == keyPath)
12517 {
12518 - this.Core.OnMessage(WixErrors.ComponentMultipleKeyPaths(sourceLineNumbers, child.Name.LocalName, "KeyPath", "yes", "File", "RegistryValue", "ODBCDataSource"));
12518 + this.Core.Write(ErrorMessages.ComponentMultipleKeyPaths(sourceLineNumbers, child.Name.LocalName, "KeyPath", "yes", "File", "RegistryValue", "ODBCDataSource"));
12519 }
12520
12521 possibleKeyPath = possibleChildKeyPath; // the child is the key path
@@ -12529,14 +12529,14 @@ namespace WixToolset.Core
12529 case "Permission":
12530 if (!forceCreateOnInstall)
12531 {
12532 - this.Core.OnMessage(WixErrors.UnexpectedElementWithAttributeValue(sourceLineNumbers, node.Name.LocalName, child.Name.LocalName, "ForceCreateOnInstall", "yes"));
12532 + this.Core.Write(ErrorMessages.UnexpectedElementWithAttributeValue(sourceLineNumbers, node.Name.LocalName, child.Name.LocalName, "ForceCreateOnInstall", "yes"));
12533 }
12534 this.ParsePermissionElement(child, id.Id, "Registry");
12535 break;
12536 case "PermissionEx":
12537 if (!forceCreateOnInstall)
12538 {
12539 - this.Core.OnMessage(WixErrors.UnexpectedElementWithAttributeValue(sourceLineNumbers, node.Name.LocalName, child.Name.LocalName, "ForceCreateOnInstall", "yes"));
12539 + this.Core.Write(ErrorMessages.UnexpectedElementWithAttributeValue(sourceLineNumbers, node.Name.LocalName, child.Name.LocalName, "ForceCreateOnInstall", "yes"));
12540 }
12541 this.ParsePermissionExElement(child, id.Id, "Registry");
12542 break;
@@ -12610,7 +12610,7 @@ namespace WixToolset.Core
12610 {
12611 if (!Wix.RegistryValue.TryParseActionType(action, out actionType))
12612 {
12613 - this.Core.OnMessage(WixErrors.IllegalAttributeValue(sourceLineNumbers, node.Name.LocalName, attrib.Name.LocalName, action, "append", "prepend", "write"));
12613 + this.Core.Write(ErrorMessages.IllegalAttributeValue(sourceLineNumbers, node.Name.LocalName, attrib.Name.LocalName, action, "append", "prepend", "write"));
12614 }
12615 }
12616 break;
@@ -12637,7 +12637,7 @@ namespace WixToolset.Core
12637 case "Root":
12638 if (CompilerConstants.IntegerNotSet != root)
12639 {
12640 - this.Core.OnMessage(WixErrors.RegistryRootInvalid(sourceLineNumbers));
12640 + this.Core.Write(ErrorMessages.RegistryRootInvalid(sourceLineNumbers));
12641 }
12642
12643 root = this.Core.GetAttributeMsidbRegistryRootValue(sourceLineNumbers, attrib, true);
@@ -12648,7 +12648,7 @@ namespace WixToolset.Core
12648 {
12649 if (!Wix.RegistryValue.TryParseTypeType(type, out typeType))
12650 {
12651 - this.Core.OnMessage(WixErrors.IllegalAttributeValue(sourceLineNumbers, node.Name.LocalName, attrib.Name.LocalName, type, "binary", "expandable", "integer", "multiString", "string"));
12651 + this.Core.Write(ErrorMessages.IllegalAttributeValue(sourceLineNumbers, node.Name.LocalName, attrib.Name.LocalName, type, "binary", "expandable", "integer", "multiString", "string"));
12652 }
12653 }
12654 break;
@@ -12675,22 +12675,22 @@ namespace WixToolset.Core
12675 if ((Wix.RegistryValue.ActionType.append == actionType || Wix.RegistryValue.ActionType.prepend == actionType) &&
12676 Wix.RegistryValue.TypeType.multiString != typeType)
12677 {
12678 - this.Core.OnMessage(WixErrors.IllegalAttributeValueWithoutOtherAttribute(sourceLineNumbers, node.Name.LocalName, "Action", action, "Type", "multiString"));
12678 + this.Core.Write(ErrorMessages.IllegalAttributeValueWithoutOtherAttribute(sourceLineNumbers, node.Name.LocalName, "Action", action, "Type", "multiString"));
12679 }
12680
12681 if (null == key)
12682 {
12683 - this.Core.OnMessage(WixErrors.ExpectedAttribute(sourceLineNumbers, node.Name.LocalName, "Key"));
12683 + this.Core.Write(ErrorMessages.ExpectedAttribute(sourceLineNumbers, node.Name.LocalName, "Key"));
12684 }
12685
12686 if (CompilerConstants.IntegerNotSet == root)
12687 {
12688 - this.Core.OnMessage(WixErrors.ExpectedAttribute(sourceLineNumbers, node.Name.LocalName, "Root"));
12688 + this.Core.Write(ErrorMessages.ExpectedAttribute(sourceLineNumbers, node.Name.LocalName, "Root"));
12689 }
12690
12691 if (null == type)
12692 {
12693 - this.Core.OnMessage(WixErrors.ExpectedAttribute(sourceLineNumbers, node.Name.LocalName, "Type"));
12693 + this.Core.Write(ErrorMessages.ExpectedAttribute(sourceLineNumbers, node.Name.LocalName, "Type"));
12694 }
12695
12696 foreach (XElement child in node.Elements())
@@ -12702,7 +12702,7 @@ namespace WixToolset.Core
12702 case "MultiStringValue":
12703 if (Wix.RegistryValue.TypeType.multiString != typeType && null != value)
12704 {
12705 - this.Core.OnMessage(WixErrors.RegistryMultipleValuesWithoutMultiString(sourceLineNumbers, node.Name.LocalName, "Value", child.Name.LocalName, "Type"));
12705 + this.Core.Write(ErrorMessages.RegistryMultipleValuesWithoutMultiString(sourceLineNumbers, node.Name.LocalName, "Value", child.Name.LocalName, "Type"));
12706 }
12707 else if (null == value)
12708 {
@@ -12773,11 +12773,11 @@ namespace WixToolset.Core
12773 // value may be set by child MultiStringValue elements, so it must be checked here
12774 if (null == value)
12775 {
12776 - this.Core.OnMessage(WixErrors.ExpectedAttribute(sourceLineNumbers, node.Name.LocalName, "Value"));
12776 + this.Core.Write(ErrorMessages.ExpectedAttribute(sourceLineNumbers, node.Name.LocalName, "Value"));
12777 }
12778 else if (0 == value.Length && ("+" == name || "-" == name || "*" == name)) // prevent accidental authoring of special name values
12779 {
12780 - this.Core.OnMessage(WixErrors.RegistryNameValueIncorrect(sourceLineNumbers, node.Name.LocalName, "Name", name));
12780 + this.Core.Write(ErrorMessages.RegistryNameValueIncorrect(sourceLineNumbers, node.Name.LocalName, "Name", name));
12781 }
12782
12783 if (!this.Core.EncounteredError)
@@ -12834,7 +12834,7 @@ namespace WixToolset.Core
12834 {
12835 if (!Wix.RemoveRegistryKey.TryParseActionType(action, out actionType))
12836 {
12837 - this.Core.OnMessage(WixErrors.IllegalAttributeValue(sourceLineNumbers, node.Name.LocalName, attrib.Name.LocalName, action, "removeOnInstall", "removeOnUninstall"));
12837 + this.Core.Write(ErrorMessages.IllegalAttributeValue(sourceLineNumbers, node.Name.LocalName, attrib.Name.LocalName, action, "removeOnInstall", "removeOnUninstall"));
12838 }
12839 }
12840 break;
@@ -12863,17 +12863,17 @@ namespace WixToolset.Core
12863
12864 if (null == action)
12865 {
12866 - this.Core.OnMessage(WixErrors.ExpectedAttribute(sourceLineNumbers, node.Name.LocalName, "Action"));
12866 + this.Core.Write(ErrorMessages.ExpectedAttribute(sourceLineNumbers, node.Name.LocalName, "Action"));
12867 }
12868
12869 if (null == key)
12870 {
12871 - this.Core.OnMessage(WixErrors.ExpectedAttribute(sourceLineNumbers, node.Name.LocalName, "Key"));
12871 + this.Core.Write(ErrorMessages.ExpectedAttribute(sourceLineNumbers, node.Name.LocalName, "Key"));
12872 }
12873
12874 if (CompilerConstants.IntegerNotSet == root)
12875 {
12876 - this.Core.OnMessage(WixErrors.ExpectedAttribute(sourceLineNumbers, node.Name.LocalName, "Root"));
12876 + this.Core.Write(ErrorMessages.ExpectedAttribute(sourceLineNumbers, node.Name.LocalName, "Root"));
12877 }
12878
12879 this.Core.ParseForExtensionElements(node);
@@ -12949,12 +12949,12 @@ namespace WixToolset.Core
12949
12950 if (null == key)
12951 {
12952 - this.Core.OnMessage(WixErrors.ExpectedAttribute(sourceLineNumbers, node.Name.LocalName, "Key"));
12952 + this.Core.Write(ErrorMessages.ExpectedAttribute(sourceLineNumbers, node.Name.LocalName, "Key"));
12953 }
12954
12955 if (CompilerConstants.IntegerNotSet == root)
12956 {
12957 - this.Core.OnMessage(WixErrors.ExpectedAttribute(sourceLineNumbers, node.Name.LocalName, "Root"));
12957 + this.Core.Write(ErrorMessages.ExpectedAttribute(sourceLineNumbers, node.Name.LocalName, "Root"));
12958 }
12959
12960 this.Core.ParseForExtensionElements(node);
@@ -13037,7 +13037,7 @@ namespace WixToolset.Core
13037
13038 if (null == name)
13039 {
13040 - this.Core.OnMessage(WixErrors.ExpectedAttribute(sourceLineNumbers, node.Name.LocalName, "Name"));
13040 + this.Core.Write(ErrorMessages.ExpectedAttribute(sourceLineNumbers, node.Name.LocalName, "Name"));
13041 }
13042 else if (0 < name.Length)
13043 {
@@ -13050,7 +13050,7 @@ namespace WixToolset.Core
13050 }
13051 else
13052 {
13053 - this.Core.OnMessage(WixErrors.IllegalAttributeValueWithOtherAttribute(sourceLineNumbers, node.Name.LocalName, "Name", name, "ShortName"));
13053 + this.Core.Write(ErrorMessages.IllegalAttributeValueWithOtherAttribute(sourceLineNumbers, node.Name.LocalName, "Name", name, "ShortName"));
13054 }
13055 }
13056 else if (null == shortName) // generate a short file name.
@@ -13061,13 +13061,13 @@ namespace WixToolset.Core
13061
13062 if (CompilerConstants.IntegerNotSet == on)
13063 {
13064 - this.Core.OnMessage(WixErrors.ExpectedAttribute(sourceLineNumbers, node.Name.LocalName, "On"));
13064 + this.Core.Write(ErrorMessages.ExpectedAttribute(sourceLineNumbers, node.Name.LocalName, "On"));
13065 on = CompilerConstants.IllegalInteger;
13066 }
13067
13068 if (null != directory && null != property)
13069 {
13070 - this.Core.OnMessage(WixErrors.IllegalAttributeWithOtherAttribute(sourceLineNumbers, node.Name.LocalName, "Property", "Directory", directory));
13070 + this.Core.Write(ErrorMessages.IllegalAttributeWithOtherAttribute(sourceLineNumbers, node.Name.LocalName, "Property", "Directory", directory));
13071 }
13072
13073 if (null == id)
@@ -13158,13 +13158,13 @@ namespace WixToolset.Core
13158
13159 if (CompilerConstants.IntegerNotSet == on)
13160 {
13161 - this.Core.OnMessage(WixErrors.ExpectedAttribute(sourceLineNumbers, node.Name.LocalName, "On"));
13161 + this.Core.Write(ErrorMessages.ExpectedAttribute(sourceLineNumbers, node.Name.LocalName, "On"));
13162 on = CompilerConstants.IllegalInteger;
13163 }
13164
13165 if (null != directory && null != property)
13166 {
13167 - this.Core.OnMessage(WixErrors.IllegalAttributeWithOtherAttribute(sourceLineNumbers, node.Name.LocalName, "Property", "Directory", directory));
13167 + this.Core.Write(ErrorMessages.IllegalAttributeWithOtherAttribute(sourceLineNumbers, node.Name.LocalName, "Property", "Directory", directory));
13168 }
13169
13170 if (null == id)
@@ -13244,12 +13244,12 @@ namespace WixToolset.Core
13244
13245 if (CompilerConstants.IntegerNotSet == runFromSource)
13246 {
13247 - this.Core.OnMessage(WixErrors.ExpectedAttribute(sourceLineNumbers, node.Name.LocalName, "RunFromSource"));
13247 + this.Core.Write(ErrorMessages.ExpectedAttribute(sourceLineNumbers, node.Name.LocalName, "RunFromSource"));
13248 }
13249
13250 if (CompilerConstants.IntegerNotSet == runLocal)
13251 {
13252 - this.Core.OnMessage(WixErrors.ExpectedAttribute(sourceLineNumbers, node.Name.LocalName, "RunLocal"));
13252 + this.Core.Write(ErrorMessages.ExpectedAttribute(sourceLineNumbers, node.Name.LocalName, "RunLocal"));
13253 }
13254
13255 this.Core.ParseForExtensionElements(node);
@@ -13395,22 +13395,22 @@ namespace WixToolset.Core
13395
13396 if (customAction && "Custom" == actionName)
13397 {
13398 - this.Core.OnMessage(WixErrors.ExpectedAttribute(childSourceLineNumbers, child.Name.LocalName, "Action"));
13398 + this.Core.Write(ErrorMessages.ExpectedAttribute(childSourceLineNumbers, child.Name.LocalName, "Action"));
13399 }
13400 else if (showDialog && "Show" == actionName)
13401 {
13402 - this.Core.OnMessage(WixErrors.ExpectedAttribute(childSourceLineNumbers, child.Name.LocalName, "Dialog"));
13402 + this.Core.Write(ErrorMessages.ExpectedAttribute(childSourceLineNumbers, child.Name.LocalName, "Dialog"));
13403 }
13404
13405 if (CompilerConstants.IntegerNotSet != sequence)
13406 {
13407 if (CompilerConstants.IntegerNotSet != exitSequence)
13408 {
13409 - this.Core.OnMessage(WixErrors.IllegalAttributeWithOtherAttribute(childSourceLineNumbers, child.Name.LocalName, "Sequence", "OnExit"));
13409 + this.Core.Write(ErrorMessages.IllegalAttributeWithOtherAttribute(childSourceLineNumbers, child.Name.LocalName, "Sequence", "OnExit"));
13410 }
13411 else if (null != beforeAction || null != afterAction)
13412 {
13413 - this.Core.OnMessage(WixErrors.IllegalAttributeWithOtherAttribute(childSourceLineNumbers, child.Name.LocalName, "Sequence", "Before", "After"));
13413 + this.Core.Write(ErrorMessages.IllegalAttributeWithOtherAttribute(childSourceLineNumbers, child.Name.LocalName, "Sequence", "Before", "After"));
13414 }
13415 }
13416 else // sequence not specified use OnExit (which may also be not set).
@@ -13420,33 +13420,33 @@ namespace WixToolset.Core
13420
13421 if (null != beforeAction && null != afterAction)
13422 {
13423 - this.Core.OnMessage(WixErrors.IllegalAttributeWithOtherAttribute(childSourceLineNumbers, child.Name.LocalName, "After", "Before"));
13423 + this.Core.Write(ErrorMessages.IllegalAttributeWithOtherAttribute(childSourceLineNumbers, child.Name.LocalName, "After", "Before"));
13424 }
13425 else if ((customAction || showDialog || specialAction) && !suppress && CompilerConstants.IntegerNotSet == sequence && null == beforeAction && null == afterAction)
13426 {
13427 - this.Core.OnMessage(WixErrors.NeedSequenceBeforeOrAfter(childSourceLineNumbers, child.Name.LocalName));
13427 + this.Core.Write(ErrorMessages.NeedSequenceBeforeOrAfter(childSourceLineNumbers, child.Name.LocalName));
13428 }
13429
13430 // action that is scheduled to occur before/after itself
13431 if (beforeAction == actionName)
13432 {
13433 - this.Core.OnMessage(WixErrors.ActionScheduledRelativeToItself(childSourceLineNumbers, child.Name.LocalName, "Before", beforeAction));
13433 + this.Core.Write(ErrorMessages.ActionScheduledRelativeToItself(childSourceLineNumbers, child.Name.LocalName, "Before", beforeAction));
13434 }
13435 else if (afterAction == actionName)
13436 {
13437 - this.Core.OnMessage(WixErrors.ActionScheduledRelativeToItself(childSourceLineNumbers, child.Name.LocalName, "After", afterAction));
13437 + this.Core.Write(ErrorMessages.ActionScheduledRelativeToItself(childSourceLineNumbers, child.Name.LocalName, "After", afterAction));
13438 }
13439
13440 // normal standard actions cannot be set overridable by the user (since they are overridable by default)
13441 if (overridable && WindowsInstallerStandard.IsStandardAction(actionName) && !specialAction)
13442 {
13443 - this.Core.OnMessage(WixErrors.UnexpectedAttribute(childSourceLineNumbers, child.Name.LocalName, "Overridable"));
13443 + this.Core.Write(ErrorMessages.UnexpectedAttribute(childSourceLineNumbers, child.Name.LocalName, "Overridable"));
13444 }
13445
13446 // suppress cannot be specified at the same time as Before, After, or Sequence
13447 if (suppress && (null != afterAction || null != beforeAction || CompilerConstants.IntegerNotSet != sequence || overridable))
13448 {
13449 - this.Core.OnMessage(WixErrors.IllegalAttributeWithOtherAttributes(childSourceLineNumbers, child.Name.LocalName, "Suppress", "Before", "After", "Sequence", "Overridable"));
13449 + this.Core.Write(ErrorMessages.IllegalAttributeWithOtherAttributes(childSourceLineNumbers, child.Name.LocalName, "Suppress", "Before", "After", "Sequence", "Overridable"));
13450 }
13451
13452 this.Core.ParseForExtensionElements(child);
@@ -13497,7 +13497,7 @@ namespace WixToolset.Core
13497 string requiredPrivileges = null;
13498 string sid = null;
13499
13500 - this.Core.OnMessage(WixWarnings.ServiceConfigFamilyNotSupported(sourceLineNumbers, node.Name.LocalName));
13500 + this.Core.Write(WarningMessages.ServiceConfigFamilyNotSupported(sourceLineNumbers, node.Name.LocalName));
13501
13502 foreach (XAttribute attrib in node.Attributes())
13503 {
@@ -13574,7 +13574,7 @@ namespace WixToolset.Core
13574 case "ServiceName":
13575 if (!String.IsNullOrEmpty(serviceName))
13576 {
13577 - this.Core.OnMessage(WixErrors.IllegalAttributeWhenNested(sourceLineNumbers, node.Name.LocalName, attrib.Name.LocalName, "ServiceInstall"));
13577 + this.Core.Write(ErrorMessages.IllegalAttributeWhenNested(sourceLineNumbers, node.Name.LocalName, attrib.Name.LocalName, "ServiceInstall"));
13578 }
13579
13580 name = this.Core.GetAttributeValue(sourceLineNumbers, attrib);
@@ -13752,7 +13752,7 @@ namespace WixToolset.Core
13752
13753 if (String.IsNullOrEmpty(name))
13754 {
13755 - this.Core.OnMessage(WixErrors.ExpectedAttribute(sourceLineNumbers, node.Name.LocalName, "ServiceName"));
13755 + this.Core.Write(ErrorMessages.ExpectedAttribute(sourceLineNumbers, node.Name.LocalName, "ServiceName"));
13756 }
13757 else if (null == id)
13758 {
@@ -13761,12 +13761,12 @@ namespace WixToolset.Core
13761
13762 if (0 == events)
13763 {
13764 - this.Core.OnMessage(WixErrors.ExpectedAttributes(sourceLineNumbers, node.Name.LocalName, "OnInstall", "OnReinstall", "OnUninstall"));
13764 + this.Core.Write(ErrorMessages.ExpectedAttributes(sourceLineNumbers, node.Name.LocalName, "OnInstall", "OnReinstall", "OnUninstall"));
13765 }
13766
13767 if (String.IsNullOrEmpty(delayedAutoStart) && String.IsNullOrEmpty(failureActionsWhen) && String.IsNullOrEmpty(preShutdownDelay) && String.IsNullOrEmpty(requiredPrivileges) && String.IsNullOrEmpty(sid))
13768 {
13769 - this.Core.OnMessage(WixErrors.ExpectedAttributes(sourceLineNumbers, node.Name.LocalName, "DelayedAutoStart", "FailureActionsWhen", "PreShutdownDelay", "ServiceSid", "RequiredPrivilege"));
13769 + this.Core.Write(ErrorMessages.ExpectedAttributes(sourceLineNumbers, node.Name.LocalName, "DelayedAutoStart", "FailureActionsWhen", "PreShutdownDelay", "ServiceSid", "RequiredPrivilege"));
13770 }
13771
13772 if (!this.Core.EncounteredError)
@@ -13841,7 +13841,7 @@ namespace WixToolset.Core
13841 string actions = null;
13842 string actionsDelays = null;
13843
13844 - this.Core.OnMessage(WixWarnings.ServiceConfigFamilyNotSupported(sourceLineNumbers, node.Name.LocalName));
13844 + this.Core.Write(WarningMessages.ServiceConfigFamilyNotSupported(sourceLineNumbers, node.Name.LocalName));
13845
13846 foreach (XAttribute attrib in node.Attributes())
13847 {
@@ -13885,7 +13885,7 @@ namespace WixToolset.Core
13885 case "ServiceName":
13886 if (!String.IsNullOrEmpty(serviceName))
13887 {
13888 - this.Core.OnMessage(WixErrors.IllegalAttributeWhenNested(sourceLineNumbers, node.Name.LocalName, attrib.Name.LocalName, "ServiceInstall"));
13888 + this.Core.Write(ErrorMessages.IllegalAttributeWhenNested(sourceLineNumbers, node.Name.LocalName, attrib.Name.LocalName, "ServiceInstall"));
13889 }
13890
13891 name = this.Core.GetAttributeValue(sourceLineNumbers, attrib);
@@ -13952,12 +13952,12 @@ namespace WixToolset.Core
13952
13953 if (String.IsNullOrEmpty(action))
13954 {
13955 - this.Core.OnMessage(WixErrors.ExpectedAttribute(sourceLineNumbers, child.Name.LocalName, "Action"));
13955 + this.Core.Write(ErrorMessages.ExpectedAttribute(sourceLineNumbers, child.Name.LocalName, "Action"));
13956 }
13957
13958 if (String.IsNullOrEmpty(delay))
13959 {
13960 - this.Core.OnMessage(WixErrors.ExpectedAttribute(sourceLineNumbers, child.Name.LocalName, "Delay"));
13960 + this.Core.Write(ErrorMessages.ExpectedAttribute(sourceLineNumbers, child.Name.LocalName, "Delay"));
13961 }
13962
13963 if (!String.IsNullOrEmpty(actions))
@@ -13985,7 +13985,7 @@ namespace WixToolset.Core
13985
13986 if (String.IsNullOrEmpty(name))
13987 {
13988 - this.Core.OnMessage(WixErrors.ExpectedAttribute(sourceLineNumbers, node.Name.LocalName, "ServiceName"));
13988 + this.Core.Write(ErrorMessages.ExpectedAttribute(sourceLineNumbers, node.Name.LocalName, "ServiceName"));
13989 }
13990 else if (null == id)
13991 {
@@ -13994,7 +13994,7 @@ namespace WixToolset.Core
13994
13995 if (0 == events)
13996 {
13997 - this.Core.OnMessage(WixErrors.ExpectedAttributes(sourceLineNumbers, node.Name.LocalName, "OnInstall", "OnReinstall", "OnUninstall"));
13997 + this.Core.Write(ErrorMessages.ExpectedAttributes(sourceLineNumbers, node.Name.LocalName, "OnInstall", "OnReinstall", "OnUninstall"));
13998 }
13999
14000 if (!this.Core.EncounteredError)
@@ -14106,7 +14106,7 @@ namespace WixToolset.Core
14106
14107 if (null == name)
14108 {
14109 - this.Core.OnMessage(WixErrors.ExpectedAttribute(sourceLineNumbers, node.Name.LocalName, "Name"));
14109 + this.Core.Write(ErrorMessages.ExpectedAttribute(sourceLineNumbers, node.Name.LocalName, "Name"));
14110 }
14111
14112 // get the ServiceControl arguments
@@ -14184,7 +14184,7 @@ namespace WixToolset.Core
14184
14185 if (null == dependency)
14186 {
14187 - this.Core.OnMessage(WixErrors.ExpectedAttribute(sourceLineNumbers, node.Name.LocalName, "Id"));
14187 + this.Core.Write(ErrorMessages.ExpectedAttribute(sourceLineNumbers, node.Name.LocalName, "Id"));
14188 }
14189
14190 this.Core.ParseForExtensionElements(node);
@@ -14255,7 +14255,7 @@ namespace WixToolset.Core
14255 errorbits |= MsiInterop.MsidbServiceInstallErrorCritical;
14256 break;
14257 default:
14258 - this.Core.OnMessage(WixErrors.IllegalAttributeValue(sourceLineNumbers, node.Name.LocalName, attrib.Name.LocalName, errorControlValue, "ignore", "normal", "critical"));
14258 + this.Core.Write(ErrorMessages.IllegalAttributeValue(sourceLineNumbers, node.Name.LocalName, attrib.Name.LocalName, errorControlValue, "ignore", "normal", "critical"));
14259 break;
14260 }
14261 }
@@ -14293,10 +14293,10 @@ namespace WixToolset.Core
14293 break;
14294 case Wix.ServiceInstall.StartType.boot:
14295 case Wix.ServiceInstall.StartType.system:
14296 - this.Core.OnMessage(WixErrors.ValueNotSupported(sourceLineNumbers, node.Name.LocalName, attrib.Name.LocalName, startValue));
14296 + this.Core.Write(ErrorMessages.ValueNotSupported(sourceLineNumbers, node.Name.LocalName, attrib.Name.LocalName, startValue));
14297 break;
14298 default:
14299 - this.Core.OnMessage(WixErrors.IllegalAttributeValue(sourceLineNumbers, node.Name.LocalName, attrib.Name.LocalName, startValue, "auto", "demand", "disabled"));
14299 + this.Core.Write(ErrorMessages.IllegalAttributeValue(sourceLineNumbers, node.Name.LocalName, attrib.Name.LocalName, startValue, "auto", "demand", "disabled"));
14300 break;
14301 }
14302 }
@@ -14316,10 +14316,10 @@ namespace WixToolset.Core
14316 break;
14317 case Wix.ServiceInstall.TypeType.kernelDriver:
14318 case Wix.ServiceInstall.TypeType.systemDriver:
14319 - this.Core.OnMessage(WixErrors.ValueNotSupported(sourceLineNumbers, node.Name.LocalName, attrib.Name.LocalName, typeValue));
14319 + this.Core.Write(ErrorMessages.ValueNotSupported(sourceLineNumbers, node.Name.LocalName, attrib.Name.LocalName, typeValue));
14320 break;
14321 default:
14322 - this.Core.OnMessage(WixErrors.IllegalAttributeValue(sourceLineNumbers, node.Name.LocalName, node.Name.LocalName, typeValue, "ownProcess", "shareProcess"));
14322 + this.Core.Write(ErrorMessages.IllegalAttributeValue(sourceLineNumbers, node.Name.LocalName, node.Name.LocalName, typeValue, "ownProcess", "shareProcess"));
14323 break;
14324 }
14325 }
@@ -14343,7 +14343,7 @@ namespace WixToolset.Core
14343
14344 if (String.IsNullOrEmpty(name))
14345 {
14346 - this.Core.OnMessage(WixErrors.ExpectedAttribute(sourceLineNumbers, node.Name.LocalName, "Name"));
14346 + this.Core.Write(ErrorMessages.ExpectedAttribute(sourceLineNumbers, node.Name.LocalName, "Name"));
14347 }
14348 else if (null == id)
14349 {
@@ -14352,7 +14352,7 @@ namespace WixToolset.Core
14352
14353 if (0 == startType)
14354 {
14355 - this.Core.OnMessage(WixErrors.ExpectedAttribute(sourceLineNumbers, node.Name.LocalName, "Start"));
14355 + this.Core.Write(ErrorMessages.ExpectedAttribute(sourceLineNumbers, node.Name.LocalName, "Start"));
14356 }
14357
14358 if (eraseDescription)
@@ -14462,7 +14462,7 @@ namespace WixToolset.Core
14462 // default so no work necessary.
14463 break;
14464 default:
14465 - this.Core.OnMessage(WixErrors.IllegalAttributeValue(sourceLineNumbers, node.Name.LocalName, attrib.Name.LocalName, sequenceValue, "execute", "ui", "both"));
14465 + this.Core.Write(ErrorMessages.IllegalAttributeValue(sourceLineNumbers, node.Name.LocalName, attrib.Name.LocalName, sequenceValue, "execute", "ui", "both"));
14466 break;
14467 }
14468 }
@@ -14485,7 +14485,7 @@ namespace WixToolset.Core
14485
14486 if (null == id)
14487 {
14488 - this.Core.OnMessage(WixErrors.ExpectedAttribute(sourceLineNumbers, node.Name.LocalName, "Id"));
14488 + this.Core.Write(ErrorMessages.ExpectedAttribute(sourceLineNumbers, node.Name.LocalName, "Id"));
14489 }
14490 else if (String.IsNullOrEmpty(actionName))
14491 {
@@ -14494,7 +14494,7 @@ namespace WixToolset.Core
14494
14495 if (null == value)
14496 {
14497 - this.Core.OnMessage(WixErrors.ExpectedAttribute(sourceLineNumbers, node.Name.LocalName, "Value"));
14497 + this.Core.Write(ErrorMessages.ExpectedAttribute(sourceLineNumbers, node.Name.LocalName, "Value"));
14498 }
14499
14500 this.Core.ParseForExtensionElements(node);
@@ -14577,7 +14577,7 @@ namespace WixToolset.Core
14577 // default so no work necessary.
14578 break;
14579 default:
14580 - this.Core.OnMessage(WixErrors.IllegalAttributeValue(sourceLineNumbers, node.Name.LocalName, attrib.Name.LocalName, sequenceValue, "execute", "ui", "both"));
14580 + this.Core.Write(ErrorMessages.IllegalAttributeValue(sourceLineNumbers, node.Name.LocalName, attrib.Name.LocalName, sequenceValue, "execute", "ui", "both"));
14581 break;
14582 }
14583 }
@@ -14600,7 +14600,7 @@ namespace WixToolset.Core
14600
14601 if (null == id)
14602 {
14603 - this.Core.OnMessage(WixErrors.ExpectedAttribute(sourceLineNumbers, node.Name.LocalName, "Id"));
14603 + this.Core.Write(ErrorMessages.ExpectedAttribute(sourceLineNumbers, node.Name.LocalName, "Id"));
14604 }
14605 else if (String.IsNullOrEmpty(actionName))
14606 {
@@ -14609,16 +14609,16 @@ namespace WixToolset.Core
14609
14610 if (null == value)
14611 {
14612 - this.Core.OnMessage(WixErrors.ExpectedAttribute(sourceLineNumbers, node.Name.LocalName, "Value"));
14612 + this.Core.Write(ErrorMessages.ExpectedAttribute(sourceLineNumbers, node.Name.LocalName, "Value"));
14613 }
14614
14615 if (null != beforeAction && null != afterAction)
14616 {
14617 - this.Core.OnMessage(WixErrors.IllegalAttributeWithOtherAttribute(sourceLineNumbers, node.Name.LocalName, "After", "Before"));
14617 + this.Core.Write(ErrorMessages.IllegalAttributeWithOtherAttribute(sourceLineNumbers, node.Name.LocalName, "After", "Before"));
14618 }
14619 else if (null == beforeAction && null == afterAction)
14620 {
14621 - this.Core.OnMessage(WixErrors.ExpectedAttributesWithOtherAttribute(sourceLineNumbers, node.Name.LocalName, "After", "Before", "Id"));
14621 + this.Core.Write(ErrorMessages.ExpectedAttributesWithOtherAttribute(sourceLineNumbers, node.Name.LocalName, "After", "Before", "Id"));
14622 }
14623
14624 this.Core.ParseForExtensionElements(node);
@@ -14629,11 +14629,11 @@ namespace WixToolset.Core
14629 // action that is scheduled to occur before/after itself
14630 if (beforeAction == actionName)
14631 {
14632 - this.Core.OnMessage(WixErrors.ActionScheduledRelativeToItself(sourceLineNumbers, node.Name.LocalName, "Before", beforeAction));
14632 + this.Core.Write(ErrorMessages.ActionScheduledRelativeToItself(sourceLineNumbers, node.Name.LocalName, "Before", beforeAction));
14633 }
14634 else if (afterAction == actionName)
14635 {
14636 - this.Core.OnMessage(WixErrors.ActionScheduledRelativeToItself(sourceLineNumbers, node.Name.LocalName, "After", afterAction));
14636 + this.Core.Write(ErrorMessages.ActionScheduledRelativeToItself(sourceLineNumbers, node.Name.LocalName, "After", afterAction));
14637 }
14638
14639 var row = this.Core.CreateRow(sourceLineNumbers, TupleDefinitionType.CustomAction);
@@ -14712,7 +14712,7 @@ namespace WixToolset.Core
14712
14713 if (null == id)
14714 {
14715 - this.Core.OnMessage(WixErrors.ExpectedAttribute(sourceLineNumbers, node.Name.LocalName, "Id"));
14715 + this.Core.Write(ErrorMessages.ExpectedAttribute(sourceLineNumbers, node.Name.LocalName, "Id"));
14716 }
14717
14718 this.Core.ParseForExtensionElements(node);
@@ -14767,12 +14767,12 @@ namespace WixToolset.Core
14767
14768 if (null == name)
14769 {
14770 - this.Core.OnMessage(WixErrors.ExpectedAttribute(sourceLineNumbers, node.Name.LocalName, "Name"));
14770 + this.Core.Write(ErrorMessages.ExpectedAttribute(sourceLineNumbers, node.Name.LocalName, "Name"));
14771 }
14772
14773 if (null == sourceFile)
14774 {
14775 - this.Core.OnMessage(WixErrors.ExpectedAttribute(sourceLineNumbers, node.Name.LocalName, "SourceFile"));
14775 + this.Core.Write(ErrorMessages.ExpectedAttribute(sourceLineNumbers, node.Name.LocalName, "SourceFile"));
14776 }
14777
14778 foreach (XElement child in node.Elements())
@@ -14785,7 +14785,7 @@ namespace WixToolset.Core
14785 this.ParseSFPCatalogElement(child, ref parentName);
14786 if (null != dependency && parentName == dependency)
14787 {
14788 - this.Core.OnMessage(WixErrors.ExpectedAttribute(sourceLineNumbers, node.Name.LocalName, "Dependency"));
14788 + this.Core.Write(ErrorMessages.ExpectedAttribute(sourceLineNumbers, node.Name.LocalName, "Dependency"));
14789 }
14790 dependency = parentName;
14791 break;
@@ -14805,7 +14805,7 @@ namespace WixToolset.Core
14805
14806 if (null == dependency)
14807 {
14808 - this.Core.OnMessage(WixErrors.ExpectedAttribute(sourceLineNumbers, node.Name.LocalName, "Dependency"));
14808 + this.Core.Write(ErrorMessages.ExpectedAttribute(sourceLineNumbers, node.Name.LocalName, "Dependency"));
14809 }
14810
14811 if (!this.Core.EncounteredError)
@@ -14916,7 +14916,7 @@ namespace WixToolset.Core
14916 show = 7;
14917 break;
14918 default:
14919 - this.Core.OnMessage(WixErrors.IllegalAttributeValue(sourceLineNumbers, node.Name.LocalName, "Show", showValue, "normal", "maximized", "minimized"));
14919 + this.Core.Write(ErrorMessages.IllegalAttributeValue(sourceLineNumbers, node.Name.LocalName, "Show", showValue, "normal", "maximized", "minimized"));
14920 show = CompilerConstants.IllegalInteger;
14921 break;
14922 }
@@ -14941,7 +14941,7 @@ namespace WixToolset.Core
14941
14942 if (advertise && null != target)
14943 {
14944 - this.Core.OnMessage(WixErrors.IllegalAttributeWithOtherAttribute(sourceLineNumbers, node.Name.LocalName, "Target", "Advertise", "yes"));
14944 + this.Core.Write(ErrorMessages.IllegalAttributeWithOtherAttribute(sourceLineNumbers, node.Name.LocalName, "Target", "Advertise", "yes"));
14945 }
14946
14947 if (null == directory)
@@ -14952,7 +14952,7 @@ namespace WixToolset.Core
14952 }
14953 else
14954 {
14955 - this.Core.OnMessage(WixErrors.ExpectedAttributeWhenElementNotUnderElement(sourceLineNumbers, node.Name.LocalName, "Directory", "Component"));
14955 + this.Core.Write(ErrorMessages.ExpectedAttributeWhenElementNotUnderElement(sourceLineNumbers, node.Name.LocalName, "Directory", "Component"));
14956 }
14957 }
14958
@@ -14960,14 +14960,14 @@ namespace WixToolset.Core
14960 {
14961 if (CompilerConstants.IntegerNotSet == descriptionResourceId)
14962 {
14963 - this.Core.OnMessage(WixErrors.ExpectedAttribute(sourceLineNumbers, node.Name.LocalName, "DescriptionResourceDll", "DescriptionResourceId"));
14963 + this.Core.Write(ErrorMessages.ExpectedAttribute(sourceLineNumbers, node.Name.LocalName, "DescriptionResourceDll", "DescriptionResourceId"));
14964 }
14965 }
14966 else
14967 {
14968 if (CompilerConstants.IntegerNotSet != descriptionResourceId)
14969 {
14970 - this.Core.OnMessage(WixErrors.ExpectedAttribute(sourceLineNumbers, node.Name.LocalName, "DescriptionResourceId", "DescriptionResourceDll"));
14970 + this.Core.Write(ErrorMessages.ExpectedAttribute(sourceLineNumbers, node.Name.LocalName, "DescriptionResourceId", "DescriptionResourceDll"));
14971 }
14972 }
14973
@@ -14975,20 +14975,20 @@ namespace WixToolset.Core
14975 {
14976 if (CompilerConstants.IntegerNotSet == displayResourceId)
14977 {
14978 - this.Core.OnMessage(WixErrors.ExpectedAttribute(sourceLineNumbers, node.Name.LocalName, "DisplayResourceDll", "DisplayResourceId"));
14978 + this.Core.Write(ErrorMessages.ExpectedAttribute(sourceLineNumbers, node.Name.LocalName, "DisplayResourceDll", "DisplayResourceId"));
14979 }
14980 }
14981 else
14982 {
14983 if (CompilerConstants.IntegerNotSet != displayResourceId)
14984 {
14985 - this.Core.OnMessage(WixErrors.ExpectedAttribute(sourceLineNumbers, node.Name.LocalName, "DisplayResourceId", "DisplayResourceDll"));
14985 + this.Core.Write(ErrorMessages.ExpectedAttribute(sourceLineNumbers, node.Name.LocalName, "DisplayResourceId", "DisplayResourceDll"));
14986 }
14987 }
14988
14989 if (null == name)
14990 {
14991 - this.Core.OnMessage(WixErrors.ExpectedAttribute(sourceLineNumbers, node.Name.LocalName, "Name"));
14991 + this.Core.Write(ErrorMessages.ExpectedAttribute(sourceLineNumbers, node.Name.LocalName, "Name"));
14992 }
14993 else if (0 < name.Length)
14994 {
@@ -15001,7 +15001,7 @@ namespace WixToolset.Core
15001 }
15002 else
15003 {
15004 - this.Core.OnMessage(WixErrors.IllegalAttributeValueWithOtherAttribute(sourceLineNumbers, node.Name.LocalName, "Name", name, "ShortName"));
15004 + this.Core.Write(ErrorMessages.IllegalAttributeValueWithOtherAttribute(sourceLineNumbers, node.Name.LocalName, "Name", name, "ShortName"));
15005 }
15006 }
15007 else if (null == shortName) // generate a short file name.
@@ -15012,7 +15012,7 @@ namespace WixToolset.Core
15012
15013 if ("Component" != parentElementLocalName && null != target)
15014 {
15015 - this.Core.OnMessage(WixErrors.IllegalAttributeWhenNested(sourceLineNumbers, node.Name.LocalName, "Target", parentElementLocalName));
15015 + this.Core.Write(ErrorMessages.IllegalAttributeWhenNested(sourceLineNumbers, node.Name.LocalName, "Target", parentElementLocalName));
15016 }
15017
15018 if (null == id)
@@ -15053,7 +15053,7 @@ namespace WixToolset.Core
15053 {
15054 if (YesNoType.Yes != parentKeyPath && "Component" != parentElementLocalName)
15055 {
15056 - this.Core.OnMessage(WixWarnings.UnclearShortcut(sourceLineNumbers, id.Id, componentId, defaultTarget));
15056 + this.Core.Write(WarningMessages.UnclearShortcut(sourceLineNumbers, id.Id, componentId, defaultTarget));
15057 }
15058 row.Set(4, Guid.Empty.ToString("B"));
15059 }
@@ -15138,7 +15138,7 @@ namespace WixToolset.Core
15138
15139 if (String.IsNullOrEmpty(key))
15140 {
15141 - this.Core.OnMessage(WixErrors.ExpectedAttribute(sourceLineNumbers, node.Name.LocalName, "Key"));
15141 + this.Core.Write(ErrorMessages.ExpectedAttribute(sourceLineNumbers, node.Name.LocalName, "Key"));
15142 }
15143 else if (null == id)
15144 {
@@ -15154,13 +15154,13 @@ namespace WixToolset.Core
15154 }
15155 else // cannot specify both the value attribute and inner text
15156 {
15157 - this.Core.OnMessage(WixErrors.IllegalAttributeWithInnerText(sourceLineNumbers, node.Name.LocalName, "Value"));
15157 + this.Core.Write(ErrorMessages.IllegalAttributeWithInnerText(sourceLineNumbers, node.Name.LocalName, "Value"));
15158 }
15159 }
15160
15161 if (String.IsNullOrEmpty(value))
15162 {
15163 - this.Core.OnMessage(WixErrors.ExpectedAttribute(sourceLineNumbers, node.Name.LocalName, "Value"));
15163 + this.Core.Write(ErrorMessages.ExpectedAttribute(sourceLineNumbers, node.Name.LocalName, "Value"));
15164 }
15165
15166 this.Core.ParseForExtensionElements(node);
@@ -15265,12 +15265,12 @@ namespace WixToolset.Core
15265
15266 if (null == id)
15267 {
15268 - this.Core.OnMessage(WixErrors.ExpectedAttribute(sourceLineNumbers, node.Name.LocalName, "Id"));
15268 + this.Core.Write(ErrorMessages.ExpectedAttribute(sourceLineNumbers, node.Name.LocalName, "Id"));
15269 }
15270
15271 if (CompilerConstants.IntegerNotSet == language)
15272 {
15273 - this.Core.OnMessage(WixErrors.ExpectedAttribute(sourceLineNumbers, node.Name.LocalName, "Language"));
15273 + this.Core.Write(ErrorMessages.ExpectedAttribute(sourceLineNumbers, node.Name.LocalName, "Language"));
15274 language = CompilerConstants.IllegalInteger;
15275 }
15276
@@ -15334,29 +15334,29 @@ namespace WixToolset.Core
15334 {
15335 if (CompilerConstants.LongNotSet != resourceId)
15336 {
15337 - this.Core.OnMessage(WixErrors.IllegalAttributeWhenAdvertised(sourceLineNumbers, node.Name.LocalName, "ResourceId"));
15337 + this.Core.Write(ErrorMessages.IllegalAttributeWhenAdvertised(sourceLineNumbers, node.Name.LocalName, "ResourceId"));
15338 }
15339
15340 if (0 != flags)
15341 {
15342 if (0x1 == (flags & 0x1))
15343 {
15344 - this.Core.OnMessage(WixErrors.IllegalAttributeWithOtherAttribute(sourceLineNumbers, node.Name.LocalName, "Restricted", "Advertise", "yes"));
15344 + this.Core.Write(ErrorMessages.IllegalAttributeWithOtherAttribute(sourceLineNumbers, node.Name.LocalName, "Restricted", "Advertise", "yes"));
15345 }
15346
15347 if (0x2 == (flags & 0x2))
15348 {
15349 - this.Core.OnMessage(WixErrors.IllegalAttributeWithOtherAttribute(sourceLineNumbers, node.Name.LocalName, "Control", "Advertise", "yes"));
15349 + this.Core.Write(ErrorMessages.IllegalAttributeWithOtherAttribute(sourceLineNumbers, node.Name.LocalName, "Control", "Advertise", "yes"));
15350 }
15351
15352 if (0x4 == (flags & 0x4))
15353 {
15354 - this.Core.OnMessage(WixErrors.IllegalAttributeWithOtherAttribute(sourceLineNumbers, node.Name.LocalName, "Hidden", "Advertise", "yes"));
15354 + this.Core.Write(ErrorMessages.IllegalAttributeWithOtherAttribute(sourceLineNumbers, node.Name.LocalName, "Hidden", "Advertise", "yes"));
15355 }
15356
15357 if (0x8 == (flags & 0x8))
15358 {
15359 - this.Core.OnMessage(WixErrors.IllegalAttributeWithOtherAttribute(sourceLineNumbers, node.Name.LocalName, "HasDiskImage", "Advertise", "yes"));
15359 + this.Core.Write(ErrorMessages.IllegalAttributeWithOtherAttribute(sourceLineNumbers, node.Name.LocalName, "HasDiskImage", "Advertise", "yes"));
15360 }
15361 }
15362
@@ -15383,17 +15383,17 @@ namespace WixToolset.Core
15383 {
15384 if (CompilerConstants.IntegerNotSet != cost && CompilerConstants.IllegalInteger != cost)
15385 {
15386 - this.Core.OnMessage(WixErrors.IllegalAttributeWithOtherAttribute(sourceLineNumbers, node.Name.LocalName, "Cost", "Advertise", "no"));
15386 + this.Core.Write(ErrorMessages.IllegalAttributeWithOtherAttribute(sourceLineNumbers, node.Name.LocalName, "Cost", "Advertise", "no"));
15387 }
15388
15389 if (null == fileServer)
15390 {
15391 - this.Core.OnMessage(WixErrors.MissingTypeLibFile(sourceLineNumbers, node.Name.LocalName, "File"));
15391 + this.Core.Write(ErrorMessages.MissingTypeLibFile(sourceLineNumbers, node.Name.LocalName, "File"));
15392 }
15393
15394 if (null == registryVersion)
15395 {
15396 - this.Core.OnMessage(WixErrors.ExpectedAttributesWithOtherAttribute(sourceLineNumbers, node.Name.LocalName, "MajorVersion", "MinorVersion", "Advertise", "no"));
15396 + this.Core.Write(ErrorMessages.ExpectedAttributesWithOtherAttribute(sourceLineNumbers, node.Name.LocalName, "MajorVersion", "MinorVersion", "Advertise", "no"));
15397 }
15398
15399 // HKCR\TypeLib\[ID]\[MajorVersion].[MinorVersion], (Default) = [Description]
@@ -15443,7 +15443,7 @@ namespace WixToolset.Core
15443 case "BinarySource":
15444 if (null != source)
15445 {
15446 - this.Core.OnMessage(WixErrors.IllegalAttributeWithOtherAttributes(sourceLineNumbers, node.Name.LocalName, attrib.Name.LocalName, "FileSource", "PropertySource"));
15446 + this.Core.Write(ErrorMessages.IllegalAttributeWithOtherAttributes(sourceLineNumbers, node.Name.LocalName, attrib.Name.LocalName, "FileSource", "PropertySource"));
15447 }
15448 source = this.Core.GetAttributeIdentifierValue(sourceLineNumbers, attrib);
15449 type = MsiInterop.MsidbCustomActionTypeExe + MsiInterop.MsidbCustomActionTypeBinaryData;
@@ -15455,7 +15455,7 @@ namespace WixToolset.Core
15455 case "FileSource":
15456 if (null != source)
15457 {
15458 - this.Core.OnMessage(WixErrors.IllegalAttributeWithOtherAttributes(sourceLineNumbers, node.Name.LocalName, attrib.Name.LocalName, "BinarySource", "PropertySource"));
15458 + this.Core.Write(ErrorMessages.IllegalAttributeWithOtherAttributes(sourceLineNumbers, node.Name.LocalName, attrib.Name.LocalName, "BinarySource", "PropertySource"));
15459 }
15460 source = this.Core.GetAttributeIdentifierValue(sourceLineNumbers, attrib);
15461 type = MsiInterop.MsidbCustomActionTypeExe + MsiInterop.MsidbCustomActionTypeSourceFile;
@@ -15464,7 +15464,7 @@ namespace WixToolset.Core
15464 case "PropertySource":
15465 if (null != source)
15466 {
15467 - this.Core.OnMessage(WixErrors.IllegalAttributeWithOtherAttributes(sourceLineNumbers, node.Name.LocalName, attrib.Name.LocalName, "BinarySource", "FileSource"));
15467 + this.Core.Write(ErrorMessages.IllegalAttributeWithOtherAttributes(sourceLineNumbers, node.Name.LocalName, attrib.Name.LocalName, "BinarySource", "FileSource"));
15468 }
15469 source = this.Core.GetAttributeIdentifierValue(sourceLineNumbers, attrib);
15470 type = MsiInterop.MsidbCustomActionTypeExe + MsiInterop.MsidbCustomActionTypeProperty;
@@ -15491,7 +15491,7 @@ namespace WixToolset.Core
15491
15492 if (null == source)
15493 {
15494 - this.Core.OnMessage(WixErrors.ExpectedAttributes(sourceLineNumbers, node.Name.LocalName, "BinarySource", "FileSource", "PropertySource"));
15494 + this.Core.Write(ErrorMessages.ExpectedAttributes(sourceLineNumbers, node.Name.LocalName, "BinarySource", "FileSource", "PropertySource"));
15495 }
15496
15497 if (!this.Core.EncounteredError)
@@ -15556,7 +15556,7 @@ namespace WixToolset.Core
15556 if (0 < embeddedUICount) // there can be only one embedded UI
15557 {
15558 SourceLineNumber childSourceLineNumbers = Preprocessor.GetSourceLineNumbers(child);
15559 - this.Core.OnMessage(WixErrors.TooManyChildren(childSourceLineNumbers, node.Name.LocalName, child.Name.LocalName));
15559 + this.Core.Write(ErrorMessages.TooManyChildren(childSourceLineNumbers, node.Name.LocalName, child.Name.LocalName));
15560 }
15561 this.ParseEmbeddedUIElement(child);
15562 ++embeddedUICount;
@@ -15582,7 +15582,7 @@ namespace WixToolset.Core
15582 if (RadioButtonType.Bitmap == radioButtonType || RadioButtonType.Icon == radioButtonType)
15583 {
15584 SourceLineNumber childSourceLineNumbers = Preprocessor.GetSourceLineNumbers(child);
15585 - this.Core.OnMessage(WixErrors.RadioButtonBitmapAndIconDisallowed(childSourceLineNumbers));
15585 + this.Core.Write(ErrorMessages.RadioButtonBitmapAndIconDisallowed(childSourceLineNumbers));
15586 }
15587 break;
15588 case "TextStyle":
@@ -15655,7 +15655,7 @@ namespace WixToolset.Core
15655 }
15656 else
15657 {
15658 - this.Core.OnMessage(WixErrors.IllegalAttributeExceptOnElement(sourceLineNumbers, node.Name.LocalName, attrib.Name.LocalName, "ListView"));
15658 + this.Core.Write(ErrorMessages.IllegalAttributeExceptOnElement(sourceLineNumbers, node.Name.LocalName, attrib.Name.LocalName, "ListView"));
15659 }
15660 break;
15661 case "Text":
@@ -15677,7 +15677,7 @@ namespace WixToolset.Core
15677
15678 if (null == value)
15679 {
15680 - this.Core.OnMessage(WixErrors.ExpectedAttribute(sourceLineNumbers, node.Name.LocalName, "Value"));
15680 + this.Core.Write(ErrorMessages.ExpectedAttribute(sourceLineNumbers, node.Name.LocalName, "Value"));
15681 }
15682
15683 this.Core.ParseForExtensionElements(node);
@@ -15725,7 +15725,7 @@ namespace WixToolset.Core
15725 case "Bitmap":
15726 if (RadioButtonType.NotSet != type)
15727 {
15728 - this.Core.OnMessage(WixErrors.IllegalAttributeWithOtherAttributes(sourceLineNumbers, node.Name.LocalName, attrib.Name.LocalName, "Icon", "Text"));
15728 + this.Core.Write(ErrorMessages.IllegalAttributeWithOtherAttributes(sourceLineNumbers, node.Name.LocalName, attrib.Name.LocalName, "Icon", "Text"));
15729 }
15730 text = this.Core.GetAttributeIdentifierValue(sourceLineNumbers, attrib);
15731 this.Core.CreateSimpleReference(sourceLineNumbers, "Binary", text);
@@ -15740,7 +15740,7 @@ namespace WixToolset.Core
15740 case "Icon":
15741 if (RadioButtonType.NotSet != type)
15742 {
15743 - this.Core.OnMessage(WixErrors.IllegalAttributeWithOtherAttributes(sourceLineNumbers, node.Name.LocalName, attrib.Name.LocalName, "Bitmap", "Text"));
15743 + this.Core.Write(ErrorMessages.IllegalAttributeWithOtherAttributes(sourceLineNumbers, node.Name.LocalName, attrib.Name.LocalName, "Bitmap", "Text"));
15744 }
15745 text = this.Core.GetAttributeIdentifierValue(sourceLineNumbers, attrib);
15746 this.Core.CreateSimpleReference(sourceLineNumbers, "Binary", text);
@@ -15749,7 +15749,7 @@ namespace WixToolset.Core
15749 case "Text":
15750 if (RadioButtonType.NotSet != type)
15751 {
15752 - this.Core.OnMessage(WixErrors.IllegalAttributeWithOtherAttribute(sourceLineNumbers, node.Name.LocalName, attrib.Name.LocalName, "Bitmap", "Icon"));
15752 + this.Core.Write(ErrorMessages.IllegalAttributeWithOtherAttribute(sourceLineNumbers, node.Name.LocalName, attrib.Name.LocalName, "Bitmap", "Icon"));
15753 }
15754 text = this.Core.GetAttributeValue(sourceLineNumbers, attrib);
15755 type = RadioButtonType.Text;
@@ -15782,27 +15782,27 @@ namespace WixToolset.Core
15782
15783 if (null == value)
15784 {
15785 - this.Core.OnMessage(WixErrors.ExpectedAttribute(sourceLineNumbers, node.Name.LocalName, "Value"));
15785 + this.Core.Write(ErrorMessages.ExpectedAttribute(sourceLineNumbers, node.Name.LocalName, "Value"));
15786 }
15787
15788 if (null == x)
15789 {
15790 - this.Core.OnMessage(WixErrors.ExpectedAttribute(sourceLineNumbers, node.Name.LocalName, "X"));
15790 + this.Core.Write(ErrorMessages.ExpectedAttribute(sourceLineNumbers, node.Name.LocalName, "X"));
15791 }
15792
15793 if (null == y)
15794 {
15795 - this.Core.OnMessage(WixErrors.ExpectedAttribute(sourceLineNumbers, node.Name.LocalName, "Y"));
15795 + this.Core.Write(ErrorMessages.ExpectedAttribute(sourceLineNumbers, node.Name.LocalName, "Y"));
15796 }
15797
15798 if (null == width)
15799 {
15800 - this.Core.OnMessage(WixErrors.ExpectedAttribute(sourceLineNumbers, node.Name.LocalName, "Width"));
15800 + this.Core.Write(ErrorMessages.ExpectedAttribute(sourceLineNumbers, node.Name.LocalName, "Width"));
15801 }
15802
15803 if (null == height)
15804 {
15805 - this.Core.OnMessage(WixErrors.ExpectedAttribute(sourceLineNumbers, node.Name.LocalName, "Height"));
15805 + this.Core.Write(ErrorMessages.ExpectedAttribute(sourceLineNumbers, node.Name.LocalName, "Height"));
15806 }
15807
15808 this.Core.ParseForExtensionElements(node);
@@ -15860,7 +15860,7 @@ namespace WixToolset.Core
15860
15861 if (null == action)
15862 {
15863 - this.Core.OnMessage(WixErrors.ExpectedAttribute(sourceLineNumbers, node.Name.LocalName, "Id"));
15863 + this.Core.Write(ErrorMessages.ExpectedAttribute(sourceLineNumbers, node.Name.LocalName, "Id"));
15864 }
15865
15866 foreach (XElement child in node.Elements())
@@ -15996,7 +15996,7 @@ namespace WixToolset.Core
15996
15997 if (null == property)
15998 {
15999 - this.Core.OnMessage(WixErrors.ExpectedAttribute(sourceLineNumbers, node.Name.LocalName, "Property"));
15999 + this.Core.Write(ErrorMessages.ExpectedAttribute(sourceLineNumbers, node.Name.LocalName, "Property"));
16000 }
16001
16002 foreach (XElement child in node.Elements())
@@ -16064,7 +16064,7 @@ namespace WixToolset.Core
16064
16065 if (null == property)
16066 {
16067 - this.Core.OnMessage(WixErrors.ExpectedAttribute(sourceLineNumbers, node.Name.LocalName, "Property"));
16067 + this.Core.Write(ErrorMessages.ExpectedAttribute(sourceLineNumbers, node.Name.LocalName, "Property"));
16068 }
16069
16070 foreach (XElement child in node.Elements())
@@ -16082,7 +16082,7 @@ namespace WixToolset.Core
16082 else if (groupType != type)
16083 {
16084 SourceLineNumber childSourceLineNumbers = Preprocessor.GetSourceLineNumbers(child);
16085 - this.Core.OnMessage(WixErrors.RadioButtonTypeInconsistent(childSourceLineNumbers));
16085 + this.Core.Write(ErrorMessages.RadioButtonTypeInconsistent(childSourceLineNumbers));
16086 }
16087 break;
16088 default:
@@ -16135,7 +16135,7 @@ namespace WixToolset.Core
16135
16136 if (null == action)
16137 {
16138 - this.Core.OnMessage(WixErrors.ExpectedAttribute(sourceLineNumbers, node.Name.LocalName, "Action"));
16138 + this.Core.Write(ErrorMessages.ExpectedAttribute(sourceLineNumbers, node.Name.LocalName, "Action"));
16139 }
16140
16141 this.Core.ParseForExtensionElements(node);
@@ -16314,7 +16314,7 @@ namespace WixToolset.Core
16314
16315 if (null == faceName)
16316 {
16317 - this.Core.OnMessage(WixErrors.ExpectedAttribute(sourceLineNumbers, node.Name.LocalName, "FaceName"));
16317 + this.Core.Write(ErrorMessages.ExpectedAttribute(sourceLineNumbers, node.Name.LocalName, "FaceName"));
16318 }
16319
16320 this.Core.ParseForExtensionElements(node);
@@ -16458,7 +16458,7 @@ namespace WixToolset.Core
16458
16459 if (null == id)
16460 {
16461 - this.Core.OnMessage(WixErrors.ExpectedAttribute(sourceLineNumbers, node.Name.LocalName, "Id"));
16461 + this.Core.Write(ErrorMessages.ExpectedAttribute(sourceLineNumbers, node.Name.LocalName, "Id"));
16462 id = Identifier.Invalid;
16463 }
16464
@@ -16498,7 +16498,7 @@ namespace WixToolset.Core
16498
16499 if (null == firstControl)
16500 {
16501 - this.Core.OnMessage(WixErrors.NoFirstControlSpecified(sourceLineNumbers, id.Id));
16501 + this.Core.Write(ErrorMessages.NoFirstControlSpecified(sourceLineNumbers, id.Id));
16502 }
16503
16504 if (!this.Core.EncounteredError)
@@ -16676,14 +16676,14 @@ namespace WixToolset.Core
16676
16677 if (String.IsNullOrEmpty(sourceFile))
16678 {
16679 - this.Core.OnMessage(WixErrors.ExpectedAttribute(sourceLineNumbers, node.Name.LocalName, "SourceFile"));
16679 + this.Core.Write(ErrorMessages.ExpectedAttribute(sourceLineNumbers, node.Name.LocalName, "SourceFile"));
16680 }
16681 else if (String.IsNullOrEmpty(name))
16682 {
16683 name = Path.GetFileName(sourceFile);
16684 if (!this.Core.IsValidLongFilename(name, false))
16685 {
16686 - this.Core.OnMessage(WixErrors.IllegalLongFilename(sourceLineNumbers, node.Name.LocalName, "Source", name));
16686 + this.Core.Write(ErrorMessages.IllegalLongFilename(sourceLineNumbers, node.Name.LocalName, "Source", name));
16687 }
16688 }
16689
@@ -16696,11 +16696,11 @@ namespace WixToolset.Core
16696
16697 if (null == id)
16698 {
16699 - this.Core.OnMessage(WixErrors.ExpectedAttribute(sourceLineNumbers, node.Name.LocalName, "Id"));
16699 + this.Core.Write(ErrorMessages.ExpectedAttribute(sourceLineNumbers, node.Name.LocalName, "Id"));
16700 }
16701 else if (!Common.IsIdentifier(id.Id))
16702 {
16703 - this.Core.OnMessage(WixErrors.IllegalIdentifier(sourceLineNumbers, node.Name.LocalName, "Id", id.Id));
16703 + this.Core.Write(ErrorMessages.IllegalIdentifier(sourceLineNumbers, node.Name.LocalName, "Id", id.Id));
16704 }
16705 }
16706 else if (String.IsNullOrEmpty(name))
@@ -16710,7 +16710,7 @@ namespace WixToolset.Core
16710
16711 if (!name.Contains("."))
16712 {
16713 - this.Core.OnMessage(WixErrors.InvalidEmbeddedUIFileName(sourceLineNumbers, name));
16713 + this.Core.Write(ErrorMessages.InvalidEmbeddedUIFileName(sourceLineNumbers, name));
16714 }
16715
16716 foreach (XElement child in node.Elements())
@@ -16783,14 +16783,14 @@ namespace WixToolset.Core
16783
16784 if (String.IsNullOrEmpty(sourceFile))
16785 {
16786 - this.Core.OnMessage(WixErrors.ExpectedAttribute(sourceLineNumbers, node.Name.LocalName, "SourceFile"));
16786 + this.Core.Write(ErrorMessages.ExpectedAttribute(sourceLineNumbers, node.Name.LocalName, "SourceFile"));
16787 }
16788 else if (String.IsNullOrEmpty(name))
16789 {
16790 name = Path.GetFileName(sourceFile);
16791 if (!this.Core.IsValidLongFilename(name, false))
16792 {
16793 - this.Core.OnMessage(WixErrors.IllegalLongFilename(sourceLineNumbers, node.Name.LocalName, "Source", name));
16793 + this.Core.Write(ErrorMessages.IllegalLongFilename(sourceLineNumbers, node.Name.LocalName, "Source", name));
16794 }
16795 }
16796
@@ -16803,11 +16803,11 @@ namespace WixToolset.Core
16803
16804 if (null == id)
16805 {
16806 - this.Core.OnMessage(WixErrors.ExpectedAttribute(sourceLineNumbers, node.Name.LocalName, "Id"));
16806 + this.Core.Write(ErrorMessages.ExpectedAttribute(sourceLineNumbers, node.Name.LocalName, "Id"));
16807 }
16808 else if (!Common.IsIdentifier(id.Id))
16809 {
16810 - this.Core.OnMessage(WixErrors.IllegalIdentifier(sourceLineNumbers, node.Name.LocalName, "Id", id.Id));
16810 + this.Core.Write(ErrorMessages.IllegalIdentifier(sourceLineNumbers, node.Name.LocalName, "Id", id.Id));
16811 }
16812 }
16813 else if (String.IsNullOrEmpty(name))
@@ -16868,7 +16868,7 @@ namespace WixToolset.Core
16868 XAttribute typeAttribute = node.Attribute("Type");
16869 if (null == typeAttribute)
16870 {
16871 - this.Core.OnMessage(WixErrors.ExpectedAttribute(sourceLineNumbers, node.Name.LocalName, "Type"));
16871 + this.Core.Write(ErrorMessages.ExpectedAttribute(sourceLineNumbers, node.Name.LocalName, "Type"));
16872 }
16873 else
16874 {
@@ -17016,14 +17016,14 @@ namespace WixToolset.Core
17016 this.Core.TrySetBitFromName(specialAttributes, "Icon32", YesNoType.Yes, bits, 16);
17017 break;
17018 default:
17019 - this.Core.OnMessage(WixErrors.IllegalAttributeValue(sourceLineNumbers, node.Name.LocalName, attrib.Name.LocalName, iconSizeValue, "16", "32", "48"));
17019 + this.Core.Write(ErrorMessages.IllegalAttributeValue(sourceLineNumbers, node.Name.LocalName, attrib.Name.LocalName, iconSizeValue, "16", "32", "48"));
17020 break;
17021 }
17022 }
17023 }
17024 else
17025 {
17026 - this.Core.OnMessage(WixErrors.IllegalAttributeValueWithOtherAttribute(sourceLineNumbers, node.Name.LocalName, attrib.Name.LocalName, iconSizeValue, "Type"));
17026 + this.Core.Write(ErrorMessages.IllegalAttributeValueWithOtherAttribute(sourceLineNumbers, node.Name.LocalName, attrib.Name.LocalName, iconSizeValue, "Type"));
17027 }
17028 break;
17029 case "Property":
@@ -17074,22 +17074,22 @@ namespace WixToolset.Core
17074
17075 if (null == height)
17076 {
17077 - this.Core.OnMessage(WixErrors.ExpectedAttribute(sourceLineNumbers, node.Name.LocalName, "Height"));
17077 + this.Core.Write(ErrorMessages.ExpectedAttribute(sourceLineNumbers, node.Name.LocalName, "Height"));
17078 }
17079
17080 if (null == width)
17081 {
17082 - this.Core.OnMessage(WixErrors.ExpectedAttribute(sourceLineNumbers, node.Name.LocalName, "Width"));
17082 + this.Core.Write(ErrorMessages.ExpectedAttribute(sourceLineNumbers, node.Name.LocalName, "Width"));
17083 }
17084
17085 if (null == x)
17086 {
17087 - this.Core.OnMessage(WixErrors.ExpectedAttribute(sourceLineNumbers, node.Name.LocalName, "X"));
17087 + this.Core.Write(ErrorMessages.ExpectedAttribute(sourceLineNumbers, node.Name.LocalName, "X"));
17088 }
17089
17090 if (null == y)
17091 {
17092 - this.Core.OnMessage(WixErrors.ExpectedAttribute(sourceLineNumbers, node.Name.LocalName, "Y"));
17092 + this.Core.Write(ErrorMessages.ExpectedAttribute(sourceLineNumbers, node.Name.LocalName, "Y"));
17093 }
17094
17095 if (null == id)
@@ -17165,7 +17165,7 @@ namespace WixToolset.Core
17165 text = Common.GetInnerText(child);
17166 if (!String.IsNullOrEmpty(text) && null != sourceFile)
17167 {
17168 - this.Core.OnMessage(WixErrors.IllegalAttributeWithInnerText(childSourceLineNumbers, child.Name.LocalName, "SourceFile"));
17168 + this.Core.Write(ErrorMessages.IllegalAttributeWithInnerText(childSourceLineNumbers, child.Name.LocalName, "SourceFile"));
17169 }
17170 break;
17171 default:
@@ -17211,11 +17211,11 @@ namespace WixToolset.Core
17211 {
17212 if (String.IsNullOrEmpty(property) && String.IsNullOrEmpty(checkBoxPropertyRef))
17213 {
17214 - this.Core.OnMessage(WixErrors.ExpectedAttribute(sourceLineNumbers, node.Name.LocalName, "Property", "CheckBoxPropertyRef", true));
17214 + this.Core.Write(ErrorMessages.ExpectedAttribute(sourceLineNumbers, node.Name.LocalName, "Property", "CheckBoxPropertyRef", true));
17215 }
17216 else if (!String.IsNullOrEmpty(property) && !String.IsNullOrEmpty(checkBoxPropertyRef))
17217 {
17218 - this.Core.OnMessage(WixErrors.IllegalAttributeWithOtherAttribute(sourceLineNumbers, node.Name.LocalName, "Property", "CheckBoxPropertyRef"));
17218 + this.Core.Write(ErrorMessages.IllegalAttributeWithOtherAttribute(sourceLineNumbers, node.Name.LocalName, "Property", "CheckBoxPropertyRef"));
17219 }
17220 else if (!String.IsNullOrEmpty(property))
17221 {
@@ -17272,7 +17272,7 @@ namespace WixToolset.Core
17272 {
17273 if (TupleDefinitionType.BBControl == tableName)
17274 {
17275 - this.Core.OnMessage(WixErrors.TabbableControlNotAllowedInBillboard(sourceLineNumbers, node.Name.LocalName, controlType));
17275 + this.Core.Write(ErrorMessages.TabbableControlNotAllowedInBillboard(sourceLineNumbers, node.Name.LocalName, controlType));
17276 }
17277
17278 if (null == firstControl)
@@ -17322,14 +17322,14 @@ namespace WixToolset.Core
17322 case "Control":
17323 if (null != control)
17324 {
17325 - this.Core.OnMessage(WixErrors.IllegalAttributeWhenNested(sourceLineNumbers, node.Name.LocalName, attrib.Name.LocalName, node.Parent.Name.LocalName));
17325 + this.Core.Write(ErrorMessages.IllegalAttributeWhenNested(sourceLineNumbers, node.Name.LocalName, attrib.Name.LocalName, node.Parent.Name.LocalName));
17326 }
17327 control = this.Core.GetAttributeIdentifierValue(sourceLineNumbers, attrib);
17328 break;
17329 case "Dialog":
17330 if (null != dialog)
17331 {
17332 - this.Core.OnMessage(WixErrors.IllegalAttributeWhenNested(sourceLineNumbers, node.Name.LocalName, attrib.Name.LocalName, node.Parent.Name.LocalName));
17332 + this.Core.Write(ErrorMessages.IllegalAttributeWhenNested(sourceLineNumbers, node.Name.LocalName, attrib.Name.LocalName, node.Parent.Name.LocalName));
17333 }
17334 dialog = this.Core.GetAttributeIdentifierValue(sourceLineNumbers, attrib);
17335 this.Core.CreateSimpleReference(sourceLineNumbers, "Dialog", dialog);
@@ -17361,28 +17361,28 @@ namespace WixToolset.Core
17361
17362 if (null == control)
17363 {
17364 - this.Core.OnMessage(WixErrors.ExpectedAttribute(sourceLineNumbers, node.Name.LocalName, "Control"));
17364 + this.Core.Write(ErrorMessages.ExpectedAttribute(sourceLineNumbers, node.Name.LocalName, "Control"));
17365 }
17366
17367 if (null == dialog)
17368 {
17369 - this.Core.OnMessage(WixErrors.ExpectedAttribute(sourceLineNumbers, node.Name.LocalName, "Dialog"));
17369 + this.Core.Write(ErrorMessages.ExpectedAttribute(sourceLineNumbers, node.Name.LocalName, "Dialog"));
17370 }
17371
17372 if (null == controlEvent && null == property) // need to specify at least one
17373 {
17374 - this.Core.OnMessage(WixErrors.ExpectedAttributes(sourceLineNumbers, node.Name.LocalName, "Event", "Property"));
17374 + this.Core.Write(ErrorMessages.ExpectedAttributes(sourceLineNumbers, node.Name.LocalName, "Event", "Property"));
17375 }
17376 else if (null != controlEvent && null != property) // cannot specify both
17377 {
17378 - this.Core.OnMessage(WixErrors.IllegalAttributeWithOtherAttribute(sourceLineNumbers, node.Name.LocalName, "Event", "Property"));
17378 + this.Core.Write(ErrorMessages.IllegalAttributeWithOtherAttribute(sourceLineNumbers, node.Name.LocalName, "Event", "Property"));
17379 }
17380
17381 if (null == argument)
17382 {
17383 if (null != controlEvent)
17384 {
17385 - this.Core.OnMessage(WixErrors.ExpectedAttribute(sourceLineNumbers, node.Name.LocalName, "Value", "Event"));
17385 + this.Core.Write(ErrorMessages.ExpectedAttribute(sourceLineNumbers, node.Name.LocalName, "Value", "Event"));
17386 }
17387 else if (null != property)
17388 {
@@ -17499,7 +17499,7 @@ namespace WixToolset.Core
17499
17500 if (null == id)
17501 {
17502 - this.Core.OnMessage(WixErrors.ExpectedAttribute(sourceLineNumbers, node.Name.LocalName, "Id"));
17502 + this.Core.Write(ErrorMessages.ExpectedAttribute(sourceLineNumbers, node.Name.LocalName, "Id"));
17503 }
17504
17505 // process the UpgradeVersion children here
@@ -17513,7 +17513,7 @@ namespace WixToolset.Core
17513 {
17514 case "Property":
17515 this.ParsePropertyElement(child);
17516 - this.Core.OnMessage(WixWarnings.DeprecatedUpgradeProperty(childSourceLineNumbers));
17516 + this.Core.Write(WarningMessages.DeprecatedUpgradeProperty(childSourceLineNumbers));
17517 break;
17518 case "UpgradeVersion":
17519 this.ParseUpgradeVersionElement(child, id);
@@ -17618,16 +17618,16 @@ namespace WixToolset.Core
17618
17619 if (null == actionProperty)
17620 {
17621 - this.Core.OnMessage(WixErrors.ExpectedAttribute(sourceLineNumbers, node.Name.LocalName, "Property"));
17621 + this.Core.Write(ErrorMessages.ExpectedAttribute(sourceLineNumbers, node.Name.LocalName, "Property"));
17622 }
17623 else if (actionProperty.ToUpper(CultureInfo.InvariantCulture) != actionProperty)
17624 {
17625 - this.Core.OnMessage(WixErrors.SecurePropertyNotUppercase(sourceLineNumbers, node.Name.LocalName, "Property", actionProperty));
17625 + this.Core.Write(ErrorMessages.SecurePropertyNotUppercase(sourceLineNumbers, node.Name.LocalName, "Property", actionProperty));
17626 }
17627
17628 if (null == minimum && null == maximum)
17629 {
17630 - this.Core.OnMessage(WixErrors.ExpectedAttributes(sourceLineNumbers, node.Name.LocalName, "Minimum", "Maximum"));
17630 + this.Core.Write(ErrorMessages.ExpectedAttributes(sourceLineNumbers, node.Name.LocalName, "Minimum", "Maximum"));
17631 }
17632
17633 this.Core.ParseForExtensionElements(node);
@@ -17694,7 +17694,7 @@ namespace WixToolset.Core
17694 break;
17695 case "Target":
17696 target = this.Core.GetAttributeValue(sourceLineNumbers, attrib);
17697 - this.Core.OnMessage(WixWarnings.DeprecatedAttribute(sourceLineNumbers, node.Name.LocalName, attrib.Name.LocalName, "TargetFile", "TargetProperty"));
17697 + this.Core.Write(WarningMessages.DeprecatedAttribute(sourceLineNumbers, node.Name.LocalName, attrib.Name.LocalName, "TargetFile", "TargetProperty"));
17698 break;
17699 case "TargetFile":
17700 targetFile = this.Core.GetAttributeValue(sourceLineNumbers, attrib);
@@ -17716,22 +17716,22 @@ namespace WixToolset.Core
17716
17717 if (null == id)
17718 {
17719 - this.Core.OnMessage(WixErrors.ExpectedAttribute(sourceLineNumbers, node.Name.LocalName, "Id"));
17719 + this.Core.Write(ErrorMessages.ExpectedAttribute(sourceLineNumbers, node.Name.LocalName, "Id"));
17720 }
17721
17722 if (null != target && null != targetFile)
17723 {
17724 - this.Core.OnMessage(WixErrors.IllegalAttributeWithOtherAttribute(sourceLineNumbers, node.Name.LocalName, "Target", "TargetFile"));
17724 + this.Core.Write(ErrorMessages.IllegalAttributeWithOtherAttribute(sourceLineNumbers, node.Name.LocalName, "Target", "TargetFile"));
17725 }
17726
17727 if (null != target && null != targetProperty)
17728 {
17729 - this.Core.OnMessage(WixErrors.IllegalAttributeWithOtherAttribute(sourceLineNumbers, node.Name.LocalName, "Target", "TargetProperty"));
17729 + this.Core.Write(ErrorMessages.IllegalAttributeWithOtherAttribute(sourceLineNumbers, node.Name.LocalName, "Target", "TargetProperty"));
17730 }
17731
17732 if (null != targetFile && null != targetProperty)
17733 {
17734 - this.Core.OnMessage(WixErrors.IllegalAttributeWithOtherAttribute(sourceLineNumbers, node.Name.LocalName, "TargetFile", "TargetProperty"));
17734 + this.Core.Write(ErrorMessages.IllegalAttributeWithOtherAttribute(sourceLineNumbers, node.Name.LocalName, "TargetFile", "TargetProperty"));
17735 }
17736
17737 this.Core.ParseForExtensionElements(node);
@@ -17740,17 +17740,17 @@ namespace WixToolset.Core
17740 {
17741 if (null != target)
17742 {
17743 - this.Core.OnMessage(WixErrors.IllegalAttributeWhenAdvertised(sourceLineNumbers, node.Name.LocalName, "Target"));
17743 + this.Core.Write(ErrorMessages.IllegalAttributeWhenAdvertised(sourceLineNumbers, node.Name.LocalName, "Target"));
17744 }
17745
17746 if (null != targetFile)
17747 {
17748 - this.Core.OnMessage(WixErrors.IllegalAttributeWhenAdvertised(sourceLineNumbers, node.Name.LocalName, "TargetFile"));
17748 + this.Core.Write(ErrorMessages.IllegalAttributeWhenAdvertised(sourceLineNumbers, node.Name.LocalName, "TargetFile"));
17749 }
17750
17751 if (null != targetProperty)
17752 {
17753 - this.Core.OnMessage(WixErrors.IllegalAttributeWhenAdvertised(sourceLineNumbers, node.Name.LocalName, "TargetProperty"));
17753 + this.Core.Write(ErrorMessages.IllegalAttributeWhenAdvertised(sourceLineNumbers, node.Name.LocalName, "TargetProperty"));
17754 }
17755
17756 if (!this.Core.EncounteredError)
@@ -17770,12 +17770,12 @@ namespace WixToolset.Core
17770 {
17771 if (CompilerConstants.IntegerNotSet != sequence)
17772 {
17773 - this.Core.OnMessage(WixErrors.IllegalAttributeWithOtherAttribute(sourceLineNumbers, node.Name.LocalName, "Sequence", "Advertise", "no"));
17773 + this.Core.Write(ErrorMessages.IllegalAttributeWithOtherAttribute(sourceLineNumbers, node.Name.LocalName, "Sequence", "Advertise", "no"));
17774 }
17775
17776 if (null == target && null == targetFile && null == targetProperty)
17777 {
17778 - this.Core.OnMessage(WixErrors.ExpectedAttributesWithOtherAttribute(sourceLineNumbers, node.Name.LocalName, "TargetFile", "TargetProperty", "Advertise", "no"));
17778 + this.Core.Write(ErrorMessages.ExpectedAttributesWithOtherAttribute(sourceLineNumbers, node.Name.LocalName, "TargetFile", "TargetProperty", "Advertise", "no"));
17779 }
17780
17781 if (null == target)
@@ -17851,12 +17851,12 @@ namespace WixToolset.Core
17851
17852 if (null == id)
17853 {
17854 - this.Core.OnMessage(WixErrors.ExpectedAttribute(sourceLineNumbers, node.Name.LocalName, "Id"));
17854 + this.Core.Write(ErrorMessages.ExpectedAttribute(sourceLineNumbers, node.Name.LocalName, "Id"));
17855 }
17856
17857 if (null == key)
17858 {
17859 - this.Core.OnMessage(WixErrors.ExpectedAttribute(sourceLineNumbers, node.Name.LocalName, "Key"));
17859 + this.Core.Write(ErrorMessages.ExpectedAttribute(sourceLineNumbers, node.Name.LocalName, "Key"));
17860 }
17861
17862 BundleApprovedExeForElevationAttributes attributes = BundleApprovedExeForElevationAttributes.None;
@@ -17938,7 +17938,7 @@ namespace WixToolset.Core
17938 disableModify = 0;
17939 break;
17940 default:
17941 - this.Core.OnMessage(WixErrors.IllegalAttributeValue(sourceLineNumbers, node.Name.LocalName, attrib.Name.LocalName, value, "button", "yes", "no"));
17941 + this.Core.Write(ErrorMessages.IllegalAttributeValue(sourceLineNumbers, node.Name.LocalName, attrib.Name.LocalName, value, "button", "yes", "no"));
17942 break;
17943 }
17944 break;
@@ -17946,7 +17946,7 @@ namespace WixToolset.Core
17946 disableRemove = this.Core.GetAttributeYesNoValue(sourceLineNumbers, attrib);
17947 break;
17948 case "DisableRepair":
17949 - this.Core.OnMessage(WixWarnings.DeprecatedAttribute(sourceLineNumbers, node.Name.LocalName, attrib.Name.LocalName));
17949 + this.Core.Write(WarningMessages.DeprecatedAttribute(sourceLineNumbers, node.Name.LocalName, attrib.Name.LocalName));
17950 break;
17951 case "HelpTelephone":
17952 helpTelephone = this.Core.GetAttributeValue(sourceLineNumbers, attrib);
@@ -17990,16 +17990,16 @@ namespace WixToolset.Core
17990
17991 if (String.IsNullOrEmpty(version))
17992 {
17993 - this.Core.OnMessage(WixErrors.ExpectedAttribute(sourceLineNumbers, node.Name.LocalName, "Version"));
17993 + this.Core.Write(ErrorMessages.ExpectedAttribute(sourceLineNumbers, node.Name.LocalName, "Version"));
17994 }
17995 else if (!CompilerCore.IsValidModuleOrBundleVersion(version))
17996 {
17997 - this.Core.OnMessage(WixWarnings.InvalidModuleOrBundleVersion(sourceLineNumbers, "Bundle", version));
17997 + this.Core.Write(WarningMessages.InvalidModuleOrBundleVersion(sourceLineNumbers, "Bundle", version));
17998 }
17999
18000 if (String.IsNullOrEmpty(upgradeCode))
18001 {
18002 - this.Core.OnMessage(WixErrors.ExpectedAttribute(sourceLineNumbers, node.Name.LocalName, "UpgradeCode"));
18002 + this.Core.Write(ErrorMessages.ExpectedAttribute(sourceLineNumbers, node.Name.LocalName, "UpgradeCode"));
18003 }
18004
18005 if (String.IsNullOrEmpty(copyright))
@@ -18054,7 +18054,7 @@ namespace WixToolset.Core
18054 if (baSeen)
18055 {
18056 SourceLineNumber childSourceLineNumbers = Preprocessor.GetSourceLineNumbers(child);
18057 - this.Core.OnMessage(WixErrors.TooManyChildren(childSourceLineNumbers, node.Name.LocalName, "BootstrapperApplication"));
18057 + this.Core.Write(ErrorMessages.TooManyChildren(childSourceLineNumbers, node.Name.LocalName, "BootstrapperApplication"));
18058 }
18059 this.ParseBootstrapperApplicationElement(child);
18060 baSeen = true;
@@ -18072,7 +18072,7 @@ namespace WixToolset.Core
18072 if (chainSeen)
18073 {
18074 SourceLineNumber childSourceLineNumbers = Preprocessor.GetSourceLineNumbers(child);
18075 - this.Core.OnMessage(WixErrors.TooManyChildren(childSourceLineNumbers, node.Name.LocalName, "Chain"));
18075 + this.Core.Write(ErrorMessages.TooManyChildren(childSourceLineNumbers, node.Name.LocalName, "Chain"));
18076 }
18077 this.ParseChainElement(child);
18078 chainSeen = true;
@@ -18087,7 +18087,7 @@ namespace WixToolset.Core
18087 if (logSeen)
18088 {
18089 SourceLineNumber childSourceLineNumbers = Preprocessor.GetSourceLineNumbers(child);
18090 - this.Core.OnMessage(WixErrors.TooManyChildren(childSourceLineNumbers, node.Name.LocalName, "Log"));
18090 + this.Core.Write(ErrorMessages.TooManyChildren(childSourceLineNumbers, node.Name.LocalName, "Log"));
18091 }
18092 logVariablePrefixAndExtension = this.ParseLogElement(child, fileSystemSafeBundleName);
18093 logSeen = true;
@@ -18124,7 +18124,7 @@ namespace WixToolset.Core
18124
18125 if (!chainSeen)
18126 {
18127 - this.Core.OnMessage(WixErrors.ExpectedElement(sourceLineNumbers, node.Name.LocalName, "Chain"));
18127 + this.Core.Write(ErrorMessages.ExpectedElement(sourceLineNumbers, node.Name.LocalName, "Chain"));
18128 }
18129
18130 if (!this.Core.EncounteredError)
@@ -18278,12 +18278,12 @@ namespace WixToolset.Core
18278
18279 if (null == id)
18280 {
18281 - this.Core.OnMessage(WixErrors.ExpectedAttribute(sourceLineNumbers, node.Name.LocalName, "Id"));
18281 + this.Core.Write(ErrorMessages.ExpectedAttribute(sourceLineNumbers, node.Name.LocalName, "Id"));
18282 }
18283
18284 if (null == sourceFile)
18285 {
18286 - this.Core.OnMessage(WixErrors.ExpectedAttribute(sourceLineNumbers, node.Name.LocalName, "SourceFile"));
18286 + this.Core.Write(ErrorMessages.ExpectedAttribute(sourceLineNumbers, node.Name.LocalName, "SourceFile"));
18287 }
18288
18289 this.Core.ParseForExtensionElements(node);
@@ -18329,7 +18329,7 @@ namespace WixToolset.Core
18329 string typeString = this.Core.GetAttributeValue(sourceLineNumbers, attrib);
18330 if (!Enum.TryParse<ContainerType>(typeString, out type))
18331 {
18332 - this.Core.OnMessage(WixErrors.IllegalAttributeValueWithLegalList(sourceLineNumbers, node.Name.LocalName, "Type", typeString, "attached, detached"));
18332 + this.Core.Write(ErrorMessages.IllegalAttributeValueWithLegalList(sourceLineNumbers, node.Name.LocalName, "Type", typeString, "attached, detached"));
18333 }
18334 break;
18335 default:
@@ -18352,12 +18352,12 @@ namespace WixToolset.Core
18352
18353 if (null == id)
18354 {
18355 - this.Core.OnMessage(WixErrors.ExpectedAttribute(sourceLineNumbers, node.Name.LocalName, "Id"));
18355 + this.Core.Write(ErrorMessages.ExpectedAttribute(sourceLineNumbers, node.Name.LocalName, "Id"));
18356 id = Identifier.Invalid;
18357 }
18358 else if (!Common.IsIdentifier(id.Id))
18359 {
18360 - this.Core.OnMessage(WixErrors.IllegalIdentifier(sourceLineNumbers, node.Name.LocalName, "Id", id.Id));
18360 + this.Core.Write(ErrorMessages.IllegalIdentifier(sourceLineNumbers, node.Name.LocalName, "Id", id.Id));
18361 }
18362 }
18363 else if (null == name)
@@ -18367,7 +18367,7 @@ namespace WixToolset.Core
18367
18368 if (!String.IsNullOrEmpty(downloadUrl) && ContainerType.Detached != type)
18369 {
18370 - this.Core.OnMessage(WixErrors.IllegalAttributeWithOtherAttribute(sourceLineNumbers, node.Name.LocalName, "DownloadUrl", "Type", "attached"));
18370 + this.Core.Write(ErrorMessages.IllegalAttributeWithOtherAttribute(sourceLineNumbers, node.Name.LocalName, "DownloadUrl", "Type", "attached"));
18371 }
18372
18373 foreach (XElement child in node.Elements())
@@ -18449,7 +18449,7 @@ namespace WixToolset.Core
18449 // We need *either* <Payload> or <PayloadGroupRef> or even just @SourceFile on the BA...
18450 // but we just say there's a missing <Payload>.
18451 // TODO: Is there a better message for this?
18452 - this.Core.OnMessage(WixErrors.ExpectedElement(sourceLineNumbers, node.Name.LocalName, "Payload"));
18452 + this.Core.Write(ErrorMessages.ExpectedElement(sourceLineNumbers, node.Name.LocalName, "Payload"));
18453 }
18454
18455 // Add the application as an attached container and if an Id was provided add that too.
@@ -18527,7 +18527,7 @@ namespace WixToolset.Core
18527
18528 if (String.IsNullOrEmpty(id))
18529 {
18530 - this.Core.OnMessage(WixErrors.ExpectedAttribute(sourceLineNumbers, node.Name.LocalName, "Id"));
18530 + this.Core.Write(ErrorMessages.ExpectedAttribute(sourceLineNumbers, node.Name.LocalName, "Id"));
18531 }
18532 else
18533 {
@@ -18593,7 +18593,7 @@ namespace WixToolset.Core
18593 }
18594 else
18595 {
18596 - this.Core.OnMessage(WixErrors.ExpectedAttributeInElementOrParent(sourceLineNumbers, node.Name.LocalName, "Manufacturer", node.Parent.Name.LocalName));
18596 + this.Core.Write(ErrorMessages.ExpectedAttributeInElementOrParent(sourceLineNumbers, node.Name.LocalName, "Manufacturer", node.Parent.Name.LocalName));
18597 }
18598 }
18599
@@ -18613,13 +18613,13 @@ namespace WixToolset.Core
18613 }
18614 else
18615 {
18616 - this.Core.OnMessage(WixErrors.ExpectedAttributeInElementOrParent(sourceLineNumbers, node.Name.LocalName, "Name", node.Parent.Name.LocalName));
18616 + this.Core.Write(ErrorMessages.ExpectedAttributeInElementOrParent(sourceLineNumbers, node.Name.LocalName, "Name", node.Parent.Name.LocalName));
18617 }
18618 }
18619
18620 if (String.IsNullOrEmpty(classification))
18621 {
18622 - this.Core.OnMessage(WixErrors.IllegalEmptyAttributeValue(sourceLineNumbers, node.Name.LocalName, "Classification", defaultClassification));
18622 + this.Core.Write(ErrorMessages.IllegalEmptyAttributeValue(sourceLineNumbers, node.Name.LocalName, "Classification", defaultClassification));
18623 }
18624
18625 this.Core.ParseForExtensionElements(node);
@@ -18755,13 +18755,13 @@ namespace WixToolset.Core
18755
18756 if (CompilerCore.WixNamespace == node.Name.Namespace && node.Name.LocalName != "ExePackage")
18757 {
18758 - this.Core.OnMessage(WixErrors.RemotePayloadUnsupported(childSourceLineNumbers));
18758 + this.Core.Write(ErrorMessages.RemotePayloadUnsupported(childSourceLineNumbers));
18759 continue;
18760 }
18761
18762 if (null != remotePayload)
18763 {
18764 - this.Core.OnMessage(WixErrors.TooManyChildren(childSourceLineNumbers, node.Name.LocalName, child.Name.LocalName));
18764 + this.Core.Write(ErrorMessages.TooManyChildren(childSourceLineNumbers, node.Name.LocalName, child.Name.LocalName));
18765 }
18766
18767 remotePayload = this.ParseRemotePayloadElement(child);
@@ -18769,11 +18769,11 @@ namespace WixToolset.Core
18769
18770 if (null != sourceFile && null != remotePayload)
18771 {
18772 - this.Core.OnMessage(WixErrors.UnexpectedElementWithAttribute(sourceLineNumbers, node.Name.LocalName, "RemotePayload", "SourceFile"));
18772 + this.Core.Write(ErrorMessages.UnexpectedElementWithAttribute(sourceLineNumbers, node.Name.LocalName, "RemotePayload", "SourceFile"));
18773 }
18774 else if (null == sourceFile && null == remotePayload)
18775 {
18776 - this.Core.OnMessage(WixErrors.ExpectedAttributeOrElement(sourceLineNumbers, node.Name.LocalName, "SourceFile", "RemotePayload"));
18776 + this.Core.Write(ErrorMessages.ExpectedAttributeOrElement(sourceLineNumbers, node.Name.LocalName, "SourceFile", "RemotePayload"));
18777 }
18778 else if (null == sourceFile)
18779 {
@@ -18782,14 +18782,14 @@ namespace WixToolset.Core
18782
18783 if (null == downloadUrl && null != remotePayload)
18784 {
18785 - this.Core.OnMessage(WixErrors.ExpectedAttributeWithElement(sourceLineNumbers, node.Name.LocalName, "DownloadUrl", "RemotePayload"));
18785 + this.Core.Write(ErrorMessages.ExpectedAttributeWithElement(sourceLineNumbers, node.Name.LocalName, "DownloadUrl", "RemotePayload"));
18786 }
18787
18788 if (Compiler.BurnUXContainerId == parentId)
18789 {
18790 if (compressed == YesNoDefaultType.No)
18791 {
18792 - Core.OnMessage(WixWarnings.UxPayloadsOnlySupportEmbedding(sourceLineNumbers, sourceFile));
18792 + Core.Write(WarningMessages.UxPayloadsOnlySupportEmbedding(sourceLineNumbers, sourceFile));
18793 }
18794
18795 compressed = YesNoDefaultType.Yes;
@@ -18845,27 +18845,27 @@ namespace WixToolset.Core
18845
18846 if (String.IsNullOrEmpty(remotePayload.ProductName))
18847 {
18848 - this.Core.OnMessage(WixErrors.ExpectedAttribute(sourceLineNumbers, node.Name.LocalName, "ProductName"));
18848 + this.Core.Write(ErrorMessages.ExpectedAttribute(sourceLineNumbers, node.Name.LocalName, "ProductName"));
18849 }
18850
18851 if (String.IsNullOrEmpty(remotePayload.Description))
18852 {
18853 - this.Core.OnMessage(WixErrors.ExpectedAttribute(sourceLineNumbers, node.Name.LocalName, "Description"));
18853 + this.Core.Write(ErrorMessages.ExpectedAttribute(sourceLineNumbers, node.Name.LocalName, "Description"));
18854 }
18855
18856 if (String.IsNullOrEmpty(remotePayload.Hash))
18857 {
18858 - this.Core.OnMessage(WixErrors.ExpectedAttribute(sourceLineNumbers, node.Name.LocalName, "Hash"));
18858 + this.Core.Write(ErrorMessages.ExpectedAttribute(sourceLineNumbers, node.Name.LocalName, "Hash"));
18859 }
18860
18861 if (0 == remotePayload.Size)
18862 {
18863 - this.Core.OnMessage(WixErrors.ExpectedAttribute(sourceLineNumbers, node.Name.LocalName, "Size"));
18863 + this.Core.Write(ErrorMessages.ExpectedAttribute(sourceLineNumbers, node.Name.LocalName, "Size"));
18864 }
18865
18866 if (String.IsNullOrEmpty(remotePayload.Version))
18867 {
18868 - this.Core.OnMessage(WixErrors.ExpectedAttribute(sourceLineNumbers, node.Name.LocalName, "Version"));
18868 + this.Core.Write(ErrorMessages.ExpectedAttribute(sourceLineNumbers, node.Name.LocalName, "Version"));
18869 }
18870
18871 return remotePayload;
@@ -18947,7 +18947,7 @@ namespace WixToolset.Core
18947
18948 if (null == id)
18949 {
18950 - this.Core.OnMessage(WixErrors.ExpectedAttribute(sourceLineNumbers, node.Name.LocalName, "Id"));
18950 + this.Core.Write(ErrorMessages.ExpectedAttribute(sourceLineNumbers, node.Name.LocalName, "Id"));
18951 id = Identifier.Invalid;
18952 }
18953
@@ -19024,7 +19024,7 @@ namespace WixToolset.Core
19024
19025 if (null == id)
19026 {
19027 - this.Core.OnMessage(WixErrors.ExpectedAttribute(sourceLineNumbers, node.Name.LocalName, "Id"));
19027 + this.Core.Write(ErrorMessages.ExpectedAttribute(sourceLineNumbers, node.Name.LocalName, "Id"));
19028 }
19029
19030 this.Core.ParseForExtensionElements(node);
@@ -19084,7 +19084,7 @@ namespace WixToolset.Core
19084 string behaviorString = this.Core.GetAttributeValue(sourceLineNumbers, attrib);
19085 if (!Enum.TryParse<ExitCodeBehaviorType>(behaviorString, true, out behavior))
19086 {
19087 - this.Core.OnMessage(WixErrors.IllegalAttributeValueWithLegalList(sourceLineNumbers, node.Name.LocalName, "Behavior", behaviorString, "success, error, scheduleReboot, forceReboot"));
19087 + this.Core.Write(ErrorMessages.IllegalAttributeValueWithLegalList(sourceLineNumbers, node.Name.LocalName, "Behavior", behaviorString, "success, error, scheduleReboot, forceReboot"));
19088 }
19089 break;
19090 default:
@@ -19100,7 +19100,7 @@ namespace WixToolset.Core
19100
19101 if (ExitCodeBehaviorType.NotSet == behavior)
19102 {
19103 - this.Core.OnMessage(WixErrors.ExpectedAttribute(sourceLineNumbers, node.Name.LocalName, "Behavior"));
19103 + this.Core.Write(ErrorMessages.ExpectedAttribute(sourceLineNumbers, node.Name.LocalName, "Behavior"));
19104 }
19105
19106 this.Core.ParseForExtensionElements(node);
@@ -19208,7 +19208,7 @@ namespace WixToolset.Core
19208
19209 if (null == previousId)
19210 {
19211 - this.Core.OnMessage(WixErrors.ExpectedElement(sourceLineNumbers, node.Name.LocalName, "MsiPackage", "ExePackage", "PackageGroupRef"));
19211 + this.Core.Write(ErrorMessages.ExpectedElement(sourceLineNumbers, node.Name.LocalName, "MsiPackage", "ExePackage", "PackageGroupRef"));
19212 }
19213
19214 if (!this.Core.EncounteredError)
@@ -19339,12 +19339,12 @@ namespace WixToolset.Core
19339
19340 if (null == id)
19341 {
19342 - this.Core.OnMessage(WixErrors.ExpectedAttribute(sourceLineNumbers, node.Name.LocalName, "Id"));
19342 + this.Core.Write(ErrorMessages.ExpectedAttribute(sourceLineNumbers, node.Name.LocalName, "Id"));
19343 id = Identifier.Invalid;
19344 }
19345 else if (!Common.IsIdentifier(id.Id))
19346 {
19347 - this.Core.OnMessage(WixErrors.IllegalIdentifier(sourceLineNumbers, node.Name.LocalName, "Id", id.Id));
19347 + this.Core.Write(ErrorMessages.IllegalIdentifier(sourceLineNumbers, node.Name.LocalName, "Id", id.Id));
19348 }
19349 }
19350
@@ -19437,7 +19437,7 @@ namespace WixToolset.Core
19437 name = this.Core.GetAttributeLongFilename(sourceLineNumbers, attrib, false, true);
19438 if (!this.Core.IsValidLongFilename(name, false, true))
19439 {
19440 - this.Core.OnMessage(WixErrors.IllegalLongFilename(sourceLineNumbers, node.Name.LocalName, "Name", name));
19440 + this.Core.Write(ErrorMessages.IllegalLongFilename(sourceLineNumbers, node.Name.LocalName, "Name", name));
19441 }
19442 break;
19443 case "SourceFile":
@@ -19528,7 +19528,7 @@ namespace WixToolset.Core
19528 compressed = this.Core.GetAttributeYesNoDefaultValue(sourceLineNumbers, attrib);
19529 break;
19530 case "SuppressLooseFilePayloadGeneration":
19531 - this.Core.OnMessage(WixWarnings.DeprecatedAttribute(sourceLineNumbers, node.Name.LocalName, attrib.Name.LocalName));
19531 + this.Core.Write(WarningMessages.DeprecatedAttribute(sourceLineNumbers, node.Name.LocalName, attrib.Name.LocalName));
19532 suppressLooseFilePayloadGeneration = this.Core.GetAttributeYesNoValue(sourceLineNumbers, attrib);
19533 allowed = (packageType == WixBundlePackageType.Msi);
19534 break;
@@ -19563,13 +19563,13 @@ namespace WixToolset.Core
19563
19564 if (CompilerCore.WixNamespace == node.Name.Namespace && node.Name.LocalName != "ExePackage" && node.Name.LocalName != "MsuPackage")
19565 {
19566 - this.Core.OnMessage(WixErrors.RemotePayloadUnsupported(childSourceLineNumbers));
19566 + this.Core.Write(ErrorMessages.RemotePayloadUnsupported(childSourceLineNumbers));
19567 continue;
19568 }
19569
19570 if (null != remotePayload)
19571 {
19572 - this.Core.OnMessage(WixErrors.TooManyChildren(childSourceLineNumbers, node.Name.LocalName, child.Name.LocalName));
19572 + this.Core.Write(ErrorMessages.TooManyChildren(childSourceLineNumbers, node.Name.LocalName, child.Name.LocalName));
19573 }
19574
19575 remotePayload = this.ParseRemotePayloadElement(child);
@@ -19579,7 +19579,7 @@ namespace WixToolset.Core
19579 {
19580 if (String.IsNullOrEmpty(name))
19581 {
19582 - this.Core.OnMessage(WixErrors.ExpectedAttributesWithOtherAttribute(sourceLineNumbers, node.Name.LocalName, "Name", "SourceFile"));
19582 + this.Core.Write(ErrorMessages.ExpectedAttributesWithOtherAttribute(sourceLineNumbers, node.Name.LocalName, "Name", "SourceFile"));
19583 }
19584 else if (null == remotePayload)
19585 {
@@ -19592,13 +19592,13 @@ namespace WixToolset.Core
19592 }
19593 else if (null != remotePayload)
19594 {
19595 - this.Core.OnMessage(WixErrors.UnexpectedElementWithAttribute(sourceLineNumbers, node.Name.LocalName, "RemotePayload", "SourceFile"));
19595 + this.Core.Write(ErrorMessages.UnexpectedElementWithAttribute(sourceLineNumbers, node.Name.LocalName, "RemotePayload", "SourceFile"));
19596 }
19597 else if (sourceFile.EndsWith(Path.DirectorySeparatorChar.ToString(), StringComparison.Ordinal))
19598 {
19599 if (String.IsNullOrEmpty(name))
19600 {
19601 - this.Core.OnMessage(WixErrors.ExpectedAttribute(sourceLineNumbers, node.Name.LocalName, "Name", "SourceFile", sourceFile));
19601 + this.Core.Write(ErrorMessages.ExpectedAttribute(sourceLineNumbers, node.Name.LocalName, "Name", "SourceFile", sourceFile));
19602 }
19603 else
19604 {
@@ -19608,13 +19608,13 @@ namespace WixToolset.Core
19608
19609 if (null == downloadUrl && null != remotePayload)
19610 {
19611 - this.Core.OnMessage(WixErrors.ExpectedAttributeWithElement(sourceLineNumbers, node.Name.LocalName, "DownloadUrl", "RemotePayload"));
19611 + this.Core.Write(ErrorMessages.ExpectedAttributeWithElement(sourceLineNumbers, node.Name.LocalName, "DownloadUrl", "RemotePayload"));
19612 }
19613
19614 if (YesNoDefaultType.No != compressed && null != remotePayload)
19615 {
19616 compressed = YesNoDefaultType.No;
19617 - this.Core.OnMessage(WixWarnings.RemotePayloadsMustNotAlsoBeCompressed(sourceLineNumbers, node.Name.LocalName));
19617 + this.Core.Write(WarningMessages.RemotePayloadsMustNotAlsoBeCompressed(sourceLineNumbers, node.Name.LocalName));
19618 }
19619
19620 if (null == id)
@@ -19630,12 +19630,12 @@ namespace WixToolset.Core
19630
19631 if (null == id)
19632 {
19633 - this.Core.OnMessage(WixErrors.ExpectedAttribute(sourceLineNumbers, node.Name.LocalName, "Id"));
19633 + this.Core.Write(ErrorMessages.ExpectedAttribute(sourceLineNumbers, node.Name.LocalName, "Id"));
19634 id = Identifier.Invalid;
19635 }
19636 else if (!Common.IsIdentifier(id.Id))
19637 {
19638 - this.Core.OnMessage(WixErrors.IllegalIdentifier(sourceLineNumbers, node.Name.LocalName, "Id", id.Id));
19638 + this.Core.Write(ErrorMessages.IllegalIdentifier(sourceLineNumbers, node.Name.LocalName, "Id", id.Id));
19639 }
19640 }
19641
@@ -19651,7 +19651,7 @@ namespace WixToolset.Core
19651
19652 if (!String.IsNullOrEmpty(protocol) && !protocol.Equals("burn", StringComparison.Ordinal) && !protocol.Equals("netfx4", StringComparison.Ordinal) && !protocol.Equals("none", StringComparison.Ordinal))
19653 {
19654 - this.Core.OnMessage(WixErrors.IllegalAttributeValueWithLegalList(sourceLineNumbers, node.Name.LocalName, "Protocol", protocol, "none, burn, netfx4"));
19654 + this.Core.Write(ErrorMessages.IllegalAttributeValueWithLegalList(sourceLineNumbers, node.Name.LocalName, "Protocol", protocol, "none, burn, netfx4"));
19655 }
19656
19657 if (!String.IsNullOrEmpty(protocol) && protocol.Equals("netfx4", StringComparison.Ordinal))
@@ -19660,17 +19660,17 @@ namespace WixToolset.Core
19660 {
19661 if (null == installCommand || -1 == installCommand.IndexOf(expectedArgument, StringComparison.OrdinalIgnoreCase))
19662 {
19663 - this.Core.OnMessage(WixWarnings.AttributeShouldContain(sourceLineNumbers, node.Name.LocalName, "InstallCommand", installCommand, expectedArgument, "Protocol", "netfx4"));
19663 + this.Core.Write(WarningMessages.AttributeShouldContain(sourceLineNumbers, node.Name.LocalName, "InstallCommand", installCommand, expectedArgument, "Protocol", "netfx4"));
19664 }
19665
19666 if (null == repairCommand || -1 == repairCommand.IndexOf(expectedArgument, StringComparison.OrdinalIgnoreCase))
19667 {
19668 - this.Core.OnMessage(WixWarnings.AttributeShouldContain(sourceLineNumbers, node.Name.LocalName, "RepairCommand", repairCommand, expectedArgument, "Protocol", "netfx4"));
19668 + this.Core.Write(WarningMessages.AttributeShouldContain(sourceLineNumbers, node.Name.LocalName, "RepairCommand", repairCommand, expectedArgument, "Protocol", "netfx4"));
19669 }
19670
19671 if (null == uninstallCommand || -1 == uninstallCommand.IndexOf(expectedArgument, StringComparison.OrdinalIgnoreCase))
19672 {
19673 - this.Core.OnMessage(WixWarnings.AttributeShouldContain(sourceLineNumbers, node.Name.LocalName, "UninstallCommand", uninstallCommand, expectedArgument, "Protocol", "netfx4"));
19673 + this.Core.Write(WarningMessages.AttributeShouldContain(sourceLineNumbers, node.Name.LocalName, "UninstallCommand", uninstallCommand, expectedArgument, "Protocol", "netfx4"));
19674 }
19675 }
19676 }
@@ -19884,7 +19884,7 @@ namespace WixToolset.Core
19884
19885 if (String.IsNullOrEmpty(condition))
19886 {
19887 - this.Core.OnMessage(WixErrors.ExpectedAttribute(sourceLineNumbers, node.Name.LocalName, "Condition"));
19887 + this.Core.Write(ErrorMessages.ExpectedAttribute(sourceLineNumbers, node.Name.LocalName, "Condition"));
19888 }
19889
19890 this.Core.ParseForExtensionElements(node);
@@ -19931,7 +19931,7 @@ namespace WixToolset.Core
19931
19932 if (null == id)
19933 {
19934 - this.Core.OnMessage(WixErrors.ExpectedAttribute(sourceLineNumbers, node.Name.LocalName, "Id"));
19934 + this.Core.Write(ErrorMessages.ExpectedAttribute(sourceLineNumbers, node.Name.LocalName, "Id"));
19935 id = Identifier.Invalid;
19936 }
19937
@@ -20042,12 +20042,12 @@ namespace WixToolset.Core
20042
20043 if (null == id)
20044 {
20045 - this.Core.OnMessage(WixErrors.ExpectedAttribute(sourceLineNumbers, node.Name.LocalName, "Id"));
20045 + this.Core.Write(ErrorMessages.ExpectedAttribute(sourceLineNumbers, node.Name.LocalName, "Id"));
20046 }
20047
20048 if (null != after && ComplexReferenceParentType.Container == parentType)
20049 {
20050 - this.Core.OnMessage(WixErrors.IllegalAttributeWhenNested(sourceLineNumbers, node.Name.LocalName, "After", parentId));
20050 + this.Core.Write(ErrorMessages.IllegalAttributeWhenNested(sourceLineNumbers, node.Name.LocalName, "After", parentId));
20051 }
20052
20053 this.Core.ParseForExtensionElements(node);
@@ -20175,12 +20175,12 @@ namespace WixToolset.Core
20175
20176 if (null == name)
20177 {
20178 - this.Core.OnMessage(WixErrors.ExpectedAttribute(sourceLineNumbers, node.Name.LocalName, "Name"));
20178 + this.Core.Write(ErrorMessages.ExpectedAttribute(sourceLineNumbers, node.Name.LocalName, "Name"));
20179 }
20180
20181 if (null == value)
20182 {
20183 - this.Core.OnMessage(WixErrors.ExpectedAttribute(sourceLineNumbers, node.Name.LocalName, "Value"));
20183 + this.Core.Write(ErrorMessages.ExpectedAttribute(sourceLineNumbers, node.Name.LocalName, "Value"));
20184 }
20185
20186 this.Core.ParseForExtensionElements(node);
@@ -20232,7 +20232,7 @@ namespace WixToolset.Core
20232
20233 if (null == id)
20234 {
20235 - this.Core.OnMessage(WixErrors.ExpectedAttribute(sourceLineNumbers, node.Name.LocalName, "Id"));
20235 + this.Core.Write(ErrorMessages.ExpectedAttribute(sourceLineNumbers, node.Name.LocalName, "Id"));
20236 }
20237
20238 this.Core.ParseForExtensionElements(node);
@@ -20281,7 +20281,7 @@ namespace WixToolset.Core
20281
20282 if (null == id)
20283 {
20284 - this.Core.OnMessage(WixErrors.ExpectedAttribute(sourceLineNumbers, node.Name.LocalName, "Id"));
20284 + this.Core.Write(ErrorMessages.ExpectedAttribute(sourceLineNumbers, node.Name.LocalName, "Id"));
20285 }
20286
20287 if (!String.IsNullOrEmpty(action))
@@ -20298,7 +20298,7 @@ namespace WixToolset.Core
20298 case Wix.RelatedBundle.ActionType.Patch:
20299 break;
20300 default:
20301 - this.Core.OnMessage(WixErrors.IllegalAttributeValue(sourceLineNumbers, node.Name.LocalName, "Action", action, "Detect", "Upgrade", "Addon", "Patch"));
20301 + this.Core.Write(ErrorMessages.IllegalAttributeValue(sourceLineNumbers, node.Name.LocalName, "Action", action, "Detect", "Upgrade", "Addon", "Patch"));
20302 break;
20303 }
20304 }
@@ -20344,7 +20344,7 @@ namespace WixToolset.Core
20344
20345 if (null == location)
20346 {
20347 - this.Core.OnMessage(WixErrors.ExpectedAttribute(sourceLineNumbers, node.Name.LocalName, "Location"));
20347 + this.Core.Write(ErrorMessages.ExpectedAttribute(sourceLineNumbers, node.Name.LocalName, "Location"));
20348 }
20349
20350 this.Core.ParseForExtensionElements(node);
@@ -20409,11 +20409,11 @@ namespace WixToolset.Core
20409
20410 if (null == name)
20411 {
20412 - this.Core.OnMessage(WixErrors.ExpectedAttribute(sourceLineNumbers, node.Name.LocalName, "Name"));
20412 + this.Core.Write(ErrorMessages.ExpectedAttribute(sourceLineNumbers, node.Name.LocalName, "Name"));
20413 }
20414 else if (name.StartsWith("Wix", StringComparison.OrdinalIgnoreCase))
20415 {
20416 - this.Core.OnMessage(WixErrors.ReservedNamespaceViolation(sourceLineNumbers, node.Name.LocalName, "Name", "Wix"));
20416 + this.Core.Write(ErrorMessages.ReservedNamespaceViolation(sourceLineNumbers, node.Name.LocalName, "Name", "Wix"));
20417 }
20418
20419 if (null == type && null != value)
@@ -20459,7 +20459,7 @@ namespace WixToolset.Core
20459
20460 if (null == value && null != type)
20461 {
20462 - this.Core.OnMessage(WixErrors.ExpectedAttribute(sourceLineNumbers, "Variable", "Value", "Type"));
20462 + this.Core.Write(ErrorMessages.ExpectedAttribute(sourceLineNumbers, "Variable", "Value", "Type"));
20463 }
20464
20465 this.Core.ParseForExtensionElements(node);
@@ -20586,12 +20586,12 @@ namespace WixToolset.Core
20586
20587 if (null == id)
20588 {
20589 - this.Core.OnMessage(WixErrors.ExpectedAttribute(sourceLineNumbers, node.Name.LocalName, "Id"));
20589 + this.Core.Write(ErrorMessages.ExpectedAttribute(sourceLineNumbers, node.Name.LocalName, "Id"));
20590 }
20591
20592 if (null == value)
20593 {
20594 - this.Core.OnMessage(WixErrors.ExpectedAttribute(sourceLineNumbers, node.Name.LocalName, "Value"));
20594 + this.Core.Write(ErrorMessages.ExpectedAttribute(sourceLineNumbers, node.Name.LocalName, "Value"));
20595 }
20596
20597 this.Core.ParseForExtensionElements(node);
src/WixToolset.Core/CompilerCore.cs
+32 -34
@@ -8,14 +8,11 @@ namespace WixToolset.Core
8 using System.Diagnostics;
9 using System.Diagnostics.CodeAnalysis;
10 using System.Globalization;
11 - using System.IO;
11 using System.Reflection;
13 - using System.Security.Cryptography;
12 using System.Text;
13 using System.Text.RegularExpressions;
14 using System.Xml.Linq;
15 using WixToolset.Data;
18 - using WixToolset.Data.Tuples;
16 using WixToolset.Extensibility;
17 using WixToolset.Extensibility.Services;
18 using Wix = WixToolset.Data.Serialize;
@@ -128,10 +125,10 @@ namespace WixToolset.Core
125 "REMOVE"
126 });
127
131 - private Dictionary<XNamespace, ICompilerExtension> extensions;
132 - private IParseHelper parseHelper;
133 - private Intermediate intermediate;
134 -
128 + private readonly Dictionary<XNamespace, ICompilerExtension> extensions;
129 + private readonly IParseHelper parseHelper;
130 + private readonly Intermediate intermediate;
131 + private readonly IMessaging messaging;
132 private HashSet<string> activeSectionInlinedDirectoryIds;
133 private HashSet<string> activeSectionSimpleReferences;
134
@@ -140,11 +137,12 @@ namespace WixToolset.Core
137 /// </summary>
138 /// <param name="intermediate">The Intermediate object representing compiled source document.</param>
139 /// <param name="extensions">The WiX extensions collection.</param>
143 - internal CompilerCore(Intermediate intermediate, IParseHelper parseHelper, Dictionary<XNamespace, ICompilerExtension> extensions)
140 + internal CompilerCore(Intermediate intermediate, IMessaging messaging, IParseHelper parseHelper, Dictionary<XNamespace, ICompilerExtension> extensions)
141 {
142 this.extensions = extensions;
143 this.parseHelper = parseHelper;
144 this.intermediate = intermediate;
145 + this.messaging = messaging;
146 }
147
148 /// <summary>
@@ -157,7 +155,7 @@ namespace WixToolset.Core
155 /// Gets whether the compiler core encountered an error while processing.
156 /// </summary>
157 /// <value>Flag if core encountered an error during processing.</value>
160 - public bool EncounteredError => Messaging.Instance.EncounteredError;
158 + public bool EncounteredError => this.messaging.EncounteredError;
159
160 /// <summary>
161 /// Gets or sets the option to show pedantic messages.
@@ -511,7 +509,7 @@ namespace WixToolset.Core
509 }
510 catch (NotSupportedException)
511 {
514 - this.OnMessage(WixErrors.IllegalCodepageAttribute(sourceLineNumbers, value, attribute.Parent.Name.LocalName, attribute.Name.LocalName));
512 + this.Write(ErrorMessages.IllegalCodepageAttribute(sourceLineNumbers, value, attribute.Parent.Name.LocalName, attribute.Name.LocalName));
513 }
514
515 return CompilerConstants.IllegalInteger;
@@ -548,11 +546,11 @@ namespace WixToolset.Core
546 catch (NotSupportedException)
547 {
548 // not a valid windows code page
551 - this.OnMessage(WixErrors.IllegalCodepageAttribute(sourceLineNumbers, value, attribute.Parent.Name.LocalName, attribute.Name.LocalName));
549 + this.Write(ErrorMessages.IllegalCodepageAttribute(sourceLineNumbers, value, attribute.Parent.Name.LocalName, attribute.Name.LocalName));
550 }
551 catch (WixException e)
552 {
555 - this.OnMessage(e.Error);
553 + this.messaging.Write(e.Error);
554 }
555
556 return null;
@@ -612,15 +610,15 @@ namespace WixToolset.Core
610 }
611 catch (ArgumentOutOfRangeException)
612 {
615 - this.OnMessage(WixErrors.InvalidDateTimeFormat(sourceLineNumbers, attribute.Parent.Name.LocalName, attribute.Name.LocalName, value));
613 + this.Write(ErrorMessages.InvalidDateTimeFormat(sourceLineNumbers, attribute.Parent.Name.LocalName, attribute.Name.LocalName, value));
614 }
615 catch (FormatException)
616 {
619 - this.OnMessage(WixErrors.InvalidDateTimeFormat(sourceLineNumbers, attribute.Parent.Name.LocalName, attribute.Name.LocalName, value));
617 + this.Write(ErrorMessages.InvalidDateTimeFormat(sourceLineNumbers, attribute.Parent.Name.LocalName, attribute.Name.LocalName, value));
618 }
619 catch (OverflowException)
620 {
623 - this.OnMessage(WixErrors.InvalidDateTimeFormat(sourceLineNumbers, attribute.Parent.Name.LocalName, attribute.Name.LocalName, value));
621 + this.Write(ErrorMessages.InvalidDateTimeFormat(sourceLineNumbers, attribute.Parent.Name.LocalName, attribute.Name.LocalName, value));
622 }
623 }
624
@@ -661,11 +659,11 @@ namespace WixToolset.Core
659
660 if (CompilerConstants.IntegerNotSet == integer || CompilerConstants.IllegalInteger == integer)
661 {
664 - this.OnMessage(WixErrors.IntegralValueSentinelCollision(sourceLineNumbers, integer));
662 + this.Write(ErrorMessages.IntegralValueSentinelCollision(sourceLineNumbers, integer));
663 }
664 else if (minimum > integer || maximum < integer)
665 {
668 - this.OnMessage(WixErrors.IntegralValueOutOfRange(sourceLineNumbers, attribute.Parent.Name.LocalName, attribute.Name.LocalName, integer, minimum, maximum));
666 + this.Write(ErrorMessages.IntegralValueOutOfRange(sourceLineNumbers, attribute.Parent.Name.LocalName, attribute.Name.LocalName, integer, minimum, maximum));
667 integer = CompilerConstants.IllegalInteger;
668 }
669
@@ -673,11 +671,11 @@ namespace WixToolset.Core
671 }
672 catch (FormatException)
673 {
676 - this.OnMessage(WixErrors.IllegalIntegerValue(sourceLineNumbers, attribute.Parent.Name.LocalName, attribute.Name.LocalName, value));
674 + this.Write(ErrorMessages.IllegalIntegerValue(sourceLineNumbers, attribute.Parent.Name.LocalName, attribute.Name.LocalName, value));
675 }
676 catch (OverflowException)
677 {
680 - this.OnMessage(WixErrors.IllegalIntegerValue(sourceLineNumbers, attribute.Parent.Name.LocalName, attribute.Name.LocalName, value));
678 + this.Write(ErrorMessages.IllegalIntegerValue(sourceLineNumbers, attribute.Parent.Name.LocalName, attribute.Name.LocalName, value));
679 }
680 }
681 }
@@ -768,7 +766,7 @@ namespace WixToolset.Core
766 // Previous code never returned 'NotSet'!
767 break;
768 default:
771 - this.OnMessage(WixErrors.IllegalYesNoAlwaysValue(sourceLineNumbers, attribute.Parent.Name.LocalName, attribute.Name.LocalName, value));
769 + this.Write(ErrorMessages.IllegalYesNoAlwaysValue(sourceLineNumbers, attribute.Parent.Name.LocalName, attribute.Name.LocalName, value));
770 break;
771 }
772 }
@@ -796,11 +794,11 @@ namespace WixToolset.Core
794 {
795 if (!this.IsValidShortFilename(value, allowWildcards) && !this.IsValidLocIdentifier(value))
796 {
799 - this.OnMessage(WixErrors.IllegalShortFilename(sourceLineNumbers, attribute.Parent.Name.LocalName, attribute.Name.LocalName, value));
797 + this.Write(ErrorMessages.IllegalShortFilename(sourceLineNumbers, attribute.Parent.Name.LocalName, attribute.Name.LocalName, value));
798 }
799 else if (CompilerCore.IsAmbiguousFilename(value))
800 {
803 - this.OnMessage(WixWarnings.AmbiguousFileOrDirectoryName(sourceLineNumbers, attribute.Parent.Name.LocalName, attribute.Name.LocalName, value));
801 + this.Write(WarningMessages.AmbiguousFileOrDirectoryName(sourceLineNumbers, attribute.Parent.Name.LocalName, attribute.Name.LocalName, value));
802 }
803 }
804
@@ -854,12 +852,12 @@ namespace WixToolset.Core
852 // TODO: Find a way to expose the valid values programatically!
853 if (allowHkmu)
854 {
857 - this.OnMessage(WixErrors.IllegalAttributeValue(sourceLineNumbers, attribute.Parent.Name.LocalName, attribute.Name.LocalName, value,
855 + this.Write(ErrorMessages.IllegalAttributeValue(sourceLineNumbers, attribute.Parent.Name.LocalName, attribute.Name.LocalName, value,
856 "HKMU", "HKCR", "HKCU", "HKLM", "HKU"));
857 }
858 else
859 {
862 - this.OnMessage(WixErrors.IllegalAttributeValue(sourceLineNumbers, attribute.Parent.Name.LocalName, attribute.Name.LocalName, value,
860 + this.Write(ErrorMessages.IllegalAttributeValue(sourceLineNumbers, attribute.Parent.Name.LocalName, attribute.Name.LocalName, value,
861 "HKCR", "HKCU", "HKLM", "HKU"));
862 }
863 }
@@ -926,7 +924,7 @@ namespace WixToolset.Core
924 if (Wix.InstallUninstallType.IllegalValue == installUninstall)
925 {
926 // TODO: Find a way to expose the valid values programatically!
929 - this.OnMessage(WixErrors.IllegalAttributeValue(sourceLineNumbers, attribute.Parent.Name.LocalName, attribute.Name.LocalName, value,
927 + this.Write(ErrorMessages.IllegalAttributeValue(sourceLineNumbers, attribute.Parent.Name.LocalName, attribute.Name.LocalName, value,
928 "install", "uninstall", "both"));
929 }
930 }
@@ -951,7 +949,7 @@ namespace WixToolset.Core
949 result = Wix.ExitType.IllegalValue;
950
951 // TODO: Find a way to expose the valid values programatically!
954 - this.OnMessage(WixErrors.IllegalAttributeValue(sourceLineNumbers, attribute.Parent.Name.LocalName, attribute.Name.LocalName, value,
952 + this.Write(ErrorMessages.IllegalAttributeValue(sourceLineNumbers, attribute.Parent.Name.LocalName, attribute.Name.LocalName, value,
953 "success", "cancel", "error", "suspend"));
954 }
955
@@ -974,7 +972,7 @@ namespace WixToolset.Core
972 if (CompilerCore.BuiltinBundleVariables.Contains(value))
973 {
974 string illegalValues = CompilerCore.CreateValueList(ValueListKind.Or, CompilerCore.BuiltinBundleVariables);
977 - this.OnMessage(WixErrors.IllegalAttributeValueWithIllegalList(sourceLineNumbers, attribute.Parent.Name.LocalName, attribute.Name.LocalName, value, illegalValues));
975 + this.Write(ErrorMessages.IllegalAttributeValueWithIllegalList(sourceLineNumbers, attribute.Parent.Name.LocalName, attribute.Name.LocalName, value, illegalValues));
976 }
977 }
978
@@ -997,7 +995,7 @@ namespace WixToolset.Core
995 if (CompilerCore.DisallowedMsiProperties.Contains(value))
996 {
997 string illegalValues = CompilerCore.CreateValueList(ValueListKind.Or, CompilerCore.DisallowedMsiProperties);
1000 - this.OnMessage(WixErrors.DisallowedMsiProperty(sourceLineNumbers, value, illegalValues));
998 + this.Write(ErrorMessages.DisallowedMsiProperty(sourceLineNumbers, value, illegalValues));
999 }
1000 }
1001
@@ -1099,12 +1097,12 @@ namespace WixToolset.Core
1097 }
1098
1099 /// <summary>
1102 - /// Sends a message to the message delegate if there is one.
1100 + /// Sends a message.
1101 /// </summary>
1104 - /// <param name="mea">Message event arguments.</param>
1105 - public void OnMessage(MessageEventArgs e)
1102 + /// <param name="message">Message to write.</param>
1103 + public void Write(Message message)
1104 {
1107 - Messaging.Instance.OnMessage(e);
1105 + this.messaging.Write(message);
1106 }
1107
1108 /// <summary>
@@ -1128,11 +1126,11 @@ namespace WixToolset.Core
1126 {
1127 if (this.GetType().Assembly.Equals(caller))
1128 {
1131 - this.OnMessage(WixErrors.InsufficientVersion(sourceLineNumbers, versionCurrent, versionRequired));
1129 + this.Write(ErrorMessages.InsufficientVersion(sourceLineNumbers, versionCurrent, versionRequired));
1130 }
1131 else
1132 {
1135 - this.OnMessage(WixErrors.InsufficientVersion(sourceLineNumbers, versionCurrent, versionRequired, name.Name));
1133 + this.Write(ErrorMessages.InsufficientVersion(sourceLineNumbers, versionCurrent, versionRequired, name.Name));
1134 }
1135 }
1136 }
src/WixToolset.Core/Converter.cs
+8 -3
@@ -10,6 +10,7 @@ namespace WixToolset.Core
10 using System.Xml;
11 using System.Xml.Linq;
12 using WixToolset.Data;
13 + using WixToolset.Extensibility.Services;
14
15 /// <summary>
16 /// WiX source code converter.
@@ -64,7 +65,7 @@ namespace WixToolset.Core
65 /// <param name="indentationAmount">Indentation value to use when validating leading whitespace.</param>
66 /// <param name="errorsAsWarnings">Test errors to display as warnings.</param>
67 /// <param name="ignoreErrors">Test errors to ignore.</param>
67 - public Converter(int indentationAmount, IEnumerable<string> errorsAsWarnings = null, IEnumerable<string> ignoreErrors = null)
68 + public Converter(IMessaging messaging, int indentationAmount, IEnumerable<string> errorsAsWarnings = null, IEnumerable<string> ignoreErrors = null)
69 {
70 this.ConvertElementMapping = new Dictionary<XName, Action<XElement>>()
71 {
@@ -77,6 +78,8 @@ namespace WixToolset.Core
78 { WixElementWithoutNamespaceName, this.ConvertWixElementWithoutNamespace },
79 };
80
81 + this.Messaging = messaging;
82 +
83 this.IndentationAmount = indentationAmount;
84
85 this.ErrorsAsWarnings = new HashSet<ConverterTestType>(this.YieldConverterTypes(errorsAsWarnings));
@@ -90,6 +93,8 @@ namespace WixToolset.Core
93
94 private HashSet<ConverterTestType> IgnoreErrors { get; set; }
95
96 + private IMessaging Messaging { get; }
97 +
98 private int IndentationAmount { get; set; }
99
100 private string SourceFile { get; set; }
@@ -528,9 +533,9 @@ namespace WixToolset.Core
533 bool warning = this.ErrorsAsWarnings.Contains(converterTestType);
534 string display = String.Format(CultureInfo.CurrentCulture, message, args);
535
531 - WixGenericMessageEventArgs ea = new WixGenericMessageEventArgs(sourceLine, (int)converterTestType, warning ? MessageLevel.Warning : MessageLevel.Error, "{0} ({1})", display, converterTestType.ToString());
536 + var msg = new Message(sourceLine, warning ? MessageLevel.Warning : MessageLevel.Error, (int)converterTestType, "{0} ({1})", display, converterTestType.ToString());
537
533 - Messaging.Instance.OnMessage(ea);
538 + this.Messaging.Write(msg);
539
540 return true;
541 }
src/WixToolset.Core/Data/WixToolset.Core.Data.messages.resources
Binary files a/src/WixToolset.Core/Data/WixToolset.Core.Data.messages.resources and /dev/null differ
src/WixToolset.Core/Data/WixToolset.Core.WixStrings.resources
Binary files a/src/WixToolset.Core/Data/WixToolset.Core.WixStrings.resources and /dev/null differ
src/WixToolset.Core/Data/messages.cs deleted
-3106
@@ -1,3106 +0,0 @@
1 -//------------------------------------------------------------------------------
2 -// <auto-generated>
3 -// This code was generated by a tool.
4 -// Runtime Version:4.0.30319.42000
5 -//
6 -// Changes to this file may cause incorrect behavior and will be lost if
7 -// the code is regenerated.
8 -// </auto-generated>
9 -//------------------------------------------------------------------------------
10 -
11 -namespace WixToolset
12 -{
13 - using System;
14 - using System.Reflection;
15 - using System.Resources;
16 - using WixToolset.Data;
17 -
18 -
19 - public class WixErrorEventArgs : MessageEventArgs
20 - {
21 -
22 - private static ResourceManager resourceManager = new ResourceManager("WixToolset.Core.Data.Messages", Assembly.GetExecutingAssembly());
23 -
24 - public WixErrorEventArgs(SourceLineNumber sourceLineNumbers, int id, string resourceName, params object[] messageArgs) :
25 - base(sourceLineNumbers, id, resourceName, messageArgs)
26 - {
27 - base.Level = MessageLevel.Error;
28 - base.ResourceManager = resourceManager;
29 - }
30 - }
31 -
32 - public sealed class WixErrors
33 - {
34 -
35 - private WixErrors()
36 - {
37 - }
38 -
39 - public static MessageEventArgs UnexpectedException(string message, string type, string stackTrace)
40 - {
41 - return new WixErrorEventArgs(null, 1, "WixErrors_UnexpectedException_1", message, type, stackTrace);
42 - }
43 -
44 - public static MessageEventArgs UnexpectedAttribute(SourceLineNumber sourceLineNumbers, string elementName, string attributeName)
45 - {
46 - return new WixErrorEventArgs(sourceLineNumbers, 4, "WixErrors_UnexpectedAttribute_1", elementName, attributeName);
47 - }
48 -
49 - public static MessageEventArgs UnexpectedElement(SourceLineNumber sourceLineNumbers, string elementName, string childElementName)
50 - {
51 - return new WixErrorEventArgs(sourceLineNumbers, 5, "WixErrors_UnexpectedElement_1", elementName, childElementName);
52 - }
53 -
54 - public static MessageEventArgs IllegalEmptyAttributeValue(SourceLineNumber sourceLineNumbers, string elementName, string attributeName)
55 - {
56 - return new WixErrorEventArgs(sourceLineNumbers, 6, "WixErrors_IllegalEmptyAttributeValue_1", elementName, attributeName);
57 - }
58 -
59 - public static MessageEventArgs IllegalEmptyAttributeValue(SourceLineNumber sourceLineNumbers, string elementName, string attributeName, string defaultValue)
60 - {
61 - return new WixErrorEventArgs(sourceLineNumbers, 6, "WixErrors_IllegalEmptyAttributeValue_2", elementName, attributeName, defaultValue);
62 - }
63 -
64 - public static MessageEventArgs InsufficientVersion(SourceLineNumber sourceLineNumbers, System.Version currentVersion, System.Version requiredVersion)
65 - {
66 - return new WixErrorEventArgs(sourceLineNumbers, 7, "WixErrors_InsufficientVersion_1", currentVersion, requiredVersion);
67 - }
68 -
69 - public static MessageEventArgs InsufficientVersion(SourceLineNumber sourceLineNumbers, System.Version currentVersion, System.Version requiredVersion, string extension)
70 - {
71 - return new WixErrorEventArgs(sourceLineNumbers, 7, "WixErrors_InsufficientVersion_2", currentVersion, requiredVersion, extension);
72 - }
73 -
74 - public static MessageEventArgs IllegalIntegerValue(SourceLineNumber sourceLineNumbers, string elementName, string attributeName, string value)
75 - {
76 - return new WixErrorEventArgs(sourceLineNumbers, 8, "WixErrors_IllegalIntegerValue_1", elementName, attributeName, value);
77 - }
78 -
79 - public static MessageEventArgs IllegalGuidValue(SourceLineNumber sourceLineNumbers, string elementName, string attributeName, string value)
80 - {
81 - return new WixErrorEventArgs(sourceLineNumbers, 9, "WixErrors_IllegalGuidValue_1", elementName, attributeName, value);
82 - }
83 -
84 - public static MessageEventArgs ExpectedAttribute(SourceLineNumber sourceLineNumbers, string elementName, string attributeName)
85 - {
86 - return new WixErrorEventArgs(sourceLineNumbers, 10, "WixErrors_ExpectedAttribute_1", elementName, attributeName);
87 - }
88 -
89 - public static MessageEventArgs ExpectedAttribute(SourceLineNumber sourceLineNumbers, string elementName, string attribute1Name, string attribute2Name, bool eitherOr)
90 - {
91 - return new WixErrorEventArgs(sourceLineNumbers, 10, "WixErrors_ExpectedAttribute_2", elementName, attribute1Name, attribute2Name, eitherOr);
92 - }
93 -
94 - public static MessageEventArgs ExpectedAttribute(SourceLineNumber sourceLineNumbers, string elementName, string attributeName, string otherAttributeName)
95 - {
96 - return new WixErrorEventArgs(sourceLineNumbers, 10, "WixErrors_ExpectedAttribute_3", elementName, attributeName, otherAttributeName);
97 - }
98 -
99 - public static MessageEventArgs ExpectedAttribute(SourceLineNumber sourceLineNumbers, string elementName, string attributeName, string otherAttributeName, string otherAttributeValue)
100 - {
101 - return new WixErrorEventArgs(sourceLineNumbers, 10, "WixErrors_ExpectedAttribute_4", elementName, attributeName, otherAttributeName, otherAttributeValue);
102 - }
103 -
104 - public static MessageEventArgs ExpectedAttribute(SourceLineNumber sourceLineNumbers, string elementName, string attributeName, string otherAttributeName, string otherAttributeValue, bool otherAttributeValueUnless)
105 - {
106 - return new WixErrorEventArgs(sourceLineNumbers, 10, "WixErrors_ExpectedAttribute_5", elementName, attributeName, otherAttributeName, otherAttributeValue, otherAttributeValueUnless);
107 - }
108 -
109 - public static MessageEventArgs SecurePropertyNotUppercase(SourceLineNumber sourceLineNumbers, string elementName, string attributeName, string propertyId)
110 - {
111 - return new WixErrorEventArgs(sourceLineNumbers, 11, "WixErrors_SecurePropertyNotUppercase_1", elementName, attributeName, propertyId);
112 - }
113 -
114 - public static MessageEventArgs SearchPropertyNotUppercase(SourceLineNumber sourceLineNumbers, string elementName, string attributeName, string value)
115 - {
116 - return new WixErrorEventArgs(sourceLineNumbers, 12, "WixErrors_SearchPropertyNotUppercase_1", elementName, attributeName, value);
117 - }
118 -
119 - public static MessageEventArgs StreamNameTooLong(SourceLineNumber sourceLineNumbers, string elementName, string attributeName, string value, int length, int maximumLength)
120 - {
121 - return new WixErrorEventArgs(sourceLineNumbers, 13, "WixErrors_StreamNameTooLong_1", elementName, attributeName, value, length, maximumLength);
122 - }
123 -
124 - public static MessageEventArgs StreamNameTooLong(SourceLineNumber sourceLineNumbers, string tableName, string streamName, int streamLength)
125 - {
126 - return new WixErrorEventArgs(sourceLineNumbers, 13, "WixErrors_StreamNameTooLong_2", tableName, streamName, streamLength);
127 - }
128 -
129 - public static MessageEventArgs IllegalIdentifier(SourceLineNumber sourceLineNumbers, string elementName, string value)
130 - {
131 - return new WixErrorEventArgs(sourceLineNumbers, 14, "WixErrors_IllegalIdentifier_1", elementName, value);
132 - }
133 -
134 - public static MessageEventArgs IllegalIdentifier(SourceLineNumber sourceLineNumbers, string elementName, string attributeName, int disambiguator)
135 - {
136 - return new WixErrorEventArgs(sourceLineNumbers, 14, "WixErrors_IllegalIdentifier_2", elementName, attributeName, disambiguator);
137 - }
138 -
139 - public static MessageEventArgs IllegalIdentifier(SourceLineNumber sourceLineNumbers, string elementName, string attributeName, string value)
140 - {
141 - return new WixErrorEventArgs(sourceLineNumbers, 14, "WixErrors_IllegalIdentifier_3", elementName, attributeName, value);
142 - }
143 -
144 - public static MessageEventArgs IllegalIdentifier(SourceLineNumber sourceLineNumbers, string elementName, string attributeName, string value, string identifier)
145 - {
146 - return new WixErrorEventArgs(sourceLineNumbers, 14, "WixErrors_IllegalIdentifier_4", elementName, attributeName, value, identifier);
147 - }
148 -
149 - public static MessageEventArgs IllegalYesNoValue(SourceLineNumber sourceLineNumbers, string elementName, string attributeName, string value)
150 - {
151 - return new WixErrorEventArgs(sourceLineNumbers, 15, "WixErrors_IllegalYesNoValue_1", elementName, attributeName, value);
152 - }
153 -
154 - public static MessageEventArgs CabCreationFailed(string cabName, string fileName, int error)
155 - {
156 - return new WixErrorEventArgs(null, 16, "WixErrors_CabCreationFailed_1", cabName, fileName, error);
157 - }
158 -
159 - public static MessageEventArgs CabCreationFailed(string cabName, int error)
160 - {
161 - return new WixErrorEventArgs(null, 16, "WixErrors_CabCreationFailed_2", cabName, error);
162 - }
163 -
164 - public static MessageEventArgs CabExtractionFailed(string cabName, string directoryName)
165 - {
166 - return new WixErrorEventArgs(null, 17, "WixErrors_CabExtractionFailed_1", cabName, directoryName);
167 - }
168 -
169 - public static MessageEventArgs CabExtractionFailed(string cabName, string mergeModulePath, string directoryName)
170 - {
171 - return new WixErrorEventArgs(null, 17, "WixErrors_CabExtractionFailed_2", cabName, mergeModulePath, directoryName);
172 - }
173 -
174 - public static MessageEventArgs AppIdIncompatibleAdvertiseState(SourceLineNumber sourceLineNumbers, string elementName, string attributeName, string value, string parentValue)
175 - {
176 - return new WixErrorEventArgs(sourceLineNumbers, 18, "WixErrors_AppIdIncompatibleAdvertiseState_1", elementName, attributeName, value, parentValue);
177 - }
178 -
179 - public static MessageEventArgs IllegalAttributeWhenAdvertised(SourceLineNumber sourceLineNumbers, string elementName, string attributeName)
180 - {
181 - return new WixErrorEventArgs(sourceLineNumbers, 19, "WixErrors_IllegalAttributeWhenAdvertised_1", elementName, attributeName);
182 - }
183 -
184 - public static MessageEventArgs ConditionExpected(SourceLineNumber sourceLineNumbers, string elementName)
185 - {
186 - return new WixErrorEventArgs(sourceLineNumbers, 20, "WixErrors_ConditionExpected_1", elementName);
187 - }
188 -
189 - public static MessageEventArgs IllegalAttributeValue(SourceLineNumber sourceLineNumbers, string elementName, string attributeName, string value, string legalValue1)
190 - {
191 - return new WixErrorEventArgs(sourceLineNumbers, 21, "WixErrors_IllegalAttributeValue_1", elementName, attributeName, value, legalValue1);
192 - }
193 -
194 - public static MessageEventArgs IllegalAttributeValue(SourceLineNumber sourceLineNumbers, string elementName, string attributeName, string value, string legalValue1, string legalValue2)
195 - {
196 - return new WixErrorEventArgs(sourceLineNumbers, 21, "WixErrors_IllegalAttributeValue_2", elementName, attributeName, value, legalValue1, legalValue2);
197 - }
198 -
199 - public static MessageEventArgs IllegalAttributeValue(SourceLineNumber sourceLineNumbers, string elementName, string attributeName, string value, string legalValue1, string legalValue2, string legalValue3)
200 - {
201 - return new WixErrorEventArgs(sourceLineNumbers, 21, "WixErrors_IllegalAttributeValue_3", elementName, attributeName, value, legalValue1, legalValue2, legalValue3);
202 - }
203 -
204 - public static MessageEventArgs IllegalAttributeValue(SourceLineNumber sourceLineNumbers, string elementName, string attributeName, string value, string legalValue1, string legalValue2, string legalValue3, string legalValue4)
205 - {
206 - return new WixErrorEventArgs(sourceLineNumbers, 21, "WixErrors_IllegalAttributeValue_4", elementName, attributeName, value, legalValue1, legalValue2, legalValue3, legalValue4);
207 - }
208 -
209 - public static MessageEventArgs IllegalAttributeValue(SourceLineNumber sourceLineNumbers, string elementName, string attributeName, string value, string legalValue1, string legalValue2, string legalValue3, string legalValue4, string legalValue5)
210 - {
211 - return new WixErrorEventArgs(sourceLineNumbers, 21, "WixErrors_IllegalAttributeValue_5", elementName, attributeName, value, legalValue1, legalValue2, legalValue3, legalValue4, legalValue5);
212 - }
213 -
214 - public static MessageEventArgs IllegalAttributeValue(SourceLineNumber sourceLineNumbers, string elementName, string attributeName, string value, string legalValue1, string legalValue2, string legalValue3, string legalValue4, string legalValue5, string legalValue6)
215 - {
216 - return new WixErrorEventArgs(sourceLineNumbers, 21, "WixErrors_IllegalAttributeValue_6", elementName, attributeName, value, legalValue1, legalValue2, legalValue3, legalValue4, legalValue5, legalValue6);
217 - }
218 -
219 - public static MessageEventArgs IllegalAttributeValue(SourceLineNumber sourceLineNumbers, string elementName, string attributeName, string value, string legalValue1, string legalValue2, string legalValue3, string legalValue4, string legalValue5, string legalValue6, string legalValue7)
220 - {
221 - return new WixErrorEventArgs(sourceLineNumbers, 21, "WixErrors_IllegalAttributeValue_7", elementName, attributeName, value, legalValue1, legalValue2, legalValue3, legalValue4, legalValue5, legalValue6, legalValue7);
222 - }
223 -
224 - public static MessageEventArgs IllegalAttributeValue(SourceLineNumber sourceLineNumbers, string elementName, string attributeName, string value, string legalValue1, string legalValue2, string legalValue3, string legalValue4, string legalValue5, string legalValue6, string legalValue7, string legalValue8)
225 - {
226 - return new WixErrorEventArgs(sourceLineNumbers, 21, "WixErrors_IllegalAttributeValue_8", elementName, attributeName, value, legalValue1, legalValue2, legalValue3, legalValue4, legalValue5, legalValue6, legalValue7, legalValue8);
227 - }
228 -
229 - public static MessageEventArgs IllegalAttributeValue(
230 - SourceLineNumber sourceLineNumbers,
231 - string elementName,
232 - string attributeName,
233 - string value,
234 - string legalValue1,
235 - string legalValue2,
236 - string legalValue3,
237 - string legalValue4,
238 - string legalValue5,
239 - string legalValue6,
240 - string legalValue7,
241 - string legalValue8,
242 - string legalValue9,
243 - string legalValue10,
244 - string legalValue11,
245 - string legalValue12,
246 - string legalValue13,
247 - string legalValue14,
248 - string legalValue15,
249 - string legalValue16,
250 - string legalValue17,
251 - string legalValue18,
252 - string legalValue19,
253 - string legalValue20,
254 - string legalValue21,
255 - string legalValue22,
256 - string legalValue23,
257 - string legalValue24,
258 - string legalValue25,
259 - string legalValue26)
260 - {
261 - return new WixErrorEventArgs(sourceLineNumbers, 21, "WixErrors_IllegalAttributeValue_9", elementName, attributeName, value, legalValue1, legalValue2, legalValue3, legalValue4, legalValue5, legalValue6, legalValue7, legalValue8, legalValue9, legalValue10, legalValue11, legalValue12, legalValue13, legalValue14, legalValue15, legalValue16, legalValue17, legalValue18, legalValue19, legalValue20, legalValue21, legalValue22, legalValue23, legalValue24, legalValue25, legalValue26);
262 - }
263 -
264 - public static MessageEventArgs CustomActionMultipleSources(SourceLineNumber sourceLineNumbers, string elementName, string attributeName, string attributeName1, string attributeName2, string attributeName3, string attributeName4, string attributeName5)
265 - {
266 - return new WixErrorEventArgs(sourceLineNumbers, 22, "WixErrors_CustomActionMultipleSources_1", elementName, attributeName, attributeName1, attributeName2, attributeName3, attributeName4, attributeName5);
267 - }
268 -
269 - public static MessageEventArgs CustomActionMultipleTargets(SourceLineNumber sourceLineNumbers, string elementName, string attributeName, string attributeName1, string attributeName2, string attributeName3, string attributeName4, string attributeName5, string attributeName6, string attributeName7)
270 - {
271 - return new WixErrorEventArgs(sourceLineNumbers, 23, "WixErrors_CustomActionMultipleTargets_1", elementName, attributeName, attributeName1, attributeName2, attributeName3, attributeName4, attributeName5, attributeName6, attributeName7);
272 - }
273 -
274 - public static MessageEventArgs CustomActionIllegalInnerText(SourceLineNumber sourceLineNumbers, string elementName, string innerText, string attributeName)
275 - {
276 - return new WixErrorEventArgs(sourceLineNumbers, 24, "WixErrors_CustomActionIllegalInnerText_1", elementName, innerText, attributeName);
277 - }
278 -
279 - public static MessageEventArgs DirectoryRootWithoutName(SourceLineNumber sourceLineNumbers, string elementName, string attributeName)
280 - {
281 - return new WixErrorEventArgs(sourceLineNumbers, 25, "WixErrors_DirectoryRootWithoutName_1", elementName, attributeName);
282 - }
283 -
284 - public static MessageEventArgs IllegalShortFilename(SourceLineNumber sourceLineNumbers, string elementName, string attributeName, string value)
285 - {
286 - return new WixErrorEventArgs(sourceLineNumbers, 26, "WixErrors_IllegalShortFilename_1", elementName, attributeName, value);
287 - }
288 -
289 - public static MessageEventArgs IllegalLongFilename(SourceLineNumber sourceLineNumbers, string elementName, string attributeName, string value)
290 - {
291 - return new WixErrorEventArgs(sourceLineNumbers, 27, "WixErrors_IllegalLongFilename_1", elementName, attributeName, value);
292 - }
293 -
294 - public static MessageEventArgs IllegalLongFilename(SourceLineNumber sourceLineNumbers, string elementName, string attributeName, string value, string filename)
295 - {
296 - return new WixErrorEventArgs(sourceLineNumbers, 27, "WixErrors_IllegalLongFilename_2", elementName, attributeName, value, filename);
297 - }
298 -
299 - public static MessageEventArgs TableNameTooLong(SourceLineNumber sourceLineNumbers, string elementName, string attributeName, string value)
300 - {
301 - return new WixErrorEventArgs(sourceLineNumbers, 28, "WixErrors_TableNameTooLong_1", elementName, attributeName, value);
302 - }
303 -
304 - public static MessageEventArgs FeatureConfigurableDirectoryNotUppercase(SourceLineNumber sourceLineNumbers, string elementName, string attributeName, string value)
305 - {
306 - return new WixErrorEventArgs(sourceLineNumbers, 29, "WixErrors_FeatureConfigurableDirectoryNotUppercase_1", elementName, attributeName, value);
307 - }
308 -
309 - public static MessageEventArgs FeatureCannotFavorAndDisallowAdvertise(SourceLineNumber sourceLineNumbers, string elementName, string attributeName, string value, string otherAttributeName, string otherValue)
310 - {
311 - return new WixErrorEventArgs(sourceLineNumbers, 30, "WixErrors_FeatureCannotFavorAndDisallowAdvertise_1", elementName, attributeName, value, otherAttributeName, otherValue);
312 - }
313 -
314 - public static MessageEventArgs FeatureCannotFollowParentAndFavorLocalOrSource(SourceLineNumber sourceLineNumbers, string elementName, string attributeName, string otherAttributeName, string otherValue)
315 - {
316 - return new WixErrorEventArgs(sourceLineNumbers, 31, "WixErrors_FeatureCannotFollowParentAndFavorLocalOrSource_1", elementName, attributeName, otherAttributeName, otherValue);
317 - }
318 -
319 - public static MessageEventArgs MediaEmbeddedCabinetNameTooLong(SourceLineNumber sourceLineNumbers, string elementName, string attributeName, string value, int length)
320 - {
321 - return new WixErrorEventArgs(sourceLineNumbers, 32, "WixErrors_MediaEmbeddedCabinetNameTooLong_1", elementName, attributeName, value, length);
322 - }
323 -
324 - public static MessageEventArgs RegistrySubElementCannotBeRemoved(SourceLineNumber sourceLineNumbers, string registryElementName, string registryValueElementName, string actionAttributeName, string removeValue, string removeKeyOnInstallValue)
325 - {
326 - return new WixErrorEventArgs(sourceLineNumbers, 33, "WixErrors_RegistrySubElementCannotBeRemoved_1", registryElementName, registryValueElementName, actionAttributeName, removeValue, removeKeyOnInstallValue);
327 - }
328 -
329 - public static MessageEventArgs RegistryMultipleValuesWithoutMultiString(SourceLineNumber sourceLineNumbers, string registryElementName, string valueAttributeName, string registryValueElementName, string typeAttributeName)
330 - {
331 - return new WixErrorEventArgs(sourceLineNumbers, 34, "WixErrors_RegistryMultipleValuesWithoutMultiString_1", registryElementName, valueAttributeName, registryValueElementName, typeAttributeName);
332 - }
333 -
334 - public static MessageEventArgs IllegalAttributeWithOtherAttribute(SourceLineNumber sourceLineNumbers, string elementName, string attributeName, string otherAttributeName)
335 - {
336 - return new WixErrorEventArgs(sourceLineNumbers, 35, "WixErrors_IllegalAttributeWithOtherAttribute_1", elementName, attributeName, otherAttributeName);
337 - }
338 -
339 - public static MessageEventArgs IllegalAttributeWithOtherAttribute(SourceLineNumber sourceLineNumbers, string elementName, string attributeName, string otherAttributeName, string otherAttributeValue)
340 - {
341 - return new WixErrorEventArgs(sourceLineNumbers, 35, "WixErrors_IllegalAttributeWithOtherAttribute_2", elementName, attributeName, otherAttributeName, otherAttributeValue);
342 - }
343 -
344 - public static MessageEventArgs IllegalAttributeWithOtherAttributes(SourceLineNumber sourceLineNumbers, string elementName, string attributeName, string otherAttributeName1, string otherAttributeName2)
345 - {
346 - return new WixErrorEventArgs(sourceLineNumbers, 36, "WixErrors_IllegalAttributeWithOtherAttributes_1", elementName, attributeName, otherAttributeName1, otherAttributeName2);
347 - }
348 -
349 - public static MessageEventArgs IllegalAttributeWithOtherAttributes(SourceLineNumber sourceLineNumbers, string elementName, string attributeName, string otherAttributeName1, string otherAttributeName2, string otherAttributeName3)
350 - {
351 - return new WixErrorEventArgs(sourceLineNumbers, 36, "WixErrors_IllegalAttributeWithOtherAttributes_2", elementName, attributeName, otherAttributeName1, otherAttributeName2, otherAttributeName3);
352 - }
353 -
354 - public static MessageEventArgs IllegalAttributeWithOtherAttributes(SourceLineNumber sourceLineNumbers, string elementName, string attributeName, string otherAttributeName1, string otherAttributeName2, string otherAttributeName3, string otherAttributeName4)
355 - {
356 - return new WixErrorEventArgs(sourceLineNumbers, 36, "WixErrors_IllegalAttributeWithOtherAttributes_3", elementName, attributeName, otherAttributeName1, otherAttributeName2, otherAttributeName3, otherAttributeName4);
357 - }
358 -
359 - public static MessageEventArgs IllegalAttributeWithoutOtherAttributes(SourceLineNumber sourceLineNumbers, string elementName, string attributeName, string otherAttributeName)
360 - {
361 - return new WixErrorEventArgs(sourceLineNumbers, 37, "WixErrors_IllegalAttributeWithoutOtherAttributes_1", elementName, attributeName, otherAttributeName);
362 - }
363 -
364 - public static MessageEventArgs IllegalAttributeWithoutOtherAttributes(SourceLineNumber sourceLineNumbers, string elementName, string attributeName, string otherAttributeName1, string otherAttributeName2)
365 - {
366 - return new WixErrorEventArgs(sourceLineNumbers, 37, "WixErrors_IllegalAttributeWithoutOtherAttributes_2", elementName, attributeName, otherAttributeName1, otherAttributeName2);
367 - }
368 -
369 - public static MessageEventArgs IllegalAttributeWithoutOtherAttributes(SourceLineNumber sourceLineNumbers, string elementName, string attributeName, string otherAttributeName1, string otherAttributeName2, string otherAttributeValue, bool uniquifier)
370 - {
371 - return new WixErrorEventArgs(sourceLineNumbers, 37, "WixErrors_IllegalAttributeWithoutOtherAttributes_3", elementName, attributeName, otherAttributeName1, otherAttributeName2, otherAttributeValue, uniquifier);
372 - }
373 -
374 - public static MessageEventArgs IllegalAttributeWithoutOtherAttributes(SourceLineNumber sourceLineNumbers, string elementName, string attributeName, string otherAttributeName1, string otherAttributeName2, string otherAttributeName3)
375 - {
376 - return new WixErrorEventArgs(sourceLineNumbers, 37, "WixErrors_IllegalAttributeWithoutOtherAttributes_4", elementName, attributeName, otherAttributeName1, otherAttributeName2, otherAttributeName3);
377 - }
378 -
379 - public static MessageEventArgs IllegalAttributeWithoutOtherAttributes(SourceLineNumber sourceLineNumbers, string elementName, string attributeName, string otherAttributeName1, string otherAttributeName2, string otherAttributeName3, string otherAttributeName4)
380 - {
381 - return new WixErrorEventArgs(sourceLineNumbers, 37, "WixErrors_IllegalAttributeWithoutOtherAttributes_5", elementName, attributeName, otherAttributeName1, otherAttributeName2, otherAttributeName3, otherAttributeName4);
382 - }
383 -
384 - public static MessageEventArgs IllegalAttributeValueWithoutOtherAttribute(SourceLineNumber sourceLineNumbers, string elementName, string attributeName, string attributeValue, string otherAttributeName, string otherAttributeValue)
385 - {
386 - return new WixErrorEventArgs(sourceLineNumbers, 38, "WixErrors_IllegalAttributeValueWithoutOtherAttribute_1", elementName, attributeName, attributeValue, otherAttributeName, otherAttributeValue);
387 - }
388 -
389 - public static MessageEventArgs IllegalAttributeValueWithoutOtherAttribute(SourceLineNumber sourceLineNumbers, string elementName, string attributeName, string attributeValue, string otherAttributeName)
390 - {
391 - return new WixErrorEventArgs(sourceLineNumbers, 38, "WixErrors_IllegalAttributeValueWithoutOtherAttribute_2", elementName, attributeName, attributeValue, otherAttributeName);
392 - }
393 -
394 - public static MessageEventArgs IntegralValueSentinelCollision(SourceLineNumber sourceLineNumbers, int value)
395 - {
396 - return new WixErrorEventArgs(sourceLineNumbers, 39, "WixErrors_IntegralValueSentinelCollision_1", value);
397 - }
398 -
399 - public static MessageEventArgs IntegralValueSentinelCollision(SourceLineNumber sourceLineNumbers, long value)
400 - {
401 - return new WixErrorEventArgs(sourceLineNumbers, 39, "WixErrors_IntegralValueSentinelCollision_2", value);
402 - }
403 -
404 - public static MessageEventArgs ExampleGuid(SourceLineNumber sourceLineNumbers, string elementName, string attributeName, string value)
405 - {
406 - return new WixErrorEventArgs(sourceLineNumbers, 40, "WixErrors_ExampleGuid_1", elementName, attributeName, value);
407 - }
408 -
409 - public static MessageEventArgs TooManyChildren(SourceLineNumber sourceLineNumbers, string elementName, string childElementName)
410 - {
411 - return new WixErrorEventArgs(sourceLineNumbers, 41, "WixErrors_TooManyChildren_1", elementName, childElementName);
412 - }
413 -
414 - public static MessageEventArgs ComponentMultipleKeyPaths(SourceLineNumber sourceLineNumbers, string elementName, string attributeName, string value, string fileElementName, string registryElementName, string odbcDataSourceElementName)
415 - {
416 - return new WixErrorEventArgs(sourceLineNumbers, 42, "WixErrors_ComponentMultipleKeyPaths_1", elementName, attributeName, value, fileElementName, registryElementName, odbcDataSourceElementName);
417 - }
418 -
419 - public static MessageEventArgs CabClosureFailed(string cabinet)
420 - {
421 - return new WixErrorEventArgs(null, 43, "WixErrors_CabClosureFailed_1", cabinet);
422 - }
423 -
424 - public static MessageEventArgs CabClosureFailed(string cabinet, int error)
425 - {
426 - return new WixErrorEventArgs(null, 43, "WixErrors_CabClosureFailed_2", cabinet, error);
427 - }
428 -
429 - public static MessageEventArgs ExpectedAttributes(SourceLineNumber sourceLineNumbers, string elementName, string attributeName1, string attributeName2)
430 - {
431 - return new WixErrorEventArgs(sourceLineNumbers, 44, "WixErrors_ExpectedAttributes_1", elementName, attributeName1, attributeName2);
432 - }
433 -
434 - public static MessageEventArgs ExpectedAttributes(SourceLineNumber sourceLineNumbers, string elementName, string attributeName1, string attributeName2, string attributeName3)
435 - {
436 - return new WixErrorEventArgs(sourceLineNumbers, 44, "WixErrors_ExpectedAttributes_2", elementName, attributeName1, attributeName2, attributeName3);
437 - }
438 -
439 - public static MessageEventArgs ExpectedAttributes(SourceLineNumber sourceLineNumbers, string elementName, string attributeName1, string attributeName2, string attributeName3, string attributeName4)
440 - {
441 - return new WixErrorEventArgs(sourceLineNumbers, 44, "WixErrors_ExpectedAttributes_3", elementName, attributeName1, attributeName2, attributeName3, attributeName4);
442 - }
443 -
444 - public static MessageEventArgs ExpectedAttributes(SourceLineNumber sourceLineNumbers, string elementName, string attributeName1, string attributeName2, string attributeName3, string attributeName4, string attributeName5)
445 - {
446 - return new WixErrorEventArgs(sourceLineNumbers, 44, "WixErrors_ExpectedAttributes_4", elementName, attributeName1, attributeName2, attributeName3, attributeName4, attributeName5);
447 - }
448 -
449 - public static MessageEventArgs ExpectedAttributes(SourceLineNumber sourceLineNumbers, string elementName, string attributeName1, string attributeName2, string attributeName3, string attributeName4, string attributeName5, string attributeName6)
450 - {
451 - return new WixErrorEventArgs(sourceLineNumbers, 44, "WixErrors_ExpectedAttributes_5", elementName, attributeName1, attributeName2, attributeName3, attributeName4, attributeName5, attributeName6);
452 - }
453 -
454 - public static MessageEventArgs ExpectedAttributes(SourceLineNumber sourceLineNumbers, string elementName, string attributeName1, string attributeName2, string attributeName3, string attributeName4, string attributeName5, string attributeName6, string attributeName7)
455 - {
456 - return new WixErrorEventArgs(sourceLineNumbers, 44, "WixErrors_ExpectedAttributes_6", elementName, attributeName1, attributeName2, attributeName3, attributeName4, attributeName5, attributeName6, attributeName7);
457 - }
458 -
459 - public static MessageEventArgs ExpectedAttributesWithOtherAttribute(SourceLineNumber sourceLineNumbers, string elementName, string attributeName1, string attributeName2)
460 - {
461 - return new WixErrorEventArgs(sourceLineNumbers, 45, "WixErrors_ExpectedAttributesWithOtherAttribute_1", elementName, attributeName1, attributeName2);
462 - }
463 -
464 - public static MessageEventArgs ExpectedAttributesWithOtherAttribute(SourceLineNumber sourceLineNumbers, string elementName, string attributeName1, string attributeName2, string otherAttributeName)
465 - {
466 - return new WixErrorEventArgs(sourceLineNumbers, 45, "WixErrors_ExpectedAttributesWithOtherAttribute_2", elementName, attributeName1, attributeName2, otherAttributeName);
467 - }
468 -
469 - public static MessageEventArgs ExpectedAttributesWithOtherAttribute(SourceLineNumber sourceLineNumbers, string elementName, string attributeName1, string attributeName2, string otherAttributeName, string otherAttributeValue)
470 - {
471 - return new WixErrorEventArgs(sourceLineNumbers, 45, "WixErrors_ExpectedAttributesWithOtherAttribute_3", elementName, attributeName1, attributeName2, otherAttributeName, otherAttributeValue);
472 - }
473 -
474 - public static MessageEventArgs ExpectedAttributesWithoutOtherAttribute(SourceLineNumber sourceLineNumbers, string elementName, string attributeName1, string attributeName2, string otherAttributeName)
475 - {
476 - return new WixErrorEventArgs(sourceLineNumbers, 46, "WixErrors_ExpectedAttributesWithoutOtherAttribute_1", elementName, attributeName1, attributeName2, otherAttributeName);
477 - }
478 -
479 - public static MessageEventArgs MissingTypeLibFile(SourceLineNumber sourceLineNumbers, string elementName, string fileElementName)
480 - {
481 - return new WixErrorEventArgs(sourceLineNumbers, 47, "WixErrors_MissingTypeLibFile_1", elementName, fileElementName);
482 - }
483 -
484 - public static MessageEventArgs InvalidDocumentElement(SourceLineNumber sourceLineNumbers, string elementName, string fileType, string expectedElementName)
485 - {
486 - return new WixErrorEventArgs(sourceLineNumbers, 48, "WixErrors_InvalidDocumentElement_1", elementName, fileType, expectedElementName);
487 - }
488 -
489 - public static MessageEventArgs ExpectedAttributeInElementOrParent(SourceLineNumber sourceLineNumbers, string elementName, string attributeName, string parentElementName)
490 - {
491 - return new WixErrorEventArgs(sourceLineNumbers, 49, "WixErrors_ExpectedAttributeInElementOrParent_1", elementName, attributeName, parentElementName);
492 - }
493 -
494 - public static MessageEventArgs ExpectedAttributeInElementOrParent(SourceLineNumber sourceLineNumbers, string elementName, string attributeName, string parentElementName, string parentAttributeName)
495 - {
496 - return new WixErrorEventArgs(sourceLineNumbers, 49, "WixErrors_ExpectedAttributeInElementOrParent_2", elementName, attributeName, parentElementName, parentAttributeName);
497 - }
498 -
499 - public static MessageEventArgs UnauthorizedAccess(string filePath)
500 - {
501 - return new WixErrorEventArgs(null, 50, "WixErrors_UnauthorizedAccess_1", filePath);
502 - }
503 -
504 - public static MessageEventArgs IllegalModuleExclusionLanguageAttributes(SourceLineNumber sourceLineNumbers)
505 - {
506 - return new WixErrorEventArgs(sourceLineNumbers, 51, "WixErrors_IllegalModuleExclusionLanguageAttributes_1");
507 - }
508 -
509 - public static MessageEventArgs NoFirstControlSpecified(SourceLineNumber sourceLineNumbers, string dialogName)
510 - {
511 - return new WixErrorEventArgs(sourceLineNumbers, 52, "WixErrors_NoFirstControlSpecified_1", dialogName);
512 - }
513 -
514 - public static MessageEventArgs NoDataForColumn(SourceLineNumber sourceLineNumbers, string columnName, string tableName)
515 - {
516 - return new WixErrorEventArgs(sourceLineNumbers, 53, "WixErrors_NoDataForColumn_1", columnName, tableName);
517 - }
518 -
519 - public static MessageEventArgs ValueAndMaskMustBeSameLength(SourceLineNumber sourceLineNumbers)
520 - {
521 - return new WixErrorEventArgs(sourceLineNumbers, 54, "WixErrors_ValueAndMaskMustBeSameLength_1");
522 - }
523 -
524 - public static MessageEventArgs TooManySearchElements(SourceLineNumber sourceLineNumbers, string elementName)
525 - {
526 - return new WixErrorEventArgs(sourceLineNumbers, 55, "WixErrors_TooManySearchElements_1", elementName);
527 - }
528 -
529 - public static MessageEventArgs IllegalAttributeExceptOnElement(SourceLineNumber sourceLineNumbers, string elementName, string attributeName, string expectedElementName)
530 - {
531 - return new WixErrorEventArgs(sourceLineNumbers, 56, "WixErrors_IllegalAttributeExceptOnElement_1", elementName, attributeName, expectedElementName);
532 - }
533 -
534 - public static MessageEventArgs SearchElementRequired(SourceLineNumber sourceLineNumbers, string elementName)
535 - {
536 - return new WixErrorEventArgs(sourceLineNumbers, 57, "WixErrors_SearchElementRequired_1", elementName);
537 - }
538 -
539 - public static MessageEventArgs MultipleIdentifiersFound(SourceLineNumber sourceLineNumbers, string elementName, string identifier, string mismatchIdentifier)
540 - {
541 - return new WixErrorEventArgs(sourceLineNumbers, 58, "WixErrors_MultipleIdentifiersFound_1", elementName, identifier, mismatchIdentifier);
542 - }
543 -
544 - public static MessageEventArgs AdvertiseStateMustMatch(SourceLineNumber sourceLineNumbers, string advertiseState, string parentAdvertiseState)
545 - {
546 - return new WixErrorEventArgs(sourceLineNumbers, 59, "WixErrors_AdvertiseStateMustMatch_1", advertiseState, parentAdvertiseState);
547 - }
548 -
549 - public static MessageEventArgs DuplicateContextValue(SourceLineNumber sourceLineNumbers, string contextValue)
550 - {
551 - return new WixErrorEventArgs(sourceLineNumbers, 60, "WixErrors_DuplicateContextValue_1", contextValue);
552 - }
553 -
554 - public static MessageEventArgs RelativePathForRegistryElement(SourceLineNumber sourceLineNumbers)
555 - {
556 - return new WixErrorEventArgs(sourceLineNumbers, 61, "WixErrors_RelativePathForRegistryElement_1");
557 - }
558 -
559 - public static MessageEventArgs IllegalAttributeWhenNested(SourceLineNumber sourceLineNumbers, string elementName, string attributeName, string parentElement)
560 - {
561 - return new WixErrorEventArgs(sourceLineNumbers, 62, "WixErrors_IllegalAttributeWhenNested_1", elementName, attributeName, parentElement);
562 - }
563 -
564 - public static MessageEventArgs ExpectedElement(SourceLineNumber sourceLineNumbers, string elementName, string childName)
565 - {
566 - return new WixErrorEventArgs(sourceLineNumbers, 63, "WixErrors_ExpectedElement_1", elementName, childName);
567 - }
568 -
569 - public static MessageEventArgs ExpectedElement(SourceLineNumber sourceLineNumbers, string elementName, string childName1, string childName2)
570 - {
571 - return new WixErrorEventArgs(sourceLineNumbers, 63, "WixErrors_ExpectedElement_2", elementName, childName1, childName2);
572 - }
573 -
574 - public static MessageEventArgs ExpectedElement(SourceLineNumber sourceLineNumbers, string elementName, string childName1, string childName2, string childName3)
575 - {
576 - return new WixErrorEventArgs(sourceLineNumbers, 63, "WixErrors_ExpectedElement_3", elementName, childName1, childName2, childName3);
577 - }
578 -
579 - public static MessageEventArgs ExpectedElement(SourceLineNumber sourceLineNumbers, string elementName, string childName1, string childName2, string childName3, string childName4)
580 - {
581 - return new WixErrorEventArgs(sourceLineNumbers, 63, "WixErrors_ExpectedElement_4", elementName, childName1, childName2, childName3, childName4);
582 - }
583 -
584 - public static MessageEventArgs RegistryRootInvalid(SourceLineNumber sourceLineNumbers)
585 - {
586 - return new WixErrorEventArgs(sourceLineNumbers, 64, "WixErrors_RegistryRootInvalid_1");
587 - }
588 -
589 - public static MessageEventArgs IllegalYesNoDefaultValue(SourceLineNumber sourceLineNumbers, string elementName, string attributeName, string value)
590 - {
591 - return new WixErrorEventArgs(sourceLineNumbers, 65, "WixErrors_IllegalYesNoDefaultValue_1", elementName, attributeName, value);
592 - }
593 -
594 - public static MessageEventArgs IllegalAttributeInMergeModule(SourceLineNumber sourceLineNumbers, string elementName, string attributeName)
595 - {
596 - return new WixErrorEventArgs(sourceLineNumbers, 66, "WixErrors_IllegalAttributeInMergeModule_1", elementName, attributeName);
597 - }
598 -
599 - public static MessageEventArgs GenericReadNotAllowed(SourceLineNumber sourceLineNumbers)
600 - {
601 - return new WixErrorEventArgs(sourceLineNumbers, 67, "WixErrors_GenericReadNotAllowed_1");
602 - }
603 -
604 - public static MessageEventArgs IllegalAttributeWithInnerText(SourceLineNumber sourceLineNumbers, string elementName, string attributeName)
605 - {
606 - return new WixErrorEventArgs(sourceLineNumbers, 68, "WixErrors_IllegalAttributeWithInnerText_1", elementName, attributeName);
607 - }
608 -
609 - public static MessageEventArgs SearchElementRequiredWithAttribute(SourceLineNumber sourceLineNumbers, string elementName, string attributeName, string attributeValue)
610 - {
611 - return new WixErrorEventArgs(sourceLineNumbers, 69, "WixErrors_SearchElementRequiredWithAttribute_1", elementName, attributeName, attributeValue);
612 - }
613 -
614 - public static MessageEventArgs CannotAuthorSpecialProperties(SourceLineNumber sourceLineNumbers, string propertyName)
615 - {
616 - return new WixErrorEventArgs(sourceLineNumbers, 70, "WixErrors_CannotAuthorSpecialProperties_1", propertyName);
617 - }
618 -
619 - public static MessageEventArgs NeedSequenceBeforeOrAfter(SourceLineNumber sourceLineNumbers, string elementName)
620 - {
621 - return new WixErrorEventArgs(sourceLineNumbers, 72, "WixErrors_NeedSequenceBeforeOrAfter_1", elementName);
622 - }
623 -
624 - public static MessageEventArgs ValueNotSupported(SourceLineNumber sourceLineNumbers, string elementName, string attributeName, string attributeValue)
625 - {
626 - return new WixErrorEventArgs(sourceLineNumbers, 73, "WixErrors_ValueNotSupported_1", elementName, attributeName, attributeValue);
627 - }
628 -
629 - public static MessageEventArgs TabbableControlNotAllowedInBillboard(SourceLineNumber sourceLineNumbers, string elementName, string controlType)
630 - {
631 - return new WixErrorEventArgs(sourceLineNumbers, 74, "WixErrors_TabbableControlNotAllowedInBillboard_1", elementName, controlType);
632 - }
633 -
634 - public static MessageEventArgs CheckBoxValueOnlyValidWithCheckBox(SourceLineNumber sourceLineNumbers, string elementName, string controlType)
635 - {
636 - return new WixErrorEventArgs(sourceLineNumbers, 75, "WixErrors_CheckBoxValueOnlyValidWithCheckBox_1", elementName, controlType);
637 - }
638 -
639 - public static MessageEventArgs CabFileDoesNotExist(string cabName, string mergeModulePath, string directoryName)
640 - {
641 - return new WixErrorEventArgs(null, 76, "WixErrors_CabFileDoesNotExist_1", cabName, mergeModulePath, directoryName);
642 - }
643 -
644 - public static MessageEventArgs RadioButtonTypeInconsistent(SourceLineNumber sourceLineNumbers)
645 - {
646 - return new WixErrorEventArgs(sourceLineNumbers, 77, "WixErrors_RadioButtonTypeInconsistent_1");
647 - }
648 -
649 - public static MessageEventArgs RadioButtonBitmapAndIconDisallowed(SourceLineNumber sourceLineNumbers)
650 - {
651 - return new WixErrorEventArgs(sourceLineNumbers, 78, "WixErrors_RadioButtonBitmapAndIconDisallowed_1");
652 - }
653 -
654 - public static MessageEventArgs IllegalSuppressWarningId(string suppressedId)
655 - {
656 - return new WixErrorEventArgs(null, 79, "WixErrors_IllegalSuppressWarningId_1", suppressedId);
657 - }
658 -
659 - public static MessageEventArgs PreprocessorIllegalForeachVariable(SourceLineNumber sourceLineNumbers, string variableName)
660 - {
661 - return new WixErrorEventArgs(sourceLineNumbers, 80, "WixErrors_PreprocessorIllegalForeachVariable_1", variableName);
662 - }
663 -
664 - public static MessageEventArgs PreprocessorMissingParameterPrefix(SourceLineNumber sourceLineNumbers, string parameterName)
665 - {
666 - return new WixErrorEventArgs(sourceLineNumbers, 81, "WixErrors_PreprocessorMissingParameterPrefix_1", parameterName);
667 - }
668 -
669 - public static MessageEventArgs PreprocessorExtensionForParameterMissing(SourceLineNumber sourceLineNumbers, string parameterName, string parameterPrefix)
670 - {
671 - return new WixErrorEventArgs(sourceLineNumbers, 82, "WixErrors_PreprocessorExtensionForParameterMissing_1", parameterName, parameterPrefix);
672 - }
673 -
674 - public static MessageEventArgs CannotFindFile(SourceLineNumber sourceLineNumbers, string fileId, string fileName, string filePath)
675 - {
676 - return new WixErrorEventArgs(sourceLineNumbers, 83, "WixErrors_CannotFindFile_1", fileId, fileName, filePath);
677 - }
678 -
679 - public static MessageEventArgs BinderFileManagerMissingFile(SourceLineNumber sourceLineNumbers, string exceptionMessage)
680 - {
681 - return new WixErrorEventArgs(sourceLineNumbers, 84, "WixErrors_BinderFileManagerMissingFile_1", exceptionMessage);
682 - }
683 -
684 - public static MessageEventArgs ReferenceLoopDetected(SourceLineNumber sourceLineNumbers, string loopList)
685 - {
686 - return new WixErrorEventArgs(sourceLineNumbers, 86, "WixErrors_ReferenceLoopDetected_1", loopList);
687 - }
688 -
689 - public static MessageEventArgs GuidContainsLowercaseLetters(SourceLineNumber sourceLineNumbers, string elementName, string attributeName, string value)
690 - {
691 - return new WixErrorEventArgs(sourceLineNumbers, 87, "WixErrors_GuidContainsLowercaseLetters_1", elementName, attributeName, value);
692 - }
693 -
694 - public static MessageEventArgs InvalidDateTimeFormat(SourceLineNumber sourceLineNumbers, string elementName, string attributeName, string value)
695 - {
696 - return new WixErrorEventArgs(sourceLineNumbers, 88, "WixErrors_InvalidDateTimeFormat_1", elementName, attributeName, value);
697 - }
698 -
699 - public static MessageEventArgs MultipleEntrySections(SourceLineNumber sourceLineNumbers, string sectionName1, string sectionName2)
700 - {
701 - return new WixErrorEventArgs(sourceLineNumbers, 89, "WixErrors_MultipleEntrySections_1", sectionName1, sectionName2);
702 - }
703 -
704 - public static MessageEventArgs MultipleEntrySections2(SourceLineNumber sourceLineNumbers)
705 - {
706 - return new WixErrorEventArgs(sourceLineNumbers, 90, "WixErrors_MultipleEntrySections2_1");
707 - }
708 -
709 - public static MessageEventArgs DuplicateSymbol(SourceLineNumber sourceLineNumbers, string symbolName)
710 - {
711 - return new WixErrorEventArgs(sourceLineNumbers, 91, "WixErrors_DuplicateSymbol_1", symbolName);
712 - }
713 -
714 - public static MessageEventArgs DuplicateSymbol(SourceLineNumber sourceLineNumbers, string symbolName, string referencingSourceLineNumber)
715 - {
716 - return new WixErrorEventArgs(sourceLineNumbers, 91, "WixErrors_DuplicateSymbol_2", symbolName, referencingSourceLineNumber);
717 - }
718 -
719 - public static MessageEventArgs DuplicateSymbol2(SourceLineNumber sourceLineNumbers)
720 - {
721 - return new WixErrorEventArgs(sourceLineNumbers, 92, "WixErrors_DuplicateSymbol2_1");
722 - }
723 -
724 - public static MessageEventArgs MissingEntrySection(string sectionType)
725 - {
726 - return new WixErrorEventArgs(null, 93, "WixErrors_MissingEntrySection_1", sectionType);
727 - }
728 -
729 - public static MessageEventArgs UnresolvedReference(SourceLineNumber sourceLineNumbers, string symbolName)
730 - {
731 - return new WixErrorEventArgs(sourceLineNumbers, 94, "WixErrors_UnresolvedReference_1", symbolName);
732 - }
733 -
734 - public static MessageEventArgs UnresolvedReference(SourceLineNumber sourceLineNumbers, string symbolName, WixToolset.Data.AccessModifier accessModifier)
735 - {
736 - return new WixErrorEventArgs(sourceLineNumbers, 94, "WixErrors_UnresolvedReference_2", symbolName, accessModifier);
737 - }
738 -
739 - public static MessageEventArgs MultiplePrimaryReferences(SourceLineNumber sourceLineNumbers, string crefChildType, string crefChildId, string crefParentType, string crefParentId, string conflictParentType, string conflictParentId)
740 - {
741 - return new WixErrorEventArgs(sourceLineNumbers, 95, "WixErrors_MultiplePrimaryReferences_1", crefChildType, crefChildId, crefParentType, crefParentId, conflictParentType, conflictParentId);
742 - }
743 -
744 - public static MessageEventArgs ComponentReferencedTwice(SourceLineNumber sourceLineNumbers, string crefChildId)
745 - {
746 - return new WixErrorEventArgs(sourceLineNumbers, 96, "WixErrors_ComponentReferencedTwice_1", crefChildId);
747 - }
748 -
749 - public static MessageEventArgs DuplicateModuleFileIdentifier(SourceLineNumber sourceLineNumbers, string moduleId, string fileId)
750 - {
751 - return new WixErrorEventArgs(sourceLineNumbers, 97, "WixErrors_DuplicateModuleFileIdentifier_1", moduleId, fileId);
752 - }
753 -
754 - public static MessageEventArgs DuplicateModuleCaseInsensitiveFileIdentifier(SourceLineNumber sourceLineNumbers, string moduleId, string fileId1, string fileId2)
755 - {
756 - return new WixErrorEventArgs(sourceLineNumbers, 98, "WixErrors_DuplicateModuleCaseInsensitiveFileIdentifier_1", moduleId, fileId1, fileId2);
757 - }
758 -
759 - public static MessageEventArgs ImplicitComponentKeyPath(SourceLineNumber sourceLineNumbers, string componentId)
760 - {
761 - return new WixErrorEventArgs(sourceLineNumbers, 99, "WixErrors_ImplicitComponentKeyPath_1", componentId);
762 - }
763 -
764 - public static MessageEventArgs DuplicateLocalizationIdentifier(SourceLineNumber sourceLineNumbers, string localizationId)
765 - {
766 - return new WixErrorEventArgs(sourceLineNumbers, 100, "WixErrors_DuplicateLocalizationIdentifier_1", localizationId);
767 - }
768 -
769 - public static MessageEventArgs LocalizationVariableUnknown(SourceLineNumber sourceLineNumbers, string variableId)
770 - {
771 - return new WixErrorEventArgs(sourceLineNumbers, 102, "WixErrors_LocalizationVariableUnknown_1", variableId);
772 - }
773 -
774 - public static MessageEventArgs FileNotFound(SourceLineNumber sourceLineNumbers, string file)
775 - {
776 - return new WixErrorEventArgs(sourceLineNumbers, 103, "WixErrors_FileNotFound_1", file);
777 - }
778 -
779 - public static MessageEventArgs FileNotFound(SourceLineNumber sourceLineNumbers, string file, string fileType)
780 - {
781 - return new WixErrorEventArgs(sourceLineNumbers, 103, "WixErrors_FileNotFound_2", file, fileType);
782 - }
783 -
784 - public static MessageEventArgs InvalidXml(SourceLineNumber sourceLineNumbers, string fileType, string detail)
785 - {
786 - return new WixErrorEventArgs(sourceLineNumbers, 104, "WixErrors_InvalidXml_1", fileType, detail);
787 - }
788 -
789 - public static MessageEventArgs ProgIdNestedTooDeep(SourceLineNumber sourceLineNumbers)
790 - {
791 - return new WixErrorEventArgs(sourceLineNumbers, 105, "WixErrors_ProgIdNestedTooDeep_1");
792 - }
793 -
794 - public static MessageEventArgs CanNotHaveTwoParents(SourceLineNumber sourceLineNumbers, string directorySearch, string parentAttribute, string parentElement)
795 - {
796 - return new WixErrorEventArgs(sourceLineNumbers, 106, "WixErrors_CanNotHaveTwoParents_1", directorySearch, parentAttribute, parentElement);
797 - }
798 -
799 - public static MessageEventArgs SchemaValidationFailed(SourceLineNumber sourceLineNumbers, string validationError, int lineNumber, int linePosition)
800 - {
801 - return new WixErrorEventArgs(sourceLineNumbers, 107, "WixErrors_SchemaValidationFailed_1", validationError, lineNumber, linePosition);
802 - }
803 -
804 - public static MessageEventArgs IllegalVersionValue(SourceLineNumber sourceLineNumbers, string elementName, string attributeName, string value)
805 - {
806 - return new WixErrorEventArgs(sourceLineNumbers, 108, "WixErrors_IllegalVersionValue_1", elementName, attributeName, value);
807 - }
808 -
809 - public static MessageEventArgs CustomTableNameTooLong(SourceLineNumber sourceLineNumbers, string elementName, string attributeName, string value)
810 - {
811 - return new WixErrorEventArgs(sourceLineNumbers, 109, "WixErrors_CustomTableNameTooLong_1", elementName, attributeName, value);
812 - }
813 -
814 - public static MessageEventArgs CustomTableIllegalColumnWidth(SourceLineNumber sourceLineNumbers, string elementName, string attributeName, int value)
815 - {
816 - return new WixErrorEventArgs(sourceLineNumbers, 110, "WixErrors_CustomTableIllegalColumnWidth_1", elementName, attributeName, value);
817 - }
818 -
819 - public static MessageEventArgs CustomTableMissingPrimaryKey(SourceLineNumber sourceLineNumbers)
820 - {
821 - return new WixErrorEventArgs(sourceLineNumbers, 111, "WixErrors_CustomTableMissingPrimaryKey_1");
822 - }
823 -
824 - public static MessageEventArgs TypeSpecificationForExtensionRequired(string parameter)
825 - {
826 - return new WixErrorEventArgs(null, 113, "WixErrors_TypeSpecificationForExtensionRequired_1", parameter);
827 - }
828 -
829 - public static MessageEventArgs FilePathRequired(string parameter)
830 - {
831 - return new WixErrorEventArgs(null, 114, "WixErrors_FilePathRequired_1", parameter);
832 - }
833 -
834 - public static MessageEventArgs DirectoryPathRequired(string parameter)
835 - {
836 - return new WixErrorEventArgs(null, 115, "WixErrors_DirectoryPathRequired_1", parameter);
837 - }
838 -
839 - public static MessageEventArgs FileOrDirectoryPathRequired(string parameter)
840 - {
841 - return new WixErrorEventArgs(null, 116, "WixErrors_FileOrDirectoryPathRequired_1", parameter);
842 - }
843 -
844 - public static MessageEventArgs PathCannotContainQuote(string fileName)
845 - {
846 - return new WixErrorEventArgs(null, 117, "WixErrors_PathCannotContainQuote_1", fileName);
847 - }
848 -
849 - public static MessageEventArgs AdditionalArgumentUnexpected(string argument)
850 - {
851 - return new WixErrorEventArgs(null, 118, "WixErrors_AdditionalArgumentUnexpected_1", argument);
852 - }
853 -
854 - public static MessageEventArgs RegistryNameValueIncorrect(SourceLineNumber sourceLineNumbers, string elementName, string attributeName, string value)
855 - {
856 - return new WixErrorEventArgs(sourceLineNumbers, 119, "WixErrors_RegistryNameValueIncorrect_1", elementName, attributeName, value);
857 - }
858 -
859 - public static MessageEventArgs FamilyNameTooLong(SourceLineNumber sourceLineNumbers, string elementName, string attributeName, string value, int length)
860 - {
861 - return new WixErrorEventArgs(sourceLineNumbers, 120, "WixErrors_FamilyNameTooLong_1", elementName, attributeName, value, length);
862 - }
863 -
864 - public static MessageEventArgs IllegalFamilyName(SourceLineNumber sourceLineNumbers, string elementName, string attributeName, string value)
865 - {
866 - return new WixErrorEventArgs(sourceLineNumbers, 121, "WixErrors_IllegalFamilyName_1", elementName, attributeName, value);
867 - }
868 -
869 - public static MessageEventArgs IllegalLongValue(SourceLineNumber sourceLineNumbers, string elementName, string attributeName, string value)
870 - {
871 - return new WixErrorEventArgs(sourceLineNumbers, 122, "WixErrors_IllegalLongValue_1", elementName, attributeName, value);
872 - }
873 -
874 - public static MessageEventArgs IntegralValueOutOfRange(SourceLineNumber sourceLineNumbers, string elementName, string attributeName, int value, int minimum, int maximum)
875 - {
876 - return new WixErrorEventArgs(sourceLineNumbers, 123, "WixErrors_IntegralValueOutOfRange_1", elementName, attributeName, value, minimum, maximum);
877 - }
878 -
879 - public static MessageEventArgs IntegralValueOutOfRange(SourceLineNumber sourceLineNumbers, string elementName, string attributeName, long value, long minimum, long maximum)
880 - {
881 - return new WixErrorEventArgs(sourceLineNumbers, 123, "WixErrors_IntegralValueOutOfRange_2", elementName, attributeName, value, minimum, maximum);
882 - }
883 -
884 - public static MessageEventArgs DuplicateExtensionXmlSchemaNamespace(string extension, string extensionXmlSchemaNamespace, string collidingExtension)
885 - {
886 - return new WixErrorEventArgs(null, 125, "WixErrors_DuplicateExtensionXmlSchemaNamespace_1", extension, extensionXmlSchemaNamespace, collidingExtension);
887 - }
888 -
889 - public static MessageEventArgs DuplicateExtensionTable(string extension, string tableName)
890 - {
891 - return new WixErrorEventArgs(null, 126, "WixErrors_DuplicateExtensionTable_1", extension, tableName);
892 - }
893 -
894 - public static MessageEventArgs DuplicateExtensionPreprocessorType(string extension, string variablePrefix, string collidingExtension)
895 - {
896 - return new WixErrorEventArgs(null, 127, "WixErrors_DuplicateExtensionPreprocessorType_1", extension, variablePrefix, collidingExtension);
897 - }
898 -
899 - public static MessageEventArgs FileInUse(SourceLineNumber sourceLineNumbers, string file)
900 - {
901 - return new WixErrorEventArgs(sourceLineNumbers, 128, "WixErrors_FileInUse_1", file);
902 - }
903 -
904 - public static MessageEventArgs CannotOpenMergeModule(SourceLineNumber sourceLineNumbers, string mergeModuleIdentifier, string mergeModuleFile)
905 - {
906 - return new WixErrorEventArgs(sourceLineNumbers, 129, "WixErrors_CannotOpenMergeModule_1", mergeModuleIdentifier, mergeModuleFile);
907 - }
908 -
909 - public static MessageEventArgs DuplicatePrimaryKey(SourceLineNumber sourceLineNumbers, string primaryKey, string tableName)
910 - {
911 - return new WixErrorEventArgs(sourceLineNumbers, 130, "WixErrors_DuplicatePrimaryKey_1", primaryKey, tableName);
912 - }
913 -
914 - public static MessageEventArgs FileIdentifierNotFound(SourceLineNumber sourceLineNumbers, string fileIdentifier)
915 - {
916 - return new WixErrorEventArgs(sourceLineNumbers, 131, "WixErrors_FileIdentifierNotFound_1", fileIdentifier);
917 - }
918 -
919 - public static MessageEventArgs InvalidAssemblyFile(SourceLineNumber sourceLineNumbers, string assemblyFile, string moreInformation)
920 - {
921 - return new WixErrorEventArgs(sourceLineNumbers, 132, "WixErrors_InvalidAssemblyFile_1", assemblyFile, moreInformation);
922 - }
923 -
924 - public static MessageEventArgs ExpectedEndElement(SourceLineNumber sourceLineNumbers, string elementName)
925 - {
926 - return new WixErrorEventArgs(sourceLineNumbers, 133, "WixErrors_ExpectedEndElement_1", elementName);
927 - }
928 -
929 - public static MessageEventArgs IllegalCodepage(int codepage)
930 - {
931 - return new WixErrorEventArgs(null, 134, "WixErrors_IllegalCodepage_1", codepage);
932 - }
933 -
934 - public static MessageEventArgs ExpectedMediaCabinet(SourceLineNumber sourceLineNumbers, string fileId, int diskId)
935 - {
936 - return new WixErrorEventArgs(sourceLineNumbers, 135, "WixErrors_ExpectedMediaCabinet_1", fileId, diskId);
937 - }
938 -
939 - public static MessageEventArgs InvalidIdt(SourceLineNumber sourceLineNumbers, string idtFile)
940 - {
941 - return new WixErrorEventArgs(sourceLineNumbers, 136, "WixErrors_InvalidIdt_1", idtFile);
942 - }
943 -
944 - public static MessageEventArgs InvalidIdt(SourceLineNumber sourceLineNumbers, string idtFile, string tableName)
945 - {
946 - return new WixErrorEventArgs(sourceLineNumbers, 136, "WixErrors_InvalidIdt_2", idtFile, tableName);
947 - }
948 -
949 - public static MessageEventArgs InvalidSequenceTable(string sequenceTableName)
950 - {
951 - return new WixErrorEventArgs(null, 137, "WixErrors_InvalidSequenceTable_1", sequenceTableName);
952 - }
953 -
954 - public static MessageEventArgs ExpectedDirectory(string directory)
955 - {
956 - return new WixErrorEventArgs(null, 138, "WixErrors_ExpectedDirectory_1", directory);
957 - }
958 -
959 - public static MessageEventArgs ComponentExpectedFeature(SourceLineNumber sourceLineNumbers, string component, string type, string target)
960 - {
961 - return new WixErrorEventArgs(sourceLineNumbers, 139, "WixErrors_ComponentExpectedFeature_1", component, type, target);
962 - }
963 -
964 - public static MessageEventArgs RecursiveAction(string action, string tableName)
965 - {
966 - return new WixErrorEventArgs(null, 140, "WixErrors_RecursiveAction_1", action, tableName);
967 - }
968 -
969 - public static MessageEventArgs VersionMismatch(SourceLineNumber sourceLineNumbers, string fileType, string version, string expectedVersion)
970 - {
971 - return new WixErrorEventArgs(sourceLineNumbers, 141, "WixErrors_VersionMismatch_1", fileType, version, expectedVersion);
972 - }
973 -
974 - public static MessageEventArgs UnexpectedContentNode(SourceLineNumber sourceLineNumbers, string elementName, string unexpectedNodeType)
975 - {
976 - return new WixErrorEventArgs(sourceLineNumbers, 142, "WixErrors_UnexpectedContentNode_1", elementName, unexpectedNodeType);
977 - }
978 -
979 - public static MessageEventArgs UnexpectedColumnCount(SourceLineNumber sourceLineNumbers, string tableName)
980 - {
981 - return new WixErrorEventArgs(sourceLineNumbers, 143, "WixErrors_UnexpectedColumnCount_1", tableName);
982 - }
983 -
984 - public static MessageEventArgs InvalidExtension(string extension)
985 - {
986 - return new WixErrorEventArgs(null, 144, "WixErrors_InvalidExtension_1", extension);
987 - }
988 -
989 - public static MessageEventArgs InvalidExtension(string extension, string invalidReason)
990 - {
991 - return new WixErrorEventArgs(null, 144, "WixErrors_InvalidExtension_2", extension, invalidReason);
992 - }
993 -
994 - public static MessageEventArgs InvalidExtension(string extension, string extensionType, string expectedType)
995 - {
996 - return new WixErrorEventArgs(null, 144, "WixErrors_InvalidExtension_3", extension, extensionType, expectedType);
997 - }
998 -
999 - public static MessageEventArgs InvalidExtension(string extension, string extensionType, string expectedType1, string expectedType2)
1000 - {
1001 - return new WixErrorEventArgs(null, 144, "WixErrors_InvalidExtension_4", extension, extensionType, expectedType1, expectedType2);
1002 - }
1003 -
1004 - public static MessageEventArgs InvalidSubExpression(SourceLineNumber sourceLineNumbers, string subExpression, string expression)
1005 - {
1006 - return new WixErrorEventArgs(sourceLineNumbers, 145, "WixErrors_InvalidSubExpression_1", subExpression, expression);
1007 - }
1008 -
1009 - public static MessageEventArgs UnmatchedPreprocessorInstruction(SourceLineNumber sourceLineNumbers, string beginInstruction, string endInstruction)
1010 - {
1011 - return new WixErrorEventArgs(sourceLineNumbers, 146, "WixErrors_UnmatchedPreprocessorInstruction_1", beginInstruction, endInstruction);
1012 - }
1013 -
1014 - public static MessageEventArgs NonterminatedPreprocessorInstruction(SourceLineNumber sourceLineNumbers, string beginInstruction, string endInstruction)
1015 - {
1016 - return new WixErrorEventArgs(sourceLineNumbers, 147, "WixErrors_NonterminatedPreprocessorInstruction_1", beginInstruction, endInstruction);
1017 - }
1018 -
1019 - public static MessageEventArgs ExpectedExpressionAfterNot(SourceLineNumber sourceLineNumbers, string expression)
1020 - {
1021 - return new WixErrorEventArgs(sourceLineNumbers, 148, "WixErrors_ExpectedExpressionAfterNot_1", expression);
1022 - }
1023 -
1024 - public static MessageEventArgs InvalidPreprocessorVariable(SourceLineNumber sourceLineNumbers, string variable)
1025 - {
1026 - return new WixErrorEventArgs(sourceLineNumbers, 149, "WixErrors_InvalidPreprocessorVariable_1", variable);
1027 - }
1028 -
1029 - public static MessageEventArgs UndefinedPreprocessorVariable(SourceLineNumber sourceLineNumbers, string variableName)
1030 - {
1031 - return new WixErrorEventArgs(sourceLineNumbers, 150, "WixErrors_UndefinedPreprocessorVariable_1", variableName);
1032 - }
1033 -
1034 - public static MessageEventArgs IllegalDefineStatement(SourceLineNumber sourceLineNumbers, string defineStatement)
1035 - {
1036 - return new WixErrorEventArgs(sourceLineNumbers, 151, "WixErrors_IllegalDefineStatement_1", defineStatement);
1037 - }
1038 -
1039 - public static MessageEventArgs VariableDeclarationCollision(SourceLineNumber sourceLineNumbers, string variableName, string variableValue, string variableCollidingValue)
1040 - {
1041 - return new WixErrorEventArgs(sourceLineNumbers, 152, "WixErrors_VariableDeclarationCollision_1", variableName, variableValue, variableCollidingValue);
1042 - }
1043 -
1044 - public static MessageEventArgs CannotReundefineVariable(SourceLineNumber sourceLineNumbers, string variableName)
1045 - {
1046 - return new WixErrorEventArgs(sourceLineNumbers, 153, "WixErrors_CannotReundefineVariable_1", variableName);
1047 - }
1048 -
1049 - public static MessageEventArgs IllegalForeach(SourceLineNumber sourceLineNumbers, string foreachStatement)
1050 - {
1051 - return new WixErrorEventArgs(sourceLineNumbers, 154, "WixErrors_IllegalForeach_1", foreachStatement);
1052 - }
1053 -
1054 - public static MessageEventArgs IllegalParentAttributeWhenNested(SourceLineNumber sourceLineNumbers, string parentElementName, string parentAttributeName, string childElement)
1055 - {
1056 - return new WixErrorEventArgs(sourceLineNumbers, 155, "WixErrors_IllegalParentAttributeWhenNested_1", parentElementName, parentAttributeName, childElement);
1057 - }
1058 -
1059 - public static MessageEventArgs ExpectedEndforeach(SourceLineNumber sourceLineNumbers)
1060 - {
1061 - return new WixErrorEventArgs(sourceLineNumbers, 156, "WixErrors_ExpectedEndforeach_1");
1062 - }
1063 -
1064 - public static MessageEventArgs UnmatchedQuotesInExpression(SourceLineNumber sourceLineNumbers, string expression)
1065 - {
1066 - return new WixErrorEventArgs(sourceLineNumbers, 158, "WixErrors_UnmatchedQuotesInExpression_1", expression);
1067 - }
1068 -
1069 - public static MessageEventArgs UnmatchedParenthesisInExpression(SourceLineNumber sourceLineNumbers, string expression)
1070 - {
1071 - return new WixErrorEventArgs(sourceLineNumbers, 159, "WixErrors_UnmatchedParenthesisInExpression_1", expression);
1072 - }
1073 -
1074 - public static MessageEventArgs ExpectedVariable(SourceLineNumber sourceLineNumbers, string expression)
1075 - {
1076 - return new WixErrorEventArgs(sourceLineNumbers, 160, "WixErrors_ExpectedVariable_1", expression);
1077 - }
1078 -
1079 - public static MessageEventArgs UnexpectedLiteral(SourceLineNumber sourceLineNumbers, string expression)
1080 - {
1081 - return new WixErrorEventArgs(sourceLineNumbers, 161, "WixErrors_UnexpectedLiteral_1", expression);
1082 - }
1083 -
1084 - public static MessageEventArgs IllegalIntegerInExpression(SourceLineNumber sourceLineNumbers, string expression)
1085 - {
1086 - return new WixErrorEventArgs(sourceLineNumbers, 162, "WixErrors_IllegalIntegerInExpression_1", expression);
1087 - }
1088 -
1089 - public static MessageEventArgs UnexpectedPreprocessorOperator(SourceLineNumber sourceLineNumbers, string @operator)
1090 - {
1091 - return new WixErrorEventArgs(sourceLineNumbers, 163, "WixErrors_UnexpectedPreprocessorOperator_1", @operator);
1092 - }
1093 -
1094 - public static MessageEventArgs UnexpectedEmptySubexpression(SourceLineNumber sourceLineNumbers, string expression)
1095 - {
1096 - return new WixErrorEventArgs(sourceLineNumbers, 164, "WixErrors_UnexpectedEmptySubexpression_1", expression);
1097 - }
1098 -
1099 - public static MessageEventArgs UnexpectedCustomTableColumn(SourceLineNumber sourceLineNumbers, string column)
1100 - {
1101 - return new WixErrorEventArgs(sourceLineNumbers, 165, "WixErrors_UnexpectedCustomTableColumn_1", column);
1102 - }
1103 -
1104 - public static MessageEventArgs UnknownCustomTableColumnType(SourceLineNumber sourceLineNumbers, string columnType)
1105 - {
1106 - return new WixErrorEventArgs(sourceLineNumbers, 166, "WixErrors_UnknownCustomTableColumnType_1", columnType);
1107 - }
1108 -
1109 - public static MessageEventArgs IllegalFileCompressionAttributes(SourceLineNumber sourceLineNumbers)
1110 - {
1111 - return new WixErrorEventArgs(sourceLineNumbers, 167, "WixErrors_IllegalFileCompressionAttributes_1");
1112 - }
1113 -
1114 - public static MessageEventArgs OverridableActionCollision(SourceLineNumber sourceLineNumbers, string sequenceTableName, string actionName)
1115 - {
1116 - return new WixErrorEventArgs(sourceLineNumbers, 168, "WixErrors_OverridableActionCollision_1", sequenceTableName, actionName);
1117 - }
1118 -
1119 - public static MessageEventArgs OverridableActionCollision2(SourceLineNumber sourceLineNumbers)
1120 - {
1121 - return new WixErrorEventArgs(sourceLineNumbers, 169, "WixErrors_OverridableActionCollision2_1");
1122 - }
1123 -
1124 - public static MessageEventArgs ActionCollision(SourceLineNumber sourceLineNumbers, string sequenceTableName, string actionName)
1125 - {
1126 - return new WixErrorEventArgs(sourceLineNumbers, 170, "WixErrors_ActionCollision_1", sequenceTableName, actionName);
1127 - }
1128 -
1129 - public static MessageEventArgs ActionCollision2(SourceLineNumber sourceLineNumbers)
1130 - {
1131 - return new WixErrorEventArgs(sourceLineNumbers, 171, "WixErrors_ActionCollision2_1");
1132 - }
1133 -
1134 - public static MessageEventArgs SuppressNonoverridableAction(SourceLineNumber sourceLineNumbers, string sequenceTableName, string actionName)
1135 - {
1136 - return new WixErrorEventArgs(sourceLineNumbers, 172, "WixErrors_SuppressNonoverridableAction_1", sequenceTableName, actionName);
1137 - }
1138 -
1139 - public static MessageEventArgs SuppressNonoverridableAction2(SourceLineNumber sourceLineNumbers)
1140 - {
1141 - return new WixErrorEventArgs(sourceLineNumbers, 173, "WixErrors_SuppressNonoverridableAction2_1");
1142 - }
1143 -
1144 - public static MessageEventArgs CustomActionSequencedInModule(SourceLineNumber sourceLineNumbers, string sequenceTableName, string actionName)
1145 - {
1146 - return new WixErrorEventArgs(sourceLineNumbers, 174, "WixErrors_CustomActionSequencedInModule_1", sequenceTableName, actionName);
1147 - }
1148 -
1149 - public static MessageEventArgs StandardActionRelativelyScheduledInModule(SourceLineNumber sourceLineNumbers, string sequenceTableName, string actionName)
1150 - {
1151 - return new WixErrorEventArgs(sourceLineNumbers, 175, "WixErrors_StandardActionRelativelyScheduledInModule_1", sequenceTableName, actionName);
1152 - }
1153 -
1154 - public static MessageEventArgs ActionCircularDependency(SourceLineNumber sourceLineNumbers, string sequenceTableName, string actionName1, string actionName2)
1155 - {
1156 - return new WixErrorEventArgs(sourceLineNumbers, 176, "WixErrors_ActionCircularDependency_1", sequenceTableName, actionName1, actionName2);
1157 - }
1158 -
1159 - public static MessageEventArgs ActionScheduledRelativeToTerminationAction(SourceLineNumber sourceLineNumbers, string sequenceTableName, string actionName1, string actionName2)
1160 - {
1161 - return new WixErrorEventArgs(sourceLineNumbers, 177, "WixErrors_ActionScheduledRelativeToTerminationAction_1", sequenceTableName, actionName1, actionName2);
1162 - }
1163 -
1164 - public static MessageEventArgs ActionScheduledRelativeToTerminationAction2(SourceLineNumber sourceLineNumbers)
1165 - {
1166 - return new WixErrorEventArgs(sourceLineNumbers, 178, "WixErrors_ActionScheduledRelativeToTerminationAction2_1");
1167 - }
1168 -
1169 - public static MessageEventArgs NoUniqueActionSequenceNumber(SourceLineNumber sourceLineNumbers, string sequenceTableName, string actionName1, string actionName2)
1170 - {
1171 - return new WixErrorEventArgs(sourceLineNumbers, 179, "WixErrors_NoUniqueActionSequenceNumber_1", sequenceTableName, actionName1, actionName2);
1172 - }
1173 -
1174 - public static MessageEventArgs NoUniqueActionSequenceNumber2(SourceLineNumber sourceLineNumbers)
1175 - {
1176 - return new WixErrorEventArgs(sourceLineNumbers, 180, "WixErrors_NoUniqueActionSequenceNumber2_1");
1177 - }
1178 -
1179 - public static MessageEventArgs ActionScheduledRelativeToItself(SourceLineNumber sourceLineNumbers, string elementName, string attributeName, string attributeValue)
1180 - {
1181 - return new WixErrorEventArgs(sourceLineNumbers, 181, "WixErrors_ActionScheduledRelativeToItself_1", elementName, attributeName, attributeValue);
1182 - }
1183 -
1184 - public static MessageEventArgs MissingTableDefinition(string tableName)
1185 - {
1186 - return new WixErrorEventArgs(null, 182, "WixErrors_MissingTableDefinition_1", tableName);
1187 - }
1188 -
1189 - public static MessageEventArgs ExpectedRowInPatchCreationPackage(string tableName)
1190 - {
1191 - return new WixErrorEventArgs(null, 183, "WixErrors_ExpectedRowInPatchCreationPackage_1", tableName);
1192 - }
1193 -
1194 - public static MessageEventArgs UnexpectedTableInMergeModule(SourceLineNumber sourceLineNumbers, string tableName)
1195 - {
1196 - return new WixErrorEventArgs(sourceLineNumbers, 184, "WixErrors_UnexpectedTableInMergeModule_1", tableName);
1197 - }
1198 -
1199 - public static MessageEventArgs UnexpectedTableInPatchCreationPackage(SourceLineNumber sourceLineNumbers, string tableName)
1200 - {
1201 - return new WixErrorEventArgs(sourceLineNumbers, 185, "WixErrors_UnexpectedTableInPatchCreationPackage_1", tableName);
1202 - }
1203 -
1204 - public static MessageEventArgs MergeExcludedModule(SourceLineNumber sourceLineNumbers, string mergeId, string otherMergeId)
1205 - {
1206 - return new WixErrorEventArgs(sourceLineNumbers, 186, "WixErrors_MergeExcludedModule_1", mergeId, otherMergeId);
1207 - }
1208 -
1209 - public static MessageEventArgs MergeFeatureRequired(SourceLineNumber sourceLineNumbers, string tableName, string primaryKeys, string mergeModuleFile, string mergeId)
1210 - {
1211 - return new WixErrorEventArgs(sourceLineNumbers, 187, "WixErrors_MergeFeatureRequired_1", tableName, primaryKeys, mergeModuleFile, mergeId);
1212 - }
1213 -
1214 - public static MessageEventArgs MergeLanguageFailed(SourceLineNumber sourceLineNumbers, short language, string mergeModuleFile)
1215 - {
1216 - return new WixErrorEventArgs(sourceLineNumbers, 188, "WixErrors_MergeLanguageFailed_1", language, mergeModuleFile);
1217 - }
1218 -
1219 - public static MessageEventArgs MergeLanguageUnsupported(SourceLineNumber sourceLineNumbers, short language, string mergeModuleFile)
1220 - {
1221 - return new WixErrorEventArgs(sourceLineNumbers, 189, "WixErrors_MergeLanguageUnsupported_1", language, mergeModuleFile);
1222 - }
1223 -
1224 - public static MessageEventArgs TableDecompilationUnimplemented(string tableName)
1225 - {
1226 - return new WixErrorEventArgs(null, 190, "WixErrors_TableDecompilationUnimplemented_1", tableName);
1227 - }
1228 -
1229 - public static MessageEventArgs CannotDefaultMismatchedAdvertiseStates(SourceLineNumber sourceLineNumbers)
1230 - {
1231 - return new WixErrorEventArgs(sourceLineNumbers, 191, "WixErrors_CannotDefaultMismatchedAdvertiseStates_1");
1232 - }
1233 -
1234 - public static MessageEventArgs VersionIndependentProgIdsCannotHaveIcons(SourceLineNumber sourceLineNumbers)
1235 - {
1236 - return new WixErrorEventArgs(sourceLineNumbers, 192, "WixErrors_VersionIndependentProgIdsCannotHaveIcons_1");
1237 - }
1238 -
1239 - public static MessageEventArgs IllegalAttributeValueWithOtherAttribute(SourceLineNumber sourceLineNumbers, string elementName, string attributeName, string attributeValue, string otherAttributeName)
1240 - {
1241 - return new WixErrorEventArgs(sourceLineNumbers, 193, "WixErrors_IllegalAttributeValueWithOtherAttribute_1", elementName, attributeName, attributeValue, otherAttributeName);
1242 - }
1243 -
1244 - public static MessageEventArgs IllegalAttributeValueWithOtherAttribute(SourceLineNumber sourceLineNumbers, string elementName, string attributeName, string attributeValue, string otherAttributeName, string otherAttributeValue)
1245 - {
1246 - return new WixErrorEventArgs(sourceLineNumbers, 193, "WixErrors_IllegalAttributeValueWithOtherAttribute_2", elementName, attributeName, attributeValue, otherAttributeName, otherAttributeValue);
1247 - }
1248 -
1249 - public static MessageEventArgs InvalidMergeLanguage(SourceLineNumber sourceLineNumbers, string mergeId, string mergeLanguage)
1250 - {
1251 - return new WixErrorEventArgs(sourceLineNumbers, 194, "WixErrors_InvalidMergeLanguage_1", mergeId, mergeLanguage);
1252 - }
1253 -
1254 - public static MessageEventArgs WixVariableCollision(SourceLineNumber sourceLineNumbers, string variableId)
1255 - {
1256 - return new WixErrorEventArgs(sourceLineNumbers, 195, "WixErrors_WixVariableCollision_1", variableId);
1257 - }
1258 -
1259 - public static MessageEventArgs ExpectedWixVariableValue(string variableId)
1260 - {
1261 - return new WixErrorEventArgs(null, 196, "WixErrors_ExpectedWixVariableValue_1", variableId);
1262 - }
1263 -
1264 - public static MessageEventArgs WixVariableUnknown(SourceLineNumber sourceLineNumbers, string variableId)
1265 - {
1266 - return new WixErrorEventArgs(sourceLineNumbers, 197, "WixErrors_WixVariableUnknown_1", variableId);
1267 - }
1268 -
1269 - public static MessageEventArgs IllegalWixVariablePrefix(SourceLineNumber sourceLineNumbers, string variableId)
1270 - {
1271 - return new WixErrorEventArgs(sourceLineNumbers, 198, "WixErrors_IllegalWixVariablePrefix_1", variableId);
1272 - }
1273 -
1274 - public static MessageEventArgs InvalidWixXmlNamespace(SourceLineNumber sourceLineNumbers, string wixElementName, string wixNamespace)
1275 - {
1276 - return new WixErrorEventArgs(sourceLineNumbers, 199, "WixErrors_InvalidWixXmlNamespace_1", wixElementName, wixNamespace);
1277 - }
1278 -
1279 - public static MessageEventArgs InvalidWixXmlNamespace(SourceLineNumber sourceLineNumbers, string wixElementName, string elementNamespace, string wixNamespace)
1280 - {
1281 - return new WixErrorEventArgs(sourceLineNumbers, 199, "WixErrors_InvalidWixXmlNamespace_2", wixElementName, elementNamespace, wixNamespace);
1282 - }
1283 -
1284 - public static MessageEventArgs UnhandledExtensionElement(SourceLineNumber sourceLineNumbers, string elementName, string extensionElementName, string extensionNamespace)
1285 - {
1286 - return new WixErrorEventArgs(sourceLineNumbers, 200, "WixErrors_UnhandledExtensionElement_1", elementName, extensionElementName, extensionNamespace);
1287 - }
1288 -
1289 - public static MessageEventArgs UnhandledExtensionAttribute(SourceLineNumber sourceLineNumbers, string elementName, string extensionAttributeName, string extensionNamespace)
1290 - {
1291 - return new WixErrorEventArgs(sourceLineNumbers, 201, "WixErrors_UnhandledExtensionAttribute_1", elementName, extensionAttributeName, extensionNamespace);
1292 - }
1293 -
1294 - public static MessageEventArgs UnsupportedExtensionAttribute(SourceLineNumber sourceLineNumbers, string elementName, string extensionElementName)
1295 - {
1296 - return new WixErrorEventArgs(sourceLineNumbers, 202, "WixErrors_UnsupportedExtensionAttribute_1", elementName, extensionElementName);
1297 - }
1298 -
1299 - public static MessageEventArgs UnsupportedExtensionElement(SourceLineNumber sourceLineNumbers, string elementName, string extensionElementName)
1300 - {
1301 - return new WixErrorEventArgs(sourceLineNumbers, 203, "WixErrors_UnsupportedExtensionElement_1", elementName, extensionElementName);
1302 - }
1303 -
1304 - public static MessageEventArgs ValidationError(SourceLineNumber sourceLineNumbers, string ice, string message)
1305 - {
1306 - return new WixErrorEventArgs(sourceLineNumbers, 204, "WixErrors_ValidationError_1", ice, message);
1307 - }
1308 -
1309 - public static MessageEventArgs IllegalRootDirectory(SourceLineNumber sourceLineNumbers, string directoryId)
1310 - {
1311 - return new WixErrorEventArgs(sourceLineNumbers, 205, "WixErrors_IllegalRootDirectory_1", directoryId);
1312 - }
1313 -
1314 - public static MessageEventArgs IllegalTargetDirDefaultDir(SourceLineNumber sourceLineNumbers, string defaultDir)
1315 - {
1316 - return new WixErrorEventArgs(sourceLineNumbers, 206, "WixErrors_IllegalTargetDirDefaultDir_1", defaultDir);
1317 - }
1318 -
1319 - public static MessageEventArgs TooManyElements(SourceLineNumber sourceLineNumbers, string elementName, string childElementName, int expectedInstances)
1320 - {
1321 - return new WixErrorEventArgs(sourceLineNumbers, 207, "WixErrors_TooManyElements_1", elementName, childElementName, expectedInstances);
1322 - }
1323 -
1324 - public static MessageEventArgs ExpectedBinaryCategory(SourceLineNumber sourceLineNumbers)
1325 - {
1326 - return new WixErrorEventArgs(sourceLineNumbers, 208, "WixErrors_ExpectedBinaryCategory_1");
1327 - }
1328 -
1329 - public static MessageEventArgs RootFeatureCannotFollowParent(SourceLineNumber sourceLineNumbers)
1330 - {
1331 - return new WixErrorEventArgs(sourceLineNumbers, 209, "WixErrors_RootFeatureCannotFollowParent_1");
1332 - }
1333 -
1334 - public static MessageEventArgs FeatureNameTooLong(SourceLineNumber sourceLineNumbers, string elementName, string attributeName, string attributeValue)
1335 - {
1336 - return new WixErrorEventArgs(sourceLineNumbers, 210, "WixErrors_FeatureNameTooLong_1", elementName, attributeName, attributeValue);
1337 - }
1338 -
1339 - public static MessageEventArgs SignedEmbeddedCabinet(SourceLineNumber sourceLineNumbers)
1340 - {
1341 - return new WixErrorEventArgs(sourceLineNumbers, 211, "WixErrors_SignedEmbeddedCabinet_1");
1342 - }
1343 -
1344 - public static MessageEventArgs ExpectedSignedCabinetName(SourceLineNumber sourceLineNumbers)
1345 - {
1346 - return new WixErrorEventArgs(sourceLineNumbers, 212, "WixErrors_ExpectedSignedCabinetName_1");
1347 - }
1348 -
1349 - public static MessageEventArgs IllegalInlineLocVariable(SourceLineNumber sourceLineNumbers, string variableName, string variableValue)
1350 - {
1351 - return new WixErrorEventArgs(sourceLineNumbers, 213, "WixErrors_IllegalInlineLocVariable_1", variableName, variableValue);
1352 - }
1353 -
1354 - public static MessageEventArgs MergeModuleExpectedFeature(SourceLineNumber sourceLineNumbers, string mergeId)
1355 - {
1356 - return new WixErrorEventArgs(sourceLineNumbers, 215, "WixErrors_MergeModuleExpectedFeature_1", mergeId);
1357 - }
1358 -
1359 - public static MessageEventArgs Win32Exception(int nativeErrorCode, string message)
1360 - {
1361 - return new WixErrorEventArgs(null, 216, "WixErrors_Win32Exception_1", nativeErrorCode, message);
1362 - }
1363 -
1364 - public static MessageEventArgs Win32Exception(int nativeErrorCode, string file, string message)
1365 - {
1366 - return new WixErrorEventArgs(null, 216, "WixErrors_Win32Exception_2", nativeErrorCode, file, message);
1367 - }
1368 -
1369 - public static MessageEventArgs UnexpectedExternalUIMessage(string message)
1370 - {
1371 - return new WixErrorEventArgs(null, 217, "WixErrors_UnexpectedExternalUIMessage_1", message);
1372 - }
1373 -
1374 - public static MessageEventArgs UnexpectedExternalUIMessage(string message, string action)
1375 - {
1376 - return new WixErrorEventArgs(null, 217, "WixErrors_UnexpectedExternalUIMessage_2", message, action);
1377 - }
1378 -
1379 - public static MessageEventArgs IllegalCabbingThreadCount(string numThreads)
1380 - {
1381 - return new WixErrorEventArgs(null, 218, "WixErrors_IllegalCabbingThreadCount_1", numThreads);
1382 - }
1383 -
1384 - public static MessageEventArgs IllegalEnvironmentVariable(string environmentVariable, string value)
1385 - {
1386 - return new WixErrorEventArgs(null, 219, "WixErrors_IllegalEnvironmentVariable_1", environmentVariable, value);
1387 - }
1388 -
1389 - public static MessageEventArgs InvalidKeyColumn(string tableName, string columnName, string foreignTableName, int foreignColumnNumber)
1390 - {
1391 - return new WixErrorEventArgs(null, 220, "WixErrors_InvalidKeyColumn_1", tableName, columnName, foreignTableName, foreignColumnNumber);
1392 - }
1393 -
1394 - public static MessageEventArgs CollidingModularizationTypes(string tableName, string columnName, string foreignTableName, int foreignColumnNumber, string modularizationType, string foreignModularizationType)
1395 - {
1396 - return new WixErrorEventArgs(null, 221, "WixErrors_CollidingModularizationTypes_1", tableName, columnName, foreignTableName, foreignColumnNumber, modularizationType, foreignModularizationType);
1397 - }
1398 -
1399 - public static MessageEventArgs CubeFileNotFound(string cubeFile)
1400 - {
1401 - return new WixErrorEventArgs(null, 222, "WixErrors_CubeFileNotFound_1", cubeFile);
1402 - }
1403 -
1404 - public static MessageEventArgs OpenDatabaseFailed(string databaseFile)
1405 - {
1406 - return new WixErrorEventArgs(null, 223, "WixErrors_OpenDatabaseFailed_1", databaseFile);
1407 - }
1408 -
1409 - public static MessageEventArgs OutputTypeMismatch(SourceLineNumber sourceLineNumbers, string beforeOutputType, string afterOutputType)
1410 - {
1411 - return new WixErrorEventArgs(sourceLineNumbers, 224, "WixErrors_OutputTypeMismatch_1", beforeOutputType, afterOutputType);
1412 - }
1413 -
1414 - public static MessageEventArgs RealTableMissingPrimaryKeyColumn(SourceLineNumber sourceLineNumbers, string tableName)
1415 - {
1416 - return new WixErrorEventArgs(sourceLineNumbers, 225, "WixErrors_RealTableMissingPrimaryKeyColumn_1", tableName);
1417 - }
1418 -
1419 - public static MessageEventArgs IllegalColumnName(SourceLineNumber sourceLineNumbers, string elementName, string attributeName, string value)
1420 - {
1421 - return new WixErrorEventArgs(sourceLineNumbers, 226, "WixErrors_IllegalColumnName_1", elementName, attributeName, value);
1422 - }
1423 -
1424 - public static MessageEventArgs NoDifferencesInTransform(SourceLineNumber sourceLineNumbers)
1425 - {
1426 - return new WixErrorEventArgs(sourceLineNumbers, 227, "WixErrors_NoDifferencesInTransform_1");
1427 - }
1428 -
1429 - public static MessageEventArgs OutputCodepageMismatch(SourceLineNumber sourceLineNumbers, int beforeCodepage, int afterCodepage)
1430 - {
1431 - return new WixErrorEventArgs(sourceLineNumbers, 228, "WixErrors_OutputCodepageMismatch_1", beforeCodepage, afterCodepage);
1432 - }
1433 -
1434 - public static MessageEventArgs OutputCodepageMismatch2(SourceLineNumber sourceLineNumbers)
1435 - {
1436 - return new WixErrorEventArgs(sourceLineNumbers, 229, "WixErrors_OutputCodepageMismatch2_1");
1437 - }
1438 -
1439 - public static MessageEventArgs IllegalComponentWithAutoGeneratedGuid(SourceLineNumber sourceLineNumbers)
1440 - {
1441 - return new WixErrorEventArgs(sourceLineNumbers, 230, "WixErrors_IllegalComponentWithAutoGeneratedGuid_1");
1442 - }
1443 -
1444 - public static MessageEventArgs IllegalComponentWithAutoGeneratedGuid(SourceLineNumber sourceLineNumbers, bool registryKeyPath)
1445 - {
1446 - return new WixErrorEventArgs(sourceLineNumbers, 230, "WixErrors_IllegalComponentWithAutoGeneratedGuid_2", registryKeyPath);
1447 - }
1448 -
1449 - public static MessageEventArgs IllegalPathForGeneratedComponentGuid(SourceLineNumber sourceLineNumbers, string componentName, string keyFilePath)
1450 - {
1451 - return new WixErrorEventArgs(sourceLineNumbers, 231, "WixErrors_IllegalPathForGeneratedComponentGuid_1", componentName, keyFilePath);
1452 - }
1453 -
1454 - public static MessageEventArgs IllegalTerminalServerCustomActionAttributes(SourceLineNumber sourceLineNumbers)
1455 - {
1456 - return new WixErrorEventArgs(sourceLineNumbers, 232, "WixErrors_IllegalTerminalServerCustomActionAttributes_1");
1457 - }
1458 -
1459 - public static MessageEventArgs IllegalPropertyCustomActionAttributes(SourceLineNumber sourceLineNumbers)
1460 - {
1461 - return new WixErrorEventArgs(sourceLineNumbers, 233, "WixErrors_IllegalPropertyCustomActionAttributes_1");
1462 - }
1463 -
1464 - public static MessageEventArgs InvalidPreprocessorFunction(SourceLineNumber sourceLineNumbers, string variable)
1465 - {
1466 - return new WixErrorEventArgs(sourceLineNumbers, 234, "WixErrors_InvalidPreprocessorFunction_1", variable);
1467 - }
1468 -
1469 - public static MessageEventArgs UndefinedPreprocessorFunction(SourceLineNumber sourceLineNumbers, string variableName)
1470 - {
1471 - return new WixErrorEventArgs(sourceLineNumbers, 235, "WixErrors_UndefinedPreprocessorFunction_1", variableName);
1472 - }
1473 -
1474 - public static MessageEventArgs PreprocessorExtensionEvaluateFunctionFailed(SourceLineNumber sourceLineNumbers, string prefix, string function, string args, string message)
1475 - {
1476 - return new WixErrorEventArgs(sourceLineNumbers, 236, "WixErrors_PreprocessorExtensionEvaluateFunctionFailed_1", prefix, function, args, message);
1477 - }
1478 -
1479 - public static MessageEventArgs PreprocessorExtensionGetVariableValueFailed(SourceLineNumber sourceLineNumbers, string prefix, string variable, string message)
1480 - {
1481 - return new WixErrorEventArgs(sourceLineNumbers, 237, "WixErrors_PreprocessorExtensionGetVariableValueFailed_1", prefix, variable, message);
1482 - }
1483 -
1484 - public static MessageEventArgs InvalidManifestContent(SourceLineNumber sourceLineNumbers, string fileName)
1485 - {
1486 - return new WixErrorEventArgs(sourceLineNumbers, 238, "WixErrors_InvalidManifestContent_1", fileName);
1487 - }
1488 -
1489 - public static MessageEventArgs InvalidWixTransform(string fileName)
1490 - {
1491 - return new WixErrorEventArgs(null, 239, "WixErrors_InvalidWixTransform_1", fileName);
1492 - }
1493 -
1494 - public static MessageEventArgs UnexpectedFileExtension(string fileName, string expectedExtensions)
1495 - {
1496 - return new WixErrorEventArgs(null, 240, "WixErrors_UnexpectedFileExtension_1", fileName, expectedExtensions);
1497 - }
1498 -
1499 - public static MessageEventArgs UnexpectedTableInPatch(SourceLineNumber sourceLineNumbers, string tableName)
1500 - {
1501 - return new WixErrorEventArgs(sourceLineNumbers, 241, "WixErrors_UnexpectedTableInPatch_1", tableName);
1502 - }
1503 -
1504 - public static MessageEventArgs InvalidProductVersion(SourceLineNumber sourceLineNumbers, string version)
1505 - {
1506 - return new WixErrorEventArgs(sourceLineNumbers, 242, "WixErrors_InvalidProductVersion_1", version);
1507 - }
1508 -
1509 - public static MessageEventArgs InvalidProductVersion(SourceLineNumber sourceLineNumbers, string version, string packagePath)
1510 - {
1511 - return new WixErrorEventArgs(sourceLineNumbers, 242, "WixErrors_InvalidProductVersion_2", version, packagePath);
1512 - }
1513 -
1514 - public static MessageEventArgs InvalidKeypathChange(SourceLineNumber sourceLineNumbers, string component, string transformPath)
1515 - {
1516 - return new WixErrorEventArgs(sourceLineNumbers, 243, "WixErrors_InvalidKeypathChange_1", component, transformPath);
1517 - }
1518 -
1519 - public static MessageEventArgs MissingValidatorExtension()
1520 - {
1521 - return new WixErrorEventArgs(null, 244, "WixErrors_MissingValidatorExtension_1");
1522 - }
1523 -
1524 - public static MessageEventArgs InvalidValidatorMessageType(string type)
1525 - {
1526 - return new WixErrorEventArgs(null, 245, "WixErrors_InvalidValidatorMessageType_1", type);
1527 - }
1528 -
1529 - public static MessageEventArgs PatchWithoutTransforms()
1530 - {
1531 - return new WixErrorEventArgs(null, 246, "WixErrors_PatchWithoutTransforms_1");
1532 - }
1533 -
1534 - public static MessageEventArgs SingleExtensionSupported()
1535 - {
1536 - return new WixErrorEventArgs(null, 247, "WixErrors_SingleExtensionSupported_1");
1537 - }
1538 -
1539 - public static MessageEventArgs DuplicateTransform(string transform)
1540 - {
1541 - return new WixErrorEventArgs(null, 248, "WixErrors_DuplicateTransform_1", transform);
1542 - }
1543 -
1544 - public static MessageEventArgs BaselineRequired()
1545 - {
1546 - return new WixErrorEventArgs(null, 249, "WixErrors_BaselineRequired_1");
1547 - }
1548 -
1549 - public static MessageEventArgs PreprocessorError(SourceLineNumber sourceLineNumbers, string message)
1550 - {
1551 - return new WixErrorEventArgs(sourceLineNumbers, 250, "WixErrors_PreprocessorError_1", message);
1552 - }
1553 -
1554 - public static MessageEventArgs ExpectedArgument(string argument)
1555 - {
1556 - return new WixErrorEventArgs(null, 251, "WixErrors_ExpectedArgument_1", argument);
1557 - }
1558 -
1559 - public static MessageEventArgs PatchWithoutValidTransforms()
1560 - {
1561 - return new WixErrorEventArgs(null, 252, "WixErrors_PatchWithoutValidTransforms_1");
1562 - }
1563 -
1564 - public static MessageEventArgs ExpectedDecompiler(string identifier)
1565 - {
1566 - return new WixErrorEventArgs(null, 253, "WixErrors_ExpectedDecompiler_1", identifier);
1567 - }
1568 -
1569 - public static MessageEventArgs ExpectedTableInMergeModule(string identifier)
1570 - {
1571 - return new WixErrorEventArgs(null, 254, "WixErrors_ExpectedTableInMergeModule_1", identifier);
1572 - }
1573 -
1574 - public static MessageEventArgs UnexpectedElementWithAttributeValue(SourceLineNumber sourceLineNumbers, string elementName, string childElementName, string attribute, string attributeValue)
1575 - {
1576 - return new WixErrorEventArgs(sourceLineNumbers, 255, "WixErrors_UnexpectedElementWithAttributeValue_1", elementName, childElementName, attribute, attributeValue);
1577 - }
1578 -
1579 - public static MessageEventArgs UnexpectedElementWithAttributeValue(SourceLineNumber sourceLineNumbers, string elementName, string childElementName, string attribute, string attributeValue1, string attributeValue2)
1580 - {
1581 - return new WixErrorEventArgs(sourceLineNumbers, 255, "WixErrors_UnexpectedElementWithAttributeValue_2", elementName, childElementName, attribute, attributeValue1, attributeValue2);
1582 - }
1583 -
1584 - public static MessageEventArgs ExpectedPatchIdInWixMsp()
1585 - {
1586 - return new WixErrorEventArgs(null, 256, "WixErrors_ExpectedPatchIdInWixMsp_1");
1587 - }
1588 -
1589 - public static MessageEventArgs ExpectedMediaRowsInWixMsp()
1590 - {
1591 - return new WixErrorEventArgs(null, 257, "WixErrors_ExpectedMediaRowsInWixMsp_1");
1592 - }
1593 -
1594 - public static MessageEventArgs WixFileNotFound(string file)
1595 - {
1596 - return new WixErrorEventArgs(null, 258, "WixErrors_WixFileNotFound_1", file);
1597 - }
1598 -
1599 - public static MessageEventArgs ExpectedClientPatchIdInWixMsp()
1600 - {
1601 - return new WixErrorEventArgs(null, 259, "WixErrors_ExpectedClientPatchIdInWixMsp_1");
1602 - }
1603 -
1604 - public static MessageEventArgs NewRowAddedInTable(SourceLineNumber sourceLineNumbers, string productCode, string tableName, string rowId)
1605 - {
1606 - return new WixErrorEventArgs(sourceLineNumbers, 260, "WixErrors_NewRowAddedInTable_1", productCode, tableName, rowId);
1607 - }
1608 -
1609 - public static MessageEventArgs PatchNotRemovable()
1610 - {
1611 - return new WixErrorEventArgs(null, 261, "WixErrors_PatchNotRemovable_1");
1612 - }
1613 -
1614 - public static MessageEventArgs FileTooLarge(SourceLineNumber sourceLineNumbers, string fileName)
1615 - {
1616 - return new WixErrorEventArgs(sourceLineNumbers, 263, "WixErrors_FileTooLarge_1", fileName);
1617 - }
1618 -
1619 - public static MessageEventArgs InvalidPlatformParameter(string name, string value)
1620 - {
1621 - return new WixErrorEventArgs(null, 264, "WixErrors_InvalidPlatformParameter_1", name, value);
1622 - }
1623 -
1624 - public static MessageEventArgs InvalidPlatformValue(SourceLineNumber sourceLineNumbers, string value)
1625 - {
1626 - return new WixErrorEventArgs(sourceLineNumbers, 265, "WixErrors_InvalidPlatformValue_1", value);
1627 - }
1628 -
1629 - public static MessageEventArgs IllegalValidationArguments()
1630 - {
1631 - return new WixErrorEventArgs(null, 266, "WixErrors_IllegalValidationArguments_1");
1632 - }
1633 -
1634 - public static MessageEventArgs OrphanedComponent(SourceLineNumber sourceLineNumbers, string componentName)
1635 - {
1636 - return new WixErrorEventArgs(sourceLineNumbers, 267, "WixErrors_OrphanedComponent_1", componentName);
1637 - }
1638 -
1639 - public static MessageEventArgs IllegalCommandlineArgumentCombination(string arg1, string arg2)
1640 - {
1641 - return new WixErrorEventArgs(null, 268, "WixErrors_IllegalCommandlineArgumentCombination_1", arg1, arg2);
1642 - }
1643 -
1644 - public static MessageEventArgs ProductCodeInvalidForTransform(SourceLineNumber sourceLineNumbers)
1645 - {
1646 - return new WixErrorEventArgs(sourceLineNumbers, 269, "WixErrors_ProductCodeInvalidForTransform_1");
1647 - }
1648 -
1649 - public static MessageEventArgs InsertInvalidSequenceActionOrder(SourceLineNumber sourceLineNumbers, string sequenceTableName, string actionNameBefore, string actionNameAfter, string actionNameNew)
1650 - {
1651 - return new WixErrorEventArgs(sourceLineNumbers, 270, "WixErrors_InsertInvalidSequenceActionOrder_1", sequenceTableName, actionNameBefore, actionNameAfter, actionNameNew);
1652 - }
1653 -
1654 - public static MessageEventArgs InsertSequenceNoSpace(SourceLineNumber sourceLineNumbers, string sequenceTableName, string actionNameBefore, string actionNameAfter, string actionNameNew)
1655 - {
1656 - return new WixErrorEventArgs(sourceLineNumbers, 271, "WixErrors_InsertSequenceNoSpace_1", sequenceTableName, actionNameBefore, actionNameAfter, actionNameNew);
1657 - }
1658 -
1659 - public static MessageEventArgs MissingManifestForWin32Assembly(SourceLineNumber sourceLineNumbers, string file, string manifest)
1660 - {
1661 - return new WixErrorEventArgs(sourceLineNumbers, 272, "WixErrors_MissingManifestForWin32Assembly_1", file, manifest);
1662 - }
1663 -
1664 - public static MessageEventArgs UnableToOpenModule(SourceLineNumber sourceLineNumbers, string modulePath, string message)
1665 - {
1666 - return new WixErrorEventArgs(sourceLineNumbers, 273, "WixErrors_UnableToOpenModule_1", modulePath, message);
1667 - }
1668 -
1669 - public static MessageEventArgs ExpectedAttributeWhenElementNotUnderElement(SourceLineNumber sourceLineNumbers, string elementName, string attributeName, string parentElementName)
1670 - {
1671 - return new WixErrorEventArgs(sourceLineNumbers, 274, "WixErrors_ExpectedAttributeWhenElementNotUnderElement_1", elementName, attributeName, parentElementName);
1672 - }
1673 -
1674 - public static MessageEventArgs IllegalIdentifierLooksLikeFormatted(SourceLineNumber sourceLineNumbers, string elementName, string attributeName, string value)
1675 - {
1676 - return new WixErrorEventArgs(sourceLineNumbers, 275, "WixErrors_IllegalIdentifierLooksLikeFormatted_1", elementName, attributeName, value);
1677 - }
1678 -
1679 - public static MessageEventArgs IllegalCodepageAttribute(SourceLineNumber sourceLineNumbers, string codepage, string elementName, string attributeName)
1680 - {
1681 - return new WixErrorEventArgs(sourceLineNumbers, 276, "WixErrors_IllegalCodepageAttribute_1", codepage, elementName, attributeName);
1682 - }
1683 -
1684 - public static MessageEventArgs IllegalCompressionLevel(string compressionLevel)
1685 - {
1686 - return new WixErrorEventArgs(null, 277, "WixErrors_IllegalCompressionLevel_1", compressionLevel);
1687 - }
1688 -
1689 - public static MessageEventArgs TransformSchemaMismatch()
1690 - {
1691 - return new WixErrorEventArgs(null, 278, "WixErrors_TransformSchemaMismatch_1");
1692 - }
1693 -
1694 - public static MessageEventArgs DatabaseSchemaMismatch(SourceLineNumber sourceLineNumbers, string tableName)
1695 - {
1696 - return new WixErrorEventArgs(sourceLineNumbers, 279, "WixErrors_DatabaseSchemaMismatch_1", tableName);
1697 - }
1698 -
1699 - public static MessageEventArgs ExpectedDirectoryGotFile(string option, string path)
1700 - {
1701 - return new WixErrorEventArgs(null, 280, "WixErrors_ExpectedDirectoryGotFile_1", option, path);
1702 - }
1703 -
1704 - public static MessageEventArgs ExpectedFileGotDirectory(string option, string path)
1705 - {
1706 - return new WixErrorEventArgs(null, 281, "WixErrors_ExpectedFileGotDirectory_1", option, path);
1707 - }
1708 -
1709 - public static MessageEventArgs GacAssemblyNoStrongName(SourceLineNumber sourceLineNumbers, string assemblyName, string componentName)
1710 - {
1711 - return new WixErrorEventArgs(sourceLineNumbers, 282, "WixErrors_GacAssemblyNoStrongName_1", assemblyName, componentName);
1712 - }
1713 -
1714 - public static MessageEventArgs FileWriteError(string path, string error)
1715 - {
1716 - return new WixErrorEventArgs(null, 283, "WixErrors_FileWriteError_1", path, error);
1717 - }
1718 -
1719 - public static MessageEventArgs InvalidCommandLineFileName(string fileName, string error)
1720 - {
1721 - return new WixErrorEventArgs(null, 284, "WixErrors_InvalidCommandLineFileName_1", fileName, error);
1722 - }
1723 -
1724 - public static MessageEventArgs ExpectedParentWithAttribute(SourceLineNumber sourceLineNumbers, string parentElement, string attribute, string grandparentElement)
1725 - {
1726 - return new WixErrorEventArgs(sourceLineNumbers, 285, "WixErrors_ExpectedParentWithAttribute_1", parentElement, attribute, grandparentElement);
1727 - }
1728 -
1729 - public static MessageEventArgs IllegalWarningIdAsError(string warningId)
1730 - {
1731 - return new WixErrorEventArgs(null, 286, "WixErrors_IllegalWarningIdAsError_1", warningId);
1732 - }
1733 -
1734 - public static MessageEventArgs ExpectedAttributeOrElement(SourceLineNumber sourceLineNumbers, string parentElement, string attribute, string childElement)
1735 - {
1736 - return new WixErrorEventArgs(sourceLineNumbers, 287, "WixErrors_ExpectedAttributeOrElement_1", parentElement, attribute, childElement);
1737 - }
1738 -
1739 - public static MessageEventArgs DuplicateVariableDefinition(string variableName, string variableValue, string variableCollidingValue)
1740 - {
1741 - return new WixErrorEventArgs(null, 288, "WixErrors_DuplicateVariableDefinition_1", variableName, variableValue, variableCollidingValue);
1742 - }
1743 -
1744 - public static MessageEventArgs InvalidVariableDefinition(string variableDefinition)
1745 - {
1746 - return new WixErrorEventArgs(null, 289, "WixErrors_InvalidVariableDefinition_1", variableDefinition);
1747 - }
1748 -
1749 - public static MessageEventArgs DuplicateCabinetName(SourceLineNumber sourceLineNumbers, string cabinetName)
1750 - {
1751 - return new WixErrorEventArgs(sourceLineNumbers, 290, "WixErrors_DuplicateCabinetName_1", cabinetName);
1752 - }
1753 -
1754 - public static MessageEventArgs DuplicateCabinetName2(SourceLineNumber sourceLineNumbers, string cabinetName)
1755 - {
1756 - return new WixErrorEventArgs(sourceLineNumbers, 291, "WixErrors_DuplicateCabinetName2_1", cabinetName);
1757 - }
1758 -
1759 - public static MessageEventArgs InvalidAddedFileRowWithoutSequence(SourceLineNumber sourceLineNumbers, string fileRowId)
1760 - {
1761 - return new WixErrorEventArgs(sourceLineNumbers, 292, "WixErrors_InvalidAddedFileRowWithoutSequence_1", fileRowId);
1762 - }
1763 -
1764 - public static MessageEventArgs DuplicateFileId(string fileId)
1765 - {
1766 - return new WixErrorEventArgs(null, 293, "WixErrors_DuplicateFileId_1", fileId);
1767 - }
1768 -
1769 - public static MessageEventArgs FullTempDirectory(string prefix, string directory)
1770 - {
1771 - return new WixErrorEventArgs(null, 294, "WixErrors_FullTempDirectory_1", prefix, directory);
1772 - }
1773 -
1774 - public static MessageEventArgs CreateCabAddFileFailed()
1775 - {
1776 - return new WixErrorEventArgs(null, 296, "WixErrors_CreateCabAddFileFailed_1");
1777 - }
1778 -
1779 - public static MessageEventArgs CreateCabInsufficientDiskSpace()
1780 - {
1781 - return new WixErrorEventArgs(null, 297, "WixErrors_CreateCabInsufficientDiskSpace_1");
1782 - }
1783 -
1784 - public static MessageEventArgs UnresolvedBindReference(SourceLineNumber sourceLineNumbers, string BindRef)
1785 - {
1786 - return new WixErrorEventArgs(sourceLineNumbers, 298, "WixErrors_UnresolvedBindReference_1", BindRef);
1787 - }
1788 -
1789 - public static MessageEventArgs GACAssemblyIdentityWarning(SourceLineNumber sourceLineNumbers, string fileName, string assemblyName)
1790 - {
1791 - return new WixErrorEventArgs(sourceLineNumbers, 299, "WixErrors_GACAssemblyIdentityWarning_1", fileName, assemblyName);
1792 - }
1793 -
1794 - public static MessageEventArgs IllegalCharactersInPath(string pathName)
1795 - {
1796 - return new WixErrorEventArgs(null, 300, "WixErrors_IllegalCharactersInPath_1", pathName);
1797 - }
1798 -
1799 - public static MessageEventArgs ValidationFailedToOpenDatabase()
1800 - {
1801 - return new WixErrorEventArgs(null, 301, "WixErrors_ValidationFailedToOpenDatabase_1");
1802 - }
1803 -
1804 - public static MessageEventArgs MustSpecifyOutputWithMoreThanOneInput()
1805 - {
1806 - return new WixErrorEventArgs(null, 302, "WixErrors_MustSpecifyOutputWithMoreThanOneInput_1");
1807 - }
1808 -
1809 - public static MessageEventArgs IllegalSearchIdForParentDepth(SourceLineNumber sourceLineNumbers, string id, string parentId)
1810 - {
1811 - return new WixErrorEventArgs(sourceLineNumbers, 303, "WixErrors_IllegalSearchIdForParentDepth_1", id, parentId);
1812 - }
1813 -
1814 - public static MessageEventArgs IdentifierTooLongError(SourceLineNumber sourceLineNumbers, string elementName, string attributeName, string value, int maxLength)
1815 - {
1816 - return new WixErrorEventArgs(sourceLineNumbers, 304, "WixErrors_IdentifierTooLongError_1", elementName, attributeName, value, maxLength);
1817 - }
1818 -
1819 - public static MessageEventArgs InvalidRemoveComponent(SourceLineNumber sourceLineNumbers, string component, string feature, string transformPath)
1820 - {
1821 - return new WixErrorEventArgs(sourceLineNumbers, 305, "WixErrors_InvalidRemoveComponent_1", component, feature, transformPath);
1822 - }
1823 -
1824 - public static MessageEventArgs FinishCabFailed()
1825 - {
1826 - return new WixErrorEventArgs(null, 306, "WixErrors_FinishCabFailed_1");
1827 - }
1828 -
1829 - public static MessageEventArgs InvalidExtensionType(string extension, string attributeType)
1830 - {
1831 - return new WixErrorEventArgs(null, 307, "WixErrors_InvalidExtensionType_1", extension, attributeType);
1832 - }
1833 -
1834 - public static MessageEventArgs InvalidExtensionType(string extension, string className, string expectedType)
1835 - {
1836 - return new WixErrorEventArgs(null, 307, "WixErrors_InvalidExtensionType_2", extension, className, expectedType);
1837 - }
1838 -
1839 - public static MessageEventArgs InvalidExtensionType(string extension, string className, string exceptionType, string exceptionMessage)
1840 - {
1841 - return new WixErrorEventArgs(null, 307, "WixErrors_InvalidExtensionType_3", extension, className, exceptionType, exceptionMessage);
1842 - }
1843 -
1844 - public static MessageEventArgs ValidationFailedDueToMultilanguageMergeModule()
1845 - {
1846 - return new WixErrorEventArgs(null, 309, "WixErrors_ValidationFailedDueToMultilanguageMergeModule_1");
1847 - }
1848 -
1849 - public static MessageEventArgs ValidationFailedDueToInvalidPackage()
1850 - {
1851 - return new WixErrorEventArgs(null, 310, "WixErrors_ValidationFailedDueToInvalidPackage_1");
1852 - }
1853 -
1854 - public static MessageEventArgs InvalidStringForCodepage(SourceLineNumber sourceLineNumbers, string codepage)
1855 - {
1856 - return new WixErrorEventArgs(sourceLineNumbers, 311, "WixErrors_InvalidStringForCodepage_1", codepage);
1857 - }
1858 -
1859 - public static MessageEventArgs InvalidEmbeddedUIFileName(SourceLineNumber sourceLineNumbers, string codepage)
1860 - {
1861 - return new WixErrorEventArgs(sourceLineNumbers, 312, "WixErrors_InvalidEmbeddedUIFileName_1", codepage);
1862 - }
1863 -
1864 - public static MessageEventArgs UniqueFileSearchIdRequired(SourceLineNumber sourceLineNumbers, string id, string elementName)
1865 - {
1866 - return new WixErrorEventArgs(sourceLineNumbers, 313, "WixErrors_UniqueFileSearchIdRequired_1", id, elementName);
1867 - }
1868 -
1869 - public static MessageEventArgs IllegalAttributeValueWhenNested(SourceLineNumber sourceLineNumbers, string elementName, string attributeName, string attrivuteValue, string parentElementName)
1870 - {
1871 - return new WixErrorEventArgs(sourceLineNumbers, 314, "WixErrors_IllegalAttributeValueWhenNested_1", elementName, attributeName, attrivuteValue, parentElementName);
1872 - }
1873 -
1874 - public static MessageEventArgs AdminImageRequired(string productCode)
1875 - {
1876 - return new WixErrorEventArgs(null, 315, "WixErrors_AdminImageRequired_1", productCode);
1877 - }
1878 -
1879 - public static MessageEventArgs SamePatchBaselineId(SourceLineNumber sourceLineNumbers, string id)
1880 - {
1881 - return new WixErrorEventArgs(sourceLineNumbers, 316, "WixErrors_SamePatchBaselineId_1", id);
1882 - }
1883 -
1884 - public static MessageEventArgs SameFileIdDifferentSource(SourceLineNumber sourceLineNumbers, string fileId, string sourcePath1, string sourcePath2)
1885 - {
1886 - return new WixErrorEventArgs(sourceLineNumbers, 317, "WixErrors_SameFileIdDifferentSource_1", fileId, sourcePath1, sourcePath2);
1887 - }
1888 -
1889 - public static MessageEventArgs HarvestSourceNotSpecified()
1890 - {
1891 - return new WixErrorEventArgs(null, 318, "WixErrors_HarvestSourceNotSpecified_1");
1892 - }
1893 -
1894 - public static MessageEventArgs OutputTargetNotSpecified()
1895 - {
1896 - return new WixErrorEventArgs(null, 319, "WixErrors_OutputTargetNotSpecified_1");
1897 - }
1898 -
1899 - public static MessageEventArgs DuplicateCommandLineOptionInExtension(string @switch)
1900 - {
1901 - return new WixErrorEventArgs(null, 320, "WixErrors_DuplicateCommandLineOptionInExtension_1", @switch);
1902 - }
1903 -
1904 - public static MessageEventArgs HarvestTypeNotFound()
1905 - {
1906 - return new WixErrorEventArgs(null, 321, "WixErrors_HarvestTypeNotFound_1");
1907 - }
1908 -
1909 - public static MessageEventArgs HarvestTypeNotFound(string harvestType)
1910 - {
1911 - return new WixErrorEventArgs(null, 321, "WixErrors_HarvestTypeNotFound_2", harvestType);
1912 - }
1913 -
1914 - public static MessageEventArgs BothUpgradeCodesRequired()
1915 - {
1916 - return new WixErrorEventArgs(null, 322, "WixErrors_BothUpgradeCodesRequired_1");
1917 - }
1918 -
1919 - public static MessageEventArgs IllegalBinderClassName()
1920 - {
1921 - return new WixErrorEventArgs(null, 323, "WixErrors_IllegalBinderClassName_1");
1922 - }
1923 -
1924 - public static MessageEventArgs SpecifiedBinderNotFound(string binderClass)
1925 - {
1926 - return new WixErrorEventArgs(null, 324, "WixErrors_SpecifiedBinderNotFound_1", binderClass);
1927 - }
1928 -
1929 - public static MessageEventArgs CannotLoadBinderFileManager(string binderFileManager, string currentBinderFileManager)
1930 - {
1931 - return new WixErrorEventArgs(null, 325, "WixErrors_CannotLoadBinderFileManager_1", binderFileManager, currentBinderFileManager);
1932 - }
1933 -
1934 - public static MessageEventArgs CannotLoadLinkerExtension(string linkerExtension, string currentLinkerExtension)
1935 - {
1936 - return new WixErrorEventArgs(null, 326, "WixErrors_CannotLoadLinkerExtension_1", linkerExtension, currentLinkerExtension);
1937 - }
1938 -
1939 - public static MessageEventArgs UnableToGetAuthenticodeCertOfFile(string filePath, string moreInformation)
1940 - {
1941 - return new WixErrorEventArgs(null, 327, "WixErrors_UnableToGetAuthenticodeCertOfFile_1", filePath, moreInformation);
1942 - }
1943 -
1944 - public static MessageEventArgs UnableToGetAuthenticodeCertOfFileDownlevelOS(string filePath, string moreInformation)
1945 - {
1946 - return new WixErrorEventArgs(null, 328, "WixErrors_UnableToGetAuthenticodeCertOfFileDownlevelOS_1", filePath, moreInformation);
1947 - }
1948 -
1949 - public static MessageEventArgs ReadOnlyOutputFile(string filePath)
1950 - {
1951 - return new WixErrorEventArgs(null, 329, "WixErrors_ReadOnlyOutputFile_1", filePath);
1952 - }
1953 -
1954 - public static MessageEventArgs CannotDefaultComponentId(SourceLineNumber sourceLineNumbers)
1955 - {
1956 - return new WixErrorEventArgs(sourceLineNumbers, 330, "WixErrors_CannotDefaultComponentId_1");
1957 - }
1958 -
1959 - public static MessageEventArgs ParentElementAttributeRequired(SourceLineNumber sourceLineNumbers, string parentElement, string parentAttribute, string childElement)
1960 - {
1961 - return new WixErrorEventArgs(sourceLineNumbers, 331, "WixErrors_ParentElementAttributeRequired_1", parentElement, parentAttribute, childElement);
1962 - }
1963 -
1964 - public static MessageEventArgs PreprocessorExtensionPragmaFailed(SourceLineNumber sourceLineNumbers, string pragma, string message)
1965 - {
1966 - return new WixErrorEventArgs(sourceLineNumbers, 333, "WixErrors_PreprocessorExtensionPragmaFailed_1", pragma, message);
1967 - }
1968 -
1969 - public static MessageEventArgs InvalidPreprocessorPragma(SourceLineNumber sourceLineNumbers, string variable)
1970 - {
1971 - return new WixErrorEventArgs(sourceLineNumbers, 334, "WixErrors_InvalidPreprocessorPragma_1", variable);
1972 - }
1973 -
1974 - public static MessageEventArgs SmokeUnknownFileExtension()
1975 - {
1976 - return new WixErrorEventArgs(null, 335, "WixErrors_SmokeUnknownFileExtension_1");
1977 - }
1978 -
1979 - public static MessageEventArgs SmokeUnsupportedFileExtension()
1980 - {
1981 - return new WixErrorEventArgs(null, 336, "WixErrors_SmokeUnsupportedFileExtension_1");
1982 - }
1983 -
1984 - public static MessageEventArgs SmokeMalformedPath()
1985 - {
1986 - return new WixErrorEventArgs(null, 337, "WixErrors_SmokeMalformedPath_1");
1987 - }
1988 -
1989 - public static MessageEventArgs InvalidStubExe(string filename)
1990 - {
1991 - return new WixErrorEventArgs(null, 338, "WixErrors_InvalidStubExe_1", filename);
1992 - }
1993 -
1994 - public static MessageEventArgs StubMissingWixburnSection(string filename)
1995 - {
1996 - return new WixErrorEventArgs(null, 339, "WixErrors_StubMissingWixburnSection_1", filename);
1997 - }
1998 -
1999 - public static MessageEventArgs StubWixburnSectionTooSmall(string filename)
2000 - {
2001 - return new WixErrorEventArgs(null, 340, "WixErrors_StubWixburnSectionTooSmall_1", filename);
2002 - }
2003 -
2004 - public static MessageEventArgs MissingBundleInformation(string data)
2005 - {
2006 - return new WixErrorEventArgs(null, 341, "WixErrors_MissingBundleInformation_1", data);
2007 - }
2008 -
2009 - public static MessageEventArgs UnexpectedGroupChild(string parentType, string parentId, string childType, string childId)
2010 - {
2011 - return new WixErrorEventArgs(null, 342, "WixErrors_UnexpectedGroupChild_1", parentType, parentId, childType, childId);
2012 - }
2013 -
2014 - public static MessageEventArgs OrderingReferenceLoopDetected(SourceLineNumber sourceLineNumbers, string loopList)
2015 - {
2016 - return new WixErrorEventArgs(sourceLineNumbers, 343, "WixErrors_OrderingReferenceLoopDetected_1", loopList);
2017 - }
2018 -
2019 - public static MessageEventArgs IdentifierNotFound(string type, string identifier)
2020 - {
2021 - return new WixErrorEventArgs(null, 344, "WixErrors_IdentifierNotFound_1", type, identifier);
2022 - }
2023 -
2024 - public static MessageEventArgs MergePlatformMismatch(SourceLineNumber sourceLineNumbers, string mergeModuleFile)
2025 - {
2026 - return new WixErrorEventArgs(sourceLineNumbers, 345, "WixErrors_MergePlatformMismatch_1", mergeModuleFile);
2027 - }
2028 -
2029 - public static MessageEventArgs IllegalRelativeLongFilename(SourceLineNumber sourceLineNumbers, string elementName, string attributeName, string value)
2030 - {
2031 - return new WixErrorEventArgs(sourceLineNumbers, 346, "WixErrors_IllegalRelativeLongFilename_1", elementName, attributeName, value);
2032 - }
2033 -
2034 - public static MessageEventArgs IllegalAttributeValueWithLegalList(SourceLineNumber sourceLineNumbers, string elementName, string attributeName, string value, string legalValueList)
2035 - {
2036 - return new WixErrorEventArgs(sourceLineNumbers, 347, "WixErrors_IllegalAttributeValueWithLegalList_1", elementName, attributeName, value, legalValueList);
2037 - }
2038 -
2039 - public static MessageEventArgs IllegalAttributeValueWithIllegalList(SourceLineNumber sourceLineNumbers, string elementName, string attributeName, string value, string illegalValueList)
2040 - {
2041 - return new WixErrorEventArgs(sourceLineNumbers, 348, "WixErrors_IllegalAttributeValueWithIllegalList_1", elementName, attributeName, value, illegalValueList);
2042 - }
2043 -
2044 - public static MessageEventArgs InvalidSummaryInfoCodePage(SourceLineNumber sourceLineNumbers, int codePage)
2045 - {
2046 - return new WixErrorEventArgs(sourceLineNumbers, 349, "WixErrors_InvalidSummaryInfoCodePage_1", codePage);
2047 - }
2048 -
2049 - public static MessageEventArgs ValidationFailedDueToLowMsiEngine()
2050 - {
2051 - return new WixErrorEventArgs(null, 350, "WixErrors_ValidationFailedDueToLowMsiEngine_1");
2052 - }
2053 -
2054 - public static MessageEventArgs DuplicateSourcesForOutput(string sourceList, string outputFile)
2055 - {
2056 - return new WixErrorEventArgs(null, 351, "WixErrors_DuplicateSourcesForOutput_1", sourceList, outputFile);
2057 - }
2058 -
2059 - public static MessageEventArgs UnableToReadPackageInformation(SourceLineNumber sourceLineNumbers, string packagePath, string detailedErrorMessage)
2060 - {
2061 - return new WixErrorEventArgs(sourceLineNumbers, 352, "WixErrors_UnableToReadPackageInformation_1", packagePath, detailedErrorMessage);
2062 - }
2063 -
2064 - public static MessageEventArgs MultipleFilesMatchedWithOutputSpecification(string sourceSpecification, string sourceList)
2065 - {
2066 - return new WixErrorEventArgs(null, 353, "WixErrors_MultipleFilesMatchedWithOutputSpecification_1", sourceSpecification, sourceList);
2067 - }
2068 -
2069 - public static MessageEventArgs InvalidBundle(string bundleExecutable)
2070 - {
2071 - return new WixErrorEventArgs(null, 354, "WixErrors_InvalidBundle_1", bundleExecutable);
2072 - }
2073 -
2074 - public static MessageEventArgs BundleTooNew(string bundleExecutable, long bundleVersion)
2075 - {
2076 - return new WixErrorEventArgs(null, 355, "WixErrors_BundleTooNew_1", bundleExecutable, bundleVersion);
2077 - }
2078 -
2079 - public static MessageEventArgs WrongFileExtensionForNumberOfInputs(string inputExtension, string input)
2080 - {
2081 - return new WixErrorEventArgs(null, 356, "WixErrors_WrongFileExtensionForNumberOfInputs_1", inputExtension, input);
2082 - }
2083 -
2084 - public static MessageEventArgs MediaTableCollision(SourceLineNumber sourceLineNumbers)
2085 - {
2086 - return new WixErrorEventArgs(sourceLineNumbers, 357, "WixErrors_MediaTableCollision_1");
2087 - }
2088 -
2089 - public static MessageEventArgs InvalidCabinetTemplate(SourceLineNumber sourceLineNumbers, string cabinetTemplate)
2090 - {
2091 - return new WixErrorEventArgs(sourceLineNumbers, 358, "WixErrors_InvalidCabinetTemplate_1", cabinetTemplate);
2092 - }
2093 -
2094 - public static MessageEventArgs MaximumUncompressedMediaSizeTooLarge(SourceLineNumber sourceLineNumbers, int maximumUncompressedMediaSize)
2095 - {
2096 - return new WixErrorEventArgs(sourceLineNumbers, 359, "WixErrors_MaximumUncompressedMediaSizeTooLarge_1", maximumUncompressedMediaSize);
2097 - }
2098 -
2099 - public static MessageEventArgs CatalogVerificationFailed(string fileName)
2100 - {
2101 - return new WixErrorEventArgs(null, 360, "WixErrors_CatalogVerificationFailed_1", fileName);
2102 - }
2103 -
2104 - public static MessageEventArgs CatalogFileHashFailed(string fileName, int errorCode)
2105 - {
2106 - return new WixErrorEventArgs(null, 361, "WixErrors_CatalogFileHashFailed_1", fileName, errorCode);
2107 - }
2108 -
2109 - public static MessageEventArgs ReservedNamespaceViolation(SourceLineNumber sourceLineNumbers, string element, string attribute, string prefix)
2110 - {
2111 - return new WixErrorEventArgs(sourceLineNumbers, 362, "WixErrors_ReservedNamespaceViolation_1", element, attribute, prefix);
2112 - }
2113 -
2114 - public static MessageEventArgs PerUserButAllUsersEquals1(SourceLineNumber sourceLineNumbers, string path)
2115 - {
2116 - return new WixErrorEventArgs(sourceLineNumbers, 363, "WixErrors_PerUserButAllUsersEquals1_1", path);
2117 - }
2118 -
2119 - public static MessageEventArgs UnsupportedAllUsersValue(SourceLineNumber sourceLineNumbers, string path, string value)
2120 - {
2121 - return new WixErrorEventArgs(sourceLineNumbers, 364, "WixErrors_UnsupportedAllUsersValue_1", path, value);
2122 - }
2123 -
2124 - public static MessageEventArgs DisallowedMsiProperty(SourceLineNumber sourceLineNumbers, string property, string illegalValueList)
2125 - {
2126 - return new WixErrorEventArgs(sourceLineNumbers, 365, "WixErrors_DisallowedMsiProperty_1", property, illegalValueList);
2127 - }
2128 -
2129 - public static MessageEventArgs MissingOrInvalidModuleInstallerVersion(SourceLineNumber sourceLineNumbers, string moduleId, string mergeModuleFile, string productInstallerVersion)
2130 - {
2131 - return new WixErrorEventArgs(sourceLineNumbers, 366, "WixErrors_MissingOrInvalidModuleInstallerVersion_1", moduleId, mergeModuleFile, productInstallerVersion);
2132 - }
2133 -
2134 - public static MessageEventArgs IllegalGeneratedGuidComponentUnversionedKeypath(SourceLineNumber sourceLineNumbers)
2135 - {
2136 - return new WixErrorEventArgs(sourceLineNumbers, 367, "WixErrors_IllegalGeneratedGuidComponentUnversionedKeypath_1");
2137 - }
2138 -
2139 - public static MessageEventArgs IllegalGeneratedGuidComponentVersionedNonkeypath(SourceLineNumber sourceLineNumbers)
2140 - {
2141 - return new WixErrorEventArgs(sourceLineNumbers, 368, "WixErrors_IllegalGeneratedGuidComponentVersionedNonkeypath_1");
2142 - }
2143 -
2144 - public static MessageEventArgs DuplicateComponentGuids(SourceLineNumber sourceLineNumbers, string componentId, string guid)
2145 - {
2146 - return new WixErrorEventArgs(sourceLineNumbers, 369, "WixErrors_DuplicateComponentGuids_1", componentId, guid);
2147 - }
2148 -
2149 - public static MessageEventArgs DuplicateProviderDependencyKey(string providerKey, string packageId)
2150 - {
2151 - return new WixErrorEventArgs(null, 370, "WixErrors_DuplicateProviderDependencyKey_1", providerKey, packageId);
2152 - }
2153 -
2154 - public static MessageEventArgs MissingDependencyVersion(string packageId)
2155 - {
2156 - return new WixErrorEventArgs(null, 371, "WixErrors_MissingDependencyVersion_1", packageId);
2157 - }
2158 -
2159 - public static MessageEventArgs UnexpectedElementWithAttribute(SourceLineNumber sourceLineNumbers, string elementName, string childElementName, string attribute)
2160 - {
2161 - return new WixErrorEventArgs(sourceLineNumbers, 372, "WixErrors_UnexpectedElementWithAttribute_1", elementName, childElementName, attribute);
2162 - }
2163 -
2164 - public static MessageEventArgs ExpectedAttributeWithElement(SourceLineNumber sourceLineNumbers, string elementName, string attribute, string childElementName)
2165 - {
2166 - return new WixErrorEventArgs(sourceLineNumbers, 373, "WixErrors_ExpectedAttributeWithElement_1", elementName, attribute, childElementName);
2167 - }
2168 -
2169 - public static MessageEventArgs DuplicatedUiLocalization(SourceLineNumber sourceLineNumbers, string controlName, string dialogName)
2170 - {
2171 - return new WixErrorEventArgs(sourceLineNumbers, 374, "WixErrors_DuplicatedUiLocalization_1", controlName, dialogName);
2172 - }
2173 -
2174 - public static MessageEventArgs DuplicatedUiLocalization(SourceLineNumber sourceLineNumbers, string dialogName)
2175 - {
2176 - return new WixErrorEventArgs(sourceLineNumbers, 374, "WixErrors_DuplicatedUiLocalization_2", dialogName);
2177 - }
2178 -
2179 - public static MessageEventArgs MaximumCabinetSizeForLargeFileSplittingTooLarge(SourceLineNumber sourceLineNumbers, int maximumCabinetSizeForLargeFileSplitting, int maxValueOfMaxCabSizeForLargeFileSplitting)
2180 - {
2181 - return new WixErrorEventArgs(sourceLineNumbers, 375, "WixErrors_MaximumCabinetSizeForLargeFileSplittingTooLarge_1", maximumCabinetSizeForLargeFileSplitting, maxValueOfMaxCabSizeForLargeFileSplitting);
2182 - }
2183 -
2184 - public static MessageEventArgs SplitCabinetCopyRegistrationFailed(string newCabName, string firstCabName)
2185 - {
2186 - return new WixErrorEventArgs(null, 376, "WixErrors_SplitCabinetCopyRegistrationFailed_1", newCabName, firstCabName);
2187 - }
2188 -
2189 - public static MessageEventArgs SplitCabinetNameCollision(string newCabName, string firstCabName)
2190 - {
2191 - return new WixErrorEventArgs(null, 377, "WixErrors_SplitCabinetNameCollision_1", newCabName, firstCabName);
2192 - }
2193 -
2194 - public static MessageEventArgs SplitCabinetInsertionFailed(string newCabName, string firstCabName, string lastCabinetOfThisSequence)
2195 - {
2196 - return new WixErrorEventArgs(null, 378, "WixErrors_SplitCabinetInsertionFailed_1", newCabName, firstCabName, lastCabinetOfThisSequence);
2197 - }
2198 -
2199 - public static MessageEventArgs InvalidPreprocessorFunctionAutoVersion(SourceLineNumber sourceLineNumbers)
2200 - {
2201 - return new WixErrorEventArgs(sourceLineNumbers, 379, "WixErrors_InvalidPreprocessorFunctionAutoVersion_1");
2202 - }
2203 -
2204 - public static MessageEventArgs InvalidModuleOrBundleVersion(SourceLineNumber sourceLineNumbers, string moduleOrBundle, string version)
2205 - {
2206 - return new WixErrorEventArgs(sourceLineNumbers, 380, "WixErrors_InvalidModuleOrBundleVersion_1", moduleOrBundle, version);
2207 - }
2208 -
2209 - public static MessageEventArgs UnsupportedPlatformForElement(SourceLineNumber sourceLineNumbers, string platform, string elementName)
2210 - {
2211 - return new WixErrorEventArgs(sourceLineNumbers, 381, "WixErrors_UnsupportedPlatformForElement_1", platform, elementName);
2212 - }
2213 -
2214 - public static MessageEventArgs MissingMedia(SourceLineNumber sourceLineNumbers, int diskId)
2215 - {
2216 - return new WixErrorEventArgs(sourceLineNumbers, 382, "WixErrors_MissingMedia_1", diskId);
2217 - }
2218 -
2219 - public static MessageEventArgs RemotePayloadUnsupported(SourceLineNumber sourceLineNumbers)
2220 - {
2221 - return new WixErrorEventArgs(sourceLineNumbers, 383, "WixErrors_RemotePayloadUnsupported_1");
2222 - }
2223 -
2224 - public static MessageEventArgs IllegalYesNoAlwaysValue(SourceLineNumber sourceLineNumbers, string elementName, string attributeName, string value)
2225 - {
2226 - return new WixErrorEventArgs(sourceLineNumbers, 384, "WixErrors_IllegalYesNoAlwaysValue_1", elementName, attributeName, value);
2227 - }
2228 -
2229 - public static MessageEventArgs TooDeeplyIncluded(SourceLineNumber sourceLineNumbers, int depth)
2230 - {
2231 - return new WixErrorEventArgs(sourceLineNumbers, 385, "WixErrors_TooDeeplyIncluded_1", depth);
2232 - }
2233 -
2234 - public static MessageEventArgs InlineDirectorySyntaxRequiresPath(SourceLineNumber sourceLineNumbers, string elementName, string attributeName, string value, string identifier)
2235 - {
2236 - return new WixErrorEventArgs(sourceLineNumbers, 387, "WixErrors_InlineDirectorySyntaxRequiresPath_1", elementName, attributeName, value, identifier);
2237 - }
2238 -
2239 - public static MessageEventArgs InsecureBundleFilename(string filename)
2240 - {
2241 - return new WixErrorEventArgs(null, 388, "WixErrors_InsecureBundleFilename_1", filename);
2242 - }
2243 -
2244 - public static MessageEventArgs PayloadMustBeRelativeToCache(SourceLineNumber sourceLineNumbers, string elementName, string attributeName, string attributeValue)
2245 - {
2246 - return new WixErrorEventArgs(sourceLineNumbers, 389, "WixErrors_PayloadMustBeRelativeToCache_1", elementName, attributeName, attributeValue);
2247 - }
2248 -
2249 - public static MessageEventArgs MsiTransactionX86BeforeX64(SourceLineNumber sourceLineNumbers)
2250 - {
2251 - return new WixErrorEventArgs(sourceLineNumbers, 390, "WixErrors_MsiTransactionX86BeforeX64_1");
2252 - }
2253 - }
2254 -
2255 - public class WixWarningEventArgs : MessageEventArgs
2256 - {
2257 -
2258 - private static ResourceManager resourceManager = new ResourceManager("WixToolset.Core.Data.Messages", Assembly.GetExecutingAssembly());
2259 -
2260 - public WixWarningEventArgs(SourceLineNumber sourceLineNumbers, int id, string resourceName, params object[] messageArgs) :
2261 - base(sourceLineNumbers, id, resourceName, messageArgs)
2262 - {
2263 - base.Level = MessageLevel.Warning;
2264 - base.ResourceManager = resourceManager;
2265 - }
2266 - }
2267 -
2268 - public sealed class WixWarnings
2269 - {
2270 -
2271 - private WixWarnings()
2272 - {
2273 - }
2274 -
2275 - public static MessageEventArgs IdentifierCannotBeModularized(SourceLineNumber sourceLineNumbers, string elementName, string attributeName, string identifier, int length, int maximumLength)
2276 - {
2277 - return new WixWarningEventArgs(sourceLineNumbers, 1000, "WixWarnings_IdentifierCannotBeModularized_1", elementName, attributeName, identifier, length, maximumLength);
2278 - }
2279 -
2280 - public static MessageEventArgs EmptyAttributeValue(SourceLineNumber sourceLineNumbers, string elementName, string attributeName)
2281 - {
2282 - return new WixWarningEventArgs(sourceLineNumbers, 1001, "WixWarnings_EmptyAttributeValue_1", elementName, attributeName);
2283 - }
2284 -
2285 - public static MessageEventArgs UnableToFindFileFromCabOrImage(SourceLineNumber sourceLineNumbers, string existingFileSpec, string srcFileSpec)
2286 - {
2287 - return new WixWarningEventArgs(sourceLineNumbers, 1002, "WixWarnings_UnableToFindFileFromCabOrImage_1", existingFileSpec, srcFileSpec);
2288 - }
2289 -
2290 - public static MessageEventArgs CopyFileFileIdUseless(SourceLineNumber sourceLineNumbers)
2291 - {
2292 - return new WixWarningEventArgs(sourceLineNumbers, 1003, "WixWarnings_CopyFileFileIdUseless_1");
2293 - }
2294 -
2295 - public static MessageEventArgs NestedInstall(SourceLineNumber sourceLineNumbers, string tableName, string columnName, object value)
2296 - {
2297 - return new WixWarningEventArgs(sourceLineNumbers, 1004, "WixWarnings_NestedInstall_1", tableName, columnName, value);
2298 - }
2299 -
2300 - public static MessageEventArgs OrphanedProgId(SourceLineNumber sourceLineNumbers, string progId)
2301 - {
2302 - return new WixWarningEventArgs(sourceLineNumbers, 1005, "WixWarnings_OrphanedProgId_1", progId);
2303 - }
2304 -
2305 - public static MessageEventArgs PropertyUseless(SourceLineNumber sourceLineNumbers, string id)
2306 - {
2307 - return new WixWarningEventArgs(sourceLineNumbers, 1006, "WixWarnings_PropertyUseless_1", id);
2308 - }
2309 -
2310 - public static MessageEventArgs RemoveFileNameRequired(SourceLineNumber sourceLineNumbers)
2311 - {
2312 - return new WixWarningEventArgs(sourceLineNumbers, 1007, "WixWarnings_RemoveFileNameRequired_1");
2313 - }
2314 -
2315 - public static MessageEventArgs SuppressAction(SourceLineNumber sourceLineNumbers, string action, string sequenceName)
2316 - {
2317 - return new WixWarningEventArgs(sourceLineNumbers, 1008, "WixWarnings_SuppressAction_1", action, sequenceName);
2318 - }
2319 -
2320 - public static MessageEventArgs SuppressMergedAction(string action, string sequenceName)
2321 - {
2322 - return new WixWarningEventArgs(null, 1009, "WixWarnings_SuppressMergedAction_1", action, sequenceName);
2323 - }
2324 -
2325 - public static MessageEventArgs TargetDirCorrectedDefaultDir()
2326 - {
2327 - return new WixWarningEventArgs(null, 1010, "WixWarnings_TargetDirCorrectedDefaultDir_1");
2328 - }
2329 -
2330 - public static MessageEventArgs AccessDeniedForDeletion(SourceLineNumber sourceLineNumbers, string tempFilesBasePath)
2331 - {
2332 - return new WixWarningEventArgs(sourceLineNumbers, 1011, "WixWarnings_AccessDeniedForDeletion_1", tempFilesBasePath);
2333 - }
2334 -
2335 - public static MessageEventArgs DirectoryInUse(SourceLineNumber sourceLineNumbers, string filePath)
2336 - {
2337 - return new WixWarningEventArgs(sourceLineNumbers, 1012, "WixWarnings_DirectoryInUse_1", filePath);
2338 - }
2339 -
2340 - public static MessageEventArgs AccessDeniedForSettingAttributes(SourceLineNumber sourceLineNumbers, string filePath)
2341 - {
2342 - return new WixWarningEventArgs(sourceLineNumbers, 1013, "WixWarnings_AccessDeniedForSettingAttributes_1", filePath);
2343 - }
2344 -
2345 - public static MessageEventArgs UnknownAction(SourceLineNumber sourceLineNumbers, string sequenceTableName, string actionName)
2346 - {
2347 - return new WixWarningEventArgs(sourceLineNumbers, 1024, "WixWarnings_UnknownAction_1", sequenceTableName, actionName);
2348 - }
2349 -
2350 - public static MessageEventArgs IdentifierTooLong(SourceLineNumber sourceLineNumbers, string elementName, string attributeName, string value)
2351 - {
2352 - return new WixWarningEventArgs(sourceLineNumbers, 1026, "WixWarnings_IdentifierTooLong_1", elementName, attributeName, value);
2353 - }
2354 -
2355 - public static MessageEventArgs UnknownPermission(SourceLineNumber sourceLineNumbers, string tableName, string primaryKey, int bitPosition)
2356 - {
2357 - return new WixWarningEventArgs(sourceLineNumbers, 1030, "WixWarnings_UnknownPermission_1", tableName, primaryKey, bitPosition);
2358 - }
2359 -
2360 - public static MessageEventArgs DirectoryRedundantNames(SourceLineNumber sourceLineNumbers, string elementName, string shortNameAttributeName, string longNameAttributeName, string attributeValue)
2361 - {
2362 - return new WixWarningEventArgs(sourceLineNumbers, 1031, "WixWarnings_DirectoryRedundantNames_1", elementName, shortNameAttributeName, longNameAttributeName, attributeValue);
2363 - }
2364 -
2365 - public static MessageEventArgs DirectoryRedundantNames(SourceLineNumber sourceLineNumbers, string elementName, string sourceNameAttributeName, string longSourceAttributeName)
2366 - {
2367 - return new WixWarningEventArgs(sourceLineNumbers, 1031, "WixWarnings_DirectoryRedundantNames_2", elementName, sourceNameAttributeName, longSourceAttributeName);
2368 - }
2369 -
2370 - public static MessageEventArgs UnableToResetAcls()
2371 - {
2372 - return new WixWarningEventArgs(null, 1032, "WixWarnings_UnableToResetAcls_1");
2373 - }
2374 -
2375 - public static MessageEventArgs MediaExternalCabinetFilenameIllegal(SourceLineNumber sourceLineNumbers, string elementName, string attributeName, string value)
2376 - {
2377 - return new WixWarningEventArgs(sourceLineNumbers, 1033, "WixWarnings_MediaExternalCabinetFilenameIllegal_1", elementName, attributeName, value);
2378 - }
2379 -
2380 - public static MessageEventArgs DeprecatedPreProcVariable(SourceLineNumber sourceLineNumbers, string oldName, string newName)
2381 - {
2382 - return new WixWarningEventArgs(sourceLineNumbers, 1034, "WixWarnings_DeprecatedPreProcVariable_1", oldName, newName);
2383 - }
2384 -
2385 - public static MessageEventArgs FileSearchFileNameIssue(SourceLineNumber sourceLineNumbers, string elementName, string attributeName1, string attributeName2)
2386 - {
2387 - return new WixWarningEventArgs(sourceLineNumbers, 1043, "WixWarnings_FileSearchFileNameIssue_1", elementName, attributeName1, attributeName2);
2388 - }
2389 -
2390 - public static MessageEventArgs AmbiguousFileOrDirectoryName(SourceLineNumber sourceLineNumbers, string elementName, string attributeName, string value)
2391 - {
2392 - return new WixWarningEventArgs(sourceLineNumbers, 1044, "WixWarnings_AmbiguousFileOrDirectoryName_1", elementName, attributeName, value);
2393 - }
2394 -
2395 - public static MessageEventArgs PossiblyIncorrectTypelibVersion(SourceLineNumber sourceLineNumbers, string id)
2396 - {
2397 - return new WixWarningEventArgs(sourceLineNumbers, 1048, "WixWarnings_PossiblyIncorrectTypelibVersion_1", id);
2398 - }
2399 -
2400 - public static MessageEventArgs ImplicitComponentPrimaryFeature(string componentId)
2401 - {
2402 - return new WixWarningEventArgs(null, 1049, "WixWarnings_ImplicitComponentPrimaryFeature_1", componentId);
2403 - }
2404 -
2405 - public static MessageEventArgs ActionSequenceCollision(SourceLineNumber sourceLineNumbers, string sequenceTableName, string actionName1, string actionName2, int sequenceNumber)
2406 - {
2407 - return new WixWarningEventArgs(sourceLineNumbers, 1050, "WixWarnings_ActionSequenceCollision_1", sequenceTableName, actionName1, actionName2, sequenceNumber);
2408 - }
2409 -
2410 - public static MessageEventArgs ActionSequenceCollision2(SourceLineNumber sourceLineNumbers)
2411 - {
2412 - return new WixWarningEventArgs(sourceLineNumbers, 1051, "WixWarnings_ActionSequenceCollision2_1");
2413 - }
2414 -
2415 - public static MessageEventArgs SuppressAction2(SourceLineNumber sourceLineNumbers)
2416 - {
2417 - return new WixWarningEventArgs(sourceLineNumbers, 1052, "WixWarnings_SuppressAction2_1");
2418 - }
2419 -
2420 - public static MessageEventArgs UnexpectedTableInProduct(SourceLineNumber sourceLineNumbers, string tableName)
2421 - {
2422 - return new WixWarningEventArgs(sourceLineNumbers, 1053, "WixWarnings_UnexpectedTableInProduct_1", tableName);
2423 - }
2424 -
2425 - public static MessageEventArgs DeprecatedAttribute(SourceLineNumber sourceLineNumbers, string elementName, string attributeName)
2426 - {
2427 - return new WixWarningEventArgs(sourceLineNumbers, 1054, "WixWarnings_DeprecatedAttribute_1", elementName, attributeName);
2428 - }
2429 -
2430 - public static MessageEventArgs DeprecatedAttribute(SourceLineNumber sourceLineNumbers, string elementName, string attributeName, string newAttributeName)
2431 - {
2432 - return new WixWarningEventArgs(sourceLineNumbers, 1054, "WixWarnings_DeprecatedAttribute_2", elementName, attributeName, newAttributeName);
2433 - }
2434 -
2435 - public static MessageEventArgs DeprecatedAttribute(SourceLineNumber sourceLineNumbers, string elementName, string attributeName, string newAttributeName1, string newAttributeName2)
2436 - {
2437 - return new WixWarningEventArgs(sourceLineNumbers, 1054, "WixWarnings_DeprecatedAttribute_3", elementName, attributeName, newAttributeName1, newAttributeName2);
2438 - }
2439 -
2440 - public static MessageEventArgs MergeRescheduledAction(SourceLineNumber sourceLineNumbers, string tableName, string actionName, string mergeModuleFile)
2441 - {
2442 - return new WixWarningEventArgs(sourceLineNumbers, 1055, "WixWarnings_MergeRescheduledAction_1", tableName, actionName, mergeModuleFile);
2443 - }
2444 -
2445 - public static MessageEventArgs MergeTableFailed(SourceLineNumber sourceLineNumbers, string tableName, string primaryKeys, string mergeModuleFile)
2446 - {
2447 - return new WixWarningEventArgs(sourceLineNumbers, 1056, "WixWarnings_MergeTableFailed_1", tableName, primaryKeys, mergeModuleFile);
2448 - }
2449 -
2450 - public static MessageEventArgs DecompiledStandardActionRelativelyScheduledInModule(SourceLineNumber sourceLineNumbers, string sequenceTableName, string actionName)
2451 - {
2452 - return new WixWarningEventArgs(sourceLineNumbers, 1057, "WixWarnings_DecompiledStandardActionRelativelyScheduledInModule_1", sequenceTableName, actionName);
2453 - }
2454 -
2455 - public static MessageEventArgs IllegalActionInSequence(SourceLineNumber sourceLineNumbers, string sequenceTableName, string actionName)
2456 - {
2457 - return new WixWarningEventArgs(sourceLineNumbers, 1058, "WixWarnings_IllegalActionInSequence_1", sequenceTableName, actionName);
2458 - }
2459 -
2460 - public static MessageEventArgs ExpectedForeignRow(SourceLineNumber sourceLineNumbers, string tableName, string primaryKey, string columnName, string columnValue, string foreignTableName)
2461 - {
2462 - return new WixWarningEventArgs(sourceLineNumbers, 1059, "WixWarnings_ExpectedForeignRow_1", tableName, primaryKey, columnName, columnValue, foreignTableName);
2463 - }
2464 -
2465 - public static MessageEventArgs ExpectedForeignRow(SourceLineNumber sourceLineNumbers, string tableName, string primaryKey, string columnName1, string columnValue1, string columnName2, string columnValue2, string foreignTableName)
2466 - {
2467 - return new WixWarningEventArgs(sourceLineNumbers, 1059, "WixWarnings_ExpectedForeignRow_2", tableName, primaryKey, columnName1, columnValue1, columnName2, columnValue2, foreignTableName);
2468 - }
2469 -
2470 - public static MessageEventArgs DecompilingAsCustomTable(SourceLineNumber sourceLineNumbers, string tableName)
2471 - {
2472 - return new WixWarningEventArgs(sourceLineNumbers, 1060, "WixWarnings_DecompilingAsCustomTable_1", tableName);
2473 - }
2474 -
2475 - public static MessageEventArgs IllegalPatchCreationTable(SourceLineNumber sourceLineNumbers, string tableName)
2476 - {
2477 - return new WixWarningEventArgs(sourceLineNumbers, 1061, "WixWarnings_IllegalPatchCreationTable_1", tableName);
2478 - }
2479 -
2480 - public static MessageEventArgs SkippingMergeModuleTable(SourceLineNumber sourceLineNumbers, string tableName)
2481 - {
2482 - return new WixWarningEventArgs(sourceLineNumbers, 1062, "WixWarnings_SkippingMergeModuleTable_1", tableName);
2483 - }
2484 -
2485 - public static MessageEventArgs SkippingPatchCreationTable(SourceLineNumber sourceLineNumbers, string tableName)
2486 - {
2487 - return new WixWarningEventArgs(sourceLineNumbers, 1063, "WixWarnings_SkippingPatchCreationTable_1", tableName);
2488 - }
2489 -
2490 - public static MessageEventArgs UnrepresentableColumnValue(SourceLineNumber sourceLineNumbers, string tableName, string columnName, object value)
2491 - {
2492 - return new WixWarningEventArgs(sourceLineNumbers, 1064, "WixWarnings_UnrepresentableColumnValue_1", tableName, columnName, value);
2493 - }
2494 -
2495 - public static MessageEventArgs DeprecatedTable(string tableName)
2496 - {
2497 - return new WixWarningEventArgs(null, 1065, "WixWarnings_DeprecatedTable_1", tableName);
2498 - }
2499 -
2500 - public static MessageEventArgs PatchTable(SourceLineNumber sourceLineNumbers, string tableName)
2501 - {
2502 - return new WixWarningEventArgs(sourceLineNumbers, 1066, "WixWarnings_PatchTable_1", tableName);
2503 - }
2504 -
2505 - public static MessageEventArgs IllegalColumnValue(SourceLineNumber sourceLineNumbers, string tableName, string columnName, object value)
2506 - {
2507 - return new WixWarningEventArgs(sourceLineNumbers, 1067, "WixWarnings_IllegalColumnValue_1", tableName, columnName, value);
2508 - }
2509 -
2510 - public static MessageEventArgs DeprecatedLongNameAttribute(SourceLineNumber sourceLineNumbers, string elementName, string longNameAttributeName, string nameAttributeName, string shortNameAttributeName)
2511 - {
2512 - return new WixWarningEventArgs(sourceLineNumbers, 1069, "WixWarnings_DeprecatedLongNameAttribute_1", elementName, longNameAttributeName, nameAttributeName, shortNameAttributeName);
2513 - }
2514 -
2515 - public static MessageEventArgs GeneratedShortFileNameConflict(SourceLineNumber sourceLineNumbers, string shortFileName)
2516 - {
2517 - return new WixWarningEventArgs(sourceLineNumbers, 1070, "WixWarnings_GeneratedShortFileNameConflict_1", shortFileName);
2518 - }
2519 -
2520 - public static MessageEventArgs GeneratedShortFileNameConflict2(SourceLineNumber sourceLineNumbers)
2521 - {
2522 - return new WixWarningEventArgs(sourceLineNumbers, 1071, "WixWarnings_GeneratedShortFileNameConflict2_1");
2523 - }
2524 -
2525 - public static MessageEventArgs DangerousTableInMergeModule(SourceLineNumber sourceLineNumbers, string tableName)
2526 - {
2527 - return new WixWarningEventArgs(sourceLineNumbers, 1072, "WixWarnings_DangerousTableInMergeModule_1", tableName);
2528 - }
2529 -
2530 - public static MessageEventArgs DeprecatedLocalizationVariablePrefix(SourceLineNumber sourceLineNumbers, string variableId)
2531 - {
2532 - return new WixWarningEventArgs(sourceLineNumbers, 1073, "WixWarnings_DeprecatedLocalizationVariablePrefix_1", variableId);
2533 - }
2534 -
2535 - public static MessageEventArgs PlaceholderValue(SourceLineNumber sourceLineNumbers, string elementName, string attributeName, string value)
2536 - {
2537 - return new WixWarningEventArgs(sourceLineNumbers, 1074, "WixWarnings_PlaceholderValue_1", elementName, attributeName, value);
2538 - }
2539 -
2540 - public static MessageEventArgs MissingUpgradeCode(SourceLineNumber sourceLineNumbers)
2541 - {
2542 - return new WixWarningEventArgs(sourceLineNumbers, 1075, "WixWarnings_MissingUpgradeCode_1");
2543 - }
2544 -
2545 - public static MessageEventArgs ValidationWarning(SourceLineNumber sourceLineNumbers, string ice, string message)
2546 - {
2547 - return new WixWarningEventArgs(sourceLineNumbers, 1076, "WixWarnings_ValidationWarning_1", ice, message);
2548 - }
2549 -
2550 - public static MessageEventArgs PropertyValueContainsPropertyReference(SourceLineNumber sourceLineNumbers, string propertyId, string otherProperty)
2551 - {
2552 - return new WixWarningEventArgs(sourceLineNumbers, 1077, "WixWarnings_PropertyValueContainsPropertyReference_1", propertyId, otherProperty);
2553 - }
2554 -
2555 - public static MessageEventArgs DeprecatedUpgradeProperty(SourceLineNumber sourceLineNumbers)
2556 - {
2557 - return new WixWarningEventArgs(sourceLineNumbers, 1078, "WixWarnings_DeprecatedUpgradeProperty_1");
2558 - }
2559 -
2560 - public static MessageEventArgs EmptyCabinet(SourceLineNumber sourceLineNumbers, string cabinetName)
2561 - {
2562 - return new WixWarningEventArgs(sourceLineNumbers, 1079, "WixWarnings_EmptyCabinet_1", cabinetName);
2563 - }
2564 -
2565 - public static MessageEventArgs EmptyCabinet(SourceLineNumber sourceLineNumbers, string cabinetName, bool isPatch)
2566 - {
2567 - return new WixWarningEventArgs(sourceLineNumbers, 1079, "WixWarnings_EmptyCabinet_2", cabinetName, isPatch);
2568 - }
2569 -
2570 - public static MessageEventArgs DeprecatedRegistryElement(SourceLineNumber sourceLineNumbers)
2571 - {
2572 - return new WixWarningEventArgs(sourceLineNumbers, 1080, "WixWarnings_DeprecatedRegistryElement_1");
2573 - }
2574 -
2575 - public static MessageEventArgs IllegalRegistryKeyPath(SourceLineNumber sourceLineNumbers, string componentName, string registryId)
2576 - {
2577 - return new WixWarningEventArgs(sourceLineNumbers, 1081, "WixWarnings_IllegalRegistryKeyPath_1", componentName, registryId);
2578 - }
2579 -
2580 - public static MessageEventArgs DeprecatedPatchSequenceTargetAttribute(SourceLineNumber sourceLineNumbers, string elementName, string attributeName)
2581 - {
2582 - return new WixWarningEventArgs(sourceLineNumbers, 1082, "WixWarnings_DeprecatedPatchSequenceTargetAttribute_1", elementName, attributeName);
2583 - }
2584 -
2585 - public static MessageEventArgs ProductIdAuthored(SourceLineNumber sourceLineNumbers)
2586 - {
2587 - return new WixWarningEventArgs(sourceLineNumbers, 1083, "WixWarnings_ProductIdAuthored_1");
2588 - }
2589 -
2590 - public static MessageEventArgs ImplicitMergeModulePrimaryFeature(string componentId)
2591 - {
2592 - return new WixWarningEventArgs(null, 1084, "WixWarnings_ImplicitMergeModulePrimaryFeature_1", componentId);
2593 - }
2594 -
2595 - public static MessageEventArgs DeprecatedIgnoreModularizationElement(SourceLineNumber sourceLineNumbers)
2596 - {
2597 - return new WixWarningEventArgs(sourceLineNumbers, 1085, "WixWarnings_DeprecatedIgnoreModularizationElement_1");
2598 - }
2599 -
2600 - public static MessageEventArgs PropertyModularizationSuppressed(SourceLineNumber sourceLineNumbers)
2601 - {
2602 - return new WixWarningEventArgs(sourceLineNumbers, 1086, "WixWarnings_PropertyModularizationSuppressed_1");
2603 - }
2604 -
2605 - public static MessageEventArgs DeprecatedPackageCompressedAttribute(SourceLineNumber sourceLineNumbers)
2606 - {
2607 - return new WixWarningEventArgs(sourceLineNumbers, 1087, "WixWarnings_DeprecatedPackageCompressedAttribute_1");
2608 - }
2609 -
2610 - public static MessageEventArgs DeprecatedModuleGuidAttribute(SourceLineNumber sourceLineNumbers)
2611 - {
2612 - return new WixWarningEventArgs(sourceLineNumbers, 1088, "WixWarnings_DeprecatedModuleGuidAttribute_1");
2613 - }
2614 -
2615 - public static MessageEventArgs DeprecatedQuestionMarksGuid(SourceLineNumber sourceLineNumbers, string elementName, string attributeName)
2616 - {
2617 - return new WixWarningEventArgs(sourceLineNumbers, 1090, "WixWarnings_DeprecatedQuestionMarksGuid_1", elementName, attributeName);
2618 - }
2619 -
2620 - public static MessageEventArgs PackageCodeSet(SourceLineNumber sourceLineNumbers)
2621 - {
2622 - return new WixWarningEventArgs(sourceLineNumbers, 1091, "WixWarnings_PackageCodeSet_1");
2623 - }
2624 -
2625 - public static MessageEventArgs InvalidModuleOrBundleVersion(SourceLineNumber sourceLineNumbers, string moduleOrBundle, string version)
2626 - {
2627 - return new WixWarningEventArgs(sourceLineNumbers, 1093, "WixWarnings_InvalidModuleOrBundleVersion_1", moduleOrBundle, version);
2628 - }
2629 -
2630 - public static MessageEventArgs InvalidRemoveFile(SourceLineNumber sourceLineNumbers, string file, string component)
2631 - {
2632 - return new WixWarningEventArgs(sourceLineNumbers, 1095, "WixWarnings_InvalidRemoveFile_1", file, component);
2633 - }
2634 -
2635 - public static MessageEventArgs PreprocessorWarning(SourceLineNumber sourceLineNumbers, string message)
2636 - {
2637 - return new WixWarningEventArgs(sourceLineNumbers, 1096, "WixWarnings_PreprocessorWarning_1", message);
2638 - }
2639 -
2640 - public static MessageEventArgs UpdateOfNonKeyPathFile(string nonKeyPathFileId, string componentId, string keyPathFileId)
2641 - {
2642 - return new WixWarningEventArgs(null, 1097, "WixWarnings_UpdateOfNonKeyPathFile_1", nonKeyPathFileId, componentId, keyPathFileId);
2643 - }
2644 -
2645 - public static MessageEventArgs UnsupportedCommandLineArgument(string arg)
2646 - {
2647 - return new WixWarningEventArgs(null, 1098, "WixWarnings_UnsupportedCommandLineArgument_1", arg);
2648 - }
2649 -
2650 - public static MessageEventArgs MajorUpgradePatchNotRecommended()
2651 - {
2652 - return new WixWarningEventArgs(null, 1099, "WixWarnings_MajorUpgradePatchNotRecommended_1");
2653 - }
2654 -
2655 - public static MessageEventArgs RetainRangeMismatch(SourceLineNumber sourceLineNumbers, string fileId)
2656 - {
2657 - return new WixWarningEventArgs(sourceLineNumbers, 1100, "WixWarnings_RetainRangeMismatch_1", fileId);
2658 - }
2659 -
2660 - public static MessageEventArgs DefaultLanguageUsedForVersionedFile(SourceLineNumber sourceLineNumbers, string language, string fileId)
2661 - {
2662 - return new WixWarningEventArgs(sourceLineNumbers, 1101, "WixWarnings_DefaultLanguageUsedForVersionedFile_1", language, fileId);
2663 - }
2664 -
2665 - public static MessageEventArgs DefaultLanguageUsedForUnversionedFile(SourceLineNumber sourceLineNumbers, string language, string fileId)
2666 - {
2667 - return new WixWarningEventArgs(sourceLineNumbers, 1102, "WixWarnings_DefaultLanguageUsedForUnversionedFile_1", language, fileId);
2668 - }
2669 -
2670 - public static MessageEventArgs DefaultVersionUsedForUnversionedFile(SourceLineNumber sourceLineNumbers, string version, string fileId)
2671 - {
2672 - return new WixWarningEventArgs(sourceLineNumbers, 1103, "WixWarnings_DefaultVersionUsedForUnversionedFile_1", version, fileId);
2673 - }
2674 -
2675 - public static MessageEventArgs InvalidHigherInstallerVersionInModule(SourceLineNumber sourceLineNumbers, string moduleId, int moduleInstallerVersion, int productInstallerVersion)
2676 - {
2677 - return new WixWarningEventArgs(sourceLineNumbers, 1104, "WixWarnings_InvalidHigherInstallerVersionInModule_1", moduleId, moduleInstallerVersion, productInstallerVersion);
2678 - }
2679 -
2680 - public static MessageEventArgs ValidationFailedDueToSystemPolicy()
2681 - {
2682 - return new WixWarningEventArgs(null, 1105, "WixWarnings_ValidationFailedDueToSystemPolicy_1");
2683 - }
2684 -
2685 - public static MessageEventArgs ColumnsIncompatibleWithInstallerVersion(SourceLineNumber sourceLineNumbers, string tableName, int productInstallerVersion)
2686 - {
2687 - return new WixWarningEventArgs(sourceLineNumbers, 1106, "WixWarnings_ColumnsIncompatibleWithInstallerVersion_1", tableName, productInstallerVersion);
2688 - }
2689 -
2690 - public static MessageEventArgs TableIncompatibleWithInstallerVersion(SourceLineNumber sourceLineNumbers, string tableName, int productInstallerVersion)
2691 - {
2692 - return new WixWarningEventArgs(sourceLineNumbers, 1107, "WixWarnings_TableIncompatibleWithInstallerVersion_1", tableName, productInstallerVersion);
2693 - }
2694 -
2695 - public static MessageEventArgs DeprecatedCommandLineSwitch(string oldSwitch)
2696 - {
2697 - return new WixWarningEventArgs(null, 1108, "WixWarnings_DeprecatedCommandLineSwitch_1", oldSwitch);
2698 - }
2699 -
2700 - public static MessageEventArgs DeprecatedCommandLineSwitch(string oldSwitch, string newSwitch)
2701 - {
2702 - return new WixWarningEventArgs(null, 1108, "WixWarnings_DeprecatedCommandLineSwitch_2", oldSwitch, newSwitch);
2703 - }
2704 -
2705 - public static MessageEventArgs UnexpectedEntrySection(SourceLineNumber sourceLineNumbers, string sectionType, string expectedType, string outputExtension)
2706 - {
2707 - return new WixWarningEventArgs(sourceLineNumbers, 1109, "WixWarnings_UnexpectedEntrySection_1", sectionType, expectedType, outputExtension);
2708 - }
2709 -
2710 - public static MessageEventArgs NewComponentAddedToExistingFeature(SourceLineNumber sourceLineNumbers, string component, string feature, string transformPath)
2711 - {
2712 - return new WixWarningEventArgs(sourceLineNumbers, 1110, "WixWarnings_NewComponentAddedToExistingFeature_1", component, feature, transformPath);
2713 - }
2714 -
2715 - public static MessageEventArgs DeprecatedAttributeValue(SourceLineNumber sourceLineNumbers, string attributeValue, string elementName, string attributeName, string newAttributeValue)
2716 - {
2717 - return new WixWarningEventArgs(sourceLineNumbers, 1111, "WixWarnings_DeprecatedAttributeValue_1", attributeValue, elementName, attributeName, newAttributeValue);
2718 - }
2719 -
2720 - public static MessageEventArgs InsufficientPermissionHarvestTypeLib()
2721 - {
2722 - return new WixWarningEventArgs(null, 1112, "WixWarnings_InsufficientPermissionHarvestTypeLib_1");
2723 - }
2724 -
2725 - public static MessageEventArgs UnclearShortcut(SourceLineNumber sourceLineNumbers, string shortcutId, string fileId, string componentId)
2726 - {
2727 - return new WixWarningEventArgs(sourceLineNumbers, 1113, "WixWarnings_UnclearShortcut_1", shortcutId, fileId, componentId);
2728 - }
2729 -
2730 - public static MessageEventArgs TooManyProgIds(SourceLineNumber sourceLineNumbers, string clsId, string progId, string otherClsId)
2731 - {
2732 - return new WixWarningEventArgs(sourceLineNumbers, 1114, "WixWarnings_TooManyProgIds_1", clsId, progId, otherClsId);
2733 - }
2734 -
2735 - public static MessageEventArgs BadColumnDataIgnored(SourceLineNumber sourceLineNumbers, string value, string tableName, string columnName)
2736 - {
2737 - return new WixWarningEventArgs(sourceLineNumbers, 1115, "WixWarnings_BadColumnDataIgnored_1", value, tableName, columnName);
2738 - }
2739 -
2740 - public static MessageEventArgs NullMsiAssemblyNameValue(SourceLineNumber sourceLineNumbers, string componentName, string name)
2741 - {
2742 - return new WixWarningEventArgs(sourceLineNumbers, 1116, "WixWarnings_NullMsiAssemblyNameValue_1", componentName, name);
2743 - }
2744 -
2745 - public static MessageEventArgs InvalidAttributeCombination(SourceLineNumber sourceLineNumbers, string attrib1, string attrib2, string name, string value)
2746 - {
2747 - return new WixWarningEventArgs(sourceLineNumbers, 1117, "WixWarnings_InvalidAttributeCombination_1", attrib1, attrib2, name, value);
2748 - }
2749 -
2750 - public static MessageEventArgs VariableDeclarationCollision(SourceLineNumber sourceLineNumbers, string variableName, string variableValue, string variableCollidingValue)
2751 - {
2752 - return new WixWarningEventArgs(sourceLineNumbers, 1118, "WixWarnings_VariableDeclarationCollision_1", variableName, variableValue, variableCollidingValue);
2753 - }
2754 -
2755 - public static MessageEventArgs DuplicatePrimaryKey(SourceLineNumber sourceLineNumbers, string primaryKey, string tableName)
2756 - {
2757 - return new WixWarningEventArgs(sourceLineNumbers, 1119, "WixWarnings_DuplicatePrimaryKey_1", primaryKey, tableName);
2758 - }
2759 -
2760 - public static MessageEventArgs RequiresMsi200for64bitPackage(SourceLineNumber sourceLineNumbers)
2761 - {
2762 - return new WixWarningEventArgs(sourceLineNumbers, 1121, "WixWarnings_RequiresMsi200for64bitPackage_1");
2763 - }
2764 -
2765 - public static MessageEventArgs ExternalCabsAreNotSigned(string databaseFile)
2766 - {
2767 - return new WixWarningEventArgs(null, 1122, "WixWarnings_ExternalCabsAreNotSigned_1", databaseFile);
2768 - }
2769 -
2770 - public static MessageEventArgs FailedToDeleteTempDir(string directory)
2771 - {
2772 - return new WixWarningEventArgs(null, 1123, "WixWarnings_FailedToDeleteTempDir_1", directory);
2773 - }
2774 -
2775 - public static MessageEventArgs StandardDirectoryConflictInMergeModule(SourceLineNumber sourceLineNumbers, string directory, string standardDirectory)
2776 - {
2777 - return new WixWarningEventArgs(sourceLineNumbers, 1124, "WixWarnings_StandardDirectoryConflictInMergeModule_1", directory, standardDirectory);
2778 - }
2779 -
2780 - public static MessageEventArgs PreprocessorUnknownPragma(SourceLineNumber sourceLineNumbers, string pragmaName)
2781 - {
2782 - return new WixWarningEventArgs(sourceLineNumbers, 1125, "WixWarnings_PreprocessorUnknownPragma_1", pragmaName);
2783 - }
2784 -
2785 - public static MessageEventArgs DeprecatedComponentGroupId(SourceLineNumber sourceLineNumbers, string elementName)
2786 - {
2787 - return new WixWarningEventArgs(sourceLineNumbers, 1126, "WixWarnings_DeprecatedComponentGroupId_1", elementName);
2788 - }
2789 -
2790 - public static MessageEventArgs UxPayloadsOnlySupportEmbedding(SourceLineNumber sourceLineNumbers, string sourceFile)
2791 - {
2792 - return new WixWarningEventArgs(sourceLineNumbers, 1127, "WixWarnings_UxPayloadsOnlySupportEmbedding_1", sourceFile);
2793 - }
2794 -
2795 - public static MessageEventArgs DiscardedRollbackBoundary(SourceLineNumber sourceLineNumbers, string rollbackBoundaryId)
2796 - {
2797 - return new WixWarningEventArgs(sourceLineNumbers, 1129, "WixWarnings_DiscardedRollbackBoundary_1", rollbackBoundaryId);
2798 - }
2799 -
2800 - public static MessageEventArgs DeprecatedElement(SourceLineNumber sourceLineNumbers, string elementName)
2801 - {
2802 - return new WixWarningEventArgs(sourceLineNumbers, 1130, "WixWarnings_DeprecatedElement_1", elementName);
2803 - }
2804 -
2805 - public static MessageEventArgs DeprecatedElement(SourceLineNumber sourceLineNumbers, string elementName, string newElementName)
2806 - {
2807 - return new WixWarningEventArgs(sourceLineNumbers, 1130, "WixWarnings_DeprecatedElement_2", elementName, newElementName);
2808 - }
2809 -
2810 - public static MessageEventArgs DeprecatedElement(SourceLineNumber sourceLineNumbers, string elementName, string newElementName1, string newElementName2)
2811 - {
2812 - return new WixWarningEventArgs(sourceLineNumbers, 1130, "WixWarnings_DeprecatedElement_3", elementName, newElementName1, newElementName2);
2813 - }
2814 -
2815 - public static MessageEventArgs CannotUpdateCabCache(SourceLineNumber sourceLineNumbers, string cabinetPath, string detail)
2816 - {
2817 - return new WixWarningEventArgs(sourceLineNumbers, 1131, "WixWarnings_CannotUpdateCabCache_1", cabinetPath, detail);
2818 - }
2819 -
2820 - public static MessageEventArgs DownloadUrlNotSupportedForEmbeddedPayloads(SourceLineNumber sourceLineNumbers, string payloadId)
2821 - {
2822 - return new WixWarningEventArgs(sourceLineNumbers, 1132, "WixWarnings_DownloadUrlNotSupportedForEmbeddedPayloads_1", payloadId);
2823 - }
2824 -
2825 - public static MessageEventArgs DiscouragedAllUsersValue(SourceLineNumber sourceLineNumbers, string path, string machineOrUser)
2826 - {
2827 - return new WixWarningEventArgs(sourceLineNumbers, 1133, "WixWarnings_DiscouragedAllUsersValue_1", path, machineOrUser);
2828 - }
2829 -
2830 - public static MessageEventArgs ImplicitlyPerUser(SourceLineNumber sourceLineNumbers, string path)
2831 - {
2832 - return new WixWarningEventArgs(sourceLineNumbers, 1134, "WixWarnings_ImplicitlyPerUser_1", path);
2833 - }
2834 -
2835 - public static MessageEventArgs PerUserButForcingPerMachine(SourceLineNumber sourceLineNumbers, string path)
2836 - {
2837 - return new WixWarningEventArgs(sourceLineNumbers, 1135, "WixWarnings_PerUserButForcingPerMachine_1", path);
2838 - }
2839 -
2840 - public static MessageEventArgs AttributeShouldContain(SourceLineNumber sourceLineNumbers, string elementName, string attributeName, string attributeValue, string expectedContains, string otherAttributeName, string otherAttributeValue)
2841 - {
2842 - return new WixWarningEventArgs(sourceLineNumbers, 1136, "WixWarnings_AttributeShouldContain_1", elementName, attributeName, attributeValue, expectedContains, otherAttributeName, otherAttributeValue);
2843 - }
2844 -
2845 - public static MessageEventArgs DuplicateComponentGuidsMustHaveMutuallyExclusiveConditions(SourceLineNumber sourceLineNumbers, string componentId, string guid)
2846 - {
2847 - return new WixWarningEventArgs(sourceLineNumbers, 1137, "WixWarnings_DuplicateComponentGuidsMustHaveMutuallyExclusiveConditions_1", componentId, guid);
2848 - }
2849 -
2850 - public static MessageEventArgs DeprecatedRegistryKeyActionAttribute(SourceLineNumber sourceLineNumbers)
2851 - {
2852 - return new WixWarningEventArgs(sourceLineNumbers, 1138, "WixWarnings_DeprecatedRegistryKeyActionAttribute_1");
2853 - }
2854 -
2855 - public static MessageEventArgs NotABinaryWixlib(string wixlib)
2856 - {
2857 - return new WixWarningEventArgs(null, 1139, "WixWarnings_NotABinaryWixlib_1", wixlib);
2858 - }
2859 -
2860 - public static MessageEventArgs NoPerMachineDependencies(SourceLineNumber sourceLineNumbers, string packageId)
2861 - {
2862 - return new WixWarningEventArgs(sourceLineNumbers, 1140, "WixWarnings_NoPerMachineDependencies_1", packageId);
2863 - }
2864 -
2865 - public static MessageEventArgs DownloadUrlNotSupportedForAttachedContainers(SourceLineNumber sourceLineNumbers, string containerId)
2866 - {
2867 - return new WixWarningEventArgs(sourceLineNumbers, 1141, "WixWarnings_DownloadUrlNotSupportedForAttachedContainers_1", containerId);
2868 - }
2869 -
2870 - public static MessageEventArgs ReservedAttribute(SourceLineNumber sourceLineNumbers, string elementName, string attributeName)
2871 - {
2872 - return new WixWarningEventArgs(sourceLineNumbers, 1142, "WixWarnings_ReservedAttribute_1", elementName, attributeName);
2873 - }
2874 -
2875 - public static MessageEventArgs RequiresMsi500forArmPackage(SourceLineNumber sourceLineNumbers)
2876 - {
2877 - return new WixWarningEventArgs(sourceLineNumbers, 1143, "WixWarnings_RequiresMsi500forArmPackage_1");
2878 - }
2879 -
2880 - public static MessageEventArgs RemotePayloadsMustNotAlsoBeCompressed(SourceLineNumber sourceLineNumbers, string elementName)
2881 - {
2882 - return new WixWarningEventArgs(sourceLineNumbers, 1144, "WixWarnings_RemotePayloadsMustNotAlsoBeCompressed_1", elementName);
2883 - }
2884 -
2885 - public static MessageEventArgs AllChangesIncludedInPatch(SourceLineNumber sourceLineNumbers)
2886 - {
2887 - return new WixWarningEventArgs(sourceLineNumbers, 1145, "WixWarnings_AllChangesIncludedInPatch_1");
2888 - }
2889 -
2890 - public static MessageEventArgs RelatedAttributeConditionallyIgnored(SourceLineNumber sourceLineNumbers, string recessiveAttribute, string dominantAttribute, string dominantValue)
2891 - {
2892 - return new WixWarningEventArgs(sourceLineNumbers, 1146, "WixWarnings_RelatedAttributeConditionallyIgnored_1", recessiveAttribute, dominantAttribute, dominantValue);
2893 - }
2894 -
2895 - public static MessageEventArgs BackslashTerminateInlineDirectorySyntax(SourceLineNumber sourceLineNumbers, string elementName, string attributeName, string value)
2896 - {
2897 - return new WixWarningEventArgs(sourceLineNumbers, 1147, "WixWarnings_BackslashTerminateInlineDirectorySyntax_1", elementName, attributeName, value);
2898 - }
2899 -
2900 - public static MessageEventArgs VersionTruncated(SourceLineNumber sourceLineNumbers, string originalVersion, string package, string truncatedVersion)
2901 - {
2902 - return new WixWarningEventArgs(sourceLineNumbers, 1148, "WixWarnings_VersionTruncated_1", originalVersion, package, truncatedVersion);
2903 - }
2904 -
2905 - public static MessageEventArgs ServiceConfigFamilyNotSupported(SourceLineNumber sourceLineNumbers, string elementName)
2906 - {
2907 - return new WixWarningEventArgs(sourceLineNumbers, 1149, "WixWarnings_ServiceConfigFamilyNotSupported_1", elementName);
2908 - }
2909 - }
2910 -
2911 - public class WixVerboseEventArgs : MessageEventArgs
2912 - {
2913 -
2914 - private static ResourceManager resourceManager = new ResourceManager("WixToolset.Core.Data.Messages", Assembly.GetExecutingAssembly());
2915 -
2916 - public WixVerboseEventArgs(SourceLineNumber sourceLineNumbers, int id, string resourceName, params object[] messageArgs) :
2917 - base(sourceLineNumbers, id, resourceName, messageArgs)
2918 - {
2919 - base.Level = MessageLevel.Verbose;
2920 - base.ResourceManager = resourceManager;
2921 - }
2922 - }
2923 -
2924 - public sealed class WixVerboses
2925 - {
2926 -
2927 - private WixVerboses()
2928 - {
2929 - }
2930 -
2931 - public static MessageEventArgs ImportBinaryStream(string streamSource)
2932 - {
2933 - return new WixVerboseEventArgs(null, 9000, "WixVerboses_ImportBinaryStream_1", streamSource);
2934 - }
2935 -
2936 - public static MessageEventArgs ImportIconStream(string streamSource)
2937 - {
2938 - return new WixVerboseEventArgs(null, 9001, "WixVerboses_ImportIconStream_1", streamSource);
2939 - }
2940 -
2941 - public static MessageEventArgs CopyFile(string sourceFile, string destinationFile)
2942 - {
2943 - return new WixVerboseEventArgs(null, 9002, "WixVerboses_CopyFile_1", sourceFile, destinationFile);
2944 - }
2945 -
2946 - public static MessageEventArgs MoveFile(string sourceFile, string destinationFile)
2947 - {
2948 - return new WixVerboseEventArgs(null, 9003, "WixVerboses_MoveFile_1", sourceFile, destinationFile);
2949 - }
2950 -
2951 - public static MessageEventArgs CreateDirectory(string directory)
2952 - {
2953 - return new WixVerboseEventArgs(null, 9004, "WixVerboses_CreateDirectory_1", directory);
2954 - }
2955 -
2956 - public static MessageEventArgs RemoveDestinationFile(string destinationFile)
2957 - {
2958 - return new WixVerboseEventArgs(null, 9005, "WixVerboses_RemoveDestinationFile_1", destinationFile);
2959 - }
2960 -
2961 - public static MessageEventArgs CabFile(string fileId, string filePath)
2962 - {
2963 - return new WixVerboseEventArgs(null, 9006, "WixVerboses_CabFile_1", fileId, filePath);
2964 - }
2965 -
2966 - public static MessageEventArgs UpdatingFileInformation()
2967 - {
2968 - return new WixVerboseEventArgs(null, 9007, "WixVerboses_UpdatingFileInformation_1");
2969 - }
2970 -
2971 - public static MessageEventArgs GeneratingDatabase()
2972 - {
2973 - return new WixVerboseEventArgs(null, 9008, "WixVerboses_GeneratingDatabase_1");
2974 - }
2975 -
2976 - public static MessageEventArgs MergingModules()
2977 - {
2978 - return new WixVerboseEventArgs(null, 9009, "WixVerboses_MergingModules_1");
2979 - }
2980 -
2981 - public static MessageEventArgs CreatingCabinetFiles()
2982 - {
2983 - return new WixVerboseEventArgs(null, 9010, "WixVerboses_CreatingCabinetFiles_1");
2984 - }
2985 -
2986 - public static MessageEventArgs ImportingStreams()
2987 - {
2988 - return new WixVerboseEventArgs(null, 9011, "WixVerboses_ImportingStreams_1");
2989 - }
2990 -
2991 - public static MessageEventArgs LayingOutMedia()
2992 - {
2993 - return new WixVerboseEventArgs(null, 9012, "WixVerboses_LayingOutMedia_1");
2994 - }
2995 -
2996 - public static MessageEventArgs DecompilingTable(string tableName)
2997 - {
2998 - return new WixVerboseEventArgs(null, 9013, "WixVerboses_DecompilingTable_1", tableName);
2999 - }
3000 -
3001 - public static MessageEventArgs ValidationInfo(string ice, string message)
3002 - {
3003 - return new WixVerboseEventArgs(null, 9014, "WixVerboses_ValidationInfo_1", ice, message);
3004 - }
3005 -
3006 - public static MessageEventArgs CreateCabinet(string cabinet)
3007 - {
3008 - return new WixVerboseEventArgs(null, 9015, "WixVerboses_CreateCabinet_1", cabinet);
3009 - }
3010 -
3011 - public static MessageEventArgs ValidatingDatabase()
3012 - {
3013 - return new WixVerboseEventArgs(null, 9016, "WixVerboses_ValidatingDatabase_1");
3014 - }
3015 -
3016 - public static MessageEventArgs OpeningMergeModule(string modulePath, short language)
3017 - {
3018 - return new WixVerboseEventArgs(null, 9017, "WixVerboses_OpeningMergeModule_1", modulePath, language);
3019 - }
3020 -
3021 - public static MessageEventArgs MergingMergeModule(string modulePath)
3022 - {
3023 - return new WixVerboseEventArgs(null, 9018, "WixVerboses_MergingMergeModule_1", modulePath);
3024 - }
3025 -
3026 - public static MessageEventArgs ConnectingMergeModule(string modulePath, string feature)
3027 - {
3028 - return new WixVerboseEventArgs(null, 9019, "WixVerboses_ConnectingMergeModule_1", modulePath, feature);
3029 - }
3030 -
3031 - public static MessageEventArgs ResequencingMergeModuleFiles()
3032 - {
3033 - return new WixVerboseEventArgs(null, 9020, "WixVerboses_ResequencingMergeModuleFiles_1");
3034 - }
3035 -
3036 - public static MessageEventArgs BinderTempDirLocatedAt(string directory)
3037 - {
3038 - return new WixVerboseEventArgs(null, 9021, "WixVerboses_BinderTempDirLocatedAt_1", directory);
3039 - }
3040 -
3041 - public static MessageEventArgs ValidatorTempDirLocatedAt(string directory)
3042 - {
3043 - return new WixVerboseEventArgs(null, 9022, "WixVerboses_ValidatorTempDirLocatedAt_1", directory);
3044 - }
3045 -
3046 - public static MessageEventArgs GeneratingBundle(string bundleFile, string stubFile)
3047 - {
3048 - return new WixVerboseEventArgs(null, 9023, "WixVerboses_GeneratingBundle_1", bundleFile, stubFile);
3049 - }
3050 -
3051 - public static MessageEventArgs ResolvingManifest(string manifestFile)
3052 - {
3053 - return new WixVerboseEventArgs(null, 9024, "WixVerboses_ResolvingManifest_1", manifestFile);
3054 - }
3055 -
3056 - public static MessageEventArgs LoadingPayload(string payload)
3057 - {
3058 - return new WixVerboseEventArgs(null, 9025, "WixVerboses_LoadingPayload_1", payload);
3059 - }
3060 -
3061 - public static MessageEventArgs BundleGuid(string bundleGuid)
3062 - {
3063 - return new WixVerboseEventArgs(null, 9026, "WixVerboses_BundleGuid_1", bundleGuid);
3064 - }
3065 -
3066 - public static MessageEventArgs CopyingExternalPayload(string payload, string outputDirectory)
3067 - {
3068 - return new WixVerboseEventArgs(null, 9027, "WixVerboses_CopyingExternalPayload_1", payload, outputDirectory);
3069 - }
3070 -
3071 - public static MessageEventArgs EmbeddingContainer(string container, long size, string compression)
3072 - {
3073 - return new WixVerboseEventArgs(null, 9028, "WixVerboses_EmbeddingContainer_1", container, size, compression);
3074 - }
3075 -
3076 - public static MessageEventArgs SwitchingToPerUserPackage(SourceLineNumber sourceLineNumbers, string path)
3077 - {
3078 - return new WixVerboseEventArgs(sourceLineNumbers, 9029, "WixVerboses_SwitchingToPerUserPackage_1", path);
3079 - }
3080 -
3081 - public static MessageEventArgs SetCabbingThreadCount(string threads)
3082 - {
3083 - return new WixVerboseEventArgs(null, 9030, "WixVerboses_SetCabbingThreadCount_1", threads);
3084 - }
3085 -
3086 - public static MessageEventArgs ValidationSerialized()
3087 - {
3088 - return new WixVerboseEventArgs(null, 9031, "WixVerboses_ValidationSerialized_1");
3089 - }
3090 -
3091 - public static MessageEventArgs ReusingCabCache(SourceLineNumber sourceLineNumbers, string cabinetName, string source)
3092 - {
3093 - return new WixVerboseEventArgs(sourceLineNumbers, 9032, "WixVerboses_ReusingCabCache_1", cabinetName, source);
3094 - }
3095 -
3096 - public static MessageEventArgs CabinetsSplitInParallel()
3097 - {
3098 - return new WixVerboseEventArgs(null, 9033, "WixVerboses_CabinetsSplitInParallel_1");
3099 - }
3100 -
3101 - public static MessageEventArgs ValidatedDatabase(long size)
3102 - {
3103 - return new WixVerboseEventArgs(null, 9034, "WixVerboses_ValidatedDatabase_1", size);
3104 - }
3105 - }
3106 -}
src/WixToolset.Core/Data/messages.xml.old deleted
-3998
@@ -1,3998 +0,0 @@
1 -<?xml version='1.0' encoding='utf-8'?>
2 -<!-- 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. -->
3 -
4 -
5 -<Messages Namespace="WixToolset" Resources="Core.Data.Messages" xmlns="http://schemas.microsoft.com/genmsgs/2004/07/messages">
6 - <Class Name="WixErrors" ContainerName="WixErrorEventArgs" BaseContainerName="MessageEventArgs" Level="Error">
7 - <Message Id="UnexpectedException" Number="1" SourceLineNumbers="no">
8 - <Instance>
9 - {0}&#13;&#10;&#13;&#10;Exception Type: {1}&#13;&#10;&#13;&#10;Stack Trace:&#13;&#10;{2}
10 - <Parameter Type="System.String" Name="message" />
11 - <Parameter Type="System.String" Name="type" />
12 - <Parameter Type="System.String" Name="stackTrace" />
13 - </Instance>
14 - </Message>
15 - <Message Id="UnexpectedAttribute" Number="4">
16 - <Instance>
17 - The {0} element contains an unexpected attribute '{1}'.
18 - <Parameter Type="System.String" Name="elementName" />
19 - <Parameter Type="System.String" Name="attributeName" />
20 - </Instance>
21 - </Message>
22 - <Message Id="UnexpectedElement" Number="5">
23 - <Instance>
24 - The {0} element contains an unexpected child element '{1}'.
25 - <Parameter Type="System.String" Name="elementName" />
26 - <Parameter Type="System.String" Name="childElementName" />
27 - </Instance>
28 - </Message>
29 - <Message Id="IllegalEmptyAttributeValue" Number="6">
30 - <Instance>
31 - The {0}/@{1} attribute's value cannot be an empty string. If a value is not required, simply remove the entire attribute.
32 - <Parameter Type="System.String" Name="elementName" />
33 - <Parameter Type="System.String" Name="attributeName" />
34 - </Instance>
35 - <Instance>
36 - The {0}/@{1} attribute's value cannot be an empty string. To use the default value "{2}", simply remove the entire attribute.
37 - <Parameter Type="System.String" Name="elementName" />
38 - <Parameter Type="System.String" Name="attributeName" />
39 - <Parameter Type="System.String" Name="defaultValue" />
40 - </Instance>
41 - </Message>
42 - <Message Id="InsufficientVersion" Number="7">
43 - <Instance>
44 - The current version of the toolset is {0}, but version {1} is required.
45 - <Parameter Type="System.Version" Name="currentVersion" />
46 - <Parameter Type="System.Version" Name="requiredVersion" />
47 - </Instance>
48 - <Instance>
49 - The current version of the extension '{2}' is {0}, but version {1} is required.
50 - <Parameter Type="System.Version" Name="currentVersion" />
51 - <Parameter Type="System.Version" Name="requiredVersion" />
52 - <Parameter Type="System.String" Name="extension" />
53 - </Instance>
54 - </Message>
55 - <Message Id="IllegalIntegerValue" Number="8">
56 - <Instance>
57 - The {0}/@{1} attribute's value, '{2}', is not a legal integer value. Legal integer values are from -2,147,483,648 to 2,147,483,647.
58 - <Parameter Type="System.String" Name="elementName" />
59 - <Parameter Type="System.String" Name="attributeName" />
60 - <Parameter Type="System.String" Name="value" />
61 - </Instance>
62 - </Message>
63 - <Message Id="IllegalGuidValue" Number="9">
64 - <Instance>
65 - The {0}/@{1} attribute's value, '{2}', is not a legal guid value.
66 - <Parameter Type="System.String" Name="elementName" />
67 - <Parameter Type="System.String" Name="attributeName" />
68 - <Parameter Type="System.String" Name="value" />
69 - </Instance>
70 - </Message>
71 - <Message Id="ExpectedAttribute" Number="10">
72 - <Instance>
73 - The {0}/@{1} attribute was not found; it is required.
74 - <Parameter Type="System.String" Name="elementName" />
75 - <Parameter Type="System.String" Name="attributeName" />
76 - </Instance>
77 - <Instance>
78 - The {0} element must have a value for exactly one of the {1} or {2} attributes.
79 - <Parameter Type="System.String" Name="elementName" />
80 - <Parameter Type="System.String" Name="attribute1Name" />
81 - <Parameter Type="System.String" Name="attribute2Name" />
82 - <Parameter Type="System.Boolean" Name="eitherOr" />
83 - </Instance>
84 - <Instance>
85 - The {0}/@{1} attribute was not found; it is required when attribute {2} is specified.
86 - <Parameter Type="System.String" Name="elementName" />
87 - <Parameter Type="System.String" Name="attributeName" />
88 - <Parameter Type="System.String" Name="otherAttributeName" />
89 - </Instance>
90 - <Instance>
91 - The {0}/@{1} attribute was not found; it is required when attribute {2} has a value of '{3}'.
92 - <Parameter Type="System.String" Name="elementName" />
93 - <Parameter Type="System.String" Name="attributeName" />
94 - <Parameter Type="System.String" Name="otherAttributeName" />
95 - <Parameter Type="System.String" Name="otherAttributeValue" />
96 - </Instance>
97 - <Instance>
98 - The {0}/@{1} attribute was not found; it is required unless the attribute {2} has a value of '{3}'.
99 - <Parameter Type="System.String" Name="elementName" />
100 - <Parameter Type="System.String" Name="attributeName" />
101 - <Parameter Type="System.String" Name="otherAttributeName" />
102 - <Parameter Type="System.String" Name="otherAttributeValue" />
103 - <Parameter Type="System.Boolean" Name="otherAttributeValueUnless" />
104 - </Instance>
105 - </Message>
106 - <Message Id="SecurePropertyNotUppercase" Number="11">
107 - <Instance>
108 - The {0}/@{1} attribute's value, '{2}', cannot contain lowercase characters. Since this is a secure property, it must also be a public property. This means the Property/@Id value must be completely uppercase.
109 - <Parameter Type="System.String" Name="elementName" />
110 - <Parameter Type="System.String" Name="attributeName" />
111 - <Parameter Type="System.String" Name="propertyId" />
112 - </Instance>
113 - </Message>
114 - <Message Id="SearchPropertyNotUppercase" Number="12">
115 - <Instance>
116 - The {0}/@{1} attribute's value, '{2}', cannot contain lowercase characters. Since this is a search property, it must also be a public property. This means the Property/@Id value must be completely uppercase.
117 - <Parameter Type="System.String" Name="elementName" />
118 - <Parameter Type="System.String" Name="attributeName" />
119 - <Parameter Type="System.String" Name="value" />
120 - </Instance>
121 - </Message>
122 - <Message Id="StreamNameTooLong" Number="13">
123 - <Instance>
124 - The {0}/@{1} attribute's value, '{2}', is {3} characters long. This is too long because it will be used to create a stream name. It cannot be more than than {4} characters long.
125 - <Parameter Type="System.String" Name="elementName" />
126 - <Parameter Type="System.String" Name="attributeName" />
127 - <Parameter Type="System.String" Name="value" />
128 - <Parameter Type="System.Int32" Name="length" />
129 - <Parameter Type="System.Int32" Name="maximumLength" />
130 - </Instance>
131 - <Instance>
132 - The binary value in table '{0}' will be stored with a stream name, '{1}', that is {2} characters long. This is too long because the maximum allowed length for a stream name is 62 characters long. Since the stream name is created by concatenating the table name and values of the primary key for a row (delimited by periods), this error can be resolved by shortening a value that is part of the primary key.
133 - <Parameter Type="System.String" Name="tableName" />
134 - <Parameter Type="System.String" Name="streamName" />
135 - <Parameter Type="System.Int32" Name="streamLength" />
136 - </Instance>
137 - </Message>
138 - <Message Id="IllegalIdentifier" Number="14">
139 - <Instance>
140 - The {0} element's value, '{1}', is not a legal identifier. Identifiers may contain ASCII characters A-Z, a-z, digits, underscores (_), or periods (.). Every identifier must begin with either a letter or an underscore.
141 - <Parameter Type="System.String" Name="elementName" />
142 - <Parameter Type="System.String" Name="value" />
143 - </Instance>
144 - <Instance>
145 - The {0}/@{1} attribute's value is not a legal identifier. Identifiers may contain ASCII characters A-Z, a-z, digits, underscores (_), or periods (.). Every identifier must begin with either a letter or an underscore.
146 - <Parameter Type="System.String" Name="elementName" />
147 - <Parameter Type="System.String" Name="attributeName" />
148 - <Parameter Type="System.Int32" Name="disambiguator" />
149 - </Instance>
150 - <Instance>
151 - The {0}/@{1} attribute's value, '{2}', is not a legal identifier. Identifiers may contain ASCII characters A-Z, a-z, digits, underscores (_), or periods (.). Every identifier must begin with either a letter or an underscore.
152 - <Parameter Type="System.String" Name="elementName" />
153 - <Parameter Type="System.String" Name="attributeName" />
154 - <Parameter Type="System.String" Name="value" />
155 - </Instance>
156 - <Instance>
157 - The {0}/@{1} attribute's value '{2}' contains an illegal identifier '{3}'. Identifiers may contain ASCII characters A-Z, a-z, digits, underscores (_), or periods (.). Every identifier must begin with either a letter or an underscore.
158 - <Parameter Type="System.String" Name="elementName" />
159 - <Parameter Type="System.String" Name="attributeName" />
160 - <Parameter Type="System.String" Name="value" />
161 - <Parameter Type="System.String" Name="identifier" />
162 - </Instance>
163 - </Message>
164 - <Message Id="IllegalYesNoValue" Number="15">
165 - <Instance>
166 - The {0}/@{1} attribute's value, '{2}', is not a legal yes/no value. The only legal values are 'no' and 'yes'.
167 - <Parameter Type="System.String" Name="elementName" />
168 - <Parameter Type="System.String" Name="attributeName" />
169 - <Parameter Type="System.String" Name="value" />
170 - </Instance>
171 - </Message>
172 - <Message Id="CabCreationFailed" Number="16" SourceLineNumbers="no">
173 - <Instance>
174 - Failed to create cab '{0}' while compressing file '{1}' with error 0x{2:X8}.
175 - <Parameter Type="System.String" Name="cabName" />
176 - <Parameter Type="System.String" Name="fileName" />
177 - <Parameter Type="System.Int32" Name="error" />
178 - </Instance>
179 - <Instance>
180 - Failed to create cab '{0}' with error 0x{1:X8}.
181 - <Parameter Type="System.String" Name="cabName" />
182 - <Parameter Type="System.Int32" Name="error" />
183 - </Instance>
184 - </Message>
185 - <Message Id="CabExtractionFailed" Number="17" SourceLineNumbers="no">
186 - <Instance>
187 - Failed to extract cab '{0}' to directory '{1}'. This is most likely due to a lack of available disk space on the destination drive.
188 - <Parameter Type="System.String" Name="cabName" />
189 - <Parameter Type="System.String" Name="directoryName" />
190 - </Instance>
191 - <Instance>
192 - Failed to extract cab '{0}' from merge module '{1}' to directory '{2}'. This is most likely due to a lack of available disk space on the destination drive.
193 - <Parameter Type="System.String" Name="cabName" />
194 - <Parameter Type="System.String" Name="mergeModulePath" />
195 - <Parameter Type="System.String" Name="directoryName" />
196 - </Instance>
197 - </Message>
198 - <Message Id="AppIdIncompatibleAdvertiseState" Number="18">
199 - <Instance>
200 - The {0}/@(1) attribute's value, '{2}' does not match the advertise state on its parent element: '{3}'. (Note: AppIds nested under Fragment, Module, or Product elements must be advertised.)
201 - <Parameter Type="System.String" Name="elementName" />
202 - <Parameter Type="System.String" Name="attributeName" />
203 - <Parameter Type="System.String" Name="value" />
204 - <Parameter Type="System.String" Name="parentValue" />
205 - </Instance>
206 - </Message>
207 - <Message Id="IllegalAttributeWhenAdvertised" Number="19">
208 - <Instance>
209 - The {0}/@{1} attribute cannot be specified because the element is advertised.
210 - <Parameter Type="System.String" Name="elementName" />
211 - <Parameter Type="System.String" Name="attributeName" />
212 - </Instance>
213 - </Message>
214 - <Message Id="ConditionExpected" Number="20">
215 - <Instance>
216 - The {0} element's inner text cannot be an empty string or completely whitespace. If you don't want a condition, then simply remove the entire {0} element.
217 - <Parameter Type="System.String" Name="elementName" />
218 - </Instance>
219 - </Message>
220 - <Message Id="IllegalAttributeValue" Number="21">
221 - <Instance>
222 - The {0}/@{1} attribute's value, '{2}', is not one of the legal options: '{3}'.
223 - <Parameter Type="System.String" Name="elementName" />
224 - <Parameter Type="System.String" Name="attributeName" />
225 - <Parameter Type="System.String" Name="value" />
226 - <Parameter Type="System.String" Name="legalValue1" />
227 - </Instance>
228 - <Instance>
229 - The {0}/@{1} attribute's value, '{2}', is not one of the legal options: '{3}', or '{4}'.
230 - <Parameter Type="System.String" Name="elementName" />
231 - <Parameter Type="System.String" Name="attributeName" />
232 - <Parameter Type="System.String" Name="value" />
233 - <Parameter Type="System.String" Name="legalValue1" />
234 - <Parameter Type="System.String" Name="legalValue2" />
235 - </Instance>
236 - <Instance>
237 - The {0}/@{1} attribute's value, '{2}', is not one of the legal options: '{3}', '{4}', or '{5}'.
238 - <Parameter Type="System.String" Name="elementName" />
239 - <Parameter Type="System.String" Name="attributeName" />
240 - <Parameter Type="System.String" Name="value" />
241 - <Parameter Type="System.String" Name="legalValue1" />
242 - <Parameter Type="System.String" Name="legalValue2" />
243 - <Parameter Type="System.String" Name="legalValue3" />
244 - </Instance>
245 - <Instance>
246 - The {0}/@{1} attribute's value, '{2}', is not one of the legal options: '{3}', '{4}', '{5}', or '{6}'.
247 - <Parameter Type="System.String" Name="elementName" />
248 - <Parameter Type="System.String" Name="attributeName" />
249 - <Parameter Type="System.String" Name="value" />
250 - <Parameter Type="System.String" Name="legalValue1" />
251 - <Parameter Type="System.String" Name="legalValue2" />
252 - <Parameter Type="System.String" Name="legalValue3" />
253 - <Parameter Type="System.String" Name="legalValue4" />
254 - </Instance>
255 - <Instance>
256 - The {0}/@{1} attribute's value, '{2}', is not one of the legal options: '{3}', '{4}', '{5}', '{6}', or '{7}'.
257 - <Parameter Type="System.String" Name="elementName" />
258 - <Parameter Type="System.String" Name="attributeName" />
259 - <Parameter Type="System.String" Name="value" />
260 - <Parameter Type="System.String" Name="legalValue1" />
261 - <Parameter Type="System.String" Name="legalValue2" />
262 - <Parameter Type="System.String" Name="legalValue3" />
263 - <Parameter Type="System.String" Name="legalValue4" />
264 - <Parameter Type="System.String" Name="legalValue5" />
265 - </Instance>
266 - <Instance>
267 - The {0}/@{1} attribute's value, '{2}', is not one of the legal options: '{3}', '{4}', '{5}', '{6}', '{7}', or '{8}'.
268 - <Parameter Type="System.String" Name="elementName" />
269 - <Parameter Type="System.String" Name="attributeName" />
270 - <Parameter Type="System.String" Name="value" />
271 - <Parameter Type="System.String" Name="legalValue1" />
272 - <Parameter Type="System.String" Name="legalValue2" />
273 - <Parameter Type="System.String" Name="legalValue3" />
274 - <Parameter Type="System.String" Name="legalValue4" />
275 - <Parameter Type="System.String" Name="legalValue5" />
276 - <Parameter Type="System.String" Name="legalValue6" />
277 - </Instance>
278 - <Instance>
279 - The {0}/@{1} attribute's value, '{2}', is not one of the legal options: '{3}', '{4}', '{5}', '{6}', '{7}', '{8}', or '{9}'.
280 - <Parameter Type="System.String" Name="elementName" />
281 - <Parameter Type="System.String" Name="attributeName" />
282 - <Parameter Type="System.String" Name="value" />
283 - <Parameter Type="System.String" Name="legalValue1" />
284 - <Parameter Type="System.String" Name="legalValue2" />
285 - <Parameter Type="System.String" Name="legalValue3" />
286 - <Parameter Type="System.String" Name="legalValue4" />
287 - <Parameter Type="System.String" Name="legalValue5" />
288 - <Parameter Type="System.String" Name="legalValue6" />
289 - <Parameter Type="System.String" Name="legalValue7" />
290 - </Instance>
291 - <Instance>
292 - The {0}/@{1} attribute's value, '{2}', is not one of the legal options: '{3}', '{4}', '{5}', '{6}', '{7}', '{8}', '{9}', or '{10}'.
293 - <Parameter Type="System.String" Name="elementName" />
294 - <Parameter Type="System.String" Name="attributeName" />
295 - <Parameter Type="System.String" Name="value" />
296 - <Parameter Type="System.String" Name="legalValue1" />
297 - <Parameter Type="System.String" Name="legalValue2" />
298 - <Parameter Type="System.String" Name="legalValue3" />
299 - <Parameter Type="System.String" Name="legalValue4" />
300 - <Parameter Type="System.String" Name="legalValue5" />
301 - <Parameter Type="System.String" Name="legalValue6" />
302 - <Parameter Type="System.String" Name="legalValue7" />
303 - <Parameter Type="System.String" Name="legalValue8" />
304 - </Instance>
305 - <Instance>
306 - The {0}/@{1} attribute's value, '{2}', is not one of the legal options: '{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}', or '{28}'.
307 - <Parameter Type="System.String" Name="elementName" />
308 - <Parameter Type="System.String" Name="attributeName" />
309 - <Parameter Type="System.String" Name="value" />
310 - <Parameter Type="System.String" Name="legalValue1" />
311 - <Parameter Type="System.String" Name="legalValue2" />
312 - <Parameter Type="System.String" Name="legalValue3" />
313 - <Parameter Type="System.String" Name="legalValue4" />
314 - <Parameter Type="System.String" Name="legalValue5" />
315 - <Parameter Type="System.String" Name="legalValue6" />
316 - <Parameter Type="System.String" Name="legalValue7" />
317 - <Parameter Type="System.String" Name="legalValue8" />
318 - <Parameter Type="System.String" Name="legalValue9" />
319 - <Parameter Type="System.String" Name="legalValue10" />
320 - <Parameter Type="System.String" Name="legalValue11" />
321 - <Parameter Type="System.String" Name="legalValue12" />
322 - <Parameter Type="System.String" Name="legalValue13" />
323 - <Parameter Type="System.String" Name="legalValue14" />
324 - <Parameter Type="System.String" Name="legalValue15" />
325 - <Parameter Type="System.String" Name="legalValue16" />
326 - <Parameter Type="System.String" Name="legalValue17" />
327 - <Parameter Type="System.String" Name="legalValue18" />
328 - <Parameter Type="System.String" Name="legalValue19" />
329 - <Parameter Type="System.String" Name="legalValue20" />
330 - <Parameter Type="System.String" Name="legalValue21" />
331 - <Parameter Type="System.String" Name="legalValue22" />
332 - <Parameter Type="System.String" Name="legalValue23" />
333 - <Parameter Type="System.String" Name="legalValue24" />
334 - <Parameter Type="System.String" Name="legalValue25" />
335 - <Parameter Type="System.String" Name="legalValue26" />
336 - </Instance>
337 - </Message>
338 - <Message Id="CustomActionMultipleSources" Number="22">
339 - <Instance>
340 - The {0}/@{1} attribute cannot coexist with a previously specified attribute on this element. The {0} element may only have one of the following source attributes specified at a time: {2}, {3}, {4}, {5}, or {6}.
341 - <Parameter Type="System.String" Name="elementName" />
342 - <Parameter Type="System.String" Name="attributeName" />
343 - <Parameter Type="System.String" Name="attributeName1" />
344 - <Parameter Type="System.String" Name="attributeName2" />
345 - <Parameter Type="System.String" Name="attributeName3" />
346 - <Parameter Type="System.String" Name="attributeName4" />
347 - <Parameter Type="System.String" Name="attributeName5" />
348 - </Instance>
349 - </Message>
350 - <Message Id="CustomActionMultipleTargets" Number="23">
351 - <Instance>
352 - The {0}/@{1} attribute cannot coexist with a previously specified attribute on this element. The {0} element may only have one of the following target attributes specified at a time: {2}, {3}, {4}, {5}, {6}, {7}, or {8}.
353 - <Parameter Type="System.String" Name="elementName" />
354 - <Parameter Type="System.String" Name="attributeName" />
355 - <Parameter Type="System.String" Name="attributeName1" />
356 - <Parameter Type="System.String" Name="attributeName2" />
357 - <Parameter Type="System.String" Name="attributeName3" />
358 - <Parameter Type="System.String" Name="attributeName4" />
359 - <Parameter Type="System.String" Name="attributeName5" />
360 - <Parameter Type="System.String" Name="attributeName6" />
361 - <Parameter Type="System.String" Name="attributeName7" />
362 - </Instance>
363 - </Message>
364 - <Message Id="CustomActionIllegalInnerText" Number="24">
365 - <Instance>
366 - The {0} element contains illegal inner text: '{1}'. It may not contain inner text unless the {2} attribute is specified.
367 - <Parameter Type="System.String" Name="elementName" />
368 - <Parameter Type="System.String" Name="innerText" />
369 - <Parameter Type="System.String" Name="attributeName" />
370 - </Instance>
371 - </Message>
372 - <Message Id="DirectoryRootWithoutName" Number="25">
373 - <Instance>
374 - The {0} element requires the {1} attribute because there is no parent {0} element.
375 - <Parameter Type="System.String" Name="elementName" />
376 - <Parameter Type="System.String" Name="attributeName" />
377 - </Instance>
378 - </Message>
379 - <Message Id="IllegalShortFilename" Number="26">
380 - <Instance>
381 - The {0}/@{1} attribute's value, '{2}', is not a valid 8.3-compliant name. Legal names contain no more than 8 non-period characters followed by an optional period and extension of no more than 3 non-period characters. Any character except for the follow may be used: \ ? | &gt; &lt; : / * " + , ; = [ ] (space).
382 - <Parameter Type="System.String" Name="elementName" />
383 - <Parameter Type="System.String" Name="attributeName" />
384 - <Parameter Type="System.String" Name="value" />
385 - </Instance>
386 - </Message>
387 - <Message Id="IllegalLongFilename" Number="27">
388 - <Instance>
389 - The {0}/@{1} attribute's value, '{2}', is not a valid filename because it contains illegal characters. Legal filenames contain no more than 260 characters and must contain at least one non-period character. Any character except for the follow may be used: \ ? | &gt; &lt; : / * ".
390 - <Parameter Type="System.String" Name="elementName" />
391 - <Parameter Type="System.String" Name="attributeName" />
392 - <Parameter Type="System.String" Name="value" />
393 - </Instance>
394 - <Instance>
395 - The {0}/@{1} attribute's value '{2}' contains a invalid filename '{3}'. Legal filenames contain no more than 260 characters and must contain at least one non-period character. Any character except for the follow may be used: \ ? | &gt; &lt; : / * ".
396 - <Parameter Type="System.String" Name="elementName" />
397 - <Parameter Type="System.String" Name="attributeName" />
398 - <Parameter Type="System.String" Name="value" />
399 - <Parameter Type="System.String" Name="filename" />
400 - </Instance>
401 - </Message>
402 - <Message Id="TableNameTooLong" Number="28">
403 - <Instance>
404 - The {0}/@{1} attribute's value, '{2}', is too long for a table name. It cannot be more than than 31 characters long.
405 - <Parameter Type="System.String" Name="elementName" />
406 - <Parameter Type="System.String" Name="attributeName" />
407 - <Parameter Type="System.String" Name="value" />
408 - </Instance>
409 - </Message>
410 - <Message Id="FeatureConfigurableDirectoryNotUppercase" Number="29">
411 - <Instance>
412 - The {0}/@{1} attribute's value, '{2}', contains lowercase characters. Since this directory is user-configurable, it needs to be a public property. This means the value must be completely uppercase.
413 - <Parameter Type="System.String" Name="elementName" />
414 - <Parameter Type="System.String" Name="attributeName" />
415 - <Parameter Type="System.String" Name="value" />
416 - </Instance>
417 - </Message>
418 - <Message Id="FeatureCannotFavorAndDisallowAdvertise" Number="30">
419 - <Instance>
420 - The {0}/@{1} attribute's value, '{2}', cannot coexist with the {3} attribute's value of '{4}'. These options would ask the installer to disallow the advertised state for this feature while at the same time favoring it.
421 - <Parameter Type="System.String" Name="elementName" />
422 - <Parameter Type="System.String" Name="attributeName" />
423 - <Parameter Type="System.String" Name="value" />
424 - <Parameter Type="System.String" Name="otherAttributeName" />
425 - <Parameter Type="System.String" Name="otherValue" />
426 - </Instance>
427 - </Message>
428 - <Message Id="FeatureCannotFollowParentAndFavorLocalOrSource" Number="31">
429 - <Instance>
430 - The {0}/@{1} attribute cannot be specified if the {2} attribute's value is '{3}'. These options would ask the installer to force this feature to follow the parent installation state and simultaneously favor a particular installation state just for this feature.
431 - <Parameter Type="System.String" Name="elementName" />
432 - <Parameter Type="System.String" Name="attributeName" />
433 - <Parameter Type="System.String" Name="otherAttributeName" />
434 - <Parameter Type="System.String" Name="otherValue" />
435 - </Instance>
436 - </Message>
437 - <Message Id="MediaEmbeddedCabinetNameTooLong" Number="32">
438 - <Instance>
439 - The {0}/@{1} attribute's value, '{2}', is {3} characters long. The name is too long for an embedded cabinet. It cannot be more than than 62 characters long.
440 - <Parameter Type="System.String" Name="elementName" />
441 - <Parameter Type="System.String" Name="attributeName" />
442 - <Parameter Type="System.String" Name="value" />
443 - <Parameter Type="System.Int32" Name="length" />
444 - </Instance>
445 - </Message>
446 - <Message Id="RegistrySubElementCannotBeRemoved" Number="33">
447 - <Instance>
448 - The {0}/{1} element cannot be specified if the {2} attribute's value is '{3}' or '{4}'.
449 - <Parameter Type="System.String" Name="registryElementName" />
450 - <Parameter Type="System.String" Name="registryValueElementName" />
451 - <Parameter Type="System.String" Name="actionAttributeName" />
452 - <Parameter Type="System.String" Name="removeValue" />
453 - <Parameter Type="System.String" Name="removeKeyOnInstallValue" />
454 - </Instance>
455 - </Message>
456 - <Message Id="RegistryMultipleValuesWithoutMultiString" Number="34">
457 - <Instance>
458 - The {0}/@{1} attribute and a {0}/{2} element cannot both be specified. Only one may be specified if the {3} attribute's value is not 'multiString'.
459 - <Parameter Type="System.String" Name="registryElementName" />
460 - <Parameter Type="System.String" Name="valueAttributeName" />
461 - <Parameter Type="System.String" Name="registryValueElementName" />
462 - <Parameter Type="System.String" Name="typeAttributeName" />
463 - </Instance>
464 - </Message>
465 - <Message Id="IllegalAttributeWithOtherAttribute" Number="35">
466 - <Instance>
467 - The {0}/@{1} attribute cannot be specified when attribute {2} is present.
468 - <Parameter Type="System.String" Name="elementName" />
469 - <Parameter Type="System.String" Name="attributeName" />
470 - <Parameter Type="System.String" Name="otherAttributeName" />
471 - </Instance>
472 - <Instance>
473 - The {0}/@{1} attribute cannot be specified when attribute {2} is present with value '{3}'.
474 - <Parameter Type="System.String" Name="elementName" />
475 - <Parameter Type="System.String" Name="attributeName" />
476 - <Parameter Type="System.String" Name="otherAttributeName" />
477 - <Parameter Type="System.String" Name="otherAttributeValue" />
478 - </Instance>
479 - </Message>
480 - <Message Id="IllegalAttributeWithOtherAttributes" Number="36">
481 - <Instance>
482 - The {0}/@{1} attribute cannot be specified when attribute {2} or {3} is also present.
483 - <Parameter Type="System.String" Name="elementName" />
484 - <Parameter Type="System.String" Name="attributeName" />
485 - <Parameter Type="System.String" Name="otherAttributeName1" />
486 - <Parameter Type="System.String" Name="otherAttributeName2" />
487 - </Instance>
488 - <Instance>
489 - The {0}/@{1} attribute cannot be specified when attribute {2}, {3}, or {4} is also present.
490 - <Parameter Type="System.String" Name="elementName" />
491 - <Parameter Type="System.String" Name="attributeName" />
492 - <Parameter Type="System.String" Name="otherAttributeName1" />
493 - <Parameter Type="System.String" Name="otherAttributeName2" />
494 - <Parameter Type="System.String" Name="otherAttributeName3" />
495 - </Instance>
496 - <Instance>
497 - The {0}/@{1} attribute cannot be specified when attribute {2}, {3}, {4}, or {5} is also present.
498 - <Parameter Type="System.String" Name="elementName" />
499 - <Parameter Type="System.String" Name="attributeName" />
500 - <Parameter Type="System.String" Name="otherAttributeName1" />
501 - <Parameter Type="System.String" Name="otherAttributeName2" />
502 - <Parameter Type="System.String" Name="otherAttributeName3" />
503 - <Parameter Type="System.String" Name="otherAttributeName4" />
504 - </Instance>
505 - </Message>
506 - <Message Id="IllegalAttributeWithoutOtherAttributes" Number="37">
507 - <Instance>
508 - The {0}/@{1} attribute can only be specified with the following attribute {2} present.
509 - <Parameter Type="System.String" Name="elementName" />
510 - <Parameter Type="System.String" Name="attributeName" />
511 - <Parameter Type="System.String" Name="otherAttributeName" />
512 - </Instance>
513 - <Instance>
514 - The {0}/@{1} attribute can only be specified with one of the following attributes: {2} or {3} present.
515 - <Parameter Type="System.String" Name="elementName" />
516 - <Parameter Type="System.String" Name="attributeName" />
517 - <Parameter Type="System.String" Name="otherAttributeName1" />
518 - <Parameter Type="System.String" Name="otherAttributeName2" />
519 - </Instance>
520 - <Instance>
521 - The {0}/@{1} attribute can only be specified with one of the following attributes: {2} or {3} present with value '{4}'.
522 - <Parameter Type="System.String" Name="elementName" />
523 - <Parameter Type="System.String" Name="attributeName" />
524 - <Parameter Type="System.String" Name="otherAttributeName1" />
525 - <Parameter Type="System.String" Name="otherAttributeName2" />
526 - <Parameter Type="System.String" Name="otherAttributeValue" />
527 - <Parameter Type="System.Boolean" Name="uniquifier" />
528 - </Instance>
529 - <Instance>
530 - The {0}/@{1} attribute can only be specified with one of the following attributes: {2}, {3}, or {4} present.
531 - <Parameter Type="System.String" Name="elementName" />
532 - <Parameter Type="System.String" Name="attributeName" />
533 - <Parameter Type="System.String" Name="otherAttributeName1" />
534 - <Parameter Type="System.String" Name="otherAttributeName2" />
535 - <Parameter Type="System.String" Name="otherAttributeName3" />
536 - </Instance>
537 - <Instance>
538 - The {0}/@{1} attribute can only be specified with one of the following attributes: {2}, {3}, {4}, or {5} present.
539 - <Parameter Type="System.String" Name="elementName" />
540 - <Parameter Type="System.String" Name="attributeName" />
541 - <Parameter Type="System.String" Name="otherAttributeName1" />
542 - <Parameter Type="System.String" Name="otherAttributeName2" />
543 - <Parameter Type="System.String" Name="otherAttributeName3" />
544 - <Parameter Type="System.String" Name="otherAttributeName4" />
545 - </Instance>
546 - </Message>
547 - <Message Id="IllegalAttributeValueWithoutOtherAttribute" Number="38">
548 - <Instance>
549 - The {0}/@{1} attribute's value, '{2}', can only be specified with attribute {3} present with value '{4}'.
550 - <Parameter Type="System.String" Name="elementName" />
551 - <Parameter Type="System.String" Name="attributeName" />
552 - <Parameter Type="System.String" Name="attributeValue" />
553 - <Parameter Type="System.String" Name="otherAttributeName" />
554 - <Parameter Type="System.String" Name="otherAttributeValue" />
555 - </Instance>
556 - <Instance>
557 - The {0}/@{1} attribute's value, '{2}', cannot be specified without attribute {3} present.
558 - <Parameter Type="System.String" Name="elementName" />
559 - <Parameter Type="System.String" Name="attributeName" />
560 - <Parameter Type="System.String" Name="attributeValue" />
561 - <Parameter Type="System.String" Name="otherAttributeName" />
562 - </Instance>
563 - </Message>
564 - <Message Id="IntegralValueSentinelCollision" Number="39">
565 - <Instance>
566 - The integer value {0} collides with a sentinel value in the compiler code.
567 - <Parameter Type="System.Int32" Name="value" />
568 - </Instance>
569 - <Instance>
570 - The long integral value {0} collides with a sentinel value in the compiler code.
571 - <Parameter Type="System.Int64" Name="value" />
572 - </Instance>
573 - </Message>
574 - <Message Id="ExampleGuid" Number="40">
575 - <Instance>
576 - The {0}/@{1} attribute's value, '{2}', is not a legal Guid value. A Guid needs to be generated and put in place of '{2}' in the source file.
577 - <Parameter Type="System.String" Name="elementName" />
578 - <Parameter Type="System.String" Name="attributeName" />
579 - <Parameter Type="System.String" Name="value" />
580 - </Instance>
581 - </Message>
582 - <Message Id="TooManyChildren" Number="41">
583 - <Instance>
584 - The {0} element contains multiple {1} child elements. There can only be one {1} child element per {0} element.
585 - <Parameter Type="System.String" Name="elementName" />
586 - <Parameter Type="System.String" Name="childElementName" />
587 - </Instance>
588 - </Message>
589 - <Message Id="ComponentMultipleKeyPaths" Number="42">
590 - <Instance>
591 - The {0} element has multiple key paths set. The key path may only be set to '{2}' in extension elements that support it or one of the following locations: {0}/@{1}, {3}/@{1}, {4}/@{1}, or {5}/@{1}.
592 - <Parameter Type="System.String" Name="elementName" />
593 - <Parameter Type="System.String" Name="attributeName" />
594 - <Parameter Type="System.String" Name="value" />
595 - <Parameter Type="System.String" Name="fileElementName" />
596 - <Parameter Type="System.String" Name="registryElementName" />
597 - <Parameter Type="System.String" Name="odbcDataSourceElementName" />
598 - </Instance>
599 - </Message>
600 - <Message Id="CabClosureFailed" Number="43" SourceLineNumbers="no">
601 - <Instance>
602 - Failed to close cab '{0}'.
603 - <Parameter Type="System.String" Name="cabinet" />
604 - </Instance>
605 - <Instance>
606 - Failed to close cab '{0}', error: {1}.
607 - <Parameter Type="System.String" Name="cabinet" />
608 - <Parameter Type="System.Int32" Name="error" />
609 - </Instance>
610 - </Message>
611 - <Message Id="ExpectedAttributes" Number="44">
612 - <Instance>
613 - The {0} element's {1} or {2} attribute was not found; one of these is required.
614 - <Parameter Type="System.String" Name="elementName" />
615 - <Parameter Type="System.String" Name="attributeName1" />
616 - <Parameter Type="System.String" Name="attributeName2" />
617 - </Instance>
618 - <Instance>
619 - The {0} element's {1}, {2}, or {3} attribute was not found; one of these is required.
620 - <Parameter Type="System.String" Name="elementName" />
621 - <Parameter Type="System.String" Name="attributeName1" />
622 - <Parameter Type="System.String" Name="attributeName2" />
623 - <Parameter Type="System.String" Name="attributeName3" />
624 - </Instance>
625 - <Instance>
626 - The {0} element's {1}, {2}, {3}, or {4} attribute was not found; one of these is required.
627 - <Parameter Type="System.String" Name="elementName" />
628 - <Parameter Type="System.String" Name="attributeName1" />
629 - <Parameter Type="System.String" Name="attributeName2" />
630 - <Parameter Type="System.String" Name="attributeName3" />
631 - <Parameter Type="System.String" Name="attributeName4" />
632 - </Instance>
633 - <Instance>
634 - The {0} element's {1}, {2}, {3}, {4}, or {5} attribute was not found; one of these is required.
635 - <Parameter Type="System.String" Name="elementName" />
636 - <Parameter Type="System.String" Name="attributeName1" />
637 - <Parameter Type="System.String" Name="attributeName2" />
638 - <Parameter Type="System.String" Name="attributeName3" />
639 - <Parameter Type="System.String" Name="attributeName4" />
640 - <Parameter Type="System.String" Name="attributeName5" />
641 - </Instance>
642 - <Instance>
643 - The {0} element's {1}, {2}, {3}, {4}, {5}, or {6} attribute was not found; one of these is required.
644 - <Parameter Type="System.String" Name="elementName" />
645 - <Parameter Type="System.String" Name="attributeName1" />
646 - <Parameter Type="System.String" Name="attributeName2" />
647 - <Parameter Type="System.String" Name="attributeName3" />
648 - <Parameter Type="System.String" Name="attributeName4" />
649 - <Parameter Type="System.String" Name="attributeName5" />
650 - <Parameter Type="System.String" Name="attributeName6" />
651 - </Instance>
652 - <Instance>
653 - The {0} element's {1}, {2}, {3}, {4}, {5}, {6}, or {7} attribute was not found; one of these is required.
654 - <Parameter Type="System.String" Name="elementName" />
655 - <Parameter Type="System.String" Name="attributeName1" />
656 - <Parameter Type="System.String" Name="attributeName2" />
657 - <Parameter Type="System.String" Name="attributeName3" />
658 - <Parameter Type="System.String" Name="attributeName4" />
659 - <Parameter Type="System.String" Name="attributeName5" />
660 - <Parameter Type="System.String" Name="attributeName6" />
661 - <Parameter Type="System.String" Name="attributeName7" />
662 - </Instance>
663 - </Message>
664 - <Message Id="ExpectedAttributesWithOtherAttribute" Number="45">
665 - <Instance>
666 - The {0} element's {1} or {2} attribute was not found; at least one of these attributes must be specified.
667 - <Parameter Type="System.String" Name="elementName" />
668 - <Parameter Type="System.String" Name="attributeName1" />
669 - <Parameter Type="System.String" Name="attributeName2" />
670 - </Instance>
671 - <Instance>
672 - The {0} element's {1} or {2} attribute was not found; one of these is required when attribute {3} is present.
673 - <Parameter Type="System.String" Name="elementName" />
674 - <Parameter Type="System.String" Name="attributeName1" />
675 - <Parameter Type="System.String" Name="attributeName2" />
676 - <Parameter Type="System.String" Name="otherAttributeName" />
677 - </Instance>
678 - <Instance>
679 - The {0} element's {1} or {2} attribute was not found; one of these is required when attribute {3} has a value of '{4}'.
680 - <Parameter Type="System.String" Name="elementName" />
681 - <Parameter Type="System.String" Name="attributeName1" />
682 - <Parameter Type="System.String" Name="attributeName2" />
683 - <Parameter Type="System.String" Name="otherAttributeName" />
684 - <Parameter Type="System.String" Name="otherAttributeValue" />
685 - </Instance>
686 - </Message>
687 - <Message Id="ExpectedAttributesWithoutOtherAttribute" Number="46">
688 - <Instance>
689 - The {0} element's {1} or {2} attribute was not found; one of these is required without attribute {3} present.
690 - <Parameter Type="System.String" Name="elementName" />
691 - <Parameter Type="System.String" Name="attributeName1" />
692 - <Parameter Type="System.String" Name="attributeName2" />
693 - <Parameter Type="System.String" Name="otherAttributeName" />
694 - </Instance>
695 - </Message>
696 - <Message Id="MissingTypeLibFile" Number="47">
697 - <Instance>
698 - The {0} element is non-advertised and therefore requires a parent {1} element.
699 - <Parameter Type="System.String" Name="elementName" />
700 - <Parameter Type="System.String" Name="fileElementName" />
701 - </Instance>
702 - </Message>
703 - <Message Id="InvalidDocumentElement" Number="48">
704 - <Instance>
705 - The document element name '{0}' is invalid. A WiX {1} file must use '{2}' as the document element name.
706 - <Parameter Type="System.String" Name="elementName" />
707 - <Parameter Type="System.String" Name="fileType" />
708 - <Parameter Type="System.String" Name="expectedElementName" />
709 - </Instance>
710 - </Message>
711 - <Message Id="ExpectedAttributeInElementOrParent" Number="49">
712 - <Instance>
713 - The {0}/@{1} attribute was not found or empty; it is required, or it can be specified in the parent {2} element.
714 - <Parameter Type="System.String" Name="elementName" />
715 - <Parameter Type="System.String" Name="attributeName" />
716 - <Parameter Type="System.String" Name="parentElementName" />
717 - </Instance>
718 - <Instance>
719 - The {0}/@{1} attribute was not found or empty; it is required, or it can be specified in the parent {2}/@{3} attribute.
720 - <Parameter Type="System.String" Name="elementName" />
721 - <Parameter Type="System.String" Name="attributeName" />
722 - <Parameter Type="System.String" Name="parentElementName" />
723 - <Parameter Type="System.String" Name="parentAttributeName" />
724 - </Instance>
725 - </Message>
726 - <Message Id="UnauthorizedAccess" Number="50" SourceLineNumbers="no">
727 - <Instance>
728 - Access to the path '{0}' is denied.
729 - <Parameter Type="System.String" Name="filePath" />
730 - </Instance>
731 - </Message>
732 - <Message Id="IllegalModuleExclusionLanguageAttributes" Number="51">
733 - <Instance>Cannot set both ExcludeLanguage and ExcludeExceptLanguage attributes on a ModuleExclusion element.</Instance>
734 - </Message>
735 - <Message Id="NoFirstControlSpecified" Number="52">
736 - <Instance>
737 - The '{0}' dialog element does not have a valid tabbable control. You must either have a tabbable control that is not marked TabSkip='yes', or you must mark a control TabSkip='no'. If you have a page with no tabbable controls (a progress page, for example), you might want to set the first Text control to be TabSkip='no'.
738 - <Parameter Type="System.String" Name="dialogName" />
739 - </Instance>
740 - </Message>
741 - <Message Id="NoDataForColumn" Number="53">
742 - <Instance>
743 - There is no data for column '{0}' in a contained row of custom table '{1}'. A non-null value must be supplied for this column.
744 - <Parameter Type="System.String" Name="columnName" />
745 - <Parameter Type="System.String" Name="tableName" />
746 - </Instance>
747 - </Message>
748 - <Message Id="ValueAndMaskMustBeSameLength" Number="54">
749 - <Instance>
750 - The FileTypeMask/@Value and FileTypeMask/@Mask attributes must be the same length.
751 - </Instance>
752 - </Message>
753 - <Message Id="TooManySearchElements" Number="55">
754 - <Instance>
755 - Only one search element can appear under a '{0}' element.
756 - <Parameter Type="System.String" Name="elementName" />
757 - </Instance>
758 - </Message>
759 - <Message Id="IllegalAttributeExceptOnElement" Number="56">
760 - <Instance>
761 - The {1} attribute can only be specified on the {2} element.
762 - <Parameter Type="System.String" Name="elementName" />
763 - <Parameter Type="System.String" Name="attributeName" />
764 - <Parameter Type="System.String" Name="expectedElementName" />
765 - </Instance>
766 - </Message>
767 - <Message Id="SearchElementRequired" Number="57">
768 - <Instance>
769 - A '{0}' element must have a search element as a child.
770 - <Parameter Type="System.String" Name="elementName" />
771 - </Instance>
772 - </Message>
773 - <Message Id="MultipleIdentifiersFound" Number="58">
774 - <Instance>
775 - Under a '{0}' element, multiple identifiers were found: '{1}' and '{2}'. All search elements under this element must have the same id.
776 - <Parameter Type="System.String" Name="elementName" />
777 - <Parameter Type="System.String" Name="identifier" />
778 - <Parameter Type="System.String" Name="mismatchIdentifier" />
779 - </Instance>
780 - </Message>
781 - <Message Id="AdvertiseStateMustMatch" Number="59">
782 - <Instance>
783 - The advertise state of this element: '{0}', does not match the advertise state set on the parent element: '{1}'.
784 - <Parameter Type="System.String" Name="advertiseState" />
785 - <Parameter Type="System.String" Name="parentAdvertiseState" />
786 - </Instance>
787 - </Message>
788 - <Message Id="DuplicateContextValue" Number="60">
789 - <Instance>
790 - The context value '{0}' was duplicated. Context values must be distinct.
791 - <Parameter Type="System.String" Name="contextValue" />
792 - </Instance>
793 - </Message>
794 - <Message Id="RelativePathForRegistryElement" Number="61">
795 - <Instance>
796 - Cannot convert RelativePath into Registry elements.
797 - </Instance>
798 - </Message>
799 - <Message Id="IllegalAttributeWhenNested" Number="62">
800 - <Instance>
801 - The {0}/@{1} attribute cannot be specified when the {0} element is nested underneath a {2} element. If this {0} is a member of a ComponentGroup where ComponentGroup/@{1} is set, then the {0}/@{1} attribute should be removed.
802 - <Parameter Type="System.String" Name="elementName" />
803 - <Parameter Type="System.String" Name="attributeName" />
804 - <Parameter Type="System.String" Name="parentElement" />
805 - </Instance>
806 - </Message>
807 - <Message Id="ExpectedElement" Number="63">
808 - <Instance>
809 - A {0} element must have at least one child element of type {1}.
810 - <Parameter Type="System.String" Name="elementName" />
811 - <Parameter Type="System.String" Name="childName" />
812 - </Instance>
813 - <Instance>
814 - A {0} element must have at least one child element of type {1} or {2}.
815 - <Parameter Type="System.String" Name="elementName" />
816 - <Parameter Type="System.String" Name="childName1" />
817 - <Parameter Type="System.String" Name="childName2" />
818 - </Instance>
819 - <Instance>
820 - A {0} element must have at least one child element of type {1}, {2}, or {3}.
821 - <Parameter Type="System.String" Name="elementName" />
822 - <Parameter Type="System.String" Name="childName1" />
823 - <Parameter Type="System.String" Name="childName2" />
824 - <Parameter Type="System.String" Name="childName3" />
825 - </Instance>
826 - <Instance>
827 - A {0} element must have at least one child element of type {1}, {2}, {3}, or {4}.
828 - <Parameter Type="System.String" Name="elementName" />
829 - <Parameter Type="System.String" Name="childName1" />
830 - <Parameter Type="System.String" Name="childName2" />
831 - <Parameter Type="System.String" Name="childName3" />
832 - <Parameter Type="System.String" Name="childName4" />
833 - </Instance>
834 - </Message>
835 - <Message Id="RegistryRootInvalid" Number="64">
836 - <Instance>
837 - Registry/@Root attribute is invalid on a nested Registry element. Either remove the Root attribute or move the Registry element so it is not nested under another Registry element.
838 - </Instance>
839 - </Message>
840 - <Message Id="IllegalYesNoDefaultValue" Number="65">
841 - <Instance>
842 - The {0}/@{1} attribute's value, '{2}', is not a legal yes/no/default value. The only legal values are 'default', 'no' or 'yes'.
843 - <Parameter Type="System.String" Name="elementName" />
844 - <Parameter Type="System.String" Name="attributeName" />
845 - <Parameter Type="System.String" Name="value" />
846 - </Instance>
847 - </Message>
848 - <Message Id="IllegalAttributeInMergeModule" Number="66">
849 - <Instance>
850 - The {0}/@{1} attribute cannot be specified in a merge module.
851 - <Parameter Type="System.String" Name="elementName" />
852 - <Parameter Type="System.String" Name="attributeName" />
853 - </Instance>
854 - </Message>
855 - <Message Id="GenericReadNotAllowed" Number="67">
856 - <Instance>Permission elements cannot have GenericRead as the only permission specified. Include at least one other permission.</Instance>
857 - </Message>
858 - <Message Id="IllegalAttributeWithInnerText" Number="68">
859 - <Instance>
860 - The {0}/@{1} attribute cannot be specified when the element has body text as well. Specify either the attribute or the body, but not both.
861 - <Parameter Type="System.String" Name="elementName" />
862 - <Parameter Type="System.String" Name="attributeName" />
863 - </Instance>
864 - </Message>
865 - <Message Id="SearchElementRequiredWithAttribute" Number="69">
866 - <Instance>
867 - A {0} element must have a search element as a child when the {0}/@{1} attribute has the value '{2}'.
868 - <Parameter Type="System.String" Name="elementName" />
869 - <Parameter Type="System.String" Name="attributeName" />
870 - <Parameter Type="System.String" Name="attributeValue" />
871 - </Instance>
872 - </Message>
873 - <Message Id="CannotAuthorSpecialProperties" Number="70">
874 - <Instance>
875 - The {0} property was specified. Special MSI properties cannot be authored. Use the attributes on the Property element instead.
876 - <Parameter Type="System.String" Name="propertyName" />
877 - </Instance>
878 - </Message>
879 - <Message Id="NeedSequenceBeforeOrAfter" Number="72">
880 - <Instance>
881 - A {0} element must have a Before attribute, After attribute, or a Sequence attribute.
882 - <Parameter Type="System.String" Name="elementName" />
883 - </Instance>
884 - </Message>
885 - <Message Id="ValueNotSupported" Number="73">
886 - <Instance>
887 - The {0}/@{1} attribute's value, '{2}, is not supported by the Windows Installer.
888 - <Parameter Type="System.String" Name="elementName" />
889 - <Parameter Type="System.String" Name="attributeName" />
890 - <Parameter Type="System.String" Name="attributeValue" />
891 - </Instance>
892 - </Message>
893 - <Message Id="TabbableControlNotAllowedInBillboard" Number="74">
894 - <Instance>
895 - A {0} element was specified with Type='{1}' and TabSkip='no'. Tabbable controls are not allowed in Billboards.
896 - <Parameter Type="System.String" Name="elementName" />
897 - <Parameter Type="System.String" Name="controlType" />
898 - </Instance>
899 - </Message>
900 - <Message Id="CheckBoxValueOnlyValidWithCheckBox" Number="75">
901 - <Instance>
902 - A {0} element was specified with Type='{1}' and a CheckBoxValue. Check box values can only be specified with Type='CheckBox'.
903 - <Parameter Type="System.String" Name="elementName" />
904 - <Parameter Type="System.String" Name="controlType" />
905 - </Instance>
906 - </Message>
907 - <Message Id="CabFileDoesNotExist" Number="76" SourceLineNumbers="no">
908 - <Instance>
909 - Attempted to extract cab '{0}' from merge module '{1}' to directory '{2}'. The cab file was not found. This usually means that you have a merge module without a cabinet inside it.
910 - <Parameter Type="System.String" Name="cabName" />
911 - <Parameter Type="System.String" Name="mergeModulePath" />
912 - <Parameter Type="System.String" Name="directoryName" />
913 - </Instance>
914 - </Message>
915 - <Message Id="RadioButtonTypeInconsistent" Number="77">
916 - <Instance>All RadioButton elements in a RadioButtonGroup must be consistent with their use of the Bitmap, Icon, and Text attributes. Ensure all of the RadioButton elements in this group have the same attribute specified.</Instance>
917 - </Message>
918 - <Message Id="RadioButtonBitmapAndIconDisallowed" Number="78">
919 - <Instance>RadioButtonGroup elements that contain RadioButton elements with Bitmap or Icon attributes set to "yes" can only be specified under a Control element. Move your RadioButtonGroup element as a child of the appropriate Control element.</Instance>
920 - </Message>
921 - <Message Id="IllegalSuppressWarningId" Number="79" SourceLineNumbers="no">
922 - <Instance>
923 - Illegal value '{0}' for the -sw&lt;N&gt; command line option. Specify a particular warning number, like '-sw6' to suppress the warning with ID 6, or '-sw' alone to suppress all warnings.
924 - <Parameter Type="System.String" Name="suppressedId" />
925 - </Instance>
926 - </Message>
927 - <Message Id="PreprocessorIllegalForeachVariable" Number="80">
928 - <Instance>
929 - The variable named '{0}' is not allowed in a foreach expression.
930 - <Parameter Type="System.String" Name="variableName" />
931 - </Instance>
932 - </Message>
933 - <Message Id="PreprocessorMissingParameterPrefix" Number="81">
934 - <Instance>
935 - Could not find the prefix in parameter name: '{0}'.
936 - <Parameter Type="System.String" Name="parameterName" />
937 - </Instance>
938 - </Message>
939 - <Message Id="PreprocessorExtensionForParameterMissing" Number="82">
940 - <Instance>
941 - Could not find the preprocessor extension for parameter '{0}'. A preprocessor extension is expected because the parameter prefix, '{1}', is not one of the standard types: 'env', 'res', 'sys', or 'var'.
942 - <Parameter Type="System.String" Name="parameterName" />
943 - <Parameter Type="System.String" Name="parameterPrefix" />
944 - </Instance>
945 - </Message>
946 - <Message Id="CannotFindFile" Number="83">
947 - <Instance>
948 - The file with id '{0}' and name '{1}' could not be found with source path: '{2}'.
949 - <Parameter Type="System.String" Name="fileId" />
950 - <Parameter Type="System.String" Name="fileName" />
951 - <Parameter Type="System.String" Name="filePath" />
952 - </Instance>
953 - </Message>
954 - <Message Id="BinderFileManagerMissingFile" Number="84">
955 - <Instance>
956 - {0}
957 - <Parameter Type="System.String" Name="exceptionMessage" />
958 - </Instance>
959 - </Message>
960 - <Message Id="ReferenceLoopDetected" Number="86">
961 - <Instance>
962 - A circular reference of groups was detected. The infinite loop includes: {0}. Group references must form a directed acyclic graph.
963 - <Parameter Type="System.String" Name="loopList" />
964 - </Instance>
965 - </Message>
966 - <Message Id="GuidContainsLowercaseLetters" Number="87">
967 - <Instance>
968 - The {0}/@{1} attribute's value, '{2}', is a mixed-case guid. All letters in a guid value should be uppercase.
969 - <Parameter Type="System.String" Name="elementName" />
970 - <Parameter Type="System.String" Name="attributeName" />
971 - <Parameter Type="System.String" Name="value" />
972 - </Instance>
973 - </Message>
974 - <Message Id="InvalidDateTimeFormat" Number="88">
975 - <Instance>
976 - The {0}/@{1} attribute's value '{2}' is not a valid date/time value. A date/time value should follow the format YYYY-MM-DDTHH:mm:ss.
977 - <Parameter Type="System.String" Name="elementName" />
978 - <Parameter Type="System.String" Name="attributeName" />
979 - <Parameter Type="System.String" Name="value" />
980 - </Instance>
981 - </Message>
982 - <Message Id="MultipleEntrySections" Number="89">
983 - <Instance>
984 - Multiple entry sections '{0}' and '{1}' found. Only one entry section may be present in a single target.
985 - <Parameter Type="System.String" Name="sectionName1" />
986 - <Parameter Type="System.String" Name="sectionName2" />
987 - </Instance>
988 - </Message>
989 - <Message Id="MultipleEntrySections2" Number="90">
990 - <Instance>Location of entry section related to previous error.</Instance>
991 - </Message>
992 - <Message Id="DuplicateSymbol" Number="91">
993 - <Instance>
994 - Duplicate symbol '{0}' found. This typically means that an Id is duplicated. Access modifiers (internal, protected, private) cannot prevent these conflicts. Ensure all your identifiers of a given type (File, Component, Feature) are unique.
995 - <Parameter Type="System.String" Name="symbolName" />
996 - </Instance>
997 - <Instance>
998 - Duplicate symbol '{0}' referenced by {1}. This typically means that an Id is duplicated. Ensure all your identifiers of a given type (File, Component, Feature) are unique or use an access modifier to scope the identfier.
999 - <Parameter Type="System.String" Name="symbolName" />
1000 - <Parameter Type="System.String" Name="referencingSourceLineNumber" />
1001 - </Instance>
1002 - </Message>
1003 - <Message Id="DuplicateSymbol2" Number="92">
1004 - <Instance>Location of symbol related to previous error.</Instance>
1005 - </Message>
1006 - <Message Id="MissingEntrySection" Number="93" SourceLineNumbers="no">
1007 - <Instance>
1008 - Could not find entry section in provided list of intermediates. Expected section of type '{0}'.
1009 - <Parameter Type="System.String" Name="sectionType" />
1010 - </Instance>
1011 - </Message>
1012 - <Message Id="UnresolvedReference" Number="94">
1013 - <Instance>
1014 - The identifier '{0}' could not be found. Ensure you have typed the reference correctly and that all the necessary inputs are provided to the linker.
1015 - <Parameter Type="System.String" Name="symbolName" />
1016 - </Instance>
1017 - <Instance>
1018 - The identifier '{0}' is inaccessible due to its protection level.
1019 - <Parameter Type="System.String" Name="symbolName" />
1020 - <Parameter Type="WixToolset.Data.AccessModifier" Name="accessModifier" />
1021 - </Instance>
1022 - </Message>
1023 - <Message Id="MultiplePrimaryReferences" Number="95">
1024 - <Instance>
1025 - Multiple primary references were found for {0} '{1}' in {2} '{3}' and {4} '{5}'.
1026 - <Parameter Type="System.String" Name="crefChildType" />
1027 - <Parameter Type="System.String" Name="crefChildId" />
1028 - <Parameter Type="System.String" Name="crefParentType" />
1029 - <Parameter Type="System.String" Name="crefParentId" />
1030 - <Parameter Type="System.String" Name="conflictParentType" />
1031 - <Parameter Type="System.String" Name="conflictParentId" />
1032 - </Instance>
1033 - </Message>
1034 - <Message Id="ComponentReferencedTwice" Number="96">
1035 - <Instance>
1036 - Component {0} cannot be contained in a Module twice.
1037 - <Parameter Type="System.String" Name="crefChildId" />
1038 - </Instance>
1039 - </Message>
1040 - <Message Id="DuplicateModuleFileIdentifier" Number="97">
1041 - <Instance>
1042 - The merge module '{0}' contains a file identifier, '{1}', that is duplicated either in another merge module or in a File/@Id attribute. File identifiers must be unique. Please change one of the file identifiers to a different value.
1043 - <Parameter Type="System.String" Name="moduleId" />
1044 - <Parameter Type="System.String" Name="fileId" />
1045 - </Instance>
1046 - </Message>
1047 - <Message Id="DuplicateModuleCaseInsensitiveFileIdentifier" Number="98">
1048 - <Instance>
1049 - The merge module '{0}' contains 2 or more file identifiers that only differ by case: '{1}' and '{2}'. The WiX toolset extracts merge module files to the file system using these identifiers. Since most file systems are not case-sensitive a collision is likely. Please contact the owner of the merge module for a fix.
1050 - <Parameter Type="System.String" Name="moduleId" />
1051 - <Parameter Type="System.String" Name="fileId1" />
1052 - <Parameter Type="System.String" Name="fileId2" />
1053 - </Instance>
1054 - </Message>
1055 - <Message Id="ImplicitComponentKeyPath" Number="99">
1056 - <Instance>
1057 - The component '{0}' does not have an explicit key path specified. If the ordering of the elements under the Component element changes, the key path will also change. To prevent accidental changes, the key path should be set to 'yes' in one of the following locations: Component/@KeyPath, File/@KeyPath, ODBCDataSource/@KeyPath, or Registry/@KeyPath.
1058 - <Parameter Type="System.String" Name="componentId" />
1059 - </Instance>
1060 - </Message>
1061 - <Message Id="DuplicateLocalizationIdentifier" Number="100">
1062 - <Instance>
1063 - The localization identifier '{0}' has been duplicated in multiple locations. Please resolve the conflict.
1064 - <Parameter Type="System.String" Name="localizationId" />
1065 - </Instance>
1066 - </Message>
1067 - <Message Id="LocalizationVariableUnknown" Number="102">
1068 - <Instance>
1069 - The localization variable !(loc.{0}) is unknown. Please ensure the variable is defined.
1070 - <Parameter Type="System.String" Name="variableId" />
1071 - </Instance>
1072 - </Message>
1073 - <Message Id="FileNotFound" Number="103">
1074 - <Instance>
1075 - The system cannot find the file '{0}'.
1076 - <Parameter Type="System.String" Name="file" />
1077 - </Instance>
1078 - <Instance>
1079 - The system cannot find the file '{0}' with type '{1}'.
1080 - <Parameter Type="System.String" Name="file" />
1081 - <Parameter Type="System.String" Name="fileType" />
1082 - </Instance>
1083 - </Message>
1084 - <Message Id="InvalidXml" Number="104">
1085 - <Instance>
1086 - Not a valid {0} file; detail: {1}
1087 - <Parameter Type="System.String" Name="fileType" />
1088 - <Parameter Type="System.String" Name="detail" />
1089 - </Instance>
1090 - </Message>
1091 - <Message Id="ProgIdNestedTooDeep" Number="105">
1092 - <Instance>ProgId elements may not be nested more than 1 level deep.</Instance>
1093 - </Message>
1094 - <Message Id="CanNotHaveTwoParents" Number="106">
1095 - <Instance>
1096 - The DirectorySearchRef {0} can not have a Parent attribute {1} and also be nested under parent element {2}
1097 - <Parameter Type="System.String" Name="directorySearch" />
1098 - <Parameter Type="System.String" Name="parentAttribute" />
1099 - <Parameter Type="System.String" Name="parentElement" />
1100 - </Instance>
1101 - </Message>
1102 - <Message Id="SchemaValidationFailed" Number="107">
1103 - <Instance>
1104 - Schema validation failed with the following error at line {1}, column {2}: {0}
1105 - <Parameter Type="System.String" Name="validationError" />
1106 - <Parameter Type="System.Int32" Name="lineNumber" />
1107 - <Parameter Type="System.Int32" Name="linePosition" />
1108 - </Instance>
1109 - </Message>
1110 - <Message Id="IllegalVersionValue" Number="108">
1111 - <Instance>
1112 - The {0}/@{1} attribute's value, '{2}', is not a valid version. Legal version values should look like 'x.x.x.x' where x is an integer from 0 to 65534.
1113 - <Parameter Type="System.String" Name="elementName" />
1114 - <Parameter Type="System.String" Name="attributeName" />
1115 - <Parameter Type="System.String" Name="value" />
1116 - </Instance>
1117 - </Message>
1118 - <Message Id="CustomTableNameTooLong" Number="109">
1119 - <Instance>
1120 - The {0}/@{1} attribute's value, '{2}', is too long for a table name. It cannot be more than than 31 characters long.
1121 - <Parameter Type="System.String" Name="elementName" />
1122 - <Parameter Type="System.String" Name="attributeName" />
1123 - <Parameter Type="System.String" Name="value" />
1124 - </Instance>
1125 - </Message>
1126 - <Message Id="CustomTableIllegalColumnWidth" Number="110">
1127 - <Instance>
1128 - The {0}/@{1} attribute's value, '{2}', is not a valid column width. Valid column widths are 2 or 4.
1129 - <Parameter Type="System.String" Name="elementName" />
1130 - <Parameter Type="System.String" Name="attributeName" />
1131 - <Parameter Type="System.Int32" Name="value" />
1132 - </Instance>
1133 - </Message>
1134 - <Message Id="CustomTableMissingPrimaryKey" Number="111">
1135 - <Instance>The CustomTable is missing a Column element with the PrimaryKey attribute set to 'yes'. At least one column must be marked as the primary key.</Instance>
1136 - </Message>
1137 - <Message Id="TypeSpecificationForExtensionRequired" Number="113" SourceLineNumbers="no">
1138 - <Instance>
1139 - The parameter '{0}' must be followed by the extension's type specification. The type specification should be a fully qualified class and assembly identity, for example: "MyNamespace.MyClass,myextension.dll".
1140 - <Parameter Type="System.String" Name="parameter" />
1141 - </Instance>
1142 - </Message>
1143 - <Message Id="FilePathRequired" SourceLineNumbers="no" Number="114">
1144 - <Instance>
1145 - The parameter '{0}' must be followed by a file path.
1146 - <Parameter Type="System.String" Name="parameter" />
1147 - </Instance>
1148 - </Message>
1149 - <Message Id="DirectoryPathRequired" Number="115" SourceLineNumbers="no">
1150 - <Instance>
1151 - The parameter '{0}' must be followed by a directory path.
1152 - <Parameter Type="System.String" Name="parameter" />
1153 - </Instance>
1154 - </Message>
1155 - <Message Id="FileOrDirectoryPathRequired" Number="116" SourceLineNumbers="no">
1156 - <Instance>
1157 - The parameter '{0}' must be followed by a file or directory path. To specify a directory path the string must end with a backslash, for example: "C:\Path\".
1158 - <Parameter Type="System.String" Name="parameter" />
1159 - </Instance>
1160 - </Message>
1161 - <Message Id="PathCannotContainQuote" Number="117" SourceLineNumbers="no">
1162 - <Instance>
1163 - Path '{0}' contains a literal quote character. Quotes are often accidentally introduced when trying to refer to a directory path with spaces in it, such as "C:\Out Directory\" -- the backslash before the quote acts an escape character. The correct representation for that path is: "C:\Out Directory\\".
1164 - <Parameter Type="System.String" Name="fileName" />
1165 - </Instance>
1166 - </Message>
1167 - <Message Id="AdditionalArgumentUnexpected" Number="118" SourceLineNumbers="no">
1168 - <Instance>
1169 - Additional argument '{0}' was unexpected. Remove the argument and add the '-?' switch for more information.
1170 - <Parameter Type="System.String" Name="argument" />
1171 - </Instance>
1172 - </Message>
1173 - <Message Id="RegistryNameValueIncorrect" Number="119">
1174 - <Instance>
1175 - The {0}/@{1} attribute's value, '{2}', is incorrect. It should not contain values of '+', '-', or '*' when the {0}/@Value attribute is empty. Instead, use the proper element and attributes: for Name='+' use RegistryKey/@Action='createKey', for Name='-' use RemoveRegistryKey/@Action='removeOnUninstall', for Name='*' use RegistryKey/@Action='createAndRemoveOnUninstall'.
1176 - <Parameter Type="System.String" Name="elementName" />
1177 - <Parameter Type="System.String" Name="attributeName" />
1178 - <Parameter Type="System.String" Name="value" />
1179 - </Instance>
1180 - </Message>
1181 - <Message Id="FamilyNameTooLong" Number="120">
1182 - <Instance>
1183 - The {0}/@{1} attribute's value, '{2}', is {3} characters long. This is too long for a family name because the maximum allowed length is 8 characters long.
1184 - <Parameter Type="System.String" Name="elementName" />
1185 - <Parameter Type="System.String" Name="attributeName" />
1186 - <Parameter Type="System.String" Name="value" />
1187 - <Parameter Type="System.Int32" Name="length" />
1188 - </Instance>
1189 - </Message>
1190 - <Message Id="IllegalFamilyName" Number="121">
1191 - <Instance>
1192 - The {0}/@{1} attribute's value, '{2}', contains illegal characters for a family name. Legal values include letters, numbers, and underscores.
1193 - <Parameter Type="System.String" Name="elementName" />
1194 - <Parameter Type="System.String" Name="attributeName" />
1195 - <Parameter Type="System.String" Name="value" />
1196 - </Instance>
1197 - </Message>
1198 - <Message Id="IllegalLongValue" Number="122">
1199 - <Instance>
1200 - The {0}/@{1} attribute's value, '{2}', is not a legal long value. Legal long values are from -9,223,372,036,854,775,808 to 9,223,372,036,854,775,807.
1201 - <Parameter Type="System.String" Name="elementName" />
1202 - <Parameter Type="System.String" Name="attributeName" />
1203 - <Parameter Type="System.String" Name="value" />
1204 - </Instance>
1205 - </Message>
1206 - <Message Id="IntegralValueOutOfRange" Number="123">
1207 - <Instance>
1208 - The {0}/@{1} attribute's value, '{2}', is not in the range of legal values. Legal values for this attribute are from {3} to {4}.
1209 - <Parameter Type="System.String" Name="elementName" />
1210 - <Parameter Type="System.String" Name="attributeName" />
1211 - <Parameter Type="System.Int32" Name="value" />
1212 - <Parameter Type="System.Int32" Name="minimum" />
1213 - <Parameter Type="System.Int32" Name="maximum" />
1214 - </Instance>
1215 - <Instance>
1216 - The {0}/@{1} attribute's value, '{2}', is not in the range of legal values. Legal values for this attribute are from {3} to {4}.
1217 - <Parameter Type="System.String" Name="elementName" />
1218 - <Parameter Type="System.String" Name="attributeName" />
1219 - <Parameter Type="System.Int64" Name="value" />
1220 - <Parameter Type="System.Int64" Name="minimum" />
1221 - <Parameter Type="System.Int64" Name="maximum" />
1222 - </Instance>
1223 - </Message>
1224 - <Message Id="DuplicateExtensionXmlSchemaNamespace" Number="125" SourceLineNumbers="no">
1225 - <Instance>
1226 - The extension '{0}' uses the same xml schema namespace, '{1}', as previously loaded extension '{2}'. Please either remove one of the extensions or rename the xml schema namespace to avoid the collision.
1227 - <Parameter Type="System.String" Name="extension" />
1228 - <Parameter Type="System.String" Name="extensionXmlSchemaNamespace" />
1229 - <Parameter Type="System.String" Name="collidingExtension" />
1230 - </Instance>
1231 - </Message>
1232 - <Message Id="DuplicateExtensionTable" Number="126" SourceLineNumbers="no">
1233 - <Instance>
1234 - The extension '{0}' contains a definition for table '{1}' that collides with a previously loaded table definition. Please remove one of the conflicting extensions or rename one of the tables to avoid the collision.
1235 - <Parameter Type="System.String" Name="extension" />
1236 - <Parameter Type="System.String" Name="tableName" />
1237 - </Instance>
1238 - </Message>
1239 - <Message Id="DuplicateExtensionPreprocessorType" Number="127" SourceLineNumbers="no">
1240 - <Instance>
1241 - The extension '{0}' uses the same preprocessor variable prefix, '{1}', as previously loaded extension '{2}'. Please remove one of the extensions or rename the prefix to avoid the collision.
1242 - <Parameter Type="System.String" Name="extension" />
1243 - <Parameter Type="System.String" Name="variablePrefix" />
1244 - <Parameter Type="System.String" Name="collidingExtension" />
1245 - </Instance>
1246 - </Message>
1247 - <Message Id="FileInUse" Number="128">
1248 - <Instance>
1249 - The process can not access the file '{0}' because it is being used by another process.
1250 - <Parameter Type="System.String" Name="file" />
1251 - </Instance>
1252 - </Message>
1253 - <Message Id="CannotOpenMergeModule" Number="129">
1254 - <Instance>
1255 - Cannot open the merge module '{0}' from file '{1}'.
1256 - <Parameter Type="System.String" Name="mergeModuleIdentifier" />
1257 - <Parameter Type="System.String" Name="mergeModuleFile" />
1258 - </Instance>
1259 - </Message>
1260 - <Message Id="DuplicatePrimaryKey" Number="130">
1261 - <Instance>
1262 - The primary key '{0}' is duplicated in table '{1}'. Please remove one of the entries or rename a part of the primary key to avoid the collision.
1263 - <Parameter Type="System.String" Name="primaryKey" />
1264 - <Parameter Type="System.String" Name="tableName" />
1265 - </Instance>
1266 - </Message>
1267 - <Message Id="FileIdentifierNotFound" Number="131">
1268 - <Instance>
1269 - The file row with identifier '{0}' could not be found.
1270 - <Parameter Type="System.String" Name="fileIdentifier" />
1271 - </Instance>
1272 - </Message>
1273 - <Message Id="InvalidAssemblyFile" Number="132">
1274 - <Instance>
1275 - The assembly file '{0}' appears to be invalid. Please ensure this is a valid assembly file and that the user has the appropriate access rights to this file. More information: {1}
1276 - <Parameter Type="System.String" Name="assemblyFile" />
1277 - <Parameter Type="System.String" Name="moreInformation" />
1278 - </Instance>
1279 - </Message>
1280 - <Message Id="ExpectedEndElement" Number="133">
1281 - <Instance>
1282 - The end element matching the '{0}' start element was not found.
1283 - <Parameter Type="System.String" Name="elementName" />
1284 - </Instance>
1285 - </Message>
1286 - <Message Id="IllegalCodepage" Number="134" SourceLineNumbers="no">
1287 - <Instance>
1288 - The code page '{0}' is not a valid Windows code page. Update the database's code page by modifying one of the following attributes: Product/@Codepage, Module/@Codepage, Patch/@Codepage, PatchCreation/@Codepage, or WixLocalization/@Codepage.
1289 - <Parameter Type="System.Int32" Name="codepage" />
1290 - </Instance>
1291 - </Message>
1292 - <Message Id="ExpectedMediaCabinet" Number="135">
1293 - <Instance>
1294 - The file '{0}' should be compressed but is not part of a compressed media. Files will be compressed if either the File/@Compressed or Package/@Compressed attributes are set to 'yes'. This can be fixed by setting the Media/@Cabinet attribute for media '{1}'.
1295 - <Parameter Type="System.String" Name="fileId" />
1296 - <Parameter Type="System.Int32" Name="diskId" />
1297 - </Instance>
1298 - </Message>
1299 - <Message Id="InvalidIdt" Number="136">
1300 - <Instance>
1301 - There was an error importing the file '{0}'.
1302 - <Parameter Type="System.String" Name="idtFile" />
1303 - </Instance>
1304 - <Instance>
1305 - There was an error importing table '{1}' from file '{0}'.
1306 - <Parameter Type="System.String" Name="idtFile" />
1307 - <Parameter Type="System.String" Name="tableName" />
1308 - </Instance>
1309 - </Message>
1310 - <Message Id="InvalidSequenceTable" Number="137" SourceLineNumbers="no">
1311 - <Instance>
1312 - Found an invalid sequence table '{0}'.
1313 - <Parameter Type="System.String" Name="sequenceTableName" />
1314 - </Instance>
1315 - </Message>
1316 - <Message Id="ExpectedDirectory" Number="138" SourceLineNumbers="no">
1317 - <Instance>
1318 - The directory '{0}' could not be found.
1319 - <Parameter Type="System.String" Name="directory" />
1320 - </Instance>
1321 - </Message>
1322 - <Message Id="ComponentExpectedFeature" Number="139">
1323 - <Instance>
1324 - The component '{0}' is not assigned to a feature. The component's {1} '{2}' requires it to be assigned to at least one feature.
1325 - <Parameter Type="System.String" Name="component" />
1326 - <Parameter Type="System.String" Name="type" />
1327 - <Parameter Type="System.String" Name="target" />
1328 - </Instance>
1329 - </Message>
1330 - <Message Id="RecursiveAction" Number="140" SourceLineNumbers="no">
1331 - <Instance>
1332 - The action '{0}' is recursively placed in the '{1}' table.
1333 - <Parameter Type="System.String" Name="action" />
1334 - <Parameter Type="System.String" Name="tableName" />
1335 - </Instance>
1336 - </Message>
1337 - <Message Id="VersionMismatch" Number="141">
1338 - <Instance>
1339 - The {0} file format version {1} is not compatible with the expected {0} file format version {2}.
1340 - <Parameter Type="System.String" Name="fileType" />
1341 - <Parameter Type="System.String" Name="version" />
1342 - <Parameter Type="System.String" Name="expectedVersion" />
1343 - </Instance>
1344 - </Message>
1345 - <Message Id="UnexpectedContentNode" Number="142">
1346 - <Instance>
1347 - The {0} element contains an unexpected xml node of type {1}.
1348 - <Parameter Type="System.String" Name="elementName" />
1349 - <Parameter Type="System.String" Name="unexpectedNodeType" />
1350 - </Instance>
1351 - </Message>
1352 - <Message Id="UnexpectedColumnCount" Number="143">
1353 - <Instance>
1354 - A parsed row has more fields that contain data for table '{0}' than are defined. This is potentially because a standard table is being redefined as a custom table or is based on an older table schema.
1355 - <Parameter Type="System.String" Name="tableName" />
1356 - </Instance>
1357 - </Message>
1358 - <Message Id="InvalidExtension" Number="144" SourceLineNumbers="no">
1359 - <Instance>
1360 - The extension '{0}' could not be loaded.
1361 - <Parameter Type="System.String" Name="extension" />
1362 - </Instance>
1363 - <Instance>
1364 - The extension '{0}' could not be loaded because of the following reason: {1}
1365 - <Parameter Type="System.String" Name="extension" />
1366 - <Parameter Type="System.String" Name="invalidReason" />
1367 - </Instance>
1368 - <Instance>
1369 - The extension '{0}' is the wrong type: '{1}'. The expected type was '{2}'.
1370 - <Parameter Type="System.String" Name="extension" />
1371 - <Parameter Type="System.String" Name="extensionType" />
1372 - <Parameter Type="System.String" Name="expectedType" />
1373 - </Instance>
1374 - <Instance>
1375 - The extension '{0}' is the wrong type: '{1}'. The expected type was '{2}' or '{3}'.
1376 - <Parameter Type="System.String" Name="extension" />
1377 - <Parameter Type="System.String" Name="extensionType" />
1378 - <Parameter Type="System.String" Name="expectedType1" />
1379 - <Parameter Type="System.String" Name="expectedType2" />
1380 - </Instance>
1381 - </Message>
1382 - <Message Id="InvalidSubExpression" Number="145">
1383 - <Instance>
1384 - Found invalid subexpression '{0}' in expression '{1}'.
1385 - <Parameter Type="System.String" Name="subExpression" />
1386 - <Parameter Type="System.String" Name="expression" />
1387 - </Instance>
1388 - </Message>
1389 - <Message Id="UnmatchedPreprocessorInstruction" Number="146">
1390 - <Instance>
1391 - Found a &lt;?{1}?&gt; processing instruction without a matching &lt;?{0}?&gt; before it.
1392 - <Parameter Type="System.String" Name="beginInstruction" />
1393 - <Parameter Type="System.String" Name="endInstruction" />
1394 - </Instance>
1395 - </Message>
1396 - <Message Id="NonterminatedPreprocessorInstruction" Number="147">
1397 - <Instance>
1398 - Found a &lt;?{0}?&gt; processing instruction without a matching &lt;?{1}?&gt; after it.
1399 - <Parameter Type="System.String" Name="beginInstruction" />
1400 - <Parameter Type="System.String" Name="endInstruction" />
1401 - </Instance>
1402 - </Message>
1403 - <Message Id="ExpectedExpressionAfterNot" Number="148">
1404 - <Instance>
1405 - Expecting an argument for 'NOT' in expression '{0}'.
1406 - <Parameter Type="System.String" Name="expression" />
1407 - </Instance>
1408 - </Message>
1409 - <Message Id="InvalidPreprocessorVariable" Number="149">
1410 - <Instance>
1411 - Ill-formed preprocessor variable '$({0})'. Variables must have a prefix (like 'var.', 'env.', or 'sys.') and a name at least 1 character long. If the literal string '$({0})' is desired, use '$$({0})'.
1412 - <Parameter Type="System.String" Name="variable" />
1413 - </Instance>
1414 - </Message>
1415 - <Message Id="UndefinedPreprocessorVariable" Number="150">
1416 - <Instance>
1417 - Undefined preprocessor variable '$({0})'.
1418 - <Parameter Type="System.String" Name="variableName" />
1419 - </Instance>
1420 - </Message>
1421 - <Message Id="IllegalDefineStatement" Number="151">
1422 - <Instance>
1423 - The define statement '&lt;?define {0}?&gt;' is not well-formed. Define statements should be in the form &lt;?define variableName = "variable value"?&gt;.
1424 - <Parameter Type="System.String" Name="defineStatement" />
1425 - </Instance>
1426 - </Message>
1427 - <Message Id="VariableDeclarationCollision" Number="152">
1428 - <Instance>
1429 - The variable '{0}' with value '{1}' was previously declared with value '{2}'.
1430 - <Parameter Type="System.String" Name="variableName" />
1431 - <Parameter Type="System.String" Name="variableValue" />
1432 - <Parameter Type="System.String" Name="variableCollidingValue" />
1433 - </Instance>
1434 - </Message>
1435 - <Message Id="CannotReundefineVariable" Number="153">
1436 - <Instance>
1437 - The variable '{0}' cannot be undefined because its already undefined.
1438 - <Parameter Type="System.String" Name="variableName" />
1439 - </Instance>
1440 - </Message>
1441 - <Message Id="IllegalForeach" Number="154">
1442 - <Instance>
1443 - The foreach statement '{0}' is illegal. The proper format for foreach is &lt;?foreach varName in valueList?&gt;.
1444 - <Parameter Type="System.String" Name="foreachStatement" />
1445 - </Instance>
1446 - </Message>
1447 - <Message Id="IllegalParentAttributeWhenNested" Number="155">
1448 - <Instance>
1449 - The {0}/@{1} attribute cannot be specified when a {2} element is nested underneath the {0} element.
1450 - <Parameter Type="System.String" Name="parentElementName" />
1451 - <Parameter Type="System.String" Name="parentAttributeName" />
1452 - <Parameter Type="System.String" Name="childElement" />
1453 - </Instance>
1454 - </Message>
1455 - <Message Id="ExpectedEndforeach" Number="156">
1456 - <Instance>A &lt;?foreach?&gt; statement was found that had no matching &lt;?endforeach?&gt;.</Instance>
1457 - </Message>
1458 - <Message Id="UnmatchedQuotesInExpression" Number="158">
1459 - <Instance>
1460 - The quotes don't match in the expression '{0}'.
1461 - <Parameter Type="System.String" Name="expression" />
1462 - </Instance>
1463 - </Message>
1464 - <Message Id="UnmatchedParenthesisInExpression" Number="159">
1465 - <Instance>
1466 - The parenthesis don't match in the expression '{0}'.
1467 - <Parameter Type="System.String" Name="expression" />
1468 - </Instance>
1469 - </Message>
1470 - <Message Id="ExpectedVariable" Number="160">
1471 - <Instance>
1472 - A required variable was missing in the expression '{0}'.
1473 - <Parameter Type="System.String" Name="expression" />
1474 - </Instance>
1475 - </Message>
1476 - <Message Id="UnexpectedLiteral" Number="161">
1477 - <Instance>
1478 - An unexpected literal was found in the expression '{0}'.
1479 - <Parameter Type="System.String" Name="expression" />
1480 - </Instance>
1481 - </Message>
1482 - <Message Id="IllegalIntegerInExpression" Number="162">
1483 - <Instance>
1484 - An illegal number was found in the expression '{0}'.
1485 - <Parameter Type="System.String" Name="expression" />
1486 - </Instance>
1487 - </Message>
1488 - <Message Id="UnexpectedPreprocessorOperator" Number="163">
1489 - <Instance>
1490 - The operator '{0}' is unexpected.
1491 - <Parameter Type="System.String" Name="operator" />
1492 - </Instance>
1493 - </Message>
1494 - <Message Id="UnexpectedEmptySubexpression" Number="164">
1495 - <Instance>
1496 - The empty subexpression is unexpected in the expression '{0}'.
1497 - <Parameter Type="System.String" Name="expression" />
1498 - </Instance>
1499 - </Message>
1500 - <Message Id="UnexpectedCustomTableColumn" Number="165">
1501 - <Instance>
1502 - The custom table column '{0}' is unknown.
1503 - <Parameter Type="System.String" Name="column" />
1504 - </Instance>
1505 - </Message>
1506 - <Message Id="UnknownCustomTableColumnType" Number="166">
1507 - <Instance>
1508 - Encountered an unknown custom table column type '{0}'.
1509 - <Parameter Type="System.String" Name="columnType" />
1510 - </Instance>
1511 - </Message>
1512 - <Message Id="IllegalFileCompressionAttributes" Number="167">
1513 - <Instance>Cannot have both the MsidbFileAttributesCompressed and MsidbFileAttributesNoncompressed options set in a file attributes column.</Instance>
1514 - </Message>
1515 - <Message Id="OverridableActionCollision" Number="168">
1516 - <Instance>
1517 - The {0} table contains an action '{1}' that is declared overridable in two different locations. Please remove one of the actions or the Overridable='yes' attribute from one of the actions.
1518 - <Parameter Type="System.String" Name="sequenceTableName" />
1519 - <Parameter Type="System.String" Name="actionName" />
1520 - </Instance>
1521 - </Message>
1522 - <Message Id="OverridableActionCollision2" Number="169">
1523 - <Instance>The location of the action related to previous error.</Instance>
1524 - </Message>
1525 - <Message Id="ActionCollision" Number="170">
1526 - <Instance>
1527 - The {0} table contains an action '{1}' that is declared in two different locations. Please remove one of the actions or set the Overridable='yes' attribute on one of their elements.
1528 - <Parameter Type="System.String" Name="sequenceTableName" />
1529 - <Parameter Type="System.String" Name="actionName" />
1530 - </Instance>
1531 - </Message>
1532 - <Message Id="ActionCollision2" Number="171">
1533 - <Instance>The location of the action related to previous error.</Instance>
1534 - </Message>
1535 - <Message Id="SuppressNonoverridableAction" Number="172">
1536 - <Instance>
1537 - The {0} table contains an action '{1}' that cannot be suppressed because it is not declared overridable in the base definition. Please stop suppressing the action or make it overridable in its base declaration.
1538 - <Parameter Type="System.String" Name="sequenceTableName" />
1539 - <Parameter Type="System.String" Name="actionName" />
1540 - </Instance>
1541 - </Message>
1542 - <Message Id="SuppressNonoverridableAction2" Number="173">
1543 - <Instance>The location of the non-overridable definition of the action related to previous error.</Instance>
1544 - </Message>
1545 - <Message Id="CustomActionSequencedInModule" Number="174">
1546 - <Instance>
1547 - The {0} table contains a custom action '{1}' that has a sequence number specified. The Sequence attribute is not allowed for custom actions in a merge module. Please remove the action or use the Before or After attributes to specify where this action should be sequenced relative to another action.
1548 - <Parameter Type="System.String" Name="sequenceTableName" />
1549 - <Parameter Type="System.String" Name="actionName" />
1550 - </Instance>
1551 - </Message>
1552 - <Message Id="StandardActionRelativelyScheduledInModule" Number="175">
1553 - <Instance>
1554 - The {0} table contains a standard action '{1}' that does not have a sequence number specified. The Sequence attribute is required for standard actions in a merge module. Please remove the action or use the Sequence attribute.
1555 - <Parameter Type="System.String" Name="sequenceTableName" />
1556 - <Parameter Type="System.String" Name="actionName" />
1557 - </Instance>
1558 - </Message>
1559 - <Message Id="ActionCircularDependency" Number="176">
1560 - <Instance>
1561 - The {0} table contains an action '{1}' that is scheduled to come before or after action '{2}', which is also scheduled to come before or after action '{1}'. Please remove this circular dependency by changing the Before or After attribute for one of the actions.
1562 - <Parameter Type="System.String" Name="sequenceTableName" />
1563 - <Parameter Type="System.String" Name="actionName1" />
1564 - <Parameter Type="System.String" Name="actionName2" />
1565 - </Instance>
1566 - </Message>
1567 - <Message Id="ActionScheduledRelativeToTerminationAction" Number="177">
1568 - <Instance>
1569 - The {0} table contains an action '{1}' that is scheduled to come before or after action '{2}', which is a special action which only occurs when the installer terminates. These special actions can be identified by their negative sequence numbers. Please schedule the action '{1}' to come before or after a different action.
1570 - <Parameter Type="System.String" Name="sequenceTableName" />
1571 - <Parameter Type="System.String" Name="actionName1" />
1572 - <Parameter Type="System.String" Name="actionName2" />
1573 - </Instance>
1574 - </Message>
1575 - <Message Id="ActionScheduledRelativeToTerminationAction2" Number="178">
1576 - <Instance>The location of the special termination action related to previous error(s).</Instance>
1577 - </Message>
1578 - <Message Id="NoUniqueActionSequenceNumber" Number="179">
1579 - <Instance>
1580 - The {0} table contains an action '{1}' which cannot have a unique sequence number because it is scheduled before or after action '{2}'. There is not enough room before or after this action to assign a unique sequence number. Please schedule one of the actions differently so that it will be in a position with more sequence numbers available. Please note that sequence numbers must be an integer in the range 1 - 32767 (inclusive).
1581 - <Parameter Type="System.String" Name="sequenceTableName" />
1582 - <Parameter Type="System.String" Name="actionName1" />
1583 - <Parameter Type="System.String" Name="actionName2" />
1584 - </Instance>
1585 - </Message>
1586 - <Message Id="NoUniqueActionSequenceNumber2" Number="180">
1587 - <Instance>The location of the sequenced action related to previous error.</Instance>
1588 - </Message>
1589 - <Message Id="ActionScheduledRelativeToItself" Number="181">
1590 - <Instance>
1591 - The {0}/@{1} attribute's value '{2}' is invalid because it would make this action dependent upon itself. Please change the value to the name of a different action.
1592 - <Parameter Type="System.String" Name="elementName" />
1593 - <Parameter Type="System.String" Name="attributeName" />
1594 - <Parameter Type="System.String" Name="attributeValue" />
1595 - </Instance>
1596 - </Message>
1597 - <Message Id="MissingTableDefinition" Number="182" SourceLineNumbers="no">
1598 - <Instance>
1599 - Cannot find the table definitions for the '{0}' table. This is likely due to a typing error or missing extension. Please ensure all the necessary extensions are supplied on the command line with the -ext parameter.
1600 - <Parameter Type="System.String" Name="tableName" />
1601 - </Instance>
1602 - </Message>
1603 - <Message Id="ExpectedRowInPatchCreationPackage" Number="183" SourceLineNumbers="no">
1604 - <Instance>
1605 - Could not find a row in the '{0}' table for this patch creation package. Patch creation packages must contain at least one row in the '{0}' table.
1606 - <Parameter Type="System.String" Name="tableName" />
1607 - </Instance>
1608 - </Message>
1609 - <Message Id="UnexpectedTableInMergeModule" Number="184">
1610 - <Instance>
1611 - An unexpected row in the '{0}' table was found in this merge module. Merge modules cannot contain the '{0}' table.
1612 - <Parameter Type="System.String" Name="tableName" />
1613 - </Instance>
1614 - </Message>
1615 - <Message Id="UnexpectedTableInPatchCreationPackage" Number="185">
1616 - <Instance>
1617 - An unexpected row in the '{0}' table was found in this patch creation package. Patch creation packages cannot contain the '{0}' table.
1618 - <Parameter Type="System.String" Name="tableName" />
1619 - </Instance>
1620 - </Message>
1621 - <Message Id="MergeExcludedModule" Number="186">
1622 - <Instance>
1623 - The module '{0}' cannot be merged because it excludes or is excluded by the merge module with signature '{1}'.
1624 - <Parameter Type="System.String" Name="mergeId" />
1625 - <Parameter Type="System.String" Name="otherMergeId" />
1626 - </Instance>
1627 - </Message>
1628 - <Message Id="MergeFeatureRequired" Number="187">
1629 - <Instance>
1630 - The {0} table contains a row with primary key(s) '{1}' which requires a feature to properly merge from the merge module '{2}'. Nest a MergeRef element with an Id attribute set to the value '{3}' under a Feature element to fix this error.
1631 - <Parameter Type="System.String" Name="tableName" />
1632 - <Parameter Type="System.String" Name="primaryKeys" />
1633 - <Parameter Type="System.String" Name="mergeModuleFile" />
1634 - <Parameter Type="System.String" Name="mergeId" />
1635 - </Instance>
1636 - </Message>
1637 - <Message Id="MergeLanguageFailed" Number="188">
1638 - <Instance>
1639 - The language '{0}' is supported but uses an invalid language transform in the merge module '{1}'.
1640 - <Parameter Type="System.Int16" Name="language" />
1641 - <Parameter Type="System.String" Name="mergeModuleFile" />
1642 - </Instance>
1643 - </Message>
1644 - <Message Id="MergeLanguageUnsupported" Number="189">
1645 - <Instance>
1646 - Could not locate language '{0}' (or a transform for this language) in the merge module '{1}'. This is likely due to an incorrectly authored Merge/@Language attribute.
1647 - <Parameter Type="System.Int16" Name="language" />
1648 - <Parameter Type="System.String" Name="mergeModuleFile" />
1649 - </Instance>
1650 - </Message>
1651 - <Message Id="TableDecompilationUnimplemented" Number="190" SourceLineNumbers="no">
1652 - <Instance>
1653 - Decompilation of the {0} table has not been implemented by its extension.
1654 - <Parameter Type="System.String" Name="tableName" />
1655 - </Instance>
1656 - </Message>
1657 - <Message Id="CannotDefaultMismatchedAdvertiseStates" Number="191">
1658 - <Instance>
1659 - MIME element cannot be marked as the default when its advertise state differs from its parent element. Ensure that the advertise state of the MIME element matches its parents element or remove the Mime/@Advertise attribute completely.
1660 - </Instance>
1661 - </Message>
1662 - <Message Id="VersionIndependentProgIdsCannotHaveIcons" Number="192">
1663 - <Instance>
1664 - Version independent ProgIds cannot have Icons. Remove the Icon and/or IconIndex attributes from your ProgId element.
1665 - </Instance>
1666 - </Message>
1667 - <Message Id="IllegalAttributeValueWithOtherAttribute" Number="193">
1668 - <Instance>
1669 - The {0}/@{1} attribute's value, '{2}', cannot be specified with attribute {3} present.
1670 - <Parameter Type="System.String" Name="elementName" />
1671 - <Parameter Type="System.String" Name="attributeName" />
1672 - <Parameter Type="System.String" Name="attributeValue" />
1673 - <Parameter Type="System.String" Name="otherAttributeName" />
1674 - </Instance>
1675 - <Instance>
1676 - The {0}/@{1} attribute's value, '{2}', cannot be specified with attribute {3} present with value '{4}'.
1677 - <Parameter Type="System.String" Name="elementName" />
1678 - <Parameter Type="System.String" Name="attributeName" />
1679 - <Parameter Type="System.String" Name="attributeValue" />
1680 - <Parameter Type="System.String" Name="otherAttributeName" />
1681 - <Parameter Type="System.String" Name="otherAttributeValue" />
1682 - </Instance>
1683 - </Message>
1684 - <Message Id="InvalidMergeLanguage" Number="194">
1685 - <Instance>
1686 - The Merge element '{0}' specified an invalid language '{1}'. Verify that localization tokens are being properly resolved to a numeric LCID.
1687 - <Parameter Type="System.String" Name="mergeId" />
1688 - <Parameter Type="System.String" Name="mergeLanguage" />
1689 - </Instance>
1690 - </Message>
1691 - <Message Id="WixVariableCollision" Number="195">
1692 - <Instance>
1693 - The WiX variable '{0}' is declared in more than one location. Please remove one of the declarations.
1694 - <Parameter Type="System.String" Name="variableId" />
1695 - </Instance>
1696 - </Message>
1697 - <Message Id="ExpectedWixVariableValue" Number="196" SourceLineNumbers="no">
1698 - <Instance>
1699 - The WiX variable '{0}' was declared without a value. Please specify a value for the variable.
1700 - <Parameter Type="System.String" Name="variableId" />
1701 - </Instance>
1702 - </Message>
1703 - <Message Id="WixVariableUnknown" Number="197">
1704 - <Instance>
1705 - The WiX variable !(wix.{0}) is unknown. Please ensure the variable is declared on the command line for light.exe, via a WixVariable element, or inline using the syntax !(wix.{0}=some value which doesn't contain parenthesis).
1706 - <Parameter Type="System.String" Name="variableId" />
1707 - </Instance>
1708 - </Message>
1709 - <Message Id="IllegalWixVariablePrefix" Number="198">
1710 - <Instance>
1711 - The WiX variable $(wix.{0}) uses an illegal prefix '$'. Please use the '!' prefix instead.
1712 - <Parameter Type="System.String" Name="variableId" />
1713 - </Instance>
1714 - </Message>
1715 - <Message Id="InvalidWixXmlNamespace" Number="199">
1716 - <Instance>
1717 - The {0} element has no namespace. Please make the {0} element look like the following: &lt;{0} xmlns="{1}"&gt;.
1718 - <Parameter Type="System.String" Name="wixElementName" />
1719 - <Parameter Type="System.String" Name="wixNamespace" />
1720 - </Instance>
1721 - <Instance>
1722 - The {0} element has an incorrect namespace of '{1}'. Please make the {0} element look like the following: &lt;{0} xmlns="{2}"&gt;.
1723 - <Parameter Type="System.String" Name="wixElementName" />
1724 - <Parameter Type="System.String" Name="elementNamespace" />
1725 - <Parameter Type="System.String" Name="wixNamespace" />
1726 - </Instance>
1727 - </Message>
1728 - <Message Id="UnhandledExtensionElement" Number="200">
1729 - <Instance>
1730 - The {0} element contains an unhandled extension element '{1}'. Please ensure that the extension for elements in the '{2}' namespace has been provided.
1731 - <Parameter Type="System.String" Name="elementName" />
1732 - <Parameter Type="System.String" Name="extensionElementName" />
1733 - <Parameter Type="System.String" Name="extensionNamespace" />
1734 - </Instance>
1735 - </Message>
1736 - <Message Id="UnhandledExtensionAttribute" Number="201">
1737 - <Instance>
1738 - The {0} element contains an unhandled extension attribute '{1}'. Please ensure that the extension for attributes in the '{2}' namespace has been provided.
1739 - <Parameter Type="System.String" Name="elementName" />
1740 - <Parameter Type="System.String" Name="extensionAttributeName" />
1741 - <Parameter Type="System.String" Name="extensionNamespace" />
1742 - </Instance>
1743 - </Message>
1744 - <Message Id="UnsupportedExtensionAttribute" Number="202">
1745 - <Instance>
1746 - The {0} element contains an unsupported extension attribute '{1}'. The {0} element does not currently support extension attributes. Is the {1} attribute using the correct XML namespace?
1747 - <Parameter Type="System.String" Name="elementName" />
1748 - <Parameter Type="System.String" Name="extensionElementName" />
1749 - </Instance>
1750 - </Message>
1751 - <Message Id="UnsupportedExtensionElement" Number="203">
1752 - <Instance>
1753 - The {0} element contains an unsupported extension element '{1}'. The {0} element does not currently support extension elements. Is the {1} element using the correct XML namespace?
1754 - <Parameter Type="System.String" Name="elementName" />
1755 - <Parameter Type="System.String" Name="extensionElementName" />
1756 - </Instance>
1757 - </Message>
1758 - <Message Id="ValidationError" Number="204">
1759 - <Instance>
1760 - {0}: {1}
1761 - <Parameter Type="System.String" Name="ice" />
1762 - <Parameter Type="System.String" Name="message" />
1763 - </Instance>
1764 - </Message>
1765 - <Message Id="IllegalRootDirectory" Number="205">
1766 - <Instance>
1767 - The Directory with Id '{0}' is not a valid root directory. There may only be a single root directory per product or module and its Id attribute value must be 'TARGETDIR' and its Name attribute value must be 'SourceDir'.
1768 - <Parameter Type="System.String" Name="directoryId" />
1769 - </Instance>
1770 - </Message>
1771 - <Message Id="IllegalTargetDirDefaultDir" Number="206">
1772 - <Instance>
1773 - The 'TARGETDIR' directory has an illegal DefaultDir value of '{0}'. The DefaultDir value is created from the *Name attributes of the Directory element. The TARGETDIR directory is a special directory which must have its Name attribute set to 'SourceDir'.
1774 - <Parameter Type="System.String" Name="defaultDir" />
1775 - </Instance>
1776 - </Message>
1777 - <Message Id="TooManyElements" Number="207">
1778 - <Instance>
1779 - The {0} element contains an unexpected child element '{1}'. The '{1}' element may only occur {2} time(s) under the {0} element.
1780 - <Parameter Type="System.String" Name="elementName" />
1781 - <Parameter Type="System.String" Name="childElementName" />
1782 - <Parameter Type="System.Int32" Name="expectedInstances" />
1783 - </Instance>
1784 - </Message>
1785 - <Message Id="ExpectedBinaryCategory" Number="208">
1786 - <Instance>The Column element specifies a binary column but does not have the correct Category specified. Windows Installer requires binary columns to specify their category as binary. Please set the Category attribute's value to 'Binary'.</Instance>
1787 - </Message>
1788 - <Message Id="RootFeatureCannotFollowParent" Number="209">
1789 - <Instance>The Feature element specifies a root feature with an illegal InstallDefault value of 'followParent'. Root features cannot follow their parent feature's install state because they don't have a parent feature. Please remove or change the value of the InstallDefault attribute.</Instance>
1790 - </Message>
1791 - <Message Id="FeatureNameTooLong" Number="210">
1792 - <Instance>
1793 - The {0}/@{1} attribute with value '{2}', is too long for a feature name. Due to limitations in the Windows Installer, feature names cannot be longer than 38 characters in length.
1794 - <Parameter Type="System.String" Name="elementName" />
1795 - <Parameter Type="System.String" Name="attributeName" />
1796 - <Parameter Type="System.String" Name="attributeValue" />
1797 - </Instance>
1798 - </Message>
1799 - <Message Id="SignedEmbeddedCabinet" Number="211">
1800 - <Instance>The DigitalSignature element cannot be nested under a Media element which specifies EmbedCab='yes'. This is because Windows Installer can only verify the digital signatures of external cabinets. Please either remove the DigitalSignature element or change the value of the Media/@EmbedCab attribute to 'no'.</Instance>
1801 - </Message>
1802 - <Message Id="ExpectedSignedCabinetName" Number="212">
1803 - <Instance>The Media/@Cabinet attribute was not found; it is required when this element contains a DigitalSignature child element. This is because Windows Installer can only verify the digital signatures of external cabinets. Please either remove the DigitalSignature element or specify a valid external cabinet name via the Cabinet attribute.</Instance>
1804 - </Message>
1805 - <Message Id="IllegalInlineLocVariable" Number="213">
1806 - <Instance>
1807 - The localization variable '{0}' specifies an illegal inline default value of '{1}'. Localization variables cannot specify default values inline, instead the value should be specified in a WiX localization (.wxl) file.
1808 - <Parameter Type="System.String" Name="variableName" />
1809 - <Parameter Type="System.String" Name="variableValue" />
1810 - </Instance>
1811 - </Message>
1812 - <Message Id="MergeModuleExpectedFeature" Number="215">
1813 - <Instance>
1814 - The merge module '{0}' is not assigned to a feature. All merge modules must be assigned to at least one feature.
1815 - <Parameter Type="System.String" Name="mergeId" />
1816 - </Instance>
1817 - </Message>
1818 - <Message Id="Win32Exception" Number="216" SourceLineNumbers="no">
1819 - <Instance>
1820 - An unexpected Win32 exception with error code 0x{0:X} occurred: {1}
1821 - <Parameter Type="System.Int32" Name="nativeErrorCode"/>
1822 - <Parameter Type="System.String" Name="message" />
1823 - </Instance>
1824 - <Instance>
1825 - An unexpected Win32 exception with error code 0x{0:X} occurred while accessing file '{1}': {2}
1826 - <Parameter Type="System.Int32" Name="nativeErrorCode"/>
1827 - <Parameter Type="System.String" Name="file"/>
1828 - <Parameter Type="System.String" Name="message" />
1829 - </Instance>
1830 - </Message>
1831 - <Message Id="UnexpectedExternalUIMessage" Number="217" SourceLineNumbers="no">
1832 - <Instance>
1833 - Error executing unknown ICE action. The most common cause of this kind of ICE failure is an incorrectly registered scripting engine. See http://wixtoolset.org/documentation/error217/ for details and how to solve this problem. The following string format was not expected by the external UI message logger: &quot;{0}&quot;.
1834 - <Parameter Type="System.String" Name="message" />
1835 - </Instance>
1836 - <Instance>
1837 - Error executing ICE action '{1}'. The most common cause of this kind of ICE failure is an incorrectly registered scripting engine. See http://wixtoolset.org/documentation/error217/ for details and how to solve this problem. The following string format was not expected by the external UI message logger: &quot;{0}&quot;.
1838 - <Parameter Type="System.String" Name="message" />
1839 - <Parameter Type="System.String" Name="action" />
1840 - </Instance>
1841 - </Message>
1842 - <Message Id="IllegalCabbingThreadCount" Number="218" SourceLineNumbers="no">
1843 - <Instance>
1844 - Illegal number of threads to create cabinets: '{0}' for -ct &lt;N&gt; command line option. Specify the number of threads to use like -ct 2.
1845 - <Parameter Type="System.String" Name="numThreads" />
1846 - </Instance>
1847 - </Message>
1848 - <Message Id="IllegalEnvironmentVariable" Number="219" SourceLineNumbers="no">
1849 - <Instance>
1850 - The {0} environment variable is set to an invalid value of '{1}'.
1851 - <Parameter Type="System.String" Name="environmentVariable" />
1852 - <Parameter Type="System.String" Name="value" />
1853 - </Instance>
1854 - </Message>
1855 - <Message Id="InvalidKeyColumn" Number="220" SourceLineNumbers="no">
1856 - <Instance>
1857 - The definition for the '{0}' table's '{1}' column is an invalid foreign key relationship to the {2} table's column number {3}. It is not a valid foreign key table column number because it is too small (less than 1) or greater than the count of columns in the foreign table's definition.
1858 - <Parameter Type="System.String" Name="tableName" />
1859 - <Parameter Type="System.String" Name="columnName" />
1860 - <Parameter Type="System.String" Name="foreignTableName" />
1861 - <Parameter Type="System.Int32" Name="foreignColumnNumber" />
1862 - </Instance>
1863 - </Message>
1864 - <Message Id="CollidingModularizationTypes" Number="221" SourceLineNumbers="no">
1865 - <Instance>
1866 - The definition for the '{0}' table's '{1}' column is a foreign key relationship to the '{2}' table's column number {3}. The modularization types of the two column definitions differ: one is {4} and the other is {5}. Change one of the modularization types so that they match.
1867 - <Parameter Type="System.String" Name="tableName" />
1868 - <Parameter Type="System.String" Name="columnName" />
1869 - <Parameter Type="System.String" Name="foreignTableName" />
1870 - <Parameter Type="System.Int32" Name="foreignColumnNumber" />
1871 - <Parameter Type="System.String" Name="modularizationType" />
1872 - <Parameter Type="System.String" Name="foreignModularizationType" />
1873 - </Instance>
1874 - </Message>
1875 - <Message Id="CubeFileNotFound" Number="222" SourceLineNumbers="no">
1876 - <Instance>
1877 - The cube file '{0}' cannot be found. This file is required for MSI validation.
1878 - <Parameter Type="System.String" Name="cubeFile" />
1879 - </Instance>
1880 - </Message>
1881 - <Message Id="OpenDatabaseFailed" Number="223" SourceLineNumbers="no">
1882 - <Instance>
1883 - Failed to open database '{0}'. Ensure it is a valid database, and it is not open by another process.
1884 - <Parameter Type="System.String" Name="databaseFile" />
1885 - </Instance>
1886 - </Message>
1887 - <Message Id="OutputTypeMismatch" Number="224">
1888 - <Instance>
1889 - The types of the outputs do not match. One output's type is '{0}' while the other is '{1}'.
1890 - <Parameter Type="System.String" Name="beforeOutputType" />
1891 - <Parameter Type="System.String" Name="afterOutputType" />
1892 - </Instance>
1893 - </Message>
1894 - <Message Id="RealTableMissingPrimaryKeyColumn" Number="225">
1895 - <Instance>
1896 - The table '{0}' does not contain any primary key columns. At least one column must be marked as the primary key to ensure this table can be patched.
1897 - <Parameter Type="System.String" Name="tableName" />
1898 - </Instance>
1899 - </Message>
1900 - <Message Id="IllegalColumnName" Number="226">
1901 - <Instance>
1902 - The {0}/@{1} attribute's value, '{2}', is not a legal column name. It will collide with the sentinel values used in the _TransformView table.
1903 - <Parameter Type="System.String" Name="elementName" />
1904 - <Parameter Type="System.String" Name="attributeName" />
1905 - <Parameter Type="System.String" Name="value" />
1906 - </Instance>
1907 - </Message>
1908 - <Message Id="NoDifferencesInTransform" Number="227">
1909 - <Instance>
1910 - The transform being built did not contain any differences so it could not be created.
1911 - </Instance>
1912 - </Message>
1913 - <Message Id="OutputCodepageMismatch" Number="228">
1914 - <Instance>
1915 - The code pages of the outputs do not match. One output's code page is '{0}' while the other is '{1}'.
1916 - <Parameter Type="System.Int32" Name="beforeCodepage" />
1917 - <Parameter Type="System.Int32" Name="afterCodepage" />
1918 - </Instance>
1919 - </Message>
1920 - <Message Id="OutputCodepageMismatch2" Number="229">
1921 - <Instance>
1922 - The location of the mismatched code page related to the previous warning.
1923 - </Instance>
1924 - </Message>
1925 - <Message Id="IllegalComponentWithAutoGeneratedGuid" Number="230">
1926 - <Instance>
1927 - The Component/@Guid attribute's value '*' is not valid for this component because it does not meet the criteria for having an automatically generated guid. Components using a Directory as a KeyPath or containing ODBCDataSource child elements cannot use an automatically generated guid. Make sure your component doesn't have a Directory as the KeyPath and move any ODBCDataSource child elements to components with explicit component guids.
1928 - </Instance>
1929 - <Instance>
1930 - The Component/@Guid attribute's value '*' is not valid for this component because it does not meet the criteria for having an automatically generated guid. Components with registry keypaths and files cannot use an automatically generated guid. Create multiple components, each with one file and/or one registry value keypath, to use automatically generated guids.
1931 - <Parameter Type="System.Boolean" Name="registryKeyPath" />
1932 - </Instance>
1933 - </Message>
1934 - <Message Id="IllegalPathForGeneratedComponentGuid" Number="231">
1935 - <Instance>
1936 - The component '{0}' has a key file with path '{1}'. Since this path is not rooted in one of the standard directories (like ProgramFilesFolder), this component does not fit the criteria for having an automatically generated guid. (This error may also occur if a path contains a likely standard directory such as nesting a directory with name "Common Files" under ProgramFilesFolder.)
1937 - <Parameter Type="System.String" Name="componentName" />
1938 - <Parameter Type="System.String" Name="keyFilePath" />
1939 - </Instance>
1940 - </Message>
1941 - <Message Id="IllegalTerminalServerCustomActionAttributes" Number="232">
1942 - <Instance>
1943 - The CustomAction/@TerminalServerAware attribute's value is 'yes' but the Execute attribute is not 'deferred,' 'rollback,' or 'commit.' Terminal-Server-aware custom actions must be deferred, rollback, or commit custom actions. For more information, see http://msdn.microsoft.com/library/aa372071.aspx."
1944 - </Instance>
1945 - </Message>
1946 - <Message Id="IllegalPropertyCustomActionAttributes" Number="233">
1947 - <Instance>
1948 - The CustomAction sets a property but its Execute attribute is not 'immediate' (the default). Property-setting custom actions cannot be deferred."
1949 - </Instance>
1950 - </Message>
1951 - <Message Id="InvalidPreprocessorFunction" Number="234">
1952 - <Instance>
1953 - Ill-formed preprocessor function '${0}'. Functions must have a prefix (like 'fun.'), a name at least 1 character long, and matching opening and closing parentheses.
1954 - <Parameter Type="System.String" Name="variable" />
1955 - </Instance>
1956 - </Message>
1957 - <Message Id="UndefinedPreprocessorFunction" Number="235">
1958 - <Instance>
1959 - Undefined preprocessor function '$({0})'.
1960 - <Parameter Type="System.String" Name="variableName" />
1961 - </Instance>
1962 - </Message>
1963 - <Message Id="PreprocessorExtensionEvaluateFunctionFailed" Number="236">
1964 - <Instance>
1965 - In the preprocessor extension that handles prefix '{0}' while trying to call function '{1}({2})' and exception has occurred : {3}
1966 - <Parameter Type="System.String" Name="prefix" />
1967 - <Parameter Type="System.String" Name="function" />
1968 - <Parameter Type="System.String" Name="args" />
1969 - <Parameter Type="System.String" Name="message" />
1970 - </Instance>
1971 - </Message>
1972 - <Message Id="PreprocessorExtensionGetVariableValueFailed" Number="237">
1973 - <Instance>
1974 - In the preprocessor extension that handles prefix '{0}' while trying to get the value for variable '{1}' and exception has occured : {2}
1975 - <Parameter Type="System.String" Name="prefix" />
1976 - <Parameter Type="System.String" Name="variable" />
1977 - <Parameter Type="System.String" Name="message" />
1978 - </Instance>
1979 - </Message>
1980 - <Message Id="InvalidManifestContent" Number="238">
1981 - <Instance>
1982 - The manifest '{0}' does not have the required assembly/assemblyIdentity element.
1983 - <Parameter Type="System.String" Name="fileName" />
1984 - </Instance>
1985 - </Message>
1986 - <Message Id="InvalidWixTransform" Number="239" SourceLineNumbers="no">
1987 - <Instance>
1988 - The file '{0}' is not a valid WiX Transform.
1989 - <Parameter Type="System.String" Name="fileName" />
1990 - </Instance>
1991 - </Message>
1992 - <Message Id="UnexpectedFileExtension" Number="240" SourceLineNumbers="no">
1993 - <Instance>
1994 - The file '{0}' has an unexpected extension. Expected one of the following: '{1}'.
1995 - <Parameter Type="System.String" Name="fileName" />
1996 - <Parameter Type="System.String" Name="expectedExtensions" />
1997 - </Instance>
1998 - </Message>
1999 - <Message Id="UnexpectedTableInPatch" Number="241">
2000 - <Instance>
2001 - An unexpected row in the '{0}' table was found in this patch. Patches cannot contain the '{0}' table.
2002 - <Parameter Type="System.String" Name="tableName" />
2003 - </Instance>
2004 - </Message>
2005 - <Message Id="InvalidProductVersion" Number="242">
2006 - <Instance>
2007 - Invalid product version '{0}'. Product version must have a major version less than 256, a minor version less than 256, and a build version less than 65536.
2008 - <Parameter Type="System.String" Name="version" />
2009 - </Instance>
2010 - <Instance>
2011 - Invalid product version '{0}' in package '{1}'. When included in a bundle, all product version fields in an MSI package must be less than 65536.
2012 - <Parameter Type="System.String" Name="version" />
2013 - <Parameter Type="System.String" Name="packagePath" />
2014 - </Instance>
2015 - </Message>
2016 - <Message Id="InvalidKeypathChange" Number="243">
2017 - <Instance>
2018 - Component '{0}' has a changed keypath in the transform '{1}'. Patches cannot change the keypath of a component.
2019 - <Parameter Type="System.String" Name="component" />
2020 - <Parameter Type="System.String" Name="transformPath" />
2021 - </Instance>
2022 - </Message>
2023 - <Message Id="MissingValidatorExtension" Number="244" SourceLineNumbers="no">
2024 - <Instance>
2025 - The validator requires at least one extension. Add "ValidatorExtension, Wix" for the default implementation.
2026 - </Instance>
2027 - </Message>
2028 - <Message Id="InvalidValidatorMessageType" Number="245" SourceLineNumbers="no">
2029 - <Instance>
2030 - Unknown validation message type '{0}'.
2031 - <Parameter Type="System.String" Name="type" />
2032 - </Instance>
2033 - </Message>
2034 - <Message Id="PatchWithoutTransforms" Number="246" SourceLineNumbers="no">
2035 - <Instance>
2036 - No transforms were provided to attach to the patch.
2037 - </Instance>
2038 - </Message>
2039 - <Message Id="SingleExtensionSupported" Number="247" SourceLineNumbers="no">
2040 - <Instance>
2041 - Multiple extensions were specified on the command line, only a single extension is supported.
2042 - </Instance>
2043 - </Message>
2044 - <Message Id="DuplicateTransform" Number="248" SourceLineNumbers="no">
2045 - <Instance>
2046 - The transform {0} was included twice on the command line. Each transform can be applied to a patch only once.
2047 - <Parameter Type="System.String" Name="transform" />
2048 - </Instance>
2049 - </Message>
2050 - <Message Id="BaselineRequired" Number="249" SourceLineNumbers="no">
2051 - <Instance>
2052 - No baseline was specified for one of the transforms specified. A baseline is required for all transforms in a patch.
2053 - </Instance>
2054 - </Message>
2055 - <Message Id="PreprocessorError" Number="250">
2056 - <Instance>
2057 - {0}
2058 - <Parameter Type="System.String" Name="message" />
2059 - </Instance>
2060 - </Message>
2061 - <Message Id="ExpectedArgument" Number="251" SourceLineNumbers="no">
2062 - <Instance>
2063 - {0} is expected to be followed by a value argument.
2064 - <Parameter Type="System.String" Name="argument" />
2065 - </Instance>
2066 - </Message>
2067 - <Message Id="PatchWithoutValidTransforms" Number="252" SourceLineNumbers="no">
2068 - <Instance>
2069 - No valid transforms were provided to attach to the patch. Check to make sure the transforms you passed on the command line have a matching baseline authored in the patch. Also, make sure there are differences between your target and upgrade.
2070 - </Instance>
2071 - </Message>
2072 - <Message Id="ExpectedDecompiler" Number="253" SourceLineNumbers="no">
2073 - <Instance>
2074 - No decompiler was provided. {0} requires a decompiler.
2075 - <Parameter Type="System.String" Name="identifier" />
2076 - </Instance>
2077 - </Message>
2078 - <Message Id="ExpectedTableInMergeModule" Number="254" SourceLineNumbers="no">
2079 - <Instance>
2080 - The table '{0}' was expected but was missing.
2081 - <Parameter Type="System.String" Name="identifier" />
2082 - </Instance>
2083 - </Message>
2084 - <Message Id="UnexpectedElementWithAttributeValue" Number="255">
2085 - <Instance>
2086 - The {0} element cannot have a child element '{1}' unless attribute '{2}' is set to '{3}'.
2087 - <Parameter Type="System.String" Name="elementName" />
2088 - <Parameter Type="System.String" Name="childElementName" />
2089 - <Parameter Type="System.String" Name="attribute" />
2090 - <Parameter Type="System.String" Name="attributeValue" />
2091 - </Instance>
2092 - <Instance>
2093 - The {0} element cannot have a child element '{1}' unless attribute '{2}' is set to '{3}' or '{4}'.
2094 - <Parameter Type="System.String" Name="elementName" />
2095 - <Parameter Type="System.String" Name="childElementName" />
2096 - <Parameter Type="System.String" Name="attribute" />
2097 - <Parameter Type="System.String" Name="attributeValue1" />
2098 - <Parameter Type="System.String" Name="attributeValue2" />
2099 - </Instance>
2100 - </Message>
2101 - <Message Id="ExpectedPatchIdInWixMsp" Number="256" SourceLineNumbers="no">
2102 - <Instance>
2103 - The WixMsp is missing the patch ID.
2104 - </Instance>
2105 - </Message>
2106 - <Message Id="ExpectedMediaRowsInWixMsp" Number="257" SourceLineNumbers="no">
2107 - <Instance>
2108 - The WixMsp has no media rows defined.
2109 - </Instance>
2110 - </Message>
2111 - <Message Id="WixFileNotFound" Number="258" SourceLineNumbers="no">
2112 - <Instance>
2113 - The file '{0}' cannot be found.
2114 - <Parameter Type="System.String" Name="file" />
2115 - </Instance>
2116 - </Message>
2117 - <Message Id="ExpectedClientPatchIdInWixMsp" Number="259" SourceLineNumbers="no">
2118 - <Instance>
2119 - The WixMsp is missing the client patch ID. Recompile the patch source files with the latest WiX toolset.
2120 - </Instance>
2121 - </Message>
2122 - <Message Id="NewRowAddedInTable" Number="260">
2123 - <Instance>
2124 - Product '{0}': Table '{1}' has a new row '{2}' added. This makes the patch not uninstallable.
2125 - <Parameter Type="System.String" Name="productCode" />
2126 - <Parameter Type="System.String" Name="tableName" />
2127 - <Parameter Type="System.String" Name="rowId" />
2128 - </Instance>
2129 - </Message>
2130 - <Message Id="PatchNotRemovable" Number="261" SourceLineNumbers="no">
2131 - <Instance>
2132 - This patch is not uninstallable. The 'Patch' element's attribute 'AllowRemoval' should be set to 'no'.
2133 - </Instance>
2134 - </Message>
2135 - <Message Id="FileTooLarge" Number="263">
2136 - <Instance>
2137 - '{0}' is too large, file size must be less than 2147483648.
2138 - <Parameter Type="System.String" Name="fileName" />
2139 - </Instance>
2140 - </Message>
2141 - <Message Id="InvalidPlatformParameter" Number="264" SourceLineNumbers="no">
2142 - <Instance>
2143 - The parameter '{0}' is missing or has an invalid value {1}. Possible values are x86, x64, or ia64.
2144 - <Parameter Type="System.String" Name="name" />
2145 - <Parameter Type="System.String" Name="value" />
2146 - </Instance>
2147 - </Message>
2148 - <Message Id="InvalidPlatformValue" Number="265">
2149 - <Instance>
2150 - The Platform attribute has an invalid value {0}. Possible values are x86, x64, or ia64.
2151 - <Parameter Type="System.String" Name="value" />
2152 - </Instance>
2153 - </Message>
2154 - <Message Id="IllegalValidationArguments" Number="266" SourceLineNumbers="no">
2155 - <Instance>
2156 - You may only specify a single default type using -t or specify custom validation using -serr and -val.
2157 - </Instance>
2158 - </Message>
2159 - <Message Id="OrphanedComponent" Number="267">
2160 - <Instance>
2161 - Found orphaned Component '{0}'. If this is a Product, every Component must have at least one parent Feature. To include a Component in a Module, you must include it directly as a Component element of the Module element or indirectly via ComponentRef, ComponentGroup, or ComponentGroupRef elements.
2162 - <Parameter Type="System.String" Name="componentName" />
2163 - </Instance>
2164 - </Message>
2165 - <Message Id="IllegalCommandlineArgumentCombination" Number="268" SourceLineNumbers="no">
2166 - <Instance>
2167 - '-{0}' cannot be specfied in combination with '-{1}'.
2168 - <Parameter Type="System.String" Name="arg1" />
2169 - <Parameter Type="System.String" Name="arg2" />
2170 - </Instance>
2171 - </Message>
2172 - <Message Id="ProductCodeInvalidForTransform" Number="269">
2173 - <Instance>
2174 - The value '*' is not valid for the ProductCode when used in a transform or in a patch. Copy the ProductCode from your target product MSI into the Product/@Id attribute value for your product authoring.
2175 - </Instance>
2176 - </Message>
2177 - <Message Id="InsertInvalidSequenceActionOrder" Number="270">
2178 - <Instance>
2179 - Invalid order of actions {1} and {2} in sequence table {0}. Action {3} must occur after {1} and before {2}, but {2} is currently sequenced after {1}. Please fix the ordering or explicitly supply a location for the action {3}.
2180 - <Parameter Type="System.String" Name="sequenceTableName" />
2181 - <Parameter Type="System.String" Name="actionNameBefore" />
2182 - <Parameter Type="System.String" Name="actionNameAfter" />
2183 - <Parameter Type="System.String" Name="actionNameNew" />
2184 - </Instance>
2185 - </Message>
2186 - <Message Id="InsertSequenceNoSpace" Number="271">
2187 - <Instance>
2188 - Not enough space exists to sequence action {3} in table {0}. It must be sequenced after {1} and before {2}, but those two actions are currently sequenced next to each other. Please move one of those actions to allow {3} to be inserted between them.
2189 - <Parameter Type="System.String" Name="sequenceTableName" />
2190 - <Parameter Type="System.String" Name="actionNameBefore" />
2191 - <Parameter Type="System.String" Name="actionNameAfter" />
2192 - <Parameter Type="System.String" Name="actionNameNew" />
2193 - </Instance>
2194 - </Message>
2195 - <Message Id="MissingManifestForWin32Assembly" Number="272">
2196 - <Instance>
2197 - File '{0}' is marked as a Win32 assembly but it refers to assembly manifest '{1}' that is not present in this product.
2198 - <Parameter Type="System.String" Name="file" />
2199 - <Parameter Type="System.String" Name="manifest" />
2200 - </Instance>
2201 - </Message>
2202 - <Message Id="UnableToOpenModule" Number="273">
2203 - <Instance>
2204 - Unable to open merge module '{0}'. Check to make sure the module language is correct. '{1}'
2205 - <Parameter Type="System.String" Name="modulePath" />
2206 - <Parameter Type="System.String" Name="message" />
2207 - </Instance>
2208 - </Message>
2209 - <Message Id="ExpectedAttributeWhenElementNotUnderElement" Number="274">
2210 - <Instance>
2211 - The '{0}/@{1}' attribute was not found; it is required when element '{0}' is not nested under a '{2}' element.
2212 - <Parameter Type="System.String" Name="elementName" />
2213 - <Parameter Type="System.String" Name="attributeName" />
2214 - <Parameter Type="System.String" Name="parentElementName" />
2215 - </Instance>
2216 - </Message>
2217 - <Message Id="IllegalIdentifierLooksLikeFormatted" Number="275">
2218 - <Instance>
2219 - The {0}/@{1} attribute's value, '{2}', is not a legal identifier. The {0}/@{1} attribute does not support formatted string values, such as property names enclosed in brackets ([LIKETHIS]). The value must be the identifier of another element, such as the Directory/@Id attribute value.
2220 - <Parameter Type="System.String" Name="elementName" />
2221 - <Parameter Type="System.String" Name="attributeName" />
2222 - <Parameter Type="System.String" Name="value" />
2223 - </Instance>
2224 - </Message>
2225 - <Message Id="IllegalCodepageAttribute" Number="276">
2226 - <Instance>
2227 - The code page '{0}' is not a valid Windows code page. Please check the {1}/@{2} attribute value in your source file.
2228 - <Parameter Type="System.String" Name="codepage" />
2229 - <Parameter Type="System.String" Name="elementName" />
2230 - <Parameter Type="System.String" Name="attributeName" />
2231 - </Instance>
2232 - </Message>
2233 - <Message Id="IllegalCompressionLevel" Number="277" SourceLineNumbers="no">
2234 - <Instance>
2235 - The compression level '{0}' is not valid. Valid values are 'none', 'low', 'medium', 'high', and 'mszip'.
2236 - <Parameter Type="System.String" Name="compressionLevel" />
2237 - </Instance>
2238 - </Message>
2239 - <Message Id="TransformSchemaMismatch" Number="278" SourceLineNumbers="no">
2240 - <Instance>The transform schema does not match the database schema. The transform may have been generated from a different database.</Instance>
2241 - </Message>
2242 - <Message Id="DatabaseSchemaMismatch" Number="279">
2243 - <Instance>
2244 - The table definition of '{0}' in the target database does not match the table definition in the updated database. A transform requires that the target database schema match the updated database schema.
2245 - <Parameter Type="System.String" Name="tableName" />
2246 - </Instance>
2247 - </Message>
2248 - <Message Id="ExpectedDirectoryGotFile" Number="280" SourceLineNumbers="no">
2249 - <Instance>
2250 - The {0} option requires a directory, but the provided path is a file: {1}
2251 - <Parameter Type="System.String" Name="option" />
2252 - <Parameter Type="System.String" Name="path" />
2253 - </Instance>
2254 - </Message>
2255 - <Message Id="ExpectedFileGotDirectory" Number="281" SourceLineNumbers="no">
2256 - <Instance>
2257 - The {0} option requires a file, but the provided path is a directory: {1}
2258 - <Parameter Type="System.String" Name="option" />
2259 - <Parameter Type="System.String" Name="path" />
2260 - </Instance>
2261 - </Message>
2262 - <Message Id="GacAssemblyNoStrongName" Number="282">
2263 - <Instance>
2264 - Assembly {0} in component {1} has no strong name and has been marked to be placed in the GAC. All assemblies installed to the GAC must have a valid strong name.
2265 - <Parameter Type="System.String" Name="assemblyName" />
2266 - <Parameter Type="System.String" Name="componentName" />
2267 - </Instance>
2268 - </Message>
2269 - <Message Id="FileWriteError" Number="283" SourceLineNumbers="no">
2270 - <Instance>
2271 - Error writing to the path: '{0}'. Error message: '{1}'
2272 - <Parameter Type="System.String" Name="path" />
2273 - <Parameter Type="System.String" Name="error" />
2274 - </Instance>
2275 - </Message>
2276 - <Message Id="InvalidCommandLineFileName" Number="284" SourceLineNumbers="no">
2277 - <Instance>
2278 - Invalid file name specified on the command line: '{0}'. Error message: '{1}'
2279 - <Parameter Type="System.String" Name="fileName" />
2280 - <Parameter Type="System.String" Name="error" />
2281 - </Instance>
2282 - </Message>
2283 - <Message Id="ExpectedParentWithAttribute" Number="285">
2284 - <Instance>
2285 - When the {0}/@{1} attribute is specified, the {0} element must be nested under a {2} element.
2286 - <Parameter Type="System.String" Name="parentElement" />
2287 - <Parameter Type="System.String" Name="attribute" />
2288 - <Parameter Type="System.String" Name="grandparentElement" />
2289 - </Instance>
2290 - </Message>
2291 - <Message Id="IllegalWarningIdAsError" Number="286" SourceLineNumbers="no">
2292 - <Instance>
2293 - Illegal value '{0}' for the -wx&lt;N&gt; command line option. Specify a particular warning number, like '-wx6' to display the warning with ID 6 as an error, or '-wx' alone to suppress all warnings.
2294 - <Parameter Type="System.String" Name="warningId" />
2295 - </Instance>
2296 - </Message>
2297 - <Message Id="ExpectedAttributeOrElement" Number="287">
2298 - <Instance>
2299 - Element '{0}' missing attribute '{1}' or child element '{2}'. Exactly one of those is required.
2300 - <Parameter Type="System.String" Name="parentElement" />
2301 - <Parameter Type="System.String" Name="attribute" />
2302 - <Parameter Type="System.String" Name="childElement" />
2303 - </Instance>
2304 - </Message>
2305 - <Message Id="DuplicateVariableDefinition" Number="288" SourceLineNumbers="no">
2306 - <Instance>
2307 - The variable '{0}' with value '{1}' was previously declared with value '{2}'.
2308 - <Parameter Type="System.String" Name="variableName" />
2309 - <Parameter Type="System.String" Name="variableValue" />
2310 - <Parameter Type="System.String" Name="variableCollidingValue" />
2311 - </Instance>
2312 - </Message>
2313 - <Message Id="InvalidVariableDefinition" Number="289" SourceLineNumbers="no">
2314 - <Instance>
2315 - The variable definition '{0}' is not valid. Variable definitions should be in the form -dname=value where the value is optional.
2316 - <Parameter Type="System.String" Name="variableDefinition" />
2317 - </Instance>
2318 - </Message>
2319 - <Message Id="DuplicateCabinetName" Number="290">
2320 - <Instance>
2321 - Duplicate cabinet name '{0}' found.
2322 - <Parameter Type="System.String" Name="cabinetName" />
2323 - </Instance>
2324 - </Message>
2325 - <Message Id="DuplicateCabinetName2" Number="291">
2326 - <Instance>
2327 - Duplicate cabinet name '{0}' error related to previous error.
2328 - <Parameter Type="System.String" Name="cabinetName" />
2329 - </Instance>
2330 - </Message>
2331 - <Message Id="InvalidAddedFileRowWithoutSequence" Number="292">
2332 - <Instance>
2333 - A row has been added to the File table with id '{1}' that does not have a sequence number assigned to it. Create your transform from a pair of msi's instead of xml outputs to get sequences assigned to your File table's rows.
2334 - <Parameter Type="System.String" Name="fileRowId" />
2335 - </Instance>
2336 - </Message>
2337 - <Message Id="DuplicateFileId" Number="293" SourceLineNumbers="no">
2338 - <Instance>
2339 - Multiple files with ID '{0}' exist. Windows Installer does not support file IDs that differ only by case. Change the file IDs to be unique.
2340 - <Parameter Type="System.String" Name="fileId" />
2341 - </Instance>
2342 - </Message>
2343 - <Message Id="FullTempDirectory" Number="294" SourceLineNumbers="no">
2344 - <Instance>
2345 - Unable to create temporary file. A common cause is that too many files that have names beginning with '{0}' are present. Delete any unneeded files in the '{1}' directory and try again.
2346 - <Parameter Type="System.String" Name="prefix" />
2347 - <Parameter Type="System.String" Name="directory" />
2348 - </Instance>
2349 - </Message>
2350 - <Message Id="CreateCabAddFileFailed" Number="296" SourceLineNumbers="no">
2351 - <Instance>
2352 - An error (E_FAIL) was returned while adding files to a CAB file. This most commonly happens when creating a CAB file 2 GB or larger. Either reduce the size of your installation package, raise Media/@CompressionLevel to a higher compression level, or split your installation package's files into more than one CAB file.
2353 - </Instance>
2354 - </Message>
2355 - <Message Id="CreateCabInsufficientDiskSpace" Number="297" SourceLineNumbers="no">
2356 - <Instance>
2357 - An error (ERROR_DISK_FULL) was returned while creating a CAB file. This means you have insufficient disk space - please clear more disk space and try this operation again.
2358 - </Instance>
2359 - </Message>
2360 - <Message Id="UnresolvedBindReference" Number="298" SourceLineNumbers="yes">
2361 - <Instance>
2362 - Unresolved bind-time variable {0}.
2363 - <Parameter Type="System.String" Name="BindRef" />
2364 - </Instance>
2365 - </Message>
2366 - <Message Id="GACAssemblyIdentityWarning" Number="299" SourceLineNumbers="yes">
2367 - <Instance>
2368 - The destination name of file '{0}' does not match its assembly name '{1}' in your authoring. This will cause an installation failure for this assembly, because it will be installed to the Global Assembly Cache. To fix this error, update File/@Name of file '{0}' to be the actual name of the assembly.
2369 - <Parameter Type="System.String" Name="fileName" />
2370 - <Parameter Type="System.String" Name="assemblyName" />
2371 - </Instance>
2372 - </Message>
2373 - <Message Id="IllegalCharactersInPath" Number="300" SourceLineNumbers="no">
2374 - <Instance>
2375 - Illegal characters in path '{0}'. Ensure you provided a valid path to the file.
2376 - <Parameter Type="System.String" Name="pathName" />
2377 - </Instance>
2378 - </Message>
2379 - <Message Id="ValidationFailedToOpenDatabase" Number="301" SourceLineNumbers="no">
2380 - <Instance>
2381 - Failed to open the database. During validation, this most commonly happens when attempting to open a database using an unsupported code page or a file that is not a valid Windows Installer database. Please use a different code page in Module/@Codepage, Package/@SummaryCodepage, Product/@Codepage, or WixLocalization/@Codepage; or make sure you provide the path to a valid Windows Installer database.
2382 - </Instance>
2383 - </Message>
2384 - <Message Id="MustSpecifyOutputWithMoreThanOneInput" Number="302" SourceLineNumbers="no">
2385 - <Instance>
2386 - You must specify an output file using the "-o" or "-out" switch when you provide more than one input file.
2387 - </Instance>
2388 - </Message>
2389 - <Message Id="IllegalSearchIdForParentDepth" Number="303">
2390 - <Instance>
2391 - When the parent DirectorySearch/@Depth attribute is greater than 1 for the DirectorySearch '{1}', the FileSearch/@Id attribute must be absent for FileSearch '{0}' unless the parent DirectorySearch/@AssignToProperty attribute value is 'yes'. Remove the FileSearch/@Id attribute for '{0}' to resolve this issue.
2392 - <Parameter Type="System.String" Name="id" />
2393 - <Parameter Type="System.String" Name="parentId" />
2394 - </Instance>
2395 - </Message>
2396 - <Message Id="IdentifierTooLongError" Number="304">
2397 - <Instance>
2398 - The {0}/@{1} attribute's value, '{2}', is too long. {0}/@{1} attribute's must be {3} characters long or less.
2399 - <Parameter Type="System.String" Name="elementName" />
2400 - <Parameter Type="System.String" Name="attributeName" />
2401 - <Parameter Type="System.String" Name="value" />
2402 - <Parameter Type="System.Int32" Name="maxLength" />
2403 - </Instance>
2404 - </Message>
2405 - <Message Id="InvalidRemoveComponent" Number="305">
2406 - <Instance>
2407 - Removing component '{0}' from feature '{1}' is not supported. Either the component was removed or the guid changed in the transform '{2}'. Add the component back, undo the change to the component guid, or remove the entire feature.
2408 - <Parameter Type="System.String" Name="component" />
2409 - <Parameter Type="System.String" Name="feature" />
2410 - <Parameter Type="System.String" Name="transformPath" />
2411 - </Instance>
2412 - </Message>
2413 - <Message Id="FinishCabFailed" Number="306" SourceLineNumbers="no">
2414 - <Instance>
2415 - An error (E_FAIL) was returned while finalizing a CAB file. This most commonly happens when creating a CAB file with more than 65535 files in it. Either reduce the number of files in your installation package or split your installation package's files into more than one CAB file using the Media element.
2416 - </Instance>
2417 - </Message>
2418 - <Message Id="InvalidExtensionType" Number="307" SourceLineNumbers="no">
2419 - <Instance>
2420 - Either '{1}' was not defined in the assembly or the type defined in extension '{0}' could not be loaded.
2421 - <Parameter Type="System.String" Name="extension" />
2422 - <Parameter Type="System.String" Name="attributeType" />
2423 - </Instance>
2424 - <Instance>
2425 - The extension type '{1}' in extension '{0}' does not inherit from the expected class '{2}'.
2426 - <Parameter Type="System.String" Name="extension" />
2427 - <Parameter Type="System.String" Name="className" />
2428 - <Parameter Type="System.String" Name="expectedType" />
2429 - </Instance>
2430 - <Instance>
2431 - The type '{1}' in extension '{0}' could not be loaded. Exception type '{2}' returned the following message: {3}
2432 - <Parameter Type="System.String" Name="extension" />
2433 - <Parameter Type="System.String" Name="className" />
2434 - <Parameter Type="System.String" Name="exceptionType" />
2435 - <Parameter Type="System.String" Name="exceptionMessage"/>
2436 - </Instance>
2437 - </Message>
2438 - <Message Id="ValidationFailedDueToMultilanguageMergeModule" Number="309" SourceLineNumbers="no">
2439 - <Instance>
2440 - Failed to open merge module for validation. The most common cause of this error is specifying that the merge module supports multiple languages (using the Package/@Languages attribute) but not including language-specific embedded transforms. To fix this error, make the merge module language-neutral, make it language-specific, embed language transforms as specified in the MSI SDK at http://msdn.microsoft.com/library/aa367799.aspx, or disable validation.
2441 - </Instance>
2442 - </Message>
2443 - <Message Id="ValidationFailedDueToInvalidPackage" Number="310" SourceLineNumbers="no">
2444 - <Instance>
2445 - Failed to open package for validation. The most common cause of this error is validating an x64 package on an x86 system. To fix this error, run validation on an x64 system or disable validation.
2446 - </Instance>
2447 - </Message>
2448 - <Message Id="InvalidStringForCodepage" Number="311">
2449 - <Instance>
2450 - A string was provided with characters that are not available in the specified database code page '{0}'. Either change these characters to ones that exist in the database's code page, or update the database's code page by modifying one of the following attributes: Product/@Codepage, Module/@Codepage, Patch/@Codepage, PatchCreation/@Codepage, or WixLocalization/@Codepage.
2451 - <Parameter Type="System.String" Name="codepage" />
2452 - </Instance>
2453 - </Message>
2454 - <Message Id="InvalidEmbeddedUIFileName" Number="312">
2455 - <Instance>
2456 - The EmbeddedUI/@Name attribute value, '{0}', does not contain an extension. Windows Installer will not load an embedded UI DLL without an extension. Include an extension or just omit the Name attribute so it defaults to the file name portion of the Source attribute value.
2457 - <Parameter Type="System.String" Name="codepage" />
2458 - </Instance>
2459 - </Message>
2460 - <Message Id="UniqueFileSearchIdRequired" Number="313">
2461 - <Instance>
2462 - The DirectorySearch element '{0}' requires that the child {1} element has a unique Id when the DirectorySearch/@AssignToProperty attribute is set to 'yes'.
2463 - <Parameter Type="System.String" Name="id" />
2464 - <Parameter Type="System.String" Name="elementName" />
2465 - </Instance>
2466 - </Message>
2467 - <Message Id="IllegalAttributeValueWhenNested" Number="314">
2468 - <Instance>
2469 - The {0}/@{1} attribute value, '{2}', cannot be specified when the {0} element is nested underneath a {3} element.
2470 - <Parameter Type="System.String" Name="elementName" />
2471 - <Parameter Type="System.String" Name="attributeName" />
2472 - <Parameter Type="System.String" Name="attrivuteValue" />
2473 - <Parameter Type="System.String" Name="parentElementName" />
2474 - </Instance>
2475 - </Message>
2476 - <Message Id="AdminImageRequired" Number="315" SourceLineNumbers="no">
2477 - <Instance>
2478 - Source information is required for the product '{0}'. If you ran torch.exe with both target and updated .msi files, you must first perform an administrative installation of both .msi files then pass -a when running torch.exe.
2479 - <Parameter Type="System.String" Name="productCode" />
2480 - </Instance>
2481 - </Message>
2482 - <Message Id="SamePatchBaselineId" Number="316">
2483 - <Instance>
2484 - The PatchBaseline/@Id attribute value '{0}' is a child of multiple Media elements. This prevents transforms from being resolved to distinct media. Change the PatchBaseline/@Id attribute values to be unique.
2485 - <Parameter Type="System.String" Name="id" />
2486 - </Instance>
2487 - </Message>
2488 - <Message Id="SameFileIdDifferentSource" Number="317">
2489 - <Instance>
2490 - Two different source paths '{1}' and '{2}' were detected for the same file identifier '{0}'. You must either author these under Media elements with different Id attribute values or in different patches.
2491 - <Parameter Type="System.String" Name="fileId" />
2492 - <Parameter Type="System.String" Name="sourcePath1" />
2493 - <Parameter Type="System.String" Name="sourcePath2" />
2494 - </Instance>
2495 - </Message>
2496 - <Message Id="HarvestSourceNotSpecified" Number="318" SourceLineNumbers="no">
2497 - <Instance>
2498 - A harvest source must be specified after the harvest type and can be followed by harvester arguments.
2499 - </Instance>
2500 - </Message>
2501 - <Message Id="OutputTargetNotSpecified" Number="319" SourceLineNumbers="no">
2502 - <Instance>
2503 - The '-out' or '-o' parameter must specify a file path.
2504 - </Instance>
2505 - </Message>
2506 - <Message Id="DuplicateCommandLineOptionInExtension" Number="320" SourceLineNumbers="no">
2507 - <Instance>
2508 - The command line option '{0}' has already been loaded by another Heat extension.
2509 - <Parameter Type="System.String" Name="switch" />
2510 - </Instance>
2511 - </Message>
2512 - <Message Id="HarvestTypeNotFound" Number="321" SourceLineNumbers="no">
2513 - <Instance>
2514 - The harvest type was not found in the list of loaded Heat extensions.
2515 - </Instance>
2516 - <Instance>
2517 - The harvest type '{0}' was specified. Harvest types cannot start with a '-'. Remove the '-' to specify a valid harvest type.
2518 - <Parameter Type="System.String" Name="harvestType" />
2519 - </Instance>
2520 - </Message>
2521 - <Message Id="BothUpgradeCodesRequired" Number="322" SourceLineNumbers="no">
2522 - <Instance>
2523 - Both the target and updated product authoring must define the Product/@UpgradeCode attribute if the transform validates the UpgradeCode (default). Either define the Product/@UpgradeCode attribute in both the target and updated authoring, or set the Validate/@UpgradeCode attribute to 'no' in the patch authoring.
2524 - </Instance>
2525 - </Message>
2526 - <Message Id="IllegalBinderClassName" Number="323" SourceLineNumbers="no">
2527 - <Instance>
2528 - Illegal binder class name specified for -binder command line option.
2529 - </Instance>
2530 - </Message>
2531 - <Message Id="SpecifiedBinderNotFound" Number="324" SourceLineNumbers="no">
2532 - <Instance>
2533 - The specified binder class '{0}' was not found in any extensions.
2534 - <Parameter Type="System.String" Name="binderClass" />
2535 - </Instance>
2536 - </Message>
2537 - <Message Id="CannotLoadBinderFileManager" Number="325" SourceLineNumbers="no">
2538 - <Instance>
2539 - Cannot load binder file manager: {0}. Light can only load one binder file manager and has already loaded binder file manager: {1}.
2540 - <Parameter Type="System.String" Name="binderFileManager" />
2541 - <Parameter Type="System.String" Name="currentBinderFileManager" />
2542 - </Instance>
2543 - </Message>
2544 - <Message Id="CannotLoadLinkerExtension" Number="326" SourceLineNumbers="no">
2545 - <Instance>
2546 - Cannot load linker extension: {0}. Light can only load one link extension and has already loaded link extension: {1}.
2547 - <Parameter Type="System.String" Name="linkerExtension" />
2548 - <Parameter Type="System.String" Name="currentLinkerExtension" />
2549 - </Instance>
2550 - </Message>
2551 - <Message Id="UnableToGetAuthenticodeCertOfFile" Number="327" SourceLineNumbers="no">
2552 - <Instance>
2553 - Unable to get the authenticode certificate of '{0}'. More information: {1}
2554 - <Parameter Type="System.String" Name="filePath" />
2555 - <Parameter Type="System.String" Name="moreInformation" />
2556 - </Instance>
2557 - </Message>
2558 - <Message Id="UnableToGetAuthenticodeCertOfFileDownlevelOS" Number="328" SourceLineNumbers="no">
2559 - <Instance>
2560 - Unable to get the authenticode certificate of '{0}'. The cryptography API has limitations on Windows XP and Windows Server 2003. More information: {1}
2561 - <Parameter Type="System.String" Name="filePath" />
2562 - <Parameter Type="System.String" Name="moreInformation" />
2563 - </Instance>
2564 - </Message>
2565 - <Message Id="ReadOnlyOutputFile" Number="329" SourceLineNumbers="no">
2566 - <Instance>
2567 - Unable to output to file '{0}' because it is marked as read-only.
2568 - <Parameter Type="System.String" Name="filePath" />
2569 - </Instance>
2570 - </Message>
2571 - <Message Id="CannotDefaultComponentId" Number="330">
2572 - <Instance>
2573 - The Component/@Id attribute was not found; it is required when there is no valid keypath to use as the default id value.
2574 - </Instance>
2575 - </Message>
2576 - <Message Id="ParentElementAttributeRequired" Number="331">
2577 - <Instance>
2578 - The parent {0} element is missing the {1} attribute that is required for the {2} child element.
2579 - <Parameter Type="System.String" Name="parentElement" />
2580 - <Parameter Type="System.String" Name="parentAttribute" />
2581 - <Parameter Type="System.String" Name="childElement" />
2582 - </Instance>
2583 - </Message>
2584 - <Message Id="PreprocessorExtensionPragmaFailed" Number="333">
2585 - <Instance>
2586 - Exception thrown while processing pragma '{0}'. The exception's message is: {1}
2587 - <Parameter Type="System.String" Name="pragma" />
2588 - <Parameter Type="System.String" Name="message" />
2589 - </Instance>
2590 - </Message>
2591 - <Message Id="InvalidPreprocessorPragma" Number="334">
2592 - <Instance>
2593 - Malformed preprocessor pragma '{0}'. Pragmas must have a prefix, a name of at least 1 character long, and be followed by optional arguments.
2594 - <Parameter Type="System.String" Name="variable" />
2595 - </Instance>
2596 - </Message>
2597 - <Message Id="SmokeUnknownFileExtension" Number="335" SourceLineNumbers="no">
2598 - <Instance>
2599 - Unknown input file format - expected a .msi or .msm file.
2600 - </Instance>
2601 - </Message>
2602 - <Message Id="SmokeUnsupportedFileExtension" Number="336" SourceLineNumbers="no">
2603 - <Instance>
2604 - Files with an extension of .msp are not currently supported.
2605 - </Instance>
2606 - </Message>
2607 - <Message Id="SmokeMalformedPath" Number="337" SourceLineNumbers="no">
2608 - <Instance>
2609 - Path contains one or more invalid characters.
2610 - </Instance>
2611 - </Message>
2612 - <Message Id="InvalidStubExe" Number="338" SourceLineNumbers="no">
2613 - <Instance>
2614 - Stub executable '{0}' is not a valid Win32 executable.
2615 - <Parameter Type="System.String" Name="filename" />
2616 - </Instance>
2617 - </Message>
2618 - <Message Id="StubMissingWixburnSection" Number="339" SourceLineNumbers="no">
2619 - <Instance>
2620 - Stub executable '{0}' does not contain a .wixburn data section.
2621 - <Parameter Type="System.String" Name="filename" />
2622 - </Instance>
2623 - </Message>
2624 - <Message Id="StubWixburnSectionTooSmall" Number="340" SourceLineNumbers="no">
2625 - <Instance>
2626 - Stub executable '{0}' .wixburn data section is too small to store the Burn container header.
2627 - <Parameter Type="System.String" Name="filename" />
2628 - </Instance>
2629 - </Message>
2630 - <Message Id="MissingBundleInformation" Number="341" SourceLineNumbers="no">
2631 - <Instance>
2632 - The Bundle is missing '{0}' data, and cannot continue.
2633 - <Parameter Type="System.String" Name="data" />
2634 - </Instance>
2635 - </Message>
2636 - <Message Id="UnexpectedGroupChild" Number="342" SourceLineNumbers="no">
2637 - <Instance>
2638 - A group parent ('{0}'/'{1}') had an unexpected child ('{2}'/'{3}').
2639 - <Parameter Type="System.String" Name="parentType" />
2640 - <Parameter Type="System.String" Name="parentId" />
2641 - <Parameter Type="System.String" Name="childType" />
2642 - <Parameter Type="System.String" Name="childId" />
2643 - </Instance>
2644 - </Message>
2645 - <Message Id="OrderingReferenceLoopDetected" Number="343">
2646 - <Instance>
2647 - A circular reference of ordering dependencies was detected. The infinite loop includes: {0}. Ordering dependency references must form a directed acyclic graph.
2648 - <Parameter Type="System.String" Name="loopList" />
2649 - </Instance>
2650 - </Message>
2651 - <Message Id="IdentifierNotFound" Number="344" SourceLineNumbers="no">
2652 - <Instance>
2653 - An expected identifier ('{1}', of type '{0}') was not found.
2654 - <Parameter Type="System.String" Name="type" />
2655 - <Parameter Type="System.String" Name="identifier" />
2656 - </Instance>
2657 - </Message>
2658 - <Message Id="MergePlatformMismatch" Number="345">
2659 - <Instance>
2660 - '{0}' is a 64-bit merge module but the product consuming it is 32-bit. 32-bit products can consume only 32-bit merge modules.
2661 - <Parameter Type="System.String" Name="mergeModuleFile" />
2662 - </Instance>
2663 - </Message>
2664 - <Message Id="IllegalRelativeLongFilename" Number="346">
2665 - <Instance>
2666 - The {0}/@{1} attribute's value, '{2}', is not a valid relative long name because it contains illegal characters. Legal relative long names contain no more than 260 characters and must contain at least one non-period character. Any character except for the follow may be used: ? | &gt; &lt; : / * ".
2667 - <Parameter Type="System.String" Name="elementName" />
2668 - <Parameter Type="System.String" Name="attributeName" />
2669 - <Parameter Type="System.String" Name="value" />
2670 - </Instance>
2671 - </Message>
2672 - <Message Id="IllegalAttributeValueWithLegalList" Number="347">
2673 - <Instance>
2674 - The {0}/@{1} attribute's value, '{2}', is not one of the legal options: {3}.
2675 - <Parameter Type="System.String" Name="elementName" />
2676 - <Parameter Type="System.String" Name="attributeName" />
2677 - <Parameter Type="System.String" Name="value" />
2678 - <Parameter Type="System.String" Name="legalValueList" />
2679 - </Instance>
2680 - </Message>
2681 - <Message Id="IllegalAttributeValueWithIllegalList" Number="348">
2682 - <Instance>
2683 - The {0}/@{1} attribute's value, '{2}', is one of the illegal options: {3}.
2684 - <Parameter Type="System.String" Name="elementName" />
2685 - <Parameter Type="System.String" Name="attributeName" />
2686 - <Parameter Type="System.String" Name="value" />
2687 - <Parameter Type="System.String" Name="illegalValueList" />
2688 - </Instance>
2689 - </Message>
2690 -
2691 - <Message Id="InvalidSummaryInfoCodePage" Number="349">
2692 - <Instance>
2693 - The code page '{0}' is invalid for summary information. You must specify an ANSI code page.
2694 - <Parameter Type="System.Int32" Name="codePage" />
2695 - </Instance>
2696 - </Message>
2697 - <Message Id="ValidationFailedDueToLowMsiEngine" Number="350" SourceLineNumbers="no">
2698 - <Instance>
2699 - The package being validated requires a higher version of Windows Installer than is installed on this machine. Validation cannot continue.
2700 - </Instance>
2701 - </Message>
2702 - <Message Id="DuplicateSourcesForOutput" Number="351" SourceLineNumbers="no">
2703 - <Instance>
2704 - Multiple source files ({0}) have resulted in the same output file '{1}'. This is likely because the source files only differ in extension or path. Rename the source files to avoid this problem.
2705 - <Parameter Type="System.String" Name="sourceList" />
2706 - <Parameter Type="System.String" Name="outputFile" />
2707 - </Instance>
2708 - </Message>
2709 - <Message Id="UnableToReadPackageInformation" Number="352">
2710 - <Instance>
2711 - Unable to read package '{0}'. {1}
2712 - <Parameter Type="System.String" Name="packagePath" />
2713 - <Parameter Type="System.String" Name="detailedErrorMessage" />
2714 - </Instance>
2715 - </Message>
2716 - <Message Id="MultipleFilesMatchedWithOutputSpecification" Number="353" SourceLineNumbers="no">
2717 - <Instance>
2718 - A per-source file output specification has been provided ('{0}'), but multiple source files match the source specification ({1}). Specifying a unique output requires that only a single source file match.
2719 - <Parameter Type="System.String" Name="sourceSpecification" />
2720 - <Parameter Type="System.String" Name="sourceList" />
2721 - </Instance>
2722 - </Message>
2723 - <Message Id="InvalidBundle" Number="354" SourceLineNumbers="no">
2724 - <Instance>
2725 - Unable to read bundle executable '{0}'. This is not a valid WiX bundle.
2726 - <Parameter Type="System.String" Name="bundleExecutable" />
2727 - </Instance>
2728 - </Message>
2729 - <Message Id="BundleTooNew" Number="355" SourceLineNumbers="no">
2730 - <Instance>
2731 - Unable to read bundle executable '{0}', because this bundle was created with a newer version of WiX (bundle version '{1}'). You must use a newer version of WiX in order to read this bundle.
2732 - <Parameter Type="System.String" Name="bundleExecutable" />
2733 - <!-- we use a 64-bit field here because the field is really a 32-bit UInt,
2734 - but UInt gives a non-CLS-compliant warning.
2735 - So 64-bit makes sure we don't drop the last bit -->
2736 - <Parameter Type="System.Int64" Name="bundleVersion" />
2737 - </Instance>
2738 - </Message>
2739 - <Message Id="WrongFileExtensionForNumberOfInputs" Number="356" SourceLineNumbers="no">
2740 - <Instance>
2741 - The extension '{0}' on the input specified '{1}' does not match the number of inputs required to handle an input with this extension. Check if you are missing an input or have too many.
2742 - <Parameter Type="System.String" Name="inputExtension" />
2743 - <Parameter Type="System.String" Name="input" />
2744 - </Instance>
2745 - </Message>
2746 - <Message Id="MediaTableCollision" Number="357">
2747 - <Instance>
2748 - Only one of Media and MediaTemplate tables should be authored.
2749 - </Instance>
2750 - </Message>
2751 - <Message Id="InvalidCabinetTemplate" Number="358">
2752 - <Instance>
2753 - CabinetTemplate attribute's value '{0}' must contain '{{0}}' and should contain no more than 8 characters followed by an optional extension of no more than 3 characters. Any character except for the follow may be used: \ ? | &gt; &lt; : / * " + , ; = [ ] (space). The Windows Installer team has recommended following the 8.3 format for external cabinet files and any other naming scheme is officially unsupported (which means it is not guaranteed to work on all platforms).
2754 - <Parameter Type="System.String" Name="cabinetTemplate" />
2755 - </Instance>
2756 - </Message>
2757 - <Message Id="MaximumUncompressedMediaSizeTooLarge" Number="359">
2758 - <Instance>
2759 - '{0}' is too large. Reduce the size of maximum uncompressed media size.
2760 - <Parameter Type="System.Int32" Name="maximumUncompressedMediaSize" />
2761 - </Instance>
2762 - </Message>
2763 - <Message Id="CatalogVerificationFailed" Number="360" SourceLineNumbers="no">
2764 - <Instance>
2765 - File '{0}' could not be verified with a catalog file.
2766 - <Parameter Type="System.String" Name="fileName" />
2767 - </Instance>
2768 - </Message>
2769 - <Message Id="CatalogFileHashFailed" Number="361" SourceLineNumbers="no">
2770 - <Instance>
2771 - Could not get hash of file '{0}'. Error: {2}.
2772 - <Parameter Type="System.String" Name="fileName" />
2773 - <Parameter Type="System.Int32" Name="errorCode" />
2774 - </Instance>
2775 - </Message>
2776 - <Message Id="ReservedNamespaceViolation" Number="362">
2777 - <Instance>
2778 - The {0}/@{1} attribute's value begins with the reserved prefix '{2}'. Some prefixes are reserved by the Windows Installer and WiX toolset for well-known values. Change your attribute's value to not begin with the same prefix.
2779 - <Parameter Type="System.String" Name="element" />
2780 - <Parameter Type="System.String" Name="attribute" />
2781 - <Parameter Type="System.String" Name="prefix" />
2782 - </Instance>
2783 - </Message>
2784 - <Message Id="PerUserButAllUsersEquals1" Number="363">
2785 - <Instance>
2786 - The MSI '{0}' is explicitly marked to not elevate so it must be a per-user package but the ALLUSERS Property is set to '1' creating a per-machine package. Remove the Property with Id='ALLUSERS' and use Package/@InstallScope attribute to be explicit instead.
2787 - <Parameter Type="System.String" Name="path" />
2788 - </Instance>
2789 - </Message>
2790 - <Message Id="UnsupportedAllUsersValue" Number="364">
2791 - <Instance>
2792 - The MSI '{0}' set the ALLUSERS Property to '{0}' which is not supported. Remove the Property with Id='ALLUSERS' and use Package/@InstallScope attribute instead.
2793 - <Parameter Type="System.String" Name="path" />
2794 - <Parameter Type="System.String" Name="value" />
2795 - </Instance>
2796 - </Message>
2797 - <Message Id="DisallowedMsiProperty" Number="365">
2798 - <Instance>
2799 - The '{0}' MsiProperty is controlled by the bootstrapper and cannot be authored. (Illegal properties are: {1}.) Remove the MsiProperty element.
2800 - <Parameter Type="System.String" Name="property" />
2801 - <Parameter Type="System.String" Name="illegalValueList" />
2802 - </Instance>
2803 - </Message>
2804 - <Message Id="MissingOrInvalidModuleInstallerVersion" Number="366">
2805 - <Instance>
2806 - The merge module '{0}' from file '{1}' is either missing or has an invalid installer version. The value read from the installer version in module's summary information was '{2}'. This should be a numeric value representing a valid installer version such as 200 or 301.
2807 - <Parameter Type="System.String" Name="moduleId" />
2808 - <Parameter Type="System.String" Name="mergeModuleFile" />
2809 - <Parameter Type="System.String" Name="productInstallerVersion" />
2810 - </Instance>
2811 - </Message>
2812 - <Message Id="IllegalGeneratedGuidComponentUnversionedKeypath" Number="367">
2813 - <Instance>
2814 - The Component/@Guid attribute's value '*' is not valid for this component because it does not meet the criteria for having an automatically generated guid. Components with more than one file cannot use an automatically generated guid unless a versioned file is the keypath and the other files are unversioned. This component's keypath is not versioned. Create multiple components to use automatically generated guids.
2815 - </Instance>
2816 - </Message>
2817 - <Message Id="IllegalGeneratedGuidComponentVersionedNonkeypath" Number="368">
2818 - <Instance>
2819 - The Component/@Guid attribute's value '*' is not valid for this component because it does not meet the criteria for having an automatically generated guid. Components with more than one file cannot use an automatically generated guid unless a versioned file is the keypath and the other files are unversioned. This component has a non-keypath file that is versioned. Create multiple components to use automatically generated guids.
2820 - </Instance>
2821 - </Message>
2822 - <Message Id="DuplicateComponentGuids" Number="369">
2823 - <Instance>
2824 - Component/@Id='{0}' has a @Guid value '{1}' that duplicates another component in this package. It is recommended to give each component its own unique GUID.
2825 - <Parameter Type="System.String" Name="componentId" />
2826 - <Parameter Type="System.String" Name="guid" />
2827 - </Instance>
2828 - </Message>
2829 - <Message Id="DuplicateProviderDependencyKey" Number="370" SourceLineNumbers="no">
2830 - <Instance>
2831 - The provider dependency key '{0}' was already imported from the package with Id '{1}'. Please remove the Provides element with the key '{0}' from the package authoring.
2832 - <Parameter Type="System.String" Name="providerKey" />
2833 - <Parameter Type="System.String" Name="packageId" />
2834 - </Instance>
2835 - </Message>
2836 - <Message Id="MissingDependencyVersion" Number="371" SourceLineNumbers="no">
2837 - <Instance>
2838 - The provider dependency version was not authored for the package with Id '{0}'. Please author the Provides/@Version attribute for this package.
2839 - <Parameter Type="System.String" Name="packageId" />
2840 - </Instance>
2841 - </Message>
2842 -
2843 - <Message Id="UnexpectedElementWithAttribute" Number="372">
2844 - <Instance>
2845 - The {0} element cannot have a child element '{1}' when attribute '{2}' is set.
2846 - <Parameter Type="System.String" Name="elementName" />
2847 - <Parameter Type="System.String" Name="childElementName" />
2848 - <Parameter Type="System.String" Name="attribute" />
2849 - </Instance>
2850 - </Message>
2851 - <Message Id="ExpectedAttributeWithElement" Number="373">
2852 - <Instance>
2853 - The {0} element must have attribute '{1}' when child element '{2}' is present.
2854 - <Parameter Type="System.String" Name="elementName" />
2855 - <Parameter Type="System.String" Name="attribute" />
2856 - <Parameter Type="System.String" Name="childElementName" />
2857 - </Instance>
2858 - </Message>
2859 - <Message Id="DuplicatedUiLocalization" Number="374">
2860 - <Instance>
2861 - The localization for control {0} in dialog {1} is duplicated. Only one localization per control is allowed.
2862 - <Parameter Type="System.String" Name="controlName" />
2863 - <Parameter Type="System.String" Name="dialogName" />
2864 - </Instance>
2865 - <Instance>
2866 - The localization for dialog {0} is duplicated. Only one localization per dialog is allowed.
2867 - <Parameter Type="System.String" Name="dialogName" />
2868 - </Instance>
2869 - </Message>
2870 - <Message Id="MaximumCabinetSizeForLargeFileSplittingTooLarge" Number="375">
2871 - <Instance>
2872 - '{0}' is too large. Reduce the size of maximum cabinet size for large file splitting. The maximum permitted value is '{1}' MB.
2873 - <Parameter Type="System.Int32" Name="maximumCabinetSizeForLargeFileSplitting" />
2874 - <Parameter Type="System.Int32" Name="maxValueOfMaxCabSizeForLargeFileSplitting" />
2875 - </Instance>
2876 - </Message>
2877 - <Message Id="SplitCabinetCopyRegistrationFailed" Number="376" SourceLineNumbers="no">
2878 - <Instance>
2879 - Failed to register the copy command for cabinet '{0}' formed by splitting cabinet '{1}'.
2880 - <Parameter Type="System.String" Name="newCabName" />
2881 - <Parameter Type="System.String" Name="firstCabName" />
2882 - </Instance>
2883 - </Message>
2884 - <Message Id="SplitCabinetNameCollision" Number="377" SourceLineNumbers="no">
2885 - <Instance>
2886 - The cabinet name '{0}' collides with the new cabinet formed by splitting cabinet '{1}', consider renaming cabinet '{0}'.
2887 - <Parameter Type="System.String" Name="newCabName" />
2888 - <Parameter Type="System.String" Name="firstCabName" />
2889 - </Instance>
2890 - </Message>
2891 - <Message Id="SplitCabinetInsertionFailed" Number="378" SourceLineNumbers="no">
2892 - <Instance>
2893 - Could not find the last split cabinet '{2}' in the Media Table. So failed to add new cabinet '{0}' formed by splitting cabinet '{1}' to the installer package.
2894 - <Parameter Type="System.String" Name="newCabName" />
2895 - <Parameter Type="System.String" Name="firstCabName" />
2896 - <Parameter Type="System.String" Name="lastCabinetOfThisSequence" />
2897 - </Instance>
2898 - </Message>
2899 - <Message Id="InvalidPreprocessorFunctionAutoVersion" Number="379">
2900 - <Instance>
2901 - Invalid AutoVersion template specified.
2902 - </Instance>
2903 - </Message>
2904 - <Message Id="InvalidModuleOrBundleVersion" Number="380">
2905 - <Instance>
2906 - Invalid {0}/@Version '{1}'. {0} version has a max value of "65535.65535.65535.65535" and must be all numeric.
2907 - <Parameter Type="System.String" Name="moduleOrBundle" />
2908 - <Parameter Type="System.String" Name="version" />
2909 - </Instance>
2910 - </Message>
2911 - <Message Id="UnsupportedPlatformForElement" Number="381">
2912 - <Instance>
2913 - The element {1} does not support platform '{0}'. Consider removing the element or using the preprocessor to conditionally include the element based on the platform.
2914 - <Parameter Type="System.String" Name="platform" />
2915 - <Parameter Type="System.String" Name="elementName" />
2916 - </Instance>
2917 - </Message>
2918 - <Message Id="MissingMedia" Number="382">
2919 - <Instance>
2920 - There is no media defined for disk id '{0}'. You must author either &lt;Media Id='{0}' ...&gt; or &lt;MediaTemplate ...&gt;.
2921 - <Parameter Type="System.Int32" Name="diskId" />
2922 - </Instance>
2923 - </Message>
2924 - <Message Id="RemotePayloadUnsupported" Number="383">
2925 - <Instance>
2926 - The RemotePayload element can only be used for ExePackage and MsuPackage payloads.
2927 - </Instance>
2928 - </Message>
2929 - <Message Id="IllegalYesNoAlwaysValue" Number="384">
2930 - <Instance>
2931 - The {0}/@{1} attribute's value, '{2}', is not a legal yes/no/always value. The only legal values are 'always', 'no' or 'yes'.
2932 - <Parameter Type="System.String" Name="elementName" />
2933 - <Parameter Type="System.String" Name="attributeName" />
2934 - <Parameter Type="System.String" Name="value" />
2935 - </Instance>
2936 - </Message>
2937 - <Message Id="TooDeeplyIncluded" Number="385">
2938 - <Instance>
2939 - Include files cannot be nested more deeply than {0} times. Make sure included files don't accidentally include themselves.
2940 - <Parameter Type="System.Int32" Name="depth" />
2941 - </Instance>
2942 - </Message>
2943 - <Message Id="InlineDirectorySyntaxRequiresPath" Number="387">
2944 - <Instance>
2945 - The {0}/@{1} attribute's value '{2}' only specifies a directory reference. The inline directory syntax requires that at least one directory be specified in addition to the value. For example, use '{3}:\foo\' to add a 'foo' directory.
2946 - <Parameter Type="System.String" Name="elementName" />
2947 - <Parameter Type="System.String" Name="attributeName" />
2948 - <Parameter Type="System.String" Name="value" />
2949 - <Parameter Type="System.String" Name="identifier" />
2950 - </Instance>
2951 - </Message>
2952 - <Message Id="InsecureBundleFilename" Number="388" SourceLineNumbers="no">
2953 - <Instance>
2954 - The file name '{0}' creates an insecure bundle. Windows will load unnecessary compatibility shims into a bundle with that file name. These compatibility shims can be DLL hijacked allowing attackers to compromise your customers' computer. Choose a different bundle file name.
2955 - <Parameter Type="System.String" Name="filename" />
2956 - </Instance>
2957 - </Message>
2958 - <Message Id="PayloadMustBeRelativeToCache" Number="389">
2959 - <Instance>
2960 - The {0}/@{1} attribute's value, '{2}', is not a legal path name: Payload names must be relative to their cache directory and cannot contain '..'.
2961 - <Parameter Type="System.String" Name="elementName" />
2962 - <Parameter Type="System.String" Name="attributeName" />
2963 - <Parameter Type="System.String" Name="attributeValue" />
2964 - </Instance>
2965 - </Message>
2966 - <Message Id="MsiTransactionX86BeforeX64" Number="390">
2967 - <Instance>
2968 - MSI transactions must install all x64 packages before any x86 package.
2969 - </Instance>
2970 - </Message>
2971 - </Class>
2972 -
2973 - <Class Name="WixWarnings" ContainerName="WixWarningEventArgs" BaseContainerName="MessageEventArgs" Level="Warning">
2974 - <Message Id="IdentifierCannotBeModularized" Number="1000">
2975 - <Instance>
2976 - The {0}/@{1} attribute's value, '{2}', is {3} characters long. It will be too long if modularized. The identifier shouldn't be longer than {4} characters long to allow for modularization (appending a guid for merge modules).
2977 - <Parameter Type="System.String" Name="elementName" />
2978 - <Parameter Type="System.String" Name="attributeName" />
2979 - <Parameter Type="System.String" Name="identifier" />
2980 - <Parameter Type="System.Int32" Name="length" />
2981 - <Parameter Type="System.Int32" Name="maximumLength" />
2982 - </Instance>
2983 - </Message>
2984 - <Message Id="EmptyAttributeValue" Number="1001">
2985 - <Instance>
2986 - The {0}/@{1} attribute's value cannot be an empty string. If you want the value to be null or empty, simply remove the entire attribute.
2987 - <Parameter Type="System.String" Name="elementName" />
2988 - <Parameter Type="System.String" Name="attributeName" />
2989 - </Instance>
2990 - </Message>
2991 - <Message Id="UnableToFindFileFromCabOrImage" Number="1002">
2992 - <Instance>
2993 - Unable to find existing file {0} to place in src location {1}. Will likely cause a linker break.
2994 - <Parameter Type="System.String" Name="existingFileSpec" />
2995 - <Parameter Type="System.String" Name="srcFileSpec" />
2996 - </Instance>
2997 - </Message>
2998 - <Message Id="CopyFileFileIdUseless" Number="1003">
2999 - <Instance>Since the CopyFile/@FileId attribute was specified but none of the following attributes (DestinationName, DestinationDirectory, DestinationProperty) were specified, this authoring will not do anything.</Instance>
3000 - </Message>
3001 - <Message Id="NestedInstall" Number="1004">
3002 - <Instance>
3003 - The {0}.{1} column's value, '{2}', indicates a nested install. Nested installations are not supported by the WiX team. This action will be left out of the decompiled output.
3004 - <Parameter Type="System.String" Name="tableName" />
3005 - <Parameter Type="System.String" Name="columnName" />
3006 - <Parameter Type="System.Object" Name="value" />
3007 - </Instance>
3008 - </Message>
3009 - <Message Id="OrphanedProgId" Number="1005">
3010 - <Instance>
3011 - ProgId '{0}' is orphaned. It has no associated component, so it will never install. Every ProgId should have either a parent Class element or child Extension element (at any distance).
3012 - <Parameter Type="System.String" Name="progId" />
3013 - </Instance>
3014 - </Message>
3015 - <Message Id="PropertyUseless" Number="1006">
3016 - <Instance>
3017 - Property '{0}' does not contain a Value attribute and is not marked as Admin, Secure, or Hidden. The Property element is being ignored.
3018 - <Parameter Type="System.String" Name="id" />
3019 - </Instance>
3020 - </Message>
3021 - <Message Id="RemoveFileNameRequired" Number="1007">
3022 - <Instance>The RemoveFile/@Name attribute will soon become required. In order to match the old functionality of not specifying this attribute, please use the new RemoveFolder element instead.</Instance>
3023 - </Message>
3024 - <Message Id="SuppressAction" Number="1008">
3025 - <Instance>
3026 - The action '{0}' in the {1} table is being suppressed.
3027 - <Parameter Type="System.String" Name="action" />
3028 - <Parameter Type="System.String" Name="sequenceName" />
3029 - </Instance>
3030 - </Message>
3031 - <Message Id="SuppressMergedAction" Number="1009" SourceLineNumbers="no">
3032 - <Instance>
3033 - The merged action '{0}' in the {1} table is being suppressed.
3034 - <Parameter Type="System.String" Name="action" />
3035 - <Parameter Type="System.String" Name="sequenceName" />
3036 - </Instance>
3037 - </Message>
3038 - <Message Id="TargetDirCorrectedDefaultDir" Number="1010" SourceLineNumbers="no">
3039 - <Instance>
3040 - The Directory with Id 'TARGETDIR' must have the value 'SourceDir' in its 'DefaultDir' column. This has been automatically corrected for you in the decompiled output.
3041 - </Instance>
3042 - </Message>
3043 - <Message Id="AccessDeniedForDeletion" Number="1011">
3044 - <Instance>
3045 - Access denied; cannot delete '{0}'.
3046 - <Parameter Type="System.String" Name="tempFilesBasePath" />
3047 - </Instance>
3048 - </Message>
3049 - <Message Id="DirectoryInUse" Number="1012">
3050 - <Instance>
3051 - The directory '{0}' is in use and cannot be deleted.
3052 - <Parameter Type="System.String" Name="filePath" />
3053 - </Instance>
3054 - </Message>
3055 - <Message Id="AccessDeniedForSettingAttributes" Number="1013">
3056 - <Instance>
3057 - Access denied; cannot set attributes on '{0}'.
3058 - <Parameter Type="System.String" Name="filePath" />
3059 - </Instance>
3060 - </Message>
3061 - <Message Id="UnknownAction" Number="1024">
3062 - <Instance>
3063 - The {0} table contains an action '{1}' which is not a known custom action, dialog, or standard action. This action will be left out of the decompiled output.
3064 - <Parameter Type="System.String" Name="sequenceTableName" />
3065 - <Parameter Type="System.String" Name="actionName" />
3066 - </Instance>
3067 - </Message>
3068 - <Message Id="IdentifierTooLong" Number="1026">
3069 - <Instance>
3070 - The {0}/@{1} attribute's value, '{2}', is too long for an identifier. Standard identifiers are 72 characters long or less.
3071 - <Parameter Type="System.String" Name="elementName" />
3072 - <Parameter Type="System.String" Name="attributeName" />
3073 - <Parameter Type="System.String" Name="value" />
3074 - </Instance>
3075 - </Message>
3076 - <Message Id="UnknownPermission" Number="1030">
3077 - <Instance>
3078 - The {0} table contains a row with primary key '{1}' which has an unknown permission at bit {2}.
3079 - <Parameter Type="System.String" Name="tableName" />
3080 - <Parameter Type="System.String" Name="primaryKey" />
3081 - <Parameter Type="System.Int32" Name="bitPosition" />
3082 - </Instance>
3083 - </Message>
3084 - <Message Id="DirectoryRedundantNames" Number="1031">
3085 - <Instance>
3086 - The {0} element's {1} and {2} values are both '{3}'. This is redundant; the {2} attribute should be removed.
3087 - <Parameter Type="System.String" Name="elementName" />
3088 - <Parameter Type="System.String" Name="shortNameAttributeName" />
3089 - <Parameter Type="System.String" Name="longNameAttributeName" />
3090 - <Parameter Type="System.String" Name="attributeValue" />
3091 - </Instance>
3092 - <Instance>
3093 - The {0} element's source and destination names are identical. This is redundant; the {1} and {2} attributes should be removed if present.
3094 - <Parameter Type="System.String" Name="elementName" />
3095 - <Parameter Type="System.String" Name="sourceNameAttributeName" />
3096 - <Parameter Type="System.String" Name="longSourceAttributeName" />
3097 - </Instance>
3098 - </Message>
3099 - <Message Id="UnableToResetAcls" Number="1032" SourceLineNumbers="no">
3100 - <Instance>Unable to reset acls on destination files.</Instance>
3101 - </Message>
3102 - <Message Id="MediaExternalCabinetFilenameIllegal" Number="1033">
3103 - <Instance>
3104 - The {0}/@{1} attribute's value, '{2}', is not a valid external cabinet name. Legal cabinet names should follow 8.3 format: they should contain no more than 8 characters followed by an optional extension of no more than 3 characters. Any character except for the following may be used: \ ? | &gt; &lt; : / * " + , ; = [ ] (space). The Windows Installer team has recommended following the 8.3 format for external cabinet files and any other naming scheme is officially unsupported (which means it is not guaranteed to work on all platforms).
3105 - <Parameter Type="System.String" Name="elementName" />
3106 - <Parameter Type="System.String" Name="attributeName" />
3107 - <Parameter Type="System.String" Name="value" />
3108 - </Instance>
3109 - </Message>
3110 - <Message Id="DeprecatedPreProcVariable" Number="1034">
3111 - <Instance>
3112 - The built-in preprocessor variable '{0}' is deprecated. Please correct your authoring to use the new '{1}' preprocessor variable instead.
3113 - <Parameter Type="System.String" Name="oldName" />
3114 - <Parameter Type="System.String" Name="newName" />
3115 - </Instance>
3116 - </Message>
3117 - <Message Id="FileSearchFileNameIssue" Number="1043">
3118 - <Instance>
3119 - The {0} element's {1} and {2} attributes were found. Due to a bug with the Windows Installer, only the Name or LongName attribute should be used. Use the Name attribute for 8.3 compliant file names and the LongName attribute for longer ones. When using only the LongName attribute, ICE03 should be ignored for the Signature table's FileName column.
3120 - <Parameter Type="System.String" Name="elementName" />
3121 - <Parameter Type="System.String" Name="attributeName1" />
3122 - <Parameter Type="System.String" Name="attributeName2" />
3123 - </Instance>
3124 - </Message>
3125 - <Message Id="AmbiguousFileOrDirectoryName" Number="1044">
3126 - <Instance>
3127 - The {0}/@{1} attribute's value '{2}' is an ambiguous short name because it ends with a '~' character followed by a number. Under some circumstances, this name could resolve to more than one file or directory name and lead to unpredictable results (for example 'MICROS~1' may correspond to 'Microsoft Shared' or 'Microsoft Foo' or literally 'Micros~1').
3128 - <Parameter Type="System.String" Name="elementName" />
3129 - <Parameter Type="System.String" Name="attributeName" />
3130 - <Parameter Type="System.String" Name="value" />
3131 - </Instance>
3132 - </Message>
3133 - <Message Id="PossiblyIncorrectTypelibVersion" Number="1048">
3134 - <Instance>
3135 - The Typelib table entry with Id '{0}' could have an incorrect version of '256.0'. InstallShield has a bug relating to the Typelib Version column: it will incorrectly set the value '65536' in to represent version '1.0'. However, this number actually corresponds to version '256.0'. This bug will not affect the typelib version that is registered during installation, however, it will prevent the Windows Installer from correctly identifying whether a typelib is already installed and lead to unnecessary reinstallations of the typelib.
3136 - <Parameter Type="System.String" Name="id" />
3137 - </Instance>
3138 - </Message>
3139 - <Message Id="ImplicitComponentPrimaryFeature" Number="1049" SourceLineNumbers="no">
3140 - <Instance>
3141 - The component '{0}' does not have an explicit primary feature parent specified. If the source files are linked in a different order, the primary parent feature may change. To prevent accidental changes, the primary feature parent should be set to 'yes' in one of the ComponentRef/@Primary, ComponentGroupRef/@Primary, or FeatureGroupRef/@Primary locations for this component.
3142 - <Parameter Type="System.String" Name="componentId" />
3143 - </Instance>
3144 - </Message>
3145 - <Message Id="ActionSequenceCollision" Number="1050">
3146 - <Instance>
3147 - The {0} table contains actions '{1}' and '{2}' which both have the same sequence number {3}. Please change the sequence number for one of these actions to avoid an ICE warning.
3148 - <Parameter Type="System.String" Name="sequenceTableName" />
3149 - <Parameter Type="System.String" Name="actionName1" />
3150 - <Parameter Type="System.String" Name="actionName2" />
3151 - <Parameter Type="System.Int32" Name="sequenceNumber" />
3152 - </Instance>
3153 - </Message>
3154 - <Message Id="ActionSequenceCollision2" Number="1051">
3155 - <Instance>The location of the action related to previous warning.</Instance>
3156 - </Message>
3157 - <Message Id="SuppressAction2" Number="1052">
3158 - <Instance>The location of the suppressed action related to previous warning.</Instance>
3159 - </Message>
3160 - <Message Id="UnexpectedTableInProduct" Number="1053">
3161 - <Instance>
3162 - An unexpected row in the '{0}' table was found in this product. Products should not contain the '{0}' table.
3163 - <Parameter Type="System.String" Name="tableName" />
3164 - </Instance>
3165 - </Message>
3166 - <Message Id="DeprecatedAttribute" Number="1054">
3167 - <Instance>
3168 - The {0}/@{1} attribute has been deprecated.
3169 - <Parameter Type="System.String" Name="elementName" />
3170 - <Parameter Type="System.String" Name="attributeName" />
3171 - </Instance>
3172 - <Instance>
3173 - The {0}/@{1} attribute has been deprecated. Please use the {2} attribute instead.
3174 - <Parameter Type="System.String" Name="elementName" />
3175 - <Parameter Type="System.String" Name="attributeName" />
3176 - <Parameter Type="System.String" Name="newAttributeName" />
3177 - </Instance>
3178 - <Instance>
3179 - The {0}/@{1} attribute has been deprecated. Please use the {2} or {3} attribute instead.
3180 - <Parameter Type="System.String" Name="elementName" />
3181 - <Parameter Type="System.String" Name="attributeName" />
3182 - <Parameter Type="System.String" Name="newAttributeName1" />
3183 - <Parameter Type="System.String" Name="newAttributeName2" />
3184 - </Instance>
3185 - </Message>
3186 - <Message Id="MergeRescheduledAction" Number="1055">
3187 - <Instance>
3188 - The {0} table contains an action '{1}' which cannot be merged from the merge module '{2}'. This action is likely colliding with an action in the database that is being created. The colliding action may have been authored in the database or merged in from another merge module. If this is a standard action, it is likely colliding due to a difference in the condition for the action in the database and merge module. If this is a custom action, it should only be declared in the database or one merge module.
3189 - <Parameter Type="System.String" Name="tableName" />
3190 - <Parameter Type="System.String" Name="actionName" />
3191 - <Parameter Type="System.String" Name="mergeModuleFile" />
3192 - </Instance>
3193 - </Message>
3194 - <Message Id="MergeTableFailed" Number="1056">
3195 - <Instance>
3196 - The {0} table contains a row with primary key(s) '{1}' which cannot be merged from the merge module '{2}'. This is likely due to collision of rows with the same primary key(s) (but other different values in other columns) between the database and the merge module.
3197 - <Parameter Type="System.String" Name="tableName" />
3198 - <Parameter Type="System.String" Name="primaryKeys" />
3199 - <Parameter Type="System.String" Name="mergeModuleFile" />
3200 - </Instance>
3201 - </Message>
3202 - <Message Id="DecompiledStandardActionRelativelyScheduledInModule" Number="1057">
3203 - <Instance>
3204 - The {0} table contains a standard action '{1}' that does not have a sequence number specified. A value in the Sequence column is required for standard actions in a merge module. Remove the action from the decompiled authoring to have WiX automatically sequence it.
3205 - <Parameter Type="System.String" Name="sequenceTableName" />
3206 - <Parameter Type="System.String" Name="actionName" />
3207 - </Instance>
3208 - </Message>
3209 - <Message Id="IllegalActionInSequence" Number="1058">
3210 - <Instance>
3211 - The {0} table contains an action '{1}' which is not allowed in this table. If this is a standard action then it is not valid for this table, if it is a custom action or dialog then this table does not accept actions of that type. This action will be left out of the decompiled output.
3212 - <Parameter Type="System.String" Name="sequenceTableName" />
3213 - <Parameter Type="System.String" Name="actionName" />
3214 - </Instance>
3215 - </Message>
3216 - <Message Id="ExpectedForeignRow" Number="1059">
3217 - <Instance>
3218 - The {0} table contains a row with primary key(s) '{1}' whose {2} column contains a value, '{3}', which specifies a foreign key relationship with the {4} table. However, since the expected foreign row specified by this value does not exist, this will result in some information being left out of the decompiled output.
3219 - <Parameter Type="System.String" Name="tableName" />
3220 - <Parameter Type="System.String" Name="primaryKey" />
3221 - <Parameter Type="System.String" Name="columnName" />
3222 - <Parameter Type="System.String" Name="columnValue" />
3223 - <Parameter Type="System.String" Name="foreignTableName" />
3224 - </Instance>
3225 - <Instance>
3226 - The {0} table contains a row with primary key(s) '{1}' whose {2} and {4} columns contain the values, '{3}' and '{5}', which specify a foreign key relationship with the {6} table. However, since the expected foreign row specified by this value does not exist, this will result in some information being left out of the decompiled output.
3227 - <Parameter Type="System.String" Name="tableName" />
3228 - <Parameter Type="System.String" Name="primaryKey" />
3229 - <Parameter Type="System.String" Name="columnName1" />
3230 - <Parameter Type="System.String" Name="columnValue1" />
3231 - <Parameter Type="System.String" Name="columnName2" />
3232 - <Parameter Type="System.String" Name="columnValue2" />
3233 - <Parameter Type="System.String" Name="foreignTableName" />
3234 - </Instance>
3235 - </Message>
3236 - <Message Id="DecompilingAsCustomTable" Number="1060">
3237 - <Instance>
3238 - The {0} table is being decompiled as a custom table.
3239 - <Parameter Type="System.String" Name="tableName" />
3240 - </Instance>
3241 - </Message>
3242 - <Message Id="IllegalPatchCreationTable" Number="1061">
3243 - <Instance>
3244 - The {0} table is not legal in a patch creation file. The information in this table will be left out of the decompiled output.
3245 - <Parameter Type="System.String" Name="tableName" />
3246 - </Instance>
3247 - </Message>
3248 - <Message Id="SkippingMergeModuleTable" Number="1062">
3249 - <Instance>
3250 - The {0} table can only be represented in WiX for merge modules. The information in this table will be left out of the decompiled output.
3251 - <Parameter Type="System.String" Name="tableName" />
3252 - </Instance>
3253 - </Message>
3254 - <Message Id="SkippingPatchCreationTable" Number="1063">
3255 - <Instance>
3256 - The {0} table can only be represented in WiX for patch creation files. The information in this table will be left out of the decompiled output.
3257 - <Parameter Type="System.String" Name="tableName" />
3258 - </Instance>
3259 - </Message>
3260 - <Message Id="UnrepresentableColumnValue" Number="1064">
3261 - <Instance>
3262 - The {0}.{1} column's value, '{2}', cannot currently be represented in the WiX schema.
3263 - <Parameter Type="System.String" Name="tableName" />
3264 - <Parameter Type="System.String" Name="columnName" />
3265 - <Parameter Type="System.Object" Name="value" />
3266 - </Instance>
3267 - </Message>
3268 - <Message Id="DeprecatedTable" Number="1065" SourceLineNumbers="no">
3269 - <Instance>
3270 - The {0} table is not supported by the WiX toolset because it has been deprecated by the Windows Installer team. Any information in this table will be left out of the decompiled output.
3271 - <Parameter Type="System.String" Name="tableName" />
3272 - </Instance>
3273 - </Message>
3274 - <Message Id="PatchTable" Number="1066">
3275 - <Instance>
3276 - The {0} table is added to the install package by a transform from a patch package (.msp) and not authored directly into an install package (.msi). The information in this table will be left out of the decompiled output.
3277 - <Parameter Type="System.String" Name="tableName" />
3278 - </Instance>
3279 - </Message>
3280 - <Message Id="IllegalColumnValue" Number="1067">
3281 - <Instance>
3282 - The {0}.{1} column's value, '{2}', is not a recognized legal value. This information will be left out of the decompiled output.
3283 - <Parameter Type="System.String" Name="tableName" />
3284 - <Parameter Type="System.String" Name="columnName" />
3285 - <Parameter Type="System.Object" Name="value" />
3286 - </Instance>
3287 - </Message>
3288 - <Message Id="DeprecatedLongNameAttribute" Number="1069">
3289 - <Instance>
3290 - The {0}/@{1} attribute has been deprecated. Since WiX now has the ability to generate short file/directory names, the desired name should be specified in the {2} attribute instead. If the name specified in the {2} attribute is a short name, then WiX will not generate a short name. If the name specified in the {2} attribute is a long name and you want to manually specify the short name, please set the short name value in the {3} attribute.
3291 - <Parameter Type="System.String" Name="elementName" />
3292 - <Parameter Type="System.String" Name="longNameAttributeName" />
3293 - <Parameter Type="System.String" Name="nameAttributeName" />
3294 - <Parameter Type="System.String" Name="shortNameAttributeName" />
3295 - </Instance>
3296 - </Message>
3297 - <Message Id="GeneratedShortFileNameConflict" Number="1070">
3298 - <Instance>
3299 - The short file name '{0}' was generated for multiple files that may be installed to the same directory. This could be due to conflicting long file names specified by the File/@Name attribute. If that is the case, please resolve the conflict in those attributes. Otherwise, please manually set the File/@ShortName attribute on the conflicting row to fix the collision. If one of the colliding files was added via a patch, that short file name should be specified manually to avoid disturbing the original short file name.
3300 - <Parameter Type="System.String" Name="shortFileName" />
3301 - </Instance>
3302 - </Message>
3303 - <Message Id="GeneratedShortFileNameConflict2" Number="1071">
3304 - <Instance>
3305 - The location of a conflicting generated short file name related to the previous warning.
3306 - </Instance>
3307 - </Message>
3308 - <Message Id="DangerousTableInMergeModule" Number="1072">
3309 - <Instance>
3310 - Merge modules should not contain the '{0}' table because all merge conflicts cannot avoided. However, this warning can be suppressed if all of the consumers of the Merge Module agree to not duplicate identifiers in the '{0}' table.
3311 - <Parameter Type="System.String" Name="tableName" />
3312 - </Instance>
3313 - </Message>
3314 - <Message Id="DeprecatedLocalizationVariablePrefix" Number="1073">
3315 - <Instance>
3316 - The localization variable $(loc.{0}) uses a deprecated prefix '$'. Please use the '!' prefix instead. Since the prefix '$' is also used by the preprocessor, it has been deprecated to avoid namespace collisions.
3317 - <Parameter Type="System.String" Name="variableId" />
3318 - </Instance>
3319 - </Message>
3320 - <Message Id="PlaceholderValue" Number="1074">
3321 - <Instance>
3322 - The {0}/@{1} attribute's value, '{2}', is a placeholder value used in example files. Please replace this placeholder with the appropriate value.
3323 - <Parameter Type="System.String" Name="elementName" />
3324 - <Parameter Type="System.String" Name="attributeName" />
3325 - <Parameter Type="System.String" Name="value" />
3326 - </Instance>
3327 - </Message>
3328 - <Message Id="MissingUpgradeCode" Number="1075">
3329 - <Instance>The Product/@UpgradeCode attribute was not found; it is strongly recommended to ensure that this product can be upgraded.</Instance>
3330 - </Message>
3331 - <Message Id="ValidationWarning" Number="1076">
3332 - <Instance>
3333 - {0}: {1}
3334 - <Parameter Type="System.String" Name="ice" />
3335 - <Parameter Type="System.String" Name="message" />
3336 - </Instance>
3337 - </Message>
3338 - <Message Id="PropertyValueContainsPropertyReference" Number="1077">
3339 - <Instance>
3340 - The '{0}' Property contains '[{1}]' in its value which is an illegal reference to another property. If this value is a string literal, not a property reference, please ignore this warning. To set a property with the value of another property, use a CustomAction with Property and Value attributes.
3341 - <Parameter Type="System.String" Name="propertyId" />
3342 - <Parameter Type="System.String" Name="otherProperty" />
3343 - </Instance>
3344 - </Message>
3345 - <Message Id="DeprecatedUpgradeProperty" Number="1078">
3346 - <Instance>Specifying a Property element as a child of an Upgrade element has been deprecated. Please specify this Property element as a child of a different element such as Product or Fragment.</Instance>
3347 - </Message>
3348 - <Message Id="EmptyCabinet" Number="1079">
3349 - <Instance>
3350 - The cabinet '{0}' does not contain any files. If this installation contains no files, this warning can likely be safely ignored. Otherwise, please add files to the cabinet or remove it.
3351 - <Parameter Type="System.String" Name="cabinetName" />
3352 - </Instance>
3353 - <Instance>
3354 - The cabinet '{0}' does not contain any files. If this patch contains no files, this warning can likely be safely ignored. Otherwise, try passing -p to torch.exe when first building the transforms, or add a ComponentRef to your PatchFamily authoring to pull changed files into the cabinet.
3355 - <Parameter Type="System.String" Name="cabinetName" />
3356 - <Parameter Type="System.Boolean" Name="isPatch" />
3357 - </Instance>
3358 - </Message>
3359 - <Message Id="DeprecatedRegistryElement" Number="1080">
3360 - <Instance>The Registry element has been deprecated. Please use one of the new elements which replaces its functionality: RegistryKey for creating registry keys, RegistryValue for writing registry values, RemoveRegistryKey for removing registry keys, and RemoveRegistryValue for removing registry values.</Instance>
3361 - </Message>
3362 - <Message Id="IllegalRegistryKeyPath" Number="1081">
3363 - <Instance>
3364 - Component '{0}' specifies an illegal registry keypath of '{1}'. Since this entry actually represents a registry key, not a registry value, it cannot be the keypath.
3365 - <Parameter Type="System.String" Name="componentName" />
3366 - <Parameter Type="System.String" Name="registryId" />
3367 - </Instance>
3368 - </Message>
3369 - <Message Id="DeprecatedPatchSequenceTargetAttribute" Number="1082">
3370 - <Instance>
3371 - The {0}/@{1} attribute has been deprecated in favor of the more strongly-typed ProductCode or TargetImage attributes. Please use the ProductCode attribute for indicating the ProductCode of a patch family directly, or the TargetImage attribute to specify the TargetImage which in turn will retrieve the ProductCode of the patch family.
3372 - <Parameter Type="System.String" Name="elementName" />
3373 - <Parameter Type="System.String" Name="attributeName" />
3374 - </Instance>
3375 - </Message>
3376 - <Message Id="ProductIdAuthored" Number="1083">
3377 - <Instance>
3378 - The 'ProductID' property should not be directly authored because it will prevent the ValidateProductID standard action from performing any validation during the installation. This property will be set by the ValidateProductID standard action or control event.
3379 - </Instance>
3380 - </Message>
3381 - <Message Id="ImplicitMergeModulePrimaryFeature" Number="1084" SourceLineNumbers="no">
3382 - <Instance>
3383 - The merge module '{0}' does not have an explicit primary feature parent specified. If the source files are linked in a different order, the primary parent feature may change. To prevent accidental changes, the primary feature parent should be set to 'yes' in one of the MergeRef/@Primary or FeatureGroupRef/@Primary locations for this component.
3384 - <Parameter Type="System.String" Name="componentId" />
3385 - </Instance>
3386 - </Message>
3387 - <Message Id="DeprecatedIgnoreModularizationElement" Number="1085">
3388 - <Instance>
3389 - The IgnoreModularization element has been deprecated. Use the Binary/@SuppressModularization, CustomAction/@SuppressModularization, or Property/@SuppressModularization attribute instead.
3390 - </Instance>
3391 - </Message>
3392 - <Message Id="PropertyModularizationSuppressed" Number="1086">
3393 - <Instance>
3394 - The Property/@SuppressModularization attribute has been set to 'yes'. Using this functionality is strongly discouraged; it should only be necessary as a workaround of last resort in rare scenarios.
3395 - </Instance>
3396 - </Message>
3397 - <Message Id="DeprecatedPackageCompressedAttribute" Number="1087">
3398 - <Instance>
3399 - The Package/@Compressed attribute is deprecated under the Module element because merge modules must always be compressed.
3400 - </Instance>
3401 - </Message>
3402 - <Message Id="DeprecatedModuleGuidAttribute" Number="1088">
3403 - <Instance>
3404 - The Module/@Guid attribute is deprecated merge modules use their package code as the modularization guid. Use the Package/@Id attribute instead.
3405 - </Instance>
3406 - </Message>
3407 - <Message Id="DeprecatedQuestionMarksGuid" Number="1090">
3408 - <Instance>
3409 - The {0}/@{1} attribute's value '????????-????-????-????-????????????' has been deprecated. Use '*' instead.
3410 - <Parameter Type="System.String" Name="elementName" />
3411 - <Parameter Type="System.String" Name="attributeName" />
3412 - </Instance>
3413 - </Message>
3414 - <Message Id="PackageCodeSet" Number="1091">
3415 - <Instance>
3416 - The Package/@Id attribute has been set. Setting this attribute will allow nonidentical .msi files to have the same package code. This may be a problem because the package code is the primary identifier used by the installer to search for and validate the correct package for a given installation. If a package is changed without changing the package code, the installer may not use the newer package if both are still accessible to the installer. Please remove the Id attribute in order to automatically generate a new package code for each new .msi file.
3417 - </Instance>
3418 - </Message>
3419 - <Message Id="InvalidModuleOrBundleVersion" Number="1093">
3420 - <Instance>
3421 - Invalid {0}/@Version '{1}'. {0} version has a max value of "65535.65535.65535.65535" and must be all numeric.
3422 - <Parameter Type="System.String" Name="moduleOrBundle" />
3423 - <Parameter Type="System.String" Name="version" />
3424 - </Instance>
3425 - </Message>
3426 - <Message Id="InvalidRemoveFile" Number="1095">
3427 - <Instance>
3428 - File '{0}' was removed from component '{1}'. Removing a file from a component will not result in the file being removed by a patch. You should author a RemoveFile element in your component to remove the file from the installation if you want the file to be removed.
3429 - <Parameter Type="System.String" Name="file" />
3430 - <Parameter Type="System.String" Name="component" />
3431 - </Instance>
3432 - </Message>
3433 - <Message Id="PreprocessorWarning" Number="1096">
3434 - <Instance>
3435 - {0}
3436 - <Parameter Type="System.String" Name="message" />
3437 - </Instance>
3438 - </Message>
3439 - <Message Id="UpdateOfNonKeyPathFile" Number="1097" SourceLineNumbers="no">
3440 - <Instance>
3441 - File '{0}' in Component '{1}' was changed, but the KeyPath file '{2}' was not. This file will not be patched on the target system if the REINSTALLMODE does not contain 'A'. The KeyPath file should also be changed and included in your patch.
3442 - <Parameter Type="System.String" Name="nonKeyPathFileId" />
3443 - <Parameter Type="System.String" Name="componentId" />
3444 - <Parameter Type="System.String" Name="keyPathFileId" />
3445 - </Instance>
3446 - </Message>
3447 - <Message Id="UnsupportedCommandLineArgument" Number="1098" SourceLineNumbers="no">
3448 - <Instance>
3449 - '{0}' is not a valid command line argument.
3450 - <Parameter Type="System.String" Name="arg" />
3451 - </Instance>
3452 - </Message>
3453 - <Message Id="MajorUpgradePatchNotRecommended" Number="1099" SourceLineNumbers="no">
3454 - <Instance>
3455 - Changing the ProductCode in a patch is not recommended because the patch cannot be uninstalled nor can it be sequenced along with other patches for the target product. See http://msdn2.microsoft.com/library/aa367571.aspx for more information.
3456 - </Instance>
3457 - </Message>
3458 - <Message Id="RetainRangeMismatch" Number="1100">
3459 - <Instance>
3460 - Mismatch in RetainRangeCounts for the file '{0}' - ignoring the retain ranges.
3461 - <Parameter Type="System.String" Name="fileId"/>
3462 - </Instance>
3463 - </Message>
3464 - <Message Id="DefaultLanguageUsedForVersionedFile" Number="1101">
3465 - <Instance>
3466 - The DefaultLanguage '{0}' was used for file '{1}' which has no language. Specifying a language that is different from the actual file may result in unexpected versioning behavior during a repair or while patching. Either specify a value for DefaultLanguage or put the language in the version information resource to eliminate this warning.
3467 - <Parameter Type="System.String" Name="language"/>
3468 - <Parameter Type="System.String" Name="fileId"/>
3469 - </Instance>
3470 - </Message>
3471 - <Message Id="DefaultLanguageUsedForUnversionedFile" Number="1102">
3472 - <Instance>
3473 - The DefaultLanguage '{0}' was used for file '{1}' which has no language or version. For unversioned files, specifying a value for DefaultLanguage is not neccessary and it will not be used when determining file versions. Remove the DefaultLanguage attribute to eliminate this warning.
3474 - <Parameter Type="System.String" Name="language"/>
3475 - <Parameter Type="System.String" Name="fileId"/>
3476 - </Instance>
3477 - </Message>
3478 - <Message Id="DefaultVersionUsedForUnversionedFile" Number="1103">
3479 - <Instance>
3480 - The DefaultVersion '{0}' was used for file '{1}' which has no version. No entry for this file will be placed in the MsiFileHash table. For unversioned files, specifying a version that is different from the actual file may result in unexpected versioning behavior during a repair or while patching. Version the resource to eliminate this warning.
3481 - <Parameter Type="System.String" Name="version"/>
3482 - <Parameter Type="System.String" Name="fileId"/>
3483 - </Instance>
3484 - </Message>
3485 - <Message Id="InvalidHigherInstallerVersionInModule" Number="1104">
3486 - <Instance>
3487 - Merge module '{0}' has an installer version of {1} which is greater than the product's installer version of {2}. Merging a module with a higher installer version than the product it is being merged into can result in invalid values in the resulting msi. You must set the Package/@InstallerVersion attribute to {1} or greater to merge this merge module into your product.
3488 - <Parameter Type="System.String" Name="moduleId" />
3489 - <Parameter Type="System.Int32" Name="moduleInstallerVersion" />
3490 - <Parameter Type="System.Int32" Name="productInstallerVersion" />
3491 - </Instance>
3492 - </Message>
3493 - <Message Id="ValidationFailedDueToSystemPolicy" Number="1105" SourceLineNumbers="no">
3494 - <Instance>
3495 - Validation could not run due to system policy. To eliminate this warning, run the process as admin or suppress ICE validation.
3496 - </Instance>
3497 - </Message>
3498 - <Message Id="ColumnsIncompatibleWithInstallerVersion" Number="1106">
3499 - <Instance>
3500 - Table '{0}' uses columns that require a version of Windows Installer greater than specified in your package ('{1}').
3501 - <Parameter Type="System.String" Name="tableName" />
3502 - <Parameter Type="System.Int32" Name="productInstallerVersion" />
3503 - </Instance>
3504 - </Message>
3505 - <Message Id="TableIncompatibleWithInstallerVersion" Number="1107">
3506 - <Instance>
3507 - Using table '{0}' requires a version of Windows Installer greater than specified in your package ('{1}').
3508 - <Parameter Type="System.String" Name="tableName" />
3509 - <Parameter Type="System.Int32" Name="productInstallerVersion" />
3510 - </Instance>
3511 - </Message>
3512 - <Message Id="DeprecatedCommandLineSwitch" Number="1108" SourceLineNumbers="no">
3513 - <Instance>
3514 - The command line switch '{0}' is deprecated.
3515 - <Parameter Type="System.String" Name="oldSwitch" />
3516 - </Instance>
3517 - <Instance>
3518 - The command line switch '{0}' is deprecated. Please use '{1}' instead.
3519 - <Parameter Type="System.String" Name="oldSwitch" />
3520 - <Parameter Type="System.String" Name="newSwitch" />
3521 - </Instance>
3522 - </Message>
3523 - <Message Id="UnexpectedEntrySection" Number="1109">
3524 - <Instance>
3525 - Found mismatched entry point &lt;{0}&gt;. Expected &lt;{1}&gt; for specified output package type {2}.
3526 - <Parameter Type="System.String" Name="sectionType" />
3527 - <Parameter Type="System.String" Name="expectedType" />
3528 - <Parameter Type="System.String" Name="outputExtension" />
3529 - </Instance>
3530 - </Message>
3531 - <Message Id="NewComponentAddedToExistingFeature" Number="1110">
3532 - <Instance>
3533 - Component '{0}' was added to feature '{1}' in the transform '{2}'. If you cannot guarantee that this feature will always be installed, you should consider adding new components to new top-level features to prevent prompts for source when installing this patch.
3534 - <Parameter Type="System.String" Name="component" />
3535 - <Parameter Type="System.String" Name="feature" />
3536 - <Parameter Type="System.String" Name="transformPath" />
3537 - </Instance>
3538 - </Message>
3539 - <Message Id="DeprecatedAttributeValue" Number="1111">
3540 - <Instance>
3541 - The value &quot;{0}&quot; for the {1}/@{2} attribute has been deprecated. Please use &quot;{3}&quot; instead.
3542 - <Parameter Type="System.String" Name="attributeValue" />
3543 - <Parameter Type="System.String" Name="elementName" />
3544 - <Parameter Type="System.String" Name="attributeName" />
3545 - <Parameter Type="System.String" Name="newAttributeValue" />
3546 - </Instance>
3547 - </Message>
3548 - <Message Id="InsufficientPermissionHarvestTypeLib" Number="1112" SourceLineNumbers="no">
3549 - <Instance>
3550 - Not enough permissions to harvest type library. On Windows Vista, you must either run Heat elevated, or install Windows Vista SP1 (or higher).
3551 - </Instance>
3552 - </Message>
3553 - <Message Id="UnclearShortcut" Number="1113">
3554 - <Instance>
3555 - Because it is an advertised shortcut, the target of shortcut '{0}' will be the keypath of component '{2}' rather than parent file '{1}'. To eliminate this warning, you can (1) make the Shortcut element a child of the File element that is the keypath of component '{2}', (2) make file '{1}' the keypath of component '{2}', or (3) remove the @Advertise attribute so the shortcut is a non-advertised shortcut.
3556 - <Parameter Type="System.String" Name="shortcutId" />
3557 - <Parameter Type="System.String" Name="fileId" />
3558 - <Parameter Type="System.String" Name="componentId" />
3559 - </Instance>
3560 - </Message>
3561 - <Message Id="TooManyProgIds" Number="1114">
3562 - <Instance>
3563 - Class '{0}' tried to use ProgId '{1}' which has already been associated with class '{2}'. This information will be left out of the decompiled output.
3564 - <Parameter Type="System.String" Name="clsId" />
3565 - <Parameter Type="System.String" Name="progId" />
3566 - <Parameter Type="System.String" Name="otherClsId" />
3567 - </Instance>
3568 - </Message>
3569 - <Message Id="BadColumnDataIgnored" Number="1115">
3570 - <Instance>
3571 - The value '{0}' in table '{1}', column '{2}' is invalid according to the column's validation information. The decompiled output includes a best-effort representation of this value.
3572 - <Parameter Type="System.String" Name="value" />
3573 - <Parameter Type="System.String" Name="tableName" />
3574 - <Parameter Type="System.String" Name="columnName" />
3575 - </Instance>
3576 - </Message>
3577 - <Message Id="NullMsiAssemblyNameValue" Number="1116">
3578 - <Instance>
3579 - The assembly in component '{0}' has a null or empty {1} assembly name value.
3580 - <Parameter Type="System.String" Name="componentName" />
3581 - <Parameter Type="System.String" Name="name" />
3582 - </Instance>
3583 - </Message>
3584 - <Message Id="InvalidAttributeCombination" Number="1117">
3585 - <Instance>
3586 - It is invalid to combine attributes {0} and {1}. The decompiled output will set attribute {2} to {3}.
3587 - <Parameter Type="System.String" Name="attrib1" />
3588 - <Parameter Type="System.String" Name="attrib2" />
3589 - <Parameter Type="System.String" Name="name" />
3590 - <Parameter Type="System.String" Name="value" />
3591 - </Instance>
3592 - </Message>
3593 - <Message Id="VariableDeclarationCollision" Number="1118">
3594 - <Instance>
3595 - The variable '{0}' with value '{1}' was previously declared with value '{2}'.
3596 - <Parameter Type="System.String" Name="variableName" />
3597 - <Parameter Type="System.String" Name="variableValue" />
3598 - <Parameter Type="System.String" Name="variableCollidingValue" />
3599 - </Instance>
3600 - </Message>
3601 - <Message Id="DuplicatePrimaryKey" Number="1119">
3602 - <Instance>
3603 - The primary key '{0}' is duplicated in table '{1}' and will be ignored. Please remove one of the entries or rename a part of the primary key to avoid the collision.
3604 - <Parameter Type="System.String" Name="primaryKey" />
3605 - <Parameter Type="System.String" Name="tableName" />
3606 - </Instance>
3607 - </Message>
3608 - <Message Id="RequiresMsi200for64bitPackage" Number="1121">
3609 - <Instance>
3610 - Package/@InstallerVersion must be 200 or greater for a 64-bit package. The value will be changed to 200. Please specify a value of 200 or greater in order to eliminate this warning.
3611 - </Instance>
3612 - </Message>
3613 - <Message Id="ExternalCabsAreNotSigned" Number="1122" SourceLineNumbers="no">
3614 - <Instance>
3615 - The installer database '{0}' has external cabs, but at least one of them is not signed. Please ensure that all external cabs are signed, if you mean to sign them. If you don't mean to sign them, there is no need to run the insignia tool as part of your build.
3616 - <Parameter Type="System.String" Name="databaseFile" />
3617 - </Instance>
3618 - </Message>
3619 - <Message Id="FailedToDeleteTempDir" Number="1123" SourceLineNumbers="no">
3620 - <Instance>
3621 - Failed to delete temporary directory: {0}
3622 - <Parameter Type="System.String" Name="directory" />
3623 - </Instance>
3624 - </Message>
3625 - <Message Id="StandardDirectoryConflictInMergeModule" Number="1124">
3626 - <Instance>
3627 - The Directory '{0}' starts with the same Id as the standard folder in Windows Installer '{1}'. A directory Id that begins with the same Id as a standard folder that is in an MSM may encounter a conflict when merging the MSM into an MSI. This may result in the contents of this merge module being installed to an unexpected location. To eliminate this warning, change your directory Id to not start with the same Id as any standard folders.
3628 - <Parameter Type="System.String" Name="directory" />
3629 - <Parameter Type="System.String" Name="standardDirectory" />
3630 - </Instance>
3631 - </Message>
3632 - <Message Id="PreprocessorUnknownPragma" Number="1125">
3633 - <Instance>
3634 - The pragma '{0}' is unknown. Please ensure you have referenced the extension that defines this pragma.
3635 - <Parameter Type="System.String" Name="pragmaName" />
3636 - </Instance>
3637 - </Message>
3638 - <Message Id="DeprecatedComponentGroupId" Number="1126">
3639 - <Instance>
3640 - The {0}/@Id attribute contains invalid characters for an identifier. Being able to use invalid identifier characters for a {0} identifier has been deprecated.
3641 - <Parameter Type="System.String" Name="elementName" />
3642 - </Instance>
3643 - </Message>
3644 - <Message Id="UxPayloadsOnlySupportEmbedding" Number="1127">
3645 - <Instance>
3646 - A UX Payload ('{0}') was marked for something other than embedded packaging, possibly because it included a @DownloadUrl attribute. At present, UX Payloads must be embedded in the Bundle, so the requested packaging is being ignored.
3647 - <Parameter Type="System.String" Name="sourceFile" />
3648 - </Instance>
3649 - </Message>
3650 - <Message Id="DiscardedRollbackBoundary" Number="1129">
3651 - <Instance>
3652 - The RollbackBoundary '{0}' was discarded because it was not followed by a package. Without a package the rollback boundary doesn't do anything. Verify that the RollbackBoundary element is not followed by another RollbackBoundary and that the element is not at the end of the chain.
3653 - <Parameter Type="System.String" Name="rollbackBoundaryId" />
3654 - </Instance>
3655 - </Message>
3656 - <Message Id="DeprecatedElement" Number="1130">
3657 - <Instance>
3658 - The {0} element has been deprecated.
3659 - <Parameter Type="System.String" Name="elementName" />
3660 - </Instance>
3661 - <Instance>
3662 - The {0} element has been deprecated. Please use the {1} element instead.
3663 - <Parameter Type="System.String" Name="elementName" />
3664 - <Parameter Type="System.String" Name="newElementName" />
3665 - </Instance>
3666 - <Instance>
3667 - The {0} element has been deprecated. Please use the {1} or {2} element instead.
3668 - <Parameter Type="System.String" Name="elementName" />
3669 - <Parameter Type="System.String" Name="newElementName1" />
3670 - <Parameter Type="System.String" Name="newElementName2" />
3671 - </Instance>
3672 - </Message>
3673 - <Message Id="CannotUpdateCabCache" Number="1131">
3674 - <Instance>
3675 - Cannot update the timestamp of cached cabinet: '{0}'. If the timestamp is not updated, the build may rebuild more than is necessary. To fix the issue, ensure that the cabinet file is writable, error: {1}
3676 - <Parameter Type="System.String" Name="cabinetPath" />
3677 - <Parameter Type="System.String" Name="detail" />
3678 - </Instance>
3679 - </Message>
3680 - <Message Id="DownloadUrlNotSupportedForEmbeddedPayloads" Number="1132">
3681 - <Instance>
3682 - The Payload '{0}' is embedded but included a @DownloadUrl attribute. Embedded Payloads cannot be downloaded so the download URL is being ignored.
3683 - <Parameter Type="System.String" Name="payloadId" />
3684 - </Instance>
3685 - </Message>
3686 - <Message Id="DiscouragedAllUsersValue" Number="1133">
3687 - <Instance>
3688 - Bundles require a package to be either per-machine or per-user. The MSI '{0}' ALLUSERS Property is set to '2' which may change from per-user to per-machine at install time. The Bundle will assume the package is per-{1} and will not work correctly if that changes. If possible, remove the Property with Id='ALLUSERS' and use Package/@InstallScope attribute instead.
3689 - <Parameter Type="System.String" Name="path" />
3690 - <Parameter Type="System.String" Name="machineOrUser" />
3691 - </Instance>
3692 - </Message>
3693 - <Message Id="ImplicitlyPerUser" Number="1134">
3694 - <Instance>
3695 - The MSI '{0}' does not explicitly indicate that it is a per-user package even though the ALLUSERS Property is blank. This suggests a per-user package so the Bundle will assume the package is per-user. If possible, use the Package/@InstallScope attribute to be explicit instead.
3696 - <Parameter Type="System.String" Name="path" />
3697 - </Instance>
3698 - </Message>
3699 - <Message Id="PerUserButForcingPerMachine" Number="1135">
3700 - <Instance>
3701 - The MSI '{0}' is a per-user package being forced to per-machine. Verify that the MsiPackage/@ForcePerMachine attribute is expected and that the per-user package works correctly when forced to install per-machine.
3702 - <Parameter Type="System.String" Name="path" />
3703 - </Instance>
3704 - </Message>
3705 - <Message Id="AttributeShouldContain" Number="1136">
3706 - <Instance>
3707 - The {0}/@{1} attribute value '{2}' should contain '{3}' when the {0}/@{4} attribute is set to '{5}'.
3708 - <Parameter Type="System.String" Name="elementName" />
3709 - <Parameter Type="System.String" Name="attributeName" />
3710 - <Parameter Type="System.String" Name="attributeValue" />
3711 - <Parameter Type="System.String" Name="expectedContains" />
3712 - <Parameter Type="System.String" Name="otherAttributeName" />
3713 - <Parameter Type="System.String" Name="otherAttributeValue" />
3714 - </Instance>
3715 - </Message>
3716 - <Message Id="DuplicateComponentGuidsMustHaveMutuallyExclusiveConditions" Number="1137">
3717 - <Instance>
3718 - Component/@Id='{0}' has a @Guid value '{1}' that duplicates another component in this package. This is not officially supported by Windows Installer but works as long as all components have mutually-exclusive conditions. It is recommended to give each component its own unique GUID.
3719 - <Parameter Type="System.String" Name="componentId" />
3720 - <Parameter Type="System.String" Name="guid" />
3721 - </Instance>
3722 - </Message>
3723 - <Message Id="DeprecatedRegistryKeyActionAttribute" Number="1138">
3724 - <Instance>
3725 - The RegistryKey/@Action attribute has been deprecated. In most cases, you can simply omit @Action. If you need to force Windows Installer to create an empty key or recursively delete the key, use the ForceCreateOnInstall or ForceDeleteOnUninstall attributes instead.
3726 - </Instance>
3727 - </Message>
3728 - <Message Id="NotABinaryWixlib" Number="1139" SourceLineNumbers="no">
3729 - <Instance>
3730 - '{0}' is not a binary Wixlib and has no embedded files.
3731 - <Parameter Type="System.String" Name="wixlib" />
3732 - </Instance>
3733 - </Message>
3734 - <Message Id="NoPerMachineDependencies" Number="1140">
3735 - <Instance>
3736 - Bundle dependencies will not be registered on per-machine package '{0}' for a per-user bundle. Either make sure that all packages are installed per-machine, or author any per-machine dependencies as permanent packages.
3737 - <Parameter Type="System.String" Name="packageId" />
3738 - </Instance>
3739 - </Message>
3740 - <Message Id="DownloadUrlNotSupportedForAttachedContainers" Number="1141">
3741 - <Instance>
3742 - The Container '{0}' is attached but included a @DownloadUrl attribute. Attached Containers cannot be downloaded so the download URL is being ignored.
3743 - <Parameter Type="System.String" Name="containerId" />
3744 - </Instance>
3745 - </Message>
3746 - <Message Id="ReservedAttribute" Number="1142">
3747 - <Instance>
3748 - The {0}/@{1} attribute is reserved for future use and has no effect in this version of the WiX toolset.
3749 - <Parameter Type="System.String" Name="elementName" />
3750 - <Parameter Type="System.String" Name="attributeName" />
3751 - </Instance>
3752 - </Message>
3753 - <Message Id="RequiresMsi500forArmPackage" Number="1143">
3754 - <Instance>
3755 - Package/@InstallerVersion must be 500 or greater for an Arm package. The value will be changed to 500. Please specify a value of 500 or greater in order to eliminate this warning.
3756 - </Instance>
3757 - </Message>
3758 - <Message Id="RemotePayloadsMustNotAlsoBeCompressed" Number="1144">
3759 - <Instance>
3760 - The {0}/@Compressed attribute must have value 'no' when a RemotePayload child element is present. RemotePayload indicates that a package will always be downloaded and cannot be compressed into a bundle. To eliminate this warning, explicitly set the {0}/@Compressed attribute to 'no'.
3761 - <Parameter Type="System.String" Name="elementName" />
3762 - </Instance>
3763 - </Message>
3764 - <Message Id="AllChangesIncludedInPatch" Number="1145">
3765 - <Instance>
3766 - All changes between the baseline and upgraded packages will be included in the patch except for any change to the ProductCode. The 'All' element is supported primarily for testing purposes and negates the benefits of patch families.
3767 - </Instance>
3768 - </Message>
3769 - <Message Id="RelatedAttributeConditionallyIgnored" Number="1146">
3770 - <Instance>
3771 - Ignoring attribute {0} because attribute {1} is set to {2}.
3772 - <Parameter Type="System.String" Name="recessiveAttribute" />
3773 - <Parameter Type="System.String" Name="dominantAttribute" />
3774 - <Parameter Type="System.String" Name="dominantValue" />
3775 - </Instance>
3776 - </Message>
3777 - <Message Id="BackslashTerminateInlineDirectorySyntax" Number="1147">
3778 - <Instance>
3779 - Backslash terminate the {0}/@{1} attribute's inline directory value '{2}'. A backslash ensures a directory name will not be mistaken for a directory reference.
3780 - <Parameter Type="System.String" Name="elementName" />
3781 - <Parameter Type="System.String" Name="attributeName" />
3782 - <Parameter Type="System.String" Name="value" />
3783 - </Instance>
3784 - </Message>
3785 - <Message Id="VersionTruncated" Number="1148">
3786 - <Instance>
3787 - Product version {0} in package '{1}' is not valid per the MSI SDK and cannot be represented in a bundle. It has been truncated to {2}.
3788 - <Parameter Type="System.String" Name="originalVersion" />
3789 - <Parameter Type="System.String" Name="package" />
3790 - <Parameter Type="System.String" Name="truncatedVersion" />
3791 - </Instance>
3792 - </Message>
3793 - <Message Id="ServiceConfigFamilyNotSupported" Number="1149">
3794 - <Instance>
3795 - {0} functionality is documented in the Windows Installer SDK to "not [work] as expected." Consider replacing {0} with the WixUtilExtension ServiceConfig element.
3796 - <Parameter Type="System.String" Name="elementName" />
3797 - </Instance>
3798 - </Message>
3799 - </Class>
3800 -
3801 - <Class Name="WixVerboses" ContainerName="WixVerboseEventArgs" BaseContainerName="MessageEventArgs" Level="Verbose">
3802 - <Message Id="ImportBinaryStream" Number="9000" SourceLineNumbers="no">
3803 - <Instance>
3804 - Importing binary stream from '{0}'.
3805 - <Parameter Type="System.String" Name="streamSource" />
3806 - </Instance>
3807 - </Message>
3808 - <Message Id="ImportIconStream" Number="9001" SourceLineNumbers="no">
3809 - <Instance>
3810 - Importing icon stream from '{0}'.
3811 - <Parameter Type="System.String" Name="streamSource" />
3812 - </Instance>
3813 - </Message>
3814 - <Message Id="CopyFile" Number="9002" SourceLineNumbers="no">
3815 - <Instance>
3816 - Copying file '{0}' to '{1}'.
3817 - <Parameter Type="System.String" Name="sourceFile" />
3818 - <Parameter Type="System.String" Name="destinationFile" />
3819 - </Instance>
3820 - </Message>
3821 - <Message Id="MoveFile" Number="9003" SourceLineNumbers="no">
3822 - <Instance>
3823 - Moving file '{0}' to '{1}'.
3824 - <Parameter Type="System.String" Name="sourceFile" />
3825 - <Parameter Type="System.String" Name="destinationFile" />
3826 - </Instance>
3827 - </Message>
3828 - <Message Id="CreateDirectory" Number="9004" SourceLineNumbers="no">
3829 - <Instance>
3830 - The directory '{0}' does not exist, creating it now.
3831 - <Parameter Type="System.String" Name="directory" />
3832 - </Instance>
3833 - </Message>
3834 - <Message Id="RemoveDestinationFile" Number="9005" SourceLineNumbers="no">
3835 - <Instance>
3836 - The destination file '{0}' already exists, attempting to remove it.
3837 - <Parameter Type="System.String" Name="destinationFile" />
3838 - </Instance>
3839 - </Message>
3840 - <Message Id="CabFile" Number="9006" SourceLineNumbers="no">
3841 - <Instance>
3842 - Cabbing file {0} from '{1}'.
3843 - <Parameter Type="System.String" Name="fileId" />
3844 - <Parameter Type="System.String" Name="filePath" />
3845 - </Instance>
3846 - </Message>
3847 - <Message Id="UpdatingFileInformation" Number="9007" SourceLineNumbers="no">
3848 - <Instance>Updating file information.</Instance>
3849 - </Message>
3850 - <Message Id="GeneratingDatabase" Number="9008" SourceLineNumbers="no">
3851 - <Instance>Generating database.</Instance>
3852 - </Message>
3853 - <Message Id="MergingModules" Number="9009" SourceLineNumbers="no">
3854 - <Instance>Merging modules.</Instance>
3855 - </Message>
3856 - <Message Id="CreatingCabinetFiles" Number="9010" SourceLineNumbers="no">
3857 - <Instance>Creating cabinet files.</Instance>
3858 - </Message>
3859 - <Message Id="ImportingStreams" Number="9011" SourceLineNumbers="no">
3860 - <Instance>Importing streams.</Instance>
3861 - </Message>
3862 - <Message Id="LayingOutMedia" Number="9012" SourceLineNumbers="no">
3863 - <Instance>Laying out media.</Instance>
3864 - </Message>
3865 - <Message Id="DecompilingTable" Number="9013" SourceLineNumbers="no">
3866 - <Instance>
3867 - Decompiling the {0} table.
3868 - <Parameter Type="System.String" Name="tableName" />
3869 - </Instance>
3870 - </Message>
3871 - <Message Id="ValidationInfo" Number="9014" SourceLineNumbers="no">
3872 - <Instance>
3873 - {0}: {1}
3874 - <Parameter Type="System.String" Name="ice" />
3875 - <Parameter Type="System.String" Name="message" />
3876 - </Instance>
3877 - </Message>
3878 - <Message Id="CreateCabinet" Number="9015" SourceLineNumbers="no">
3879 - <Instance>
3880 - Creating cabinet '{0}'.
3881 - <Parameter Type="System.String" Name="cabinet" />
3882 - </Instance>
3883 - </Message>
3884 - <Message Id="ValidatingDatabase" Number="9016" SourceLineNumbers="no">
3885 - <Instance>Validating database.</Instance>
3886 - </Message>
3887 - <Message Id="OpeningMergeModule" Number="9017" SourceLineNumbers="no">
3888 - <Instance>
3889 - Opening merge module '{0}' with language '{1}'.
3890 - <Parameter Type="System.String" Name="modulePath" />
3891 - <Parameter Type="System.Int16" Name="language" />
3892 - </Instance>
3893 - </Message>
3894 - <Message Id="MergingMergeModule" Number="9018" SourceLineNumbers="no">
3895 - <Instance>
3896 - Merging merge module '{0}'.
3897 - <Parameter Type="System.String" Name="modulePath" />
3898 - </Instance>
3899 - </Message>
3900 - <Message Id="ConnectingMergeModule" Number="9019" SourceLineNumbers="no">
3901 - <Instance>
3902 - Connecting merge module '{0}' to feature '{1}'.
3903 - <Parameter Type="System.String" Name="modulePath" />
3904 - <Parameter Type="System.String" Name="feature" />
3905 - </Instance>
3906 - </Message>
3907 - <Message Id="ResequencingMergeModuleFiles" Number="9020" SourceLineNumbers="no">
3908 - <Instance>Resequencing files from all merge modules.</Instance>
3909 - </Message>
3910 - <Message Id="BinderTempDirLocatedAt" Number="9021" SourceLineNumbers="no">
3911 - <Instance>
3912 - Binder temporary directory located at '{0}'.
3913 - <Parameter Type="System.String" Name="directory" />
3914 - </Instance>
3915 - </Message>
3916 - <Message Id="ValidatorTempDirLocatedAt" Number="9022" SourceLineNumbers="no">
3917 - <Instance>
3918 - Validator temporary directory located at '{0}'.
3919 - <Parameter Type="System.String" Name="directory" />
3920 - </Instance>
3921 - </Message>
3922 - <Message Id="GeneratingBundle" Number="9023" SourceLineNumbers="no">
3923 - <Instance>
3924 - Generating Burn bundle '{0}' from stub '{1}'.
3925 - <Parameter Type="System.String" Name="bundleFile" />
3926 - <Parameter Type="System.String" Name="stubFile" />
3927 - </Instance>
3928 - </Message>
3929 - <Message Id="ResolvingManifest" Number="9024" SourceLineNumbers="no">
3930 - <Instance>
3931 - Generating resolved manifest '{0}'.
3932 - <Parameter Type="System.String" Name="manifestFile" />
3933 - </Instance>
3934 - </Message>
3935 - <Message Id="LoadingPayload" Number="9025" SourceLineNumbers="no">
3936 - <Instance>
3937 - Loading payload '{0}' into container.
3938 - <Parameter Type="System.String" Name="payload" />
3939 - </Instance>
3940 - </Message>
3941 - <Message Id="BundleGuid" Number="9026" SourceLineNumbers="no">
3942 - <Instance>
3943 - Assigning bundle GUID '{0}'.
3944 - <Parameter Type="System.String" Name="bundleGuid" />
3945 - </Instance>
3946 - </Message>
3947 - <Message Id="CopyingExternalPayload" Number="9027" SourceLineNumbers="no">
3948 - <Instance>
3949 - Copying external payload from '{0}' to '{1}'.
3950 - <Parameter Type="System.String" Name="payload" />
3951 - <Parameter Type="System.String" Name="outputDirectory" />
3952 - </Instance>
3953 - </Message>
3954 - <Message Id="EmbeddingContainer" Number="9028" SourceLineNumbers="no">
3955 - <Instance>
3956 - Embedding container '{0}' ({1} bytes) with '{2}' compression.
3957 - <Parameter Type="System.String" Name="container" />
3958 - <Parameter Type="System.Int64" Name="size" />
3959 - <Parameter Type="System.String" Name="compression" />
3960 - </Instance>
3961 - </Message>
3962 - <Message Id="SwitchingToPerUserPackage" Number="9029">
3963 - <Instance>
3964 - Bundle switching from per-machine to per-user due to addition of per-user package '{0}'.
3965 - <Parameter Type="System.String" Name="path" />
3966 - </Instance>
3967 - </Message>
3968 - <Message Id="SetCabbingThreadCount" Number="9030" SourceLineNumbers="no">
3969 - <Instance>
3970 - There will be '{0}' threads used to produce CAB files.
3971 - <Parameter Type="System.String" Name="threads" />
3972 - </Instance>
3973 - </Message>
3974 - <Message Id="ValidationSerialized" Number="9031" SourceLineNumbers="no">
3975 - <Instance>
3976 - Multiple packages cannot reliably be validated simultaneously. This validation will resume when the other package being validated has completed.
3977 - </Instance>
3978 - </Message>
3979 - <Message Id="ReusingCabCache" Number="9032">
3980 - <Instance>
3981 - Reusing cabinet '{0}' from cabinet cache path: '{1}'.
3982 - <Parameter Type="System.String" Name="cabinetName" />
3983 - <Parameter Type="System.String" Name="source" />
3984 - </Instance>
3985 - </Message>
3986 - <Message Id="CabinetsSplitInParallel" Number="9033" SourceLineNumbers="no">
3987 - <Instance>
3988 - Multiple Cabinets with Large Files are splitting simultaneously. This current cabinet is waiting on a shared resource and splitting will resume when the other splitting has completed.
3989 - </Instance>
3990 - </Message>
3991 - <Message Id="ValidatedDatabase" Number="9034" SourceLineNumbers="no">
3992 - <Instance>
3993 - Validation complete: {0:N0}ms elapsed.
3994 - <Parameter Type="System.Int64" Name="size" />
3995 - </Instance>
3996 - </Message>
3997 - </Class>
3998 -</Messages>
src/WixToolset.Core/Extensibility/HeatExtension.cs
+6 -6
@@ -123,13 +123,13 @@ namespace WixToolset.Core.Extensibility
123 }
124 else
125 {
126 - throw new WixException(WixErrors.InvalidExtension(assemblyName, innerE.Message));
126 + throw new WixException(ErrorMessages.InvalidExtension(assemblyName, innerE.Message));
127 }
128 }
129 }
130 else
131 {
132 - throw new WixException(WixErrors.InvalidExtension(assemblyName, e.Message));
132 + throw new WixException(ErrorMessages.InvalidExtension(assemblyName, e.Message));
133 }
134 }
135 }
@@ -143,7 +143,7 @@ namespace WixToolset.Core.Extensibility
143 }
144 catch (Exception e)
145 {
146 - throw new WixException(WixErrors.InvalidExtensionType(assemblyName, className, e.GetType().ToString(), e.Message));
146 + throw new WixException(ErrorMessages.InvalidExtensionType(assemblyName, className, e.GetType().ToString(), e.Message));
147 }
148 }
149 else
@@ -157,7 +157,7 @@ namespace WixToolset.Core.Extensibility
157 }
158 else
159 {
160 - throw new WixException(WixErrors.InvalidExtensionType(assemblyName, typeof(AssemblyDefaultHeatExtensionAttribute).ToString()));
160 + throw new WixException(ErrorMessages.InvalidExtensionType(assemblyName, typeof(AssemblyDefaultHeatExtensionAttribute).ToString()));
161 }
162 }
163 }
@@ -168,7 +168,7 @@ namespace WixToolset.Core.Extensibility
168 }
169 else
170 {
171 - throw new WixException(WixErrors.InvalidExtensionType(extension, extensionType.ToString(), typeof(HeatExtension).ToString()));
171 + throw new WixException(ErrorMessages.InvalidExtensionType(extension, extensionType.ToString(), typeof(HeatExtension).ToString()));
172 }
173 }
174
@@ -191,7 +191,7 @@ namespace WixToolset.Core.Extensibility
191 }
192 catch (Exception e)
193 {
194 - throw new WixException(WixErrors.InvalidExtension(assemblyName, e.Message));
194 + throw new WixException(ErrorMessages.InvalidExtension(assemblyName, e.Message));
195 }
196
197 return extensionAssembly;
src/WixToolset.Core/Extensibility/IHarvesterCore.cs
+2 -16
@@ -2,22 +2,14 @@
2
3 namespace WixToolset
4 {
5 - using System;
6 - using System.Diagnostics.CodeAnalysis;
7 - using System.IO;
8 - using WixToolset.Data;
9 - using Wix = WixToolset.Data.Serialize;
5 + using WixToolset.Extensibility.Services;
6
7 /// <summary>
8 /// The WiX Toolset harvester core.
9 /// </summary>
10 public interface IHarvesterCore
11 {
16 - /// <summary>
17 - /// Gets whether the harvester core encountered an error while processing.
18 - /// </summary>
19 - /// <value>Flag if core encountered an error during processing.</value>
20 - bool EncounteredError { get; }
12 + IMessaging Messaging { get; set; }
13
14 /// <summary>
15 /// Gets or sets the value of the extension argument passed to heat.
@@ -46,12 +38,6 @@ namespace WixToolset
38 /// <returns>The generated identifier.</returns>
39 string GenerateIdentifier(string prefix, params string[] args);
40
49 - /// <summary>
50 - /// Sends a message to the message delegate if there is one.
51 - /// </summary>
52 - /// <param name="mea">Message event arguments.</param>
53 - void OnMessage(MessageEventArgs mea);
54 -
41 /// <summary>
42 /// Resolves a file's path if the Wix.File.Source value starts with "SourceDir\".
43 /// </summary>
src/WixToolset.Core/Extensibility/IHeatCore.cs
-14
@@ -2,19 +2,11 @@
2
3 namespace WixToolset.Core.Extensibility
4 {
5 - using WixToolset.Data;
6 -
5 /// <summary>
6 /// The WiX Toolset Harvester application core.
7 /// </summary>
8 public interface IHeatCore
9 {
12 - /// <summary>
13 - /// Gets whether the mutator core encountered an error while processing.
14 - /// </summary>
15 - /// <value>Flag if core encountered an error during processing.</value>
16 - bool EncounteredError { get; }
17 -
10 /// <summary>
11 /// Gets the harvester.
12 /// </summary>
@@ -26,11 +18,5 @@ namespace WixToolset.Core.Extensibility
18 /// </summary>
19 /// <value>The mutator.</value>
20 Mutator Mutator { get; }
29 -
30 - /// <summary>
31 - /// Sends a message to the message delegate if there is one.
32 - /// </summary>
33 - /// <param name="mea">Message event arguments.</param>
34 - void OnMessage(MessageEventArgs mea);
21 }
22 }
src/WixToolset.Core/ExtensibilityServices/ExtensionManager.cs renamed
+4 -4
@@ -1,6 +1,6 @@
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.Core
3 +namespace WixToolset.Core.ExtensibilityServices
4 {
5 using System;
6 using System.Collections.Generic;
@@ -83,7 +83,7 @@ namespace WixToolset.Core
83 }
84 catch (Exception e)
85 {
86 - throw new WixException(WixErrors.InvalidExtension(assemblyName, e.Message), e);
86 + throw new WixException(ErrorMessages.InvalidExtension(assemblyName, e.Message), e);
87 }
88 }
89
@@ -102,11 +102,11 @@ namespace WixToolset.Core
102 return false;
103 }
104
105 - throw new WixException(WixErrors.InvalidExtension(assemblyName, innerE.Message), innerE);
105 + throw new WixException(ErrorMessages.InvalidExtension(assemblyName, innerE.Message), innerE);
106 }
107 catch (Exception e)
108 {
109 - throw new WixException(WixErrors.InvalidExtension(assemblyName, e.Message), e);
109 + throw new WixException(ErrorMessages.InvalidExtension(assemblyName, e.Message), e);
110 }
111 }
112 }
src/WixToolset.Core/ExtensibilityServices/Messaging.cs new
+194
@@ -0,0 +1,194 @@
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.Core.ExtensibilityServices
4 +{
5 + using System;
6 + using System.Collections.Generic;
7 + using System.Globalization;
8 + using System.Text;
9 + using WixToolset.Data;
10 + using WixToolset.Extensibility;
11 + using WixToolset.Extensibility.Services;
12 +
13 + internal class Messaging : IMessaging
14 + {
15 + private IMessageListener listener;
16 + private HashSet<int> suppressedWarnings = new HashSet<int>();
17 + private HashSet<int> warningsAsErrors = new HashSet<int>();
18 +
19 + public bool EncounteredError { get; private set; }
20 +
21 + public int LastErrorNumber { get; private set; }
22 +
23 + public bool ShowVerboseMessages { get; set; }
24 +
25 + public bool SuppressAllWarnings { get; set; }
26 +
27 + public bool WarningsAsError { get; set; }
28 +
29 + public void ElevateWarningMessage(int warningNumber)
30 + {
31 + this.warningsAsErrors.Add(warningNumber);
32 + }
33 +
34 + public void SetListener(IMessageListener listener)
35 + {
36 + this.listener = listener;
37 + }
38 +
39 + public void SuppressWarningMessage(int warningNumber)
40 + {
41 + this.suppressedWarnings.Add(warningNumber);
42 + }
43 +
44 + public string FormatMessage(Message message)
45 + {
46 + var level = CalculateMessageLevel(message);
47 +
48 + if (level == MessageLevel.Nothing)
49 + {
50 + return String.Empty;
51 + }
52 +
53 + var shortAppName = String.IsNullOrEmpty(this.listener?.ShortAppName) ? "WIX" : this.listener.ShortAppName;
54 + var longAppName = String.IsNullOrEmpty(this.listener?.LongAppName) ? "WIX" : this.listener.LongAppName;
55 +
56 + var fileNames = new List<string>();
57 + var errorFileName = longAppName;
58 + for (var sln = message.SourceLineNumbers; null != sln; sln = sln.Parent)
59 + {
60 + if (String.IsNullOrEmpty(sln.FileName))
61 + {
62 + continue;
63 + }
64 + else if (sln.LineNumber.HasValue)
65 + {
66 + if (fileNames.Count == 0)
67 + {
68 + errorFileName = String.Format(CultureInfo.CurrentUICulture, WixStrings.Format_FirstLineNumber, sln.FileName, sln.LineNumber);
69 + }
70 +
71 + fileNames.Add(String.Format(CultureInfo.CurrentUICulture, WixStrings.Format_LineNumber, sln.FileName, sln.LineNumber));
72 + }
73 + else
74 + {
75 + if (fileNames.Count == 0)
76 + {
77 + errorFileName = sln.FileName;
78 + }
79 +
80 + fileNames.Add(sln.FileName);
81 + }
82 + }
83 +
84 + var levelString = String.Empty;
85 + if (MessageLevel.Warning == level)
86 + {
87 + levelString = WixStrings.MessageType_Warning;
88 + }
89 + else if (MessageLevel.Error == level)
90 + {
91 + levelString = WixStrings.MessageType_Error;
92 + }
93 +
94 + string formatted;
95 + if (message.ResourceManager == null)
96 + {
97 + formatted = String.Format(CultureInfo.InvariantCulture, message.ResourceNameOrFormat, message.MessageArgs);
98 + }
99 + else
100 + {
101 + formatted = String.Format(CultureInfo.InvariantCulture, message.ResourceManager.GetString(message.ResourceNameOrFormat), message.MessageArgs);
102 + }
103 +
104 + var builder = new StringBuilder();
105 + if (level == MessageLevel.Information || level == MessageLevel.Verbose)
106 + {
107 + builder.AppendFormat(WixStrings.Format_InfoMessage, formatted);
108 + }
109 + else
110 + {
111 + builder.AppendFormat(WixStrings.Format_NonInfoMessage, errorFileName, levelString, shortAppName, message.Id, formatted);
112 + }
113 +
114 + if (fileNames.Count > 1)
115 + {
116 + builder.AppendFormat(WixStrings.INF_SourceTrace, Environment.NewLine);
117 +
118 + foreach (var fileName in fileNames)
119 + {
120 + builder.AppendFormat(WixStrings.INF_SourceTraceLocation, fileName, Environment.NewLine);
121 + }
122 +
123 + builder.AppendLine();
124 + }
125 +
126 + return builder.ToString();
127 + }
128 +
129 + public void Write(Message message)
130 + {
131 + var level = CalculateMessageLevel(message);
132 +
133 + if (level == MessageLevel.Nothing)
134 + {
135 + return;
136 + }
137 +
138 + if (level == MessageLevel.Error)
139 + {
140 + this.EncounteredError = true;
141 + this.LastErrorNumber = message.Id;
142 + }
143 +
144 + if (this.listener != null)
145 + {
146 + this.listener.Write(message);
147 + }
148 + else if (level == MessageLevel.Error)
149 + {
150 + throw new WixException(message);
151 + }
152 + }
153 +
154 + public void Write(string message, bool verbose = false)
155 + {
156 + if (!verbose || this.ShowVerboseMessages)
157 + {
158 + this.listener?.Write(message);
159 + }
160 + }
161 +
162 + /// <summary>
163 + /// Determines the level of this message, when taking into account warning-as-error,
164 + /// warning level, verbosity level and message suppressed by the caller.
165 + /// </summary>
166 + /// <param name="message">Event arguments for the message.</param>
167 + /// <returns>MessageLevel representing the level of this message.</returns>
168 + private MessageLevel CalculateMessageLevel(Message message)
169 + {
170 + var level = message.Level;
171 +
172 + if (level == MessageLevel.Verbose)
173 + {
174 + if (!this.ShowVerboseMessages)
175 + {
176 + level = MessageLevel.Nothing;
177 + }
178 + }
179 + else if (level == MessageLevel.Warning)
180 + {
181 + if (this.SuppressAllWarnings || this.suppressedWarnings.Contains(message.Id))
182 + {
183 + level = MessageLevel.Nothing;
184 + }
185 + else if (this.WarningsAsError || this.warningsAsErrors.Contains(message.Id))
186 + {
187 + level = MessageLevel.Error;
188 + }
189 + }
190 +
191 + return level;
192 + }
193 + }
194 +}
src/WixToolset.Core/ExtensibilityServices/ParseHelper.cs
+35 -31
@@ -34,10 +34,14 @@ namespace WixToolset.Core.ExtensibilityServices
34 public ParseHelper(IServiceProvider serviceProvider)
35 {
36 this.ServiceProvider = serviceProvider;
37 +
38 + this.Messaging = serviceProvider.GetService<IMessaging>();
39 }
40
41 private IServiceProvider ServiceProvider { get; }
42
43 + private IMessaging Messaging { get; }
44 +
45 private ITupleDefinitionCreator Creator { get; set; }
46
47 public bool ContainsProperty(string possibleProperty)
@@ -136,7 +140,7 @@ namespace WixToolset.Core.ExtensibilityServices
140 // TODO: should overriding the parent identifier with a specific id be an error or a warning or just let it slide?
141 //if (null != parentId)
142 //{
139 - // this.core.OnMessage(WixErrors.Xxx(sourceLineNumbers));
143 + // this.core.Write(WixErrors.Xxx(sourceLineNumbers));
144 //}
145
146 id = inlineSyntax[0].TrimEnd(':');
@@ -360,7 +364,7 @@ namespace WixToolset.Core.ExtensibilityServices
364
365 if (ParseHelper.PutGuidHere.IsMatch(value))
366 {
363 - Messaging.Instance.OnMessage(WixErrors.ExampleGuid(sourceLineNumbers, attribute.Parent.Name.LocalName, attribute.Name.LocalName, value));
367 + this.Messaging.Write(ErrorMessages.ExampleGuid(sourceLineNumbers, attribute.Parent.Name.LocalName, attribute.Name.LocalName, value));
368 return CompilerConstants.IllegalGuid;
369 }
370 else if (value.StartsWith("!(loc", StringComparison.Ordinal) || value.StartsWith("$(loc", StringComparison.Ordinal) || value.StartsWith("!(wix", StringComparison.Ordinal))
@@ -374,14 +378,14 @@ namespace WixToolset.Core.ExtensibilityServices
378 // TODO: This used to be a pedantic error, what should it be now?
379 //if (uppercaseGuid != value)
380 //{
377 - // Messaging.Instance.OnMessage(WixErrors.GuidContainsLowercaseLetters(sourceLineNumbers, attribute.Parent.Name.LocalName, attribute.Name.LocalName, value));
381 + // this.Messaging.Write(WixErrors.GuidContainsLowercaseLetters(sourceLineNumbers, attribute.Parent.Name.LocalName, attribute.Name.LocalName, value));
382 //}
383
384 return String.Concat("{", uppercaseGuid, "}");
385 }
386 else
387 {
384 - Messaging.Instance.OnMessage(WixErrors.IllegalGuidValue(sourceLineNumbers, attribute.Parent.Name.LocalName, attribute.Name.LocalName, value));
388 + this.Messaging.Write(ErrorMessages.IllegalGuidValue(sourceLineNumbers, attribute.Parent.Name.LocalName, attribute.Name.LocalName, value));
389 }
390 }
391
@@ -391,7 +395,7 @@ namespace WixToolset.Core.ExtensibilityServices
395 public Identifier GetAttributeIdentifier(SourceLineNumber sourceLineNumbers, XAttribute attribute)
396 {
397 var access = AccessModifier.Public;
394 - var value = Common.GetAttributeValue(sourceLineNumbers, attribute, EmptyRule.CanBeEmpty);
398 + var value = Common.GetAttributeValue(this.Messaging, sourceLineNumbers, attribute, EmptyRule.CanBeEmpty);
399
400 var match = ParseHelper.LegalIdentifierWithAccess.Match(value);
401 if (!match.Success)
@@ -407,7 +411,7 @@ namespace WixToolset.Core.ExtensibilityServices
411
412 if (Common.IsIdentifier(value) && 72 < value.Length)
413 {
410 - Messaging.Instance.OnMessage(WixWarnings.IdentifierTooLong(sourceLineNumbers, attribute.Parent.Name.LocalName, attribute.Name.LocalName, value));
414 + this.Messaging.Write(WarningMessages.IdentifierTooLong(sourceLineNumbers, attribute.Parent.Name.LocalName, attribute.Name.LocalName, value));
415 }
416
417 return new Identifier(value, access);
@@ -415,7 +419,7 @@ namespace WixToolset.Core.ExtensibilityServices
419
420 public string GetAttributeIdentifierValue(SourceLineNumber sourceLineNumbers, XAttribute attribute)
421 {
418 - return Common.GetAttributeIdentifierValue(sourceLineNumbers, attribute);
422 + return Common.GetAttributeIdentifierValue(this.Messaging, sourceLineNumbers, attribute);
423 }
424
425 public string[] GetAttributeInlineDirectorySyntax(SourceLineNumber sourceLineNumbers, XAttribute attribute, bool resultUsedToCreateReference = false)
@@ -432,12 +436,12 @@ namespace WixToolset.Core.ExtensibilityServices
436 string id = result[0].TrimEnd(':');
437 if (1 == result.Length)
438 {
435 - Messaging.Instance.OnMessage(WixErrors.InlineDirectorySyntaxRequiresPath(sourceLineNumbers, attribute.Parent.Name.LocalName, attribute.Name.LocalName, value, id));
439 + this.Messaging.Write(ErrorMessages.InlineDirectorySyntaxRequiresPath(sourceLineNumbers, attribute.Parent.Name.LocalName, attribute.Name.LocalName, value, id));
440 return null;
441 }
442 else if (!this.IsValidIdentifier(id))
443 {
440 - Messaging.Instance.OnMessage(WixErrors.IllegalIdentifier(sourceLineNumbers, attribute.Parent.Name.LocalName, attribute.Name.LocalName, value, id));
444 + this.Messaging.Write(ErrorMessages.IllegalIdentifier(sourceLineNumbers, attribute.Parent.Name.LocalName, attribute.Name.LocalName, value, id));
445 return null;
446 }
447
@@ -449,13 +453,13 @@ namespace WixToolset.Core.ExtensibilityServices
453 {
454 if (!this.IsValidLongFilename(result[0], false, false))
455 {
452 - Messaging.Instance.OnMessage(WixErrors.IllegalLongFilename(sourceLineNumbers, attribute.Parent.Name.LocalName, attribute.Name.LocalName, value, result[0]));
456 + this.Messaging.Write(ErrorMessages.IllegalLongFilename(sourceLineNumbers, attribute.Parent.Name.LocalName, attribute.Name.LocalName, value, result[0]));
457 return null;
458 }
459 }
460 else if (!this.IsValidIdentifier(result[0]))
461 {
458 - Messaging.Instance.OnMessage(WixErrors.IllegalIdentifier(sourceLineNumbers, attribute.Parent.Name.LocalName, attribute.Name.LocalName, value, result[0]));
462 + this.Messaging.Write(ErrorMessages.IllegalIdentifier(sourceLineNumbers, attribute.Parent.Name.LocalName, attribute.Name.LocalName, value, result[0]));
463 return null;
464 }
465
@@ -467,14 +471,14 @@ namespace WixToolset.Core.ExtensibilityServices
471 {
472 if (!this.IsValidLongFilename(result[i], false, false))
473 {
470 - Messaging.Instance.OnMessage(WixErrors.IllegalLongFilename(sourceLineNumbers, attribute.Parent.Name.LocalName, attribute.Name.LocalName, value, result[i]));
474 + this.Messaging.Write(ErrorMessages.IllegalLongFilename(sourceLineNumbers, attribute.Parent.Name.LocalName, attribute.Name.LocalName, value, result[i]));
475 return null;
476 }
477 }
478
479 if (1 < result.Length && !value.EndsWith("\\"))
480 {
477 - Messaging.Instance.OnMessage(WixWarnings.BackslashTerminateInlineDirectorySyntax(sourceLineNumbers, attribute.Parent.Name.LocalName, attribute.Name.LocalName, value));
481 + this.Messaging.Write(WarningMessages.BackslashTerminateInlineDirectorySyntax(sourceLineNumbers, attribute.Parent.Name.LocalName, attribute.Name.LocalName, value));
482 }
483 }
484
@@ -483,7 +487,7 @@ namespace WixToolset.Core.ExtensibilityServices
487
488 public int GetAttributeIntegerValue(SourceLineNumber sourceLineNumbers, XAttribute attribute, int minimum, int maximum)
489 {
486 - return Common.GetAttributeIntegerValue(sourceLineNumbers, attribute, minimum, maximum);
490 + return Common.GetAttributeIntegerValue(this.Messaging, sourceLineNumbers, attribute, minimum, maximum);
491 }
492
493 public string GetAttributeLongFilename(SourceLineNumber sourceLineNumbers, XAttribute attribute, bool allowWildcards, bool allowRelative)
@@ -501,11 +505,11 @@ namespace WixToolset.Core.ExtensibilityServices
505 {
506 if (allowRelative)
507 {
504 - Messaging.Instance.OnMessage(WixErrors.IllegalRelativeLongFilename(sourceLineNumbers, attribute.Parent.Name.LocalName, attribute.Name.LocalName, value));
508 + this.Messaging.Write(ErrorMessages.IllegalRelativeLongFilename(sourceLineNumbers, attribute.Parent.Name.LocalName, attribute.Name.LocalName, value));
509 }
510 else
511 {
508 - Messaging.Instance.OnMessage(WixErrors.IllegalLongFilename(sourceLineNumbers, attribute.Parent.Name.LocalName, attribute.Name.LocalName, value));
512 + this.Messaging.Write(ErrorMessages.IllegalLongFilename(sourceLineNumbers, attribute.Parent.Name.LocalName, attribute.Name.LocalName, value));
513 }
514 }
515 else if (allowRelative)
@@ -513,12 +517,12 @@ namespace WixToolset.Core.ExtensibilityServices
517 string normalizedPath = value.Replace('\\', '/');
518 if (normalizedPath.StartsWith("../", StringComparison.Ordinal) || normalizedPath.Contains("/../"))
519 {
516 - Messaging.Instance.OnMessage(WixErrors.PayloadMustBeRelativeToCache(sourceLineNumbers, attribute.Parent.Name.LocalName, attribute.Name.LocalName, value));
520 + this.Messaging.Write(ErrorMessages.PayloadMustBeRelativeToCache(sourceLineNumbers, attribute.Parent.Name.LocalName, attribute.Name.LocalName, value));
521 }
522 }
523 else if (CompilerCore.IsAmbiguousFilename(value))
524 {
521 - Messaging.Instance.OnMessage(WixWarnings.AmbiguousFileOrDirectoryName(sourceLineNumbers, attribute.Parent.Name.LocalName, attribute.Name.LocalName, value));
525 + this.Messaging.Write(WarningMessages.AmbiguousFileOrDirectoryName(sourceLineNumbers, attribute.Parent.Name.LocalName, attribute.Name.LocalName, value));
526 }
527 }
528
@@ -539,11 +543,11 @@ namespace WixToolset.Core.ExtensibilityServices
543
544 if (CompilerConstants.LongNotSet == longValue || CompilerConstants.IllegalLong == longValue)
545 {
542 - Messaging.Instance.OnMessage(WixErrors.IntegralValueSentinelCollision(sourceLineNumbers, longValue));
546 + this.Messaging.Write(ErrorMessages.IntegralValueSentinelCollision(sourceLineNumbers, longValue));
547 }
548 else if (minimum > longValue || maximum < longValue)
549 {
546 - Messaging.Instance.OnMessage(WixErrors.IntegralValueOutOfRange(sourceLineNumbers, attribute.Parent.Name.LocalName, attribute.Name.LocalName, longValue, minimum, maximum));
550 + this.Messaging.Write(ErrorMessages.IntegralValueOutOfRange(sourceLineNumbers, attribute.Parent.Name.LocalName, attribute.Name.LocalName, longValue, minimum, maximum));
551 longValue = CompilerConstants.IllegalLong;
552 }
553
@@ -551,11 +555,11 @@ namespace WixToolset.Core.ExtensibilityServices
555 }
556 catch (FormatException)
557 {
554 - Messaging.Instance.OnMessage(WixErrors.IllegalLongValue(sourceLineNumbers, attribute.Parent.Name.LocalName, attribute.Name.LocalName, value));
558 + this.Messaging.Write(ErrorMessages.IllegalLongValue(sourceLineNumbers, attribute.Parent.Name.LocalName, attribute.Name.LocalName, value));
559 }
560 catch (OverflowException)
561 {
558 - Messaging.Instance.OnMessage(WixErrors.IllegalLongValue(sourceLineNumbers, attribute.Parent.Name.LocalName, attribute.Name.LocalName, value));
562 + this.Messaging.Write(ErrorMessages.IllegalLongValue(sourceLineNumbers, attribute.Parent.Name.LocalName, attribute.Name.LocalName, value));
563 }
564 }
565
@@ -564,7 +568,7 @@ namespace WixToolset.Core.ExtensibilityServices
568
569 public string GetAttributeValue(SourceLineNumber sourceLineNumbers, XAttribute attribute, EmptyRule emptyRule = EmptyRule.CanBeWhitespaceOnly)
570 {
567 - return Common.GetAttributeValue(sourceLineNumbers, attribute, emptyRule);
571 + return Common.GetAttributeValue(this.Messaging, sourceLineNumbers, attribute, emptyRule);
572 }
573
574 public string GetAttributeVersionValue(SourceLineNumber sourceLineNumbers, XAttribute attribute)
@@ -584,7 +588,7 @@ namespace WixToolset.Core.ExtensibilityServices
588 return value;
589 }
590
587 - Messaging.Instance.OnMessage(WixErrors.IllegalVersionValue(sourceLineNumbers, attribute.Parent.Name.LocalName, attribute.Name.LocalName, value));
591 + this.Messaging.Write(ErrorMessages.IllegalVersionValue(sourceLineNumbers, attribute.Parent.Name.LocalName, attribute.Name.LocalName, value));
592 }
593
594 return null;
@@ -608,7 +612,7 @@ namespace WixToolset.Core.ExtensibilityServices
612 return YesNoDefaultType.Default;
613
614 default:
611 - Messaging.Instance.OnMessage(WixErrors.IllegalYesNoDefaultValue(sourceLineNumbers, attribute.Parent.Name.LocalName, attribute.Name.LocalName, value));
615 + this.Messaging.Write(ErrorMessages.IllegalYesNoDefaultValue(sourceLineNumbers, attribute.Parent.Name.LocalName, attribute.Name.LocalName, value));
616 return YesNoDefaultType.IllegalValue;
617 }
618 }
@@ -628,7 +632,7 @@ namespace WixToolset.Core.ExtensibilityServices
632 return YesNoType.No;
633
634 default:
631 - Messaging.Instance.OnMessage(WixErrors.IllegalYesNoValue(sourceLineNumbers, attribute.Parent.Name.LocalName, attribute.Name.LocalName, value));
635 + this.Messaging.Write(ErrorMessages.IllegalYesNoValue(sourceLineNumbers, attribute.Parent.Name.LocalName, attribute.Name.LocalName, value));
636 return YesNoType.IllegalValue;
637 }
638 }
@@ -722,7 +726,7 @@ namespace WixToolset.Core.ExtensibilityServices
726 else
727 {
728 var sourceLineNumbers = Preprocessor.GetSourceLineNumbers(element);
725 - Messaging.Instance.OnMessage(WixErrors.UnhandledExtensionAttribute(sourceLineNumbers, element.Name.LocalName, attribute.Name.LocalName, attribute.Name.NamespaceName));
729 + this.Messaging.Write(ErrorMessages.UnhandledExtensionAttribute(sourceLineNumbers, element.Name.LocalName, attribute.Name.LocalName, attribute.Name.NamespaceName));
730 }
731 }
732
@@ -736,7 +740,7 @@ namespace WixToolset.Core.ExtensibilityServices
740 else
741 {
742 var childSourceLineNumbers = Preprocessor.GetSourceLineNumbers(element);
739 - Messaging.Instance.OnMessage(WixErrors.UnhandledExtensionElement(childSourceLineNumbers, parentElement.Name.LocalName, element.Name.LocalName, element.Name.NamespaceName));
743 + this.Messaging.Write(ErrorMessages.UnhandledExtensionElement(childSourceLineNumbers, parentElement.Name.LocalName, element.Name.LocalName, element.Name.NamespaceName));
744 }
745 }
746
@@ -751,7 +755,7 @@ namespace WixToolset.Core.ExtensibilityServices
755 else
756 {
757 var childSourceLineNumbers = Preprocessor.GetSourceLineNumbers(element);
754 - Messaging.Instance.OnMessage(WixErrors.UnhandledExtensionElement(childSourceLineNumbers, parentElement.Name.LocalName, element.Name.LocalName, element.Name.NamespaceName));
758 + this.Messaging.Write(ErrorMessages.UnhandledExtensionElement(childSourceLineNumbers, parentElement.Name.LocalName, element.Name.LocalName, element.Name.NamespaceName));
759 }
760
761 return keyPath;
@@ -775,13 +779,13 @@ namespace WixToolset.Core.ExtensibilityServices
779 public void UnexpectedAttribute(XElement element, XAttribute attribute)
780 {
781 var sourceLineNumbers = Preprocessor.GetSourceLineNumbers(element);
778 - Common.UnexpectedAttribute(sourceLineNumbers, attribute);
782 + Common.UnexpectedAttribute(this.Messaging, sourceLineNumbers, attribute);
783 }
784
785 public void UnexpectedElement(XElement parentElement, XElement childElement)
786 {
787 var sourceLineNumbers = Preprocessor.GetSourceLineNumbers(childElement);
784 - Messaging.Instance.OnMessage(WixErrors.UnexpectedElement(sourceLineNumbers, parentElement.Name.LocalName, childElement.Name.LocalName));
788 + this.Messaging.Write(ErrorMessages.UnexpectedElement(sourceLineNumbers, parentElement.Name.LocalName, childElement.Name.LocalName));
789 }
790
791 private void CreateTupleDefinitionCreator()
src/WixToolset.Core/ExtensibilityServices/PreprocessHelper.cs
+19 -19
@@ -42,7 +42,7 @@ namespace WixToolset.Core.ExtensibilityServices
42 {
43 if (showWarning)
44 {
45 - context.Messaging.OnMessage(WixWarnings.VariableDeclarationCollision(context.CurrentSourceLineNumber, name, value, currentValue));
45 + context.Messaging.Write(WarningMessages.VariableDeclarationCollision(context.CurrentSourceLineNumber, name, value, currentValue));
46 }
47
48 context.Variables[name] = value;
@@ -56,7 +56,7 @@ namespace WixToolset.Core.ExtensibilityServices
56 // Check to make sure there are 2 parts and neither is an empty string.
57 if (2 != prefixParts.Length || 0 >= prefixParts[0].Length || 0 >= prefixParts[1].Length)
58 {
59 - throw new WixException(WixErrors.InvalidPreprocessorFunction(context.CurrentSourceLineNumber, function));
59 + throw new WixException(ErrorMessages.InvalidPreprocessorFunction(context.CurrentSourceLineNumber, function));
60 }
61
62 var prefix = prefixParts[0];
@@ -65,7 +65,7 @@ namespace WixToolset.Core.ExtensibilityServices
65 // Check to make sure there are 2 parts, neither is an empty string, and the second part ends with a closing paren.
66 if (2 != functionParts.Length || 0 >= functionParts[0].Length || 0 >= functionParts[1].Length || !functionParts[1].EndsWith(")", StringComparison.Ordinal))
67 {
68 - throw new WixException(WixErrors.InvalidPreprocessorFunction(context.CurrentSourceLineNumber, function));
68 + throw new WixException(ErrorMessages.InvalidPreprocessorFunction(context.CurrentSourceLineNumber, function));
69 }
70
71 var functionName = functionParts[0];
@@ -113,7 +113,7 @@ namespace WixToolset.Core.ExtensibilityServices
113 // Make sure the base version is specified
114 if (args.Length == 0 || String.IsNullOrEmpty(args[0]))
115 {
116 - throw new WixException(WixErrors.InvalidPreprocessorFunctionAutoVersion(context.CurrentSourceLineNumber));
116 + throw new WixException(ErrorMessages.InvalidPreprocessorFunctionAutoVersion(context.CurrentSourceLineNumber));
117 }
118
119 // Build = days since 1/1/2000; Revision = seconds since midnight / 2
@@ -137,7 +137,7 @@ namespace WixToolset.Core.ExtensibilityServices
137 }
138 catch (Exception e)
139 {
140 - throw new WixException(WixErrors.PreprocessorExtensionEvaluateFunctionFailed(context.CurrentSourceLineNumber, prefix, function, String.Join(",", args), e.Message));
140 + throw new WixException(ErrorMessages.PreprocessorExtensionEvaluateFunctionFailed(context.CurrentSourceLineNumber, prefix, function, String.Join(",", args), e.Message));
141 }
142 }
143 else
@@ -165,7 +165,7 @@ namespace WixToolset.Core.ExtensibilityServices
165 }
166 else
167 {
168 - throw new WixException(WixErrors.InvalidPreprocessorVariable(context.CurrentSourceLineNumber, variable));
168 + throw new WixException(ErrorMessages.InvalidPreprocessorVariable(context.CurrentSourceLineNumber, variable));
169 }
170 }
171 else
@@ -185,7 +185,7 @@ namespace WixToolset.Core.ExtensibilityServices
185 }
186 else
187 {
188 - throw new WixException(WixErrors.InvalidPreprocessorVariable(context.CurrentSourceLineNumber, variable));
188 + throw new WixException(ErrorMessages.InvalidPreprocessorVariable(context.CurrentSourceLineNumber, variable));
189 }
190 }
191 }
@@ -220,7 +220,7 @@ namespace WixToolset.Core.ExtensibilityServices
220 return context.CurrentSourceLineNumber.FileName;
221
222 case "PLATFORM":
223 - context.Messaging.OnMessage(WixWarnings.DeprecatedPreProcVariable(context.CurrentSourceLineNumber, "$(sys.PLATFORM)", "$(sys.BUILDARCH)"));
223 + context.Messaging.Write(WarningMessages.DeprecatedPreProcVariable(context.CurrentSourceLineNumber, "$(sys.PLATFORM)", "$(sys.BUILDARCH)"));
224
225 goto case "BUILDARCH";
226
@@ -260,7 +260,7 @@ namespace WixToolset.Core.ExtensibilityServices
260 }
261 catch (Exception e)
262 {
263 - throw new WixException(WixErrors.PreprocessorExtensionGetVariableValueFailed(context.CurrentSourceLineNumber, prefix, name, e.Message));
263 + throw new WixException(ErrorMessages.PreprocessorExtensionGetVariableValueFailed(context.CurrentSourceLineNumber, prefix, name, e.Message));
264 }
265 }
266 else
@@ -277,7 +277,7 @@ namespace WixToolset.Core.ExtensibilityServices
277 // Check to make sure there are 2 parts and neither is an empty string.
278 if (2 != prefixParts.Length)
279 {
280 - throw new WixException(WixErrors.InvalidPreprocessorPragma(context.CurrentSourceLineNumber, pragmaName));
280 + throw new WixException(ErrorMessages.InvalidPreprocessorPragma(context.CurrentSourceLineNumber, pragmaName));
281 }
282
283 var prefix = prefixParts[0];
@@ -285,7 +285,7 @@ namespace WixToolset.Core.ExtensibilityServices
285
286 if (String.IsNullOrEmpty(prefix) || String.IsNullOrEmpty(pragma))
287 {
288 - throw new WixException(WixErrors.InvalidPreprocessorPragma(context.CurrentSourceLineNumber, pragmaName));
288 + throw new WixException(ErrorMessages.InvalidPreprocessorPragma(context.CurrentSourceLineNumber, pragmaName));
289 }
290
291 switch (prefix)
@@ -295,7 +295,7 @@ namespace WixToolset.Core.ExtensibilityServices
295 {
296 // Add any core defined pragmas here
297 default:
298 - context.Messaging.OnMessage(WixWarnings.PreprocessorUnknownPragma(context.CurrentSourceLineNumber, pragmaName));
298 + context.Messaging.Write(WarningMessages.PreprocessorUnknownPragma(context.CurrentSourceLineNumber, pragmaName));
299 break;
300 }
301 break;
@@ -306,7 +306,7 @@ namespace WixToolset.Core.ExtensibilityServices
306 {
307 if (!extension.ProcessPragma(prefix, pragma, args, parent))
308 {
309 - context.Messaging.OnMessage(WixWarnings.PreprocessorUnknownPragma(context.CurrentSourceLineNumber, pragmaName));
309 + context.Messaging.Write(WarningMessages.PreprocessorUnknownPragma(context.CurrentSourceLineNumber, pragmaName));
310 }
311 }
312 break;
@@ -339,7 +339,7 @@ namespace WixToolset.Core.ExtensibilityServices
339 currentPosition = remainder.IndexOf(')');
340 if (-1 == currentPosition)
341 {
342 - context.Messaging.OnMessage(WixErrors.InvalidPreprocessorVariable(context.CurrentSourceLineNumber, remainder));
342 + context.Messaging.Write(ErrorMessages.InvalidPreprocessorVariable(context.CurrentSourceLineNumber, remainder));
343 break;
344 }
345
@@ -385,12 +385,12 @@ namespace WixToolset.Core.ExtensibilityServices
385 {
386 if (isFunction)
387 {
388 - context.Messaging.OnMessage(WixErrors.InvalidPreprocessorFunction(context.CurrentSourceLineNumber, remainder));
388 + context.Messaging.Write(ErrorMessages.InvalidPreprocessorFunction(context.CurrentSourceLineNumber, remainder));
389 break;
390 }
391 else
392 {
393 - context.Messaging.OnMessage(WixErrors.InvalidPreprocessorVariable(context.CurrentSourceLineNumber, remainder));
393 + context.Messaging.Write(ErrorMessages.InvalidPreprocessorVariable(context.CurrentSourceLineNumber, remainder));
394 break;
395 }
396 }
@@ -410,12 +410,12 @@ namespace WixToolset.Core.ExtensibilityServices
410 {
411 if (isFunction)
412 {
413 - context.Messaging.OnMessage(WixErrors.UndefinedPreprocessorFunction(context.CurrentSourceLineNumber, subString));
413 + context.Messaging.Write(ErrorMessages.UndefinedPreprocessorFunction(context.CurrentSourceLineNumber, subString));
414 break;
415 }
416 else
417 {
418 - context.Messaging.OnMessage(WixErrors.UndefinedPreprocessorVariable(context.CurrentSourceLineNumber, subString));
418 + context.Messaging.Write(ErrorMessages.UndefinedPreprocessorVariable(context.CurrentSourceLineNumber, subString));
419 break;
420 }
421 }
@@ -448,7 +448,7 @@ namespace WixToolset.Core.ExtensibilityServices
448 {
449 if (!context.Variables.Remove(name))
450 {
451 - context.Messaging.OnMessage(WixErrors.CannotReundefineVariable(context.CurrentSourceLineNumber, name));
451 + context.Messaging.Write(ErrorMessages.CannotReundefineVariable(context.CurrentSourceLineNumber, name));
452 }
453 }
454
src/WixToolset.Core/Harvester.cs
+1 -1
@@ -57,7 +57,7 @@ namespace WixToolset
57
58 if (null == this.harvesterExtension)
59 {
60 - throw new WixException(WixErrors.HarvestTypeNotFound());
60 + throw new WixException(ErrorMessages.HarvestTypeNotFound());
61 }
62
63 this.harvesterExtension.Core = this.Core;
src/WixToolset.Core/HarvesterCore.cs
+6 -33
@@ -5,44 +5,26 @@ namespace WixToolset.Core
5 using System;
6 using System.Diagnostics.CodeAnalysis;
7 using System.IO;
8 - using WixToolset.Data;
8 + using WixToolset.Extensibility.Services;
9
10 /// <summary>
11 /// The WiX Toolset harvester core.
12 /// </summary>
13 public sealed class HarvesterCore : IHarvesterCore
14 {
15 - private string extensionArgument;
16 - private string rootDirectory;
17 -
18 - /// <summary>
19 - /// Gets whether the harvester core encountered an error while processing.
20 - /// </summary>
21 - /// <value>Flag if core encountered an error during processing.</value>
22 - public bool EncounteredError
23 - {
24 - get { return Messaging.Instance.EncounteredError; }
25 - }
15 + public IMessaging Messaging { get; set; }
16
17 /// <summary>
18 /// Gets or sets the value of the extension argument passed to heat.
19 /// </summary>
20 /// <value>The extension argument.</value>
31 - public string ExtensionArgument
32 - {
33 - get { return this.extensionArgument; }
34 - set { this.extensionArgument = value; }
35 - }
21 + public string ExtensionArgument { get; set; }
22
23 /// <summary>
24 /// Gets or sets the value of the root directory that is being harvested.
25 /// </summary>
26 /// <value>The root directory being harvested.</value>
41 - public string RootDirectory
42 - {
43 - get { return this.rootDirectory; }
44 - set { this.rootDirectory = value; }
45 - }
27 + public string RootDirectory { get; set; }
28
29 /// <summary>
30 /// Create an identifier based on passed file name
@@ -66,15 +48,6 @@ namespace WixToolset.Core
48 return Common.GenerateIdentifier(prefix, args);
49 }
50
69 - /// <summary>
70 - /// Sends a message to the message delegate if there is one.
71 - /// </summary>
72 - /// <param name="mea">Message event arguments.</param>
73 - public void OnMessage(MessageEventArgs mea)
74 - {
75 - Messaging.Instance.OnMessage(mea);
76 - }
77 -
51 /// <summary>
52 /// Resolves a file's path if the Wix.File.Source value starts with "SourceDir\".
53 /// </summary>
@@ -84,7 +57,7 @@ namespace WixToolset.Core
57 {
58 if (fileSource.StartsWith("SourceDir\\", StringComparison.Ordinal))
59 {
87 - string file = Path.GetFullPath(this.rootDirectory);
60 + string file = Path.GetFullPath(this.RootDirectory);
61 if (File.Exists(file))
62 {
63 return file;
@@ -92,7 +65,7 @@ namespace WixToolset.Core
65 else
66 {
67 fileSource = fileSource.Substring(10);
95 - fileSource = Path.Combine(Path.GetFullPath(this.rootDirectory), fileSource);
68 + fileSource = Path.Combine(Path.GetFullPath(this.RootDirectory), fileSource);
69 }
70 }
71
src/WixToolset.Core/HeatCore.cs
+1 -20
@@ -3,12 +3,11 @@
3 namespace WixToolset.Core
4 {
5 using WixToolset.Core.Extensibility;
6 - using WixToolset.Data;
6
7 /// <summary>
8 /// The WiX Toolset Harvester application core.
9 /// </summary>
11 - public sealed class HeatCore : IHeatCore, IMessageHandler
10 + public sealed class HeatCore : IHeatCore
11 {
12 private Harvester harvester;
13 private Mutator mutator;
@@ -23,15 +22,6 @@ namespace WixToolset.Core
22 this.mutator = new Mutator();
23 }
24
26 - /// <summary>
27 - /// Gets whether the mutator core encountered an error while processing.
28 - /// </summary>
29 - /// <value>Flag if core encountered an error during processing.</value>
30 - public bool EncounteredError
31 - {
32 - get { return Messaging.Instance.EncounteredError; }
33 - }
34 -
25 /// <summary>
26 /// Gets the harvester.
27 /// </summary>
@@ -49,14 +39,5 @@ namespace WixToolset.Core
39 {
40 get { return this.mutator; }
41 }
52 -
53 - /// <summary>
54 - /// Sends a message to the message delegate if there is one.
55 - /// </summary>
56 - /// <param name="mea">Message event arguments.</param>
57 - public void OnMessage(MessageEventArgs mea)
58 - {
59 - Messaging.Instance.OnMessage(mea);
60 - }
42 }
43 }
src/WixToolset.Core/ICommand.cs deleted
-9
@@ -1,9 +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
4 -{
5 - internal interface ICommand
6 - {
7 - void Execute();
8 - }
9 -}
src/WixToolset.Core/IfDefEventHandler.cs deleted
-46
@@ -1,46 +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
4 -{
5 - using System;
6 - using System.Text;
7 - using WixToolset.Data;
8 -
9 - public delegate void IfDefEventHandler(object sender, IfDefEventArgs e);
10 -
11 - public class IfDefEventArgs : EventArgs
12 - {
13 - private SourceLineNumber sourceLineNumbers;
14 - private bool isIfDef;
15 - private bool isDefined;
16 - private string variableName;
17 -
18 - public IfDefEventArgs(SourceLineNumber sourceLineNumbers, bool isIfDef, bool isDefined, string variableName)
19 - {
20 - this.sourceLineNumbers = sourceLineNumbers;
21 - this.isIfDef = isIfDef;
22 - this.isDefined = isDefined;
23 - this.variableName = variableName;
24 - }
25 -
26 - public SourceLineNumber SourceLineNumbers
27 - {
28 - get { return this.sourceLineNumbers; }
29 - }
30 -
31 - public bool IsDefined
32 - {
33 - get { return this.isDefined; }
34 - }
35 -
36 - public bool IsIfDef
37 - {
38 - get { return this.isIfDef; }
39 - }
40 -
41 - public string VariableName
42 - {
43 - get { return this.variableName; }
44 - }
45 - }
46 -}
src/WixToolset.Core/IncribeContext.cs
+2 -2
@@ -3,8 +3,8 @@
3 namespace WixToolset.Core
4 {
5 using System;
6 - using WixToolset.Data;
6 using WixToolset.Extensibility;
7 + using WixToolset.Extensibility.Services;
8
9 internal class InscribeContext : IInscribeContext
10 {
@@ -15,7 +15,7 @@ namespace WixToolset.Core
15
16 public IServiceProvider ServiceProvider { get; }
17
18 - public Messaging Messaging { get; } = Messaging.Instance;
18 + public IMessaging Messaging { get; set; }
19
20 public string IntermediateFolder { get; set; }
21
src/WixToolset.Core/Inscriber.cs
+1 -6
@@ -8,7 +8,7 @@ namespace WixToolset
8 /// <summary>
9 /// Converts a wixout representation of an MSM database into a ComponentGroup the form of WiX source.
10 /// </summary>
11 - public sealed class Inscriber : IMessageHandler
11 + public sealed class Inscriber
12 {
13 /// <summary>
14 /// Gets or sets the temp files collection.
@@ -433,10 +433,5 @@ namespace WixToolset
433 #endif
434 return true;
435 }
436 -
437 - public void OnMessage(MessageEventArgs e)
438 - {
439 - Messaging.Instance.OnMessage(e);
440 - }
436 }
437 }
src/WixToolset.Core/InspectorCore.cs deleted
-32
@@ -1,32 +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
4 -{
5 - using System;
6 - using WixToolset.Data;
7 - using WixToolset.Extensibility;
8 -
9 - /// <summary>
10 - /// Core facilities for inspector extensions.
11 - /// </summary>
12 - internal sealed class InspectorCore : IInspectorCore
13 - {
14 - /// <summary>
15 - /// Gets whether an error occured.
16 - /// </summary>
17 - /// <value>Whether an error occured.</value>
18 - public bool EncounteredError
19 - {
20 - get { return Messaging.Instance.EncounteredError; }
21 - }
22 -
23 - /// <summary>
24 - /// Logs a message to the log handler.
25 - /// </summary>
26 - /// <param name="e">The <see cref="MessageEventArgs"/> that contains information to log.</param>
27 - public void OnMessage(MessageEventArgs e)
28 - {
29 - Messaging.Instance.OnMessage(e);
30 - }
31 - }
32 -}
src/WixToolset.Core/Librarian.cs
+3 -3
@@ -67,7 +67,7 @@ namespace WixToolset.Core
67 /// <param name="library">Library to validate.</param>
68 private Intermediate Validate(Intermediate library)
69 {
70 - FindEntrySectionAndLoadSymbolsCommand find = new FindEntrySectionAndLoadSymbolsCommand(library.Sections);
70 + FindEntrySectionAndLoadSymbolsCommand find = new FindEntrySectionAndLoadSymbolsCommand(this.Context.Messaging, library.Sections);
71 find.Execute();
72
73 // TODO: Consider bringing this sort of verification back.
@@ -80,7 +80,7 @@ namespace WixToolset.Core
80 // reportDupes.Execute();
81 // }
82
83 - return (Messaging.Instance.EncounteredError ? null : library);
83 + return (this.Context.Messaging.EncounteredError ? null : library);
84 }
85
86 private static Dictionary<string, Localization> CollateLocalizations(IEnumerable<Localization> localizations)
@@ -130,7 +130,7 @@ namespace WixToolset.Core
130 }
131 else
132 {
133 - this.Context.Messaging.OnMessage(WixDataErrors.FileNotFound(tuple.SourceLineNumbers, pathField.Path, tuple.Definition.Name));
133 + this.Context.Messaging.Write(ErrorMessages.FileNotFound(tuple.SourceLineNumbers, pathField.Path, tuple.Definition.Name));
134 }
135 }
136 }
src/WixToolset.Core/LibraryContext.cs
+2 -1
@@ -6,12 +6,13 @@ namespace WixToolset.Core
6 using System.Collections.Generic;
7 using WixToolset.Data;
8 using WixToolset.Extensibility;
9 + using WixToolset.Extensibility.Services;
10
11 public class LibraryContext : ILibraryContext
12 {
13 public IServiceProvider ServiceProvider { get; }
14
14 - public Messaging Messaging { get; set; }
15 + public IMessaging Messaging { get; set; }
16
17 public bool BindFiles { get; set; }
18
src/WixToolset.Core/Link/FindEntrySectionAndLoadSymbolsCommand.cs
+9 -5
@@ -6,14 +6,18 @@ namespace WixToolset.Core.Link
6 using System.Collections.Generic;
7 using System.Linq;
8 using WixToolset.Data;
9 + using WixToolset.Extensibility.Services;
10
10 - internal class FindEntrySectionAndLoadSymbolsCommand : ICommand
11 + internal class FindEntrySectionAndLoadSymbolsCommand
12 {
12 - public FindEntrySectionAndLoadSymbolsCommand(IEnumerable<IntermediateSection> sections)
13 + public FindEntrySectionAndLoadSymbolsCommand(IMessaging messaging, IEnumerable<IntermediateSection> sections)
14 {
15 + this.Messaging = messaging;
16 this.Sections = sections;
17 }
18
19 + private IMessaging Messaging { get; }
20 +
21 private IEnumerable<IntermediateSection> Sections { get; }
22
23 /// <summary>
@@ -55,7 +59,7 @@ namespace WixToolset.Core.Link
59 //if (SectionType.Unknown != expectedEntrySectionType && section.Type != expectedEntrySectionType)
60 //{
61 // string outputExtension = Output.GetExtension(this.ExpectedOutputType);
58 - // Messaging.Instance.OnMessage(WixWarnings.UnexpectedEntrySection(section.SourceLineNumbers, section.Type.ToString(), expectedEntrySectionType.ToString(), outputExtension));
62 + // this.Messaging.Write(WixWarnings.UnexpectedEntrySection(section.SourceLineNumbers, section.Type.ToString(), expectedEntrySectionType.ToString(), outputExtension));
63 //}
64
65 if (null == this.EntrySection)
@@ -64,8 +68,8 @@ namespace WixToolset.Core.Link
68 }
69 else
70 {
67 - Messaging.Instance.OnMessage(WixErrors.MultipleEntrySections(this.EntrySection.Tuples.FirstOrDefault()?.SourceLineNumbers, this.EntrySection.Id, section.Id));
68 - Messaging.Instance.OnMessage(WixErrors.MultipleEntrySections2(section.Tuples.FirstOrDefault()?.SourceLineNumbers));
71 + this.Messaging.Write(ErrorMessages.MultipleEntrySections(this.EntrySection.Tuples.FirstOrDefault()?.SourceLineNumbers, this.EntrySection.Id, section.Id));
72 + this.Messaging.Write(ErrorMessages.MultipleEntrySections2(section.Tuples.FirstOrDefault()?.SourceLineNumbers));
73 }
74 }
75
src/WixToolset.Core/Link/ReportConflictingSymbolsCommand.cs
+7 -3
@@ -5,15 +5,19 @@ namespace WixToolset.Link
5 using System.Collections.Generic;
6 using System.Linq;
7 using WixToolset.Data;
8 + using WixToolset.Extensibility.Services;
9
10 public class ReportConflictingSymbolsCommand
11 {
11 - public ReportConflictingSymbolsCommand(IEnumerable<Symbol> possibleConflicts, IEnumerable<IntermediateSection> resolvedSections)
12 + public ReportConflictingSymbolsCommand(IMessaging messaging, IEnumerable<Symbol> possibleConflicts, IEnumerable<IntermediateSection> resolvedSections)
13 {
14 + this.Messaging = messaging;
15 this.PossibleConflicts = possibleConflicts;
16 this.ResolvedSections = resolvedSections;
17 }
18
19 + private IMessaging Messaging { get; }
20 +
21 private IEnumerable<Symbol> PossibleConflicts { get; }
22
23 private IEnumerable<IntermediateSection> ResolvedSections { get; }
@@ -37,11 +41,11 @@ namespace WixToolset.Link
41
42 if (actuallyReferencedDuplicateSymbols.Any())
43 {
40 - Messaging.Instance.OnMessage(WixErrors.DuplicateSymbol(referencedDuplicateSymbol.Row.SourceLineNumbers, referencedDuplicateSymbol.Name));
44 + this.Messaging.Write(ErrorMessages.DuplicateSymbol(referencedDuplicateSymbol.Row.SourceLineNumbers, referencedDuplicateSymbol.Name));
45
46 foreach (Symbol duplicate in actuallyReferencedDuplicateSymbols)
47 {
44 - Messaging.Instance.OnMessage(WixErrors.DuplicateSymbol2(duplicate.Row.SourceLineNumbers));
48 + this.Messaging.Write(ErrorMessages.DuplicateSymbol2(duplicate.Row.SourceLineNumbers));
49 }
50 }
51 }
src/WixToolset.Core/Link/ResolveReferencesCommand.cs
+11 -7
@@ -7,19 +7,21 @@ namespace WixToolset.Link
7 using System.Linq;
8 using WixToolset.Data;
9 using WixToolset.Data.Tuples;
10 + using WixToolset.Extensibility.Services;
11
12 /// <summary>
13 /// Resolves all the simple references in a section.
14 /// </summary>
14 - internal class ResolveReferencesCommand : ICommand
15 + internal class ResolveReferencesCommand
16 {
17 private IntermediateSection entrySection;
18 private IDictionary<string, Symbol> symbols;
19 private HashSet<Symbol> referencedSymbols;
20 private HashSet<IntermediateSection> resolvedSections;
21
21 - public ResolveReferencesCommand(IntermediateSection entrySection, IDictionary<string, Symbol> symbols)
22 + public ResolveReferencesCommand(IMessaging messaging, IntermediateSection entrySection, IDictionary<string, Symbol> symbols)
23 {
24 + this.Messaging = messaging;
25 this.entrySection = entrySection;
26 this.symbols = symbols;
27 }
@@ -30,6 +32,8 @@ namespace WixToolset.Link
32
33 public IEnumerable<IntermediateSection> ResolvedSections { get { return this.resolvedSections; } }
34
35 + private IMessaging Messaging { get; }
36 +
37 /// <summary>
38 /// Resolves all the simple references in a section.
39 /// </summary>
@@ -69,14 +73,14 @@ namespace WixToolset.Link
73
74 if (!this.symbols.TryGetValue(wixSimpleReferenceRow.SymbolicName, out var symbol))
75 {
72 - Messaging.Instance.OnMessage(WixErrors.UnresolvedReference(wixSimpleReferenceRow.SourceLineNumbers, wixSimpleReferenceRow.SymbolicName));
76 + this.Messaging.Write(ErrorMessages.UnresolvedReference(wixSimpleReferenceRow.SourceLineNumbers, wixSimpleReferenceRow.SymbolicName));
77 }
78 else // see if the symbol (and any of its duplicates) are appropriately accessible.
79 {
80 IList<Symbol> accessible = DetermineAccessibleSymbols(section, symbol);
81 if (!accessible.Any())
82 {
79 - Messaging.Instance.OnMessage(WixErrors.UnresolvedReference(wixSimpleReferenceRow.SourceLineNumbers, wixSimpleReferenceRow.SymbolicName, symbol.Access));
83 + this.Messaging.Write(ErrorMessages.UnresolvedReference(wixSimpleReferenceRow.SourceLineNumbers, wixSimpleReferenceRow.SymbolicName, symbol.Access));
84 }
85 else if (1 == accessible.Count)
86 {
@@ -95,16 +99,16 @@ namespace WixToolset.Link
99
100 if (String.IsNullOrEmpty(referencingSourceLineNumber))
101 {
98 - Messaging.Instance.OnMessage(WixErrors.DuplicateSymbol(accessibleSymbol.Row.SourceLineNumbers, accessibleSymbol.Name));
102 + this.Messaging.Write(ErrorMessages.DuplicateSymbol(accessibleSymbol.Row.SourceLineNumbers, accessibleSymbol.Name));
103 }
104 else
105 {
102 - Messaging.Instance.OnMessage(WixErrors.DuplicateSymbol(accessibleSymbol.Row.SourceLineNumbers, accessibleSymbol.Name, referencingSourceLineNumber));
106 + this.Messaging.Write(ErrorMessages.DuplicateSymbol(accessibleSymbol.Row.SourceLineNumbers, accessibleSymbol.Name, referencingSourceLineNumber));
107 }
108
109 foreach (Symbol accessibleDuplicate in accessible.Skip(1))
110 {
107 - Messaging.Instance.OnMessage(WixErrors.DuplicateSymbol2(accessibleDuplicate.Row.SourceLineNumbers));
111 + this.Messaging.Write(ErrorMessages.DuplicateSymbol2(accessibleDuplicate.Row.SourceLineNumbers));
112 }
113 }
114 }
src/WixToolset.Core/Link/WixGroupingOrdering.cs
+17 -39
@@ -11,13 +11,14 @@ namespace WixToolset.Core.Link
11 using System.Text;
12 using WixToolset.Data;
13 using WixToolset.Data.Tuples;
14 + using WixToolset.Extensibility.Services;
15
16 /// <summary>
17 /// Grouping and Ordering class of the WiX toolset.
18 /// </summary>
18 - internal sealed class WixGroupingOrdering : IMessageHandler
19 + internal sealed class WixGroupingOrdering
20 {
20 - private IMessageHandler messageHandler;
21 + private IMessaging messageHandler;
22 private List<string> groupTypes;
23 private List<string> itemTypes;
24 private ItemCollection items;
@@ -32,7 +33,7 @@ namespace WixToolset.Core.Link
33 /// <param name="messageHandler">Handler for any error messages.</param>
34 /// <param name="groupTypes">Group types to include.</param>
35 /// <param name="itemTypes">Item types to include.</param>
35 - public WixGroupingOrdering(IntermediateSection entrySections, IMessageHandler messageHandler)
36 + public WixGroupingOrdering(IntermediateSection entrySections, IMessaging messageHandler)
37 {
38 this.EntrySection = entrySections;
39 this.messageHandler = messageHandler;
@@ -58,29 +59,6 @@ namespace WixToolset.Core.Link
59 this.loaded = false;
60 }
61
61 - /// <summary>
62 - /// Sends a message to the message handler if there is one.
63 - /// </summary>
64 - /// <param name="mea">Message event arguments.</param>
65 - public void OnMessage(MessageEventArgs e)
66 - {
67 - WixErrorEventArgs errorEventArgs = e as WixErrorEventArgs;
68 -
69 - if (null != errorEventArgs || MessageLevel.Error == e.Level)
70 - {
71 - this.encounteredError = true;
72 - }
73 -
74 - if (null != this.messageHandler)
75 - {
76 - this.messageHandler.OnMessage(e);
77 - }
78 - else if (null != errorEventArgs)
79 - {
80 - throw new WixException(errorEventArgs);
81 - }
82 - }
83 -
62 /// <summary>
63 /// Finds all nested items under a parent group and creates new WixGroup data for them.
64 /// </summary>
@@ -156,7 +134,7 @@ namespace WixToolset.Core.Link
134 Item parentItem;
135 if (!this.items.TryGetValue(parentType, parentId, out parentItem))
136 {
159 - this.OnMessage(WixErrors.IdentifierNotFound(parentType, parentId));
137 + this.messageHandler.Write(ErrorMessages.IdentifierNotFound(parentType, parentId));
138 return;
139 }
140
@@ -257,7 +235,7 @@ namespace WixToolset.Core.Link
235 //if (null == wixGroupTable || 0 == wixGroupTable.Rows.Count)
236 //{
237 // // TODO: Change message name to make it *not* Bundle specific?
260 - // this.OnMessage(WixErrors.MissingBundleInformation("WixGroup"));
238 + // this.Write(WixErrors.MissingBundleInformation("WixGroup"));
239 //}
240
241 // Collect all of the groups
@@ -326,7 +304,7 @@ namespace WixToolset.Core.Link
304 if (this.FindCircularGroupReference(item, item, itemsSeen, out circularReference))
305 {
306 itemsInKnownLoops.Add(itemsSeen);
329 - this.OnMessage(WixErrors.ReferenceLoopDetected(item.Row.SourceLineNumbers, circularReference));
307 + this.messageHandler.Write(ErrorMessages.ReferenceLoopDetected(item.Row.SourceLineNumbers, circularReference));
308 }
309 }
310 }
@@ -398,12 +376,12 @@ namespace WixToolset.Core.Link
376
377 if (!this.items.TryGetValue(rowItemType, rowItemName, out var item))
378 {
401 - this.OnMessage(WixErrors.IdentifierNotFound(rowItemType, rowItemName));
379 + this.messageHandler.Write(ErrorMessages.IdentifierNotFound(rowItemType, rowItemName));
380 }
381
382 if (!this.items.TryGetValue(rowDependsOnType, rowDependsOnName, out var dependsOn))
383 {
406 - this.OnMessage(WixErrors.IdentifierNotFound(rowDependsOnType, rowDependsOnName));
384 + this.messageHandler.Write(ErrorMessages.IdentifierNotFound(rowDependsOnType, rowDependsOnName));
385 }
386
387 if (null == item || null == dependsOn)
@@ -411,7 +389,7 @@ namespace WixToolset.Core.Link
389 continue;
390 }
391
414 - item.AddAfter(dependsOn, this);
392 + item.AddAfter(dependsOn, this.messageHandler);
393 }
394 }
395
@@ -426,12 +404,12 @@ namespace WixToolset.Core.Link
404 // ordering.
405 foreach (Item item in this.items)
406 {
429 - item.PropagateAfterToChildItems(this);
407 + item.PropagateAfterToChildItems(this.messageHandler);
408 }
409
410 foreach (Item item in this.items)
411 {
434 - item.FlattenAfters(this);
412 + item.FlattenAfters(this.messageHandler);
413 }
414 }
415
@@ -595,7 +573,7 @@ namespace WixToolset.Core.Link
573 /// </summary>
574 /// <param name="items">List of items to add.</param>
575 /// <param name="messageHandler">Message handler in case a circular ordering reference is found.</param>
598 - public void AddAfter(ItemCollection items, IMessageHandler messageHandler)
576 + public void AddAfter(ItemCollection items, IMessaging messageHandler)
577 {
578 foreach (Item item in items)
579 {
@@ -608,7 +586,7 @@ namespace WixToolset.Core.Link
586 /// </summary>
587 /// <param name="item">Items to add.</param>
588 /// <param name="messageHandler">Message handler in case a circular ordering reference is found.</param>
611 - public void AddAfter(Item after, IMessageHandler messageHandler)
589 + public void AddAfter(Item after, IMessaging messageHandler)
590 {
591 if (this.beforeItems.Contains(after))
592 {
@@ -617,7 +595,7 @@ namespace WixToolset.Core.Link
595 // have lost some distinction between authored and propagated ordering.
596 string circularReference = String.Format(CultureInfo.InvariantCulture, "{0}:{1} -> {2}:{3} -> {0}:{1}",
597 this.Type, this.Id, after.Type, after.Id);
620 - messageHandler.OnMessage(WixErrors.OrderingReferenceLoopDetected(after.Row.SourceLineNumbers, circularReference));
598 + messageHandler.Write(ErrorMessages.OrderingReferenceLoopDetected(after.Row.SourceLineNumbers, circularReference));
599 return;
600 }
601
@@ -632,7 +610,7 @@ namespace WixToolset.Core.Link
610 /// <remarks>Because items don't know about their parent groups (and can, in fact, be in more
611 /// than one group at a time), we need to propagate the 'afters' from each parent item to its children
612 /// before we attempt to flatten the ordering.</remarks>
635 - public void PropagateAfterToChildItems(IMessageHandler messageHandler)
613 + public void PropagateAfterToChildItems(IMessaging messageHandler)
614 {
615 if (this.ShouldItemPropagateChildOrdering())
616 {
@@ -647,7 +625,7 @@ namespace WixToolset.Core.Link
625 /// Flattens the ordering dependency for this item.
626 /// </summary>
627 /// <param name="messageHandler">Message handler in case a circular ordering reference is found.</param>
650 - public void FlattenAfters(IMessageHandler messageHandler)
628 + public void FlattenAfters(IMessaging messageHandler)
629 {
630 if (this.flattenedAfterItems)
631 {
src/WixToolset.Core/LinkContext.cs
+1 -1
@@ -17,7 +17,7 @@ namespace WixToolset.Core
17
18 public IServiceProvider ServiceProvider { get; }
19
20 - public Messaging Messaging { get; set; }
20 + public IMessaging Messaging { get; set; }
21
22 public IEnumerable<ILinkerExtension> Extensions { get; set; }
23
src/WixToolset.Core/Linker.cs
+27 -27
@@ -17,7 +17,7 @@ namespace WixToolset.Core
17 /// <summary>
18 /// Linker core of the WiX toolset.
19 /// </summary>
20 - public sealed class Linker : IMessageHandler
20 + public sealed class Linker
21 {
22 private static readonly char[] colonCharacter = ":".ToCharArray();
23 private static readonly string emptyGuid = Guid.Empty.ToString("B");
@@ -129,14 +129,14 @@ namespace WixToolset.Core
129
130 // First find the entry section and while processing all sections load all the symbols from all of the sections.
131 // sections.FindEntrySectionAndLoadSymbols(false, this, expectedOutputType, out entrySection, out allSymbols);
132 - var find = new FindEntrySectionAndLoadSymbolsCommand(sections);
132 + var find = new FindEntrySectionAndLoadSymbolsCommand(this.Context.Messaging, sections);
133 find.ExpectedOutputType = this.Context.ExpectedOutputType;
134 find.Execute();
135
136 // Must have found the entry section by now.
137 if (null == find.EntrySection)
138 {
139 - throw new WixException(WixErrors.MissingEntrySection(this.Context.ExpectedOutputType.ToString()));
139 + throw new WixException(ErrorMessages.MissingEntrySection(this.Context.ExpectedOutputType.ToString()));
140 }
141
142 // Add the missing standard action symbols.
@@ -144,12 +144,12 @@ namespace WixToolset.Core
144
145 // Resolve the symbol references to find the set of sections we care about for linking.
146 // Of course, we start with the entry section (that's how it got its name after all).
147 - var resolve = new ResolveReferencesCommand(find.EntrySection, find.Symbols);
147 + var resolve = new ResolveReferencesCommand(this.Context.Messaging, find.EntrySection, find.Symbols);
148 resolve.BuildingMergeModule = (SectionType.Module == find.EntrySection.Type);
149
150 resolve.Execute();
151
152 - if (Messaging.Instance.EncounteredError)
152 + if (this.Context.Messaging.EncounteredError)
153 {
154 return null;
155 }
@@ -160,7 +160,7 @@ namespace WixToolset.Core
160
161 this.FlattenSectionsComplexReferences(sections);
162
163 - if (Messaging.Instance.EncounteredError)
163 + if (this.Context.Messaging.EncounteredError)
164 {
165 return null;
166 }
@@ -172,7 +172,7 @@ namespace WixToolset.Core
172 var modulesToFeatures = new ConnectToFeatureCollection();
173 this.ProcessComplexReferences(find.EntrySection, sections, referencedComponents, componentsToFeatures, featuresToFeatures, modulesToFeatures);
174
175 - if (Messaging.Instance.EncounteredError)
175 + if (this.Context.Messaging.EncounteredError)
176 {
177 return null;
178 }
@@ -182,15 +182,15 @@ namespace WixToolset.Core
182 {
183 if (!referencedComponents.Contains(symbol.Name))
184 {
185 - this.OnMessage(WixErrors.OrphanedComponent(symbol.Row.SourceLineNumbers, symbol.Row.Id.Id));
185 + this.OnMessage(ErrorMessages.OrphanedComponent(symbol.Row.SourceLineNumbers, symbol.Row.Id.Id));
186 }
187 }
188
189 // Report duplicates that would ultimately end up being primary key collisions.
190 - var reportDupes = new ReportConflictingSymbolsCommand(find.PossiblyConflictingSymbols, resolve.ResolvedSections);
190 + var reportDupes = new ReportConflictingSymbolsCommand(this.Context.Messaging, find.PossiblyConflictingSymbols, resolve.ResolvedSections);
191 reportDupes.Execute();
192
193 - if (Messaging.Instance.EncounteredError)
193 + if (this.Context.Messaging.EncounteredError)
194 {
195 return null;
196 }
@@ -422,7 +422,7 @@ namespace WixToolset.Core
422 }
423 else if (!row.Overridable || (collidingRow.Overridable && row.Overridable))
424 {
425 - this.OnMessage(WixErrors.WixVariableCollision(row.SourceLineNumbers, row.WixVariable));
425 + this.OnMessage(ErrorMessages.WixVariableCollision(row.SourceLineNumbers, row.WixVariable));
426 }
427 }
428 else
@@ -691,7 +691,7 @@ namespace WixToolset.Core
691 // Bundles have groups of data that must be flattened in a way different from other types.
692 this.FlattenBundleTables(resolvedSection);
693
694 - if (Messaging.Instance.EncounteredError)
694 + if (this.Context.Messaging.EncounteredError)
695 {
696 return null;
697 }
@@ -702,7 +702,7 @@ namespace WixToolset.Core
702 this.CheckOutputConsistency(output);
703 #endif
704
705 - return Messaging.Instance.EncounteredError ? null : output;
705 + return this.Context.Messaging.EncounteredError ? null : output;
706 }
707
708 #if SOLVE_CUSTOM_TABLE
@@ -1079,10 +1079,10 @@ namespace WixToolset.Core
1079 /// <summary>
1080 /// Sends a message to the message delegate if there is one.
1081 /// </summary>
1082 - /// <param name="mea">Message event arguments.</param>
1083 - public void OnMessage(MessageEventArgs e)
1082 + /// <param name="message">Message event arguments.</param>
1083 + public void OnMessage(Message message)
1084 {
1085 - this.Context.Messaging.OnMessage(e);
1085 + this.Context.Messaging.Write(message);
1086 }
1087
1088 /// <summary>
@@ -1138,7 +1138,7 @@ namespace WixToolset.Core
1138 {
1139 if (connection.IsExplicitPrimaryFeature)
1140 {
1141 - this.OnMessage(WixErrors.MultiplePrimaryReferences(wixComplexReferenceRow.SourceLineNumbers, wixComplexReferenceRow.ChildType.ToString(), wixComplexReferenceRow.Child, wixComplexReferenceRow.ParentType.ToString(), wixComplexReferenceRow.Parent, (null != connection.PrimaryFeature ? "Feature" : "Product"), connection.PrimaryFeature ?? resolvedSection.Id));
1141 + this.OnMessage(ErrorMessages.MultiplePrimaryReferences(wixComplexReferenceRow.SourceLineNumbers, wixComplexReferenceRow.ChildType.ToString(), wixComplexReferenceRow.Child, wixComplexReferenceRow.ParentType.ToString(), wixComplexReferenceRow.Parent, (null != connection.PrimaryFeature ? "Feature" : "Product"), connection.PrimaryFeature ?? resolvedSection.Id));
1142 continue;
1143 }
1144 else
@@ -1170,7 +1170,7 @@ namespace WixToolset.Core
1170 connection = featuresToFeatures[wixComplexReferenceRow.Child];
1171 if (null != connection)
1172 {
1173 - this.OnMessage(WixErrors.MultiplePrimaryReferences(wixComplexReferenceRow.SourceLineNumbers, wixComplexReferenceRow.ChildType.ToString(), wixComplexReferenceRow.Child, wixComplexReferenceRow.ParentType.ToString(), wixComplexReferenceRow.Parent, (null != connection.PrimaryFeature ? "Feature" : "Product"), (null != connection.PrimaryFeature ? connection.PrimaryFeature : resolvedSection.Id)));
1173 + this.OnMessage(ErrorMessages.MultiplePrimaryReferences(wixComplexReferenceRow.SourceLineNumbers, wixComplexReferenceRow.ChildType.ToString(), wixComplexReferenceRow.Child, wixComplexReferenceRow.ParentType.ToString(), wixComplexReferenceRow.Parent, (null != connection.PrimaryFeature ? "Feature" : "Product"), (null != connection.PrimaryFeature ? connection.PrimaryFeature : resolvedSection.Id)));
1174 continue;
1175 }
1176
@@ -1187,7 +1187,7 @@ namespace WixToolset.Core
1187 {
1188 if (connection.IsExplicitPrimaryFeature)
1189 {
1190 - this.OnMessage(WixErrors.MultiplePrimaryReferences(wixComplexReferenceRow.SourceLineNumbers, wixComplexReferenceRow.ChildType.ToString(), wixComplexReferenceRow.Child, wixComplexReferenceRow.ParentType.ToString(), wixComplexReferenceRow.Parent, (null != connection.PrimaryFeature ? "Feature" : "Product"), (null != connection.PrimaryFeature ? connection.PrimaryFeature : resolvedSection.Id)));
1190 + this.OnMessage(ErrorMessages.MultiplePrimaryReferences(wixComplexReferenceRow.SourceLineNumbers, wixComplexReferenceRow.ChildType.ToString(), wixComplexReferenceRow.Child, wixComplexReferenceRow.ParentType.ToString(), wixComplexReferenceRow.Parent, (null != connection.PrimaryFeature ? "Feature" : "Product"), (null != connection.PrimaryFeature ? connection.PrimaryFeature : resolvedSection.Id)));
1191 continue;
1192 }
1193 else
@@ -1214,7 +1214,7 @@ namespace WixToolset.Core
1214 case ComplexReferenceChildType.Component:
1215 if (componentsToModules.ContainsKey(wixComplexReferenceRow.Child))
1216 {
1217 - this.OnMessage(WixErrors.ComponentReferencedTwice(wixComplexReferenceRow.SourceLineNumbers, wixComplexReferenceRow.Child));
1217 + this.OnMessage(ErrorMessages.ComponentReferencedTwice(wixComplexReferenceRow.SourceLineNumbers, wixComplexReferenceRow.Child));
1218 continue;
1219 }
1220 else
@@ -1258,7 +1258,7 @@ namespace WixToolset.Core
1258 connection = featuresToFeatures[wixComplexReferenceRow.Child];
1259 if (null != connection)
1260 {
1261 - this.OnMessage(WixErrors.MultiplePrimaryReferences(wixComplexReferenceRow.SourceLineNumbers, wixComplexReferenceRow.ChildType.ToString(), wixComplexReferenceRow.Child, wixComplexReferenceRow.ParentType.ToString(), wixComplexReferenceRow.Parent, (null != connection.PrimaryFeature ? "Feature" : "Product"), (null != connection.PrimaryFeature ? connection.PrimaryFeature : resolvedSection.Id)));
1261 + this.OnMessage(ErrorMessages.MultiplePrimaryReferences(wixComplexReferenceRow.SourceLineNumbers, wixComplexReferenceRow.ChildType.ToString(), wixComplexReferenceRow.Child, wixComplexReferenceRow.ParentType.ToString(), wixComplexReferenceRow.Parent, (null != connection.PrimaryFeature ? "Feature" : "Product"), (null != connection.PrimaryFeature ? connection.PrimaryFeature : resolvedSection.Id)));
1262 continue;
1263 }
1264
@@ -1443,7 +1443,7 @@ namespace WixToolset.Core
1443 // way up to present the loop as a directed graph.
1444 var loop = String.Join(" -> ", loopDetector);
1445
1446 - this.OnMessage(WixErrors.ReferenceLoopDetected(wixComplexReferenceRow?.SourceLineNumbers, loop));
1446 + this.OnMessage(ErrorMessages.ReferenceLoopDetected(wixComplexReferenceRow?.SourceLineNumbers, loop));
1447
1448 // Cleanup the parentGroupsNeedingProcessing and the loopDetector just like the
1449 // exit of this method does at the end because we are exiting early.
@@ -1580,7 +1580,7 @@ namespace WixToolset.Core
1580 // will hold Payloads under UX, ChainPackages (references?) under Chain,
1581 // and ChainPackages/Payloads under the attached and any detatched
1582 // Containers.
1583 - var groups = new WixGroupingOrdering(entrySection, this);
1583 + var groups = new WixGroupingOrdering(entrySection, this.Context.Messaging);
1584
1585 // Create UX payloads and Package payloads
1586 groups.UseTypes(new string[] { "Container", "Layout", "PackageGroup", "PayloadGroup", "Package" }, new string[] { "PackageGroup", "Package", "PayloadGroup", "Payload" });
@@ -1685,11 +1685,11 @@ namespace WixToolset.Core
1685 // display an error for the component or merge module as approrpriate
1686 if (null != multipleFeatureComponents)
1687 {
1688 - this.OnMessage(WixErrors.ComponentExpectedFeature(row.SourceLineNumbers, connectionId, row.Definition.Name, row.Id.Id));
1688 + this.OnMessage(ErrorMessages.ComponentExpectedFeature(row.SourceLineNumbers, connectionId, row.Definition.Name, row.Id.Id));
1689 }
1690 else
1691 {
1692 - this.OnMessage(WixErrors.MergeModuleExpectedFeature(row.SourceLineNumbers, connectionId));
1692 + this.OnMessage(ErrorMessages.MergeModuleExpectedFeature(row.SourceLineNumbers, connectionId));
1693 }
1694 }
1695 else
@@ -1704,7 +1704,7 @@ namespace WixToolset.Core
1704 {
1705 if (!multipleFeatureComponents.Contains(connectionId))
1706 {
1707 - this.OnMessage(WixWarnings.ImplicitComponentPrimaryFeature(connectionId));
1707 + this.OnMessage(WarningMessages.ImplicitComponentPrimaryFeature(connectionId));
1708
1709 // remember this component so only one warning is generated for it
1710 multipleFeatureComponents[connectionId] = null;
@@ -1712,7 +1712,7 @@ namespace WixToolset.Core
1712 }
1713 else
1714 {
1715 - this.OnMessage(WixWarnings.ImplicitMergeModulePrimaryFeature(connectionId));
1715 + this.OnMessage(WarningMessages.ImplicitMergeModulePrimaryFeature(connectionId));
1716 }
1717 }
1718
src/WixToolset.Core/Localizer.cs
+46 -45
@@ -9,6 +9,7 @@ namespace WixToolset.Core
9 using WixToolset.Data.Rows;
10 using WixToolset.Core.Native;
11 using WixToolset.Extensibility;
12 + using WixToolset.Extensibility.Services;
13
14 /// <summary>
15 /// Parses localization files and localizes database values.
@@ -24,7 +25,7 @@ namespace WixToolset.Core
25 /// <summary>
26 /// Instantiate a new Localizer.
27 /// </summary>
27 - public Localizer(IEnumerable<Localization> localizations)
28 + public Localizer(IMessaging messaging, IEnumerable<Localization> localizations)
29 {
30 this.Codepage = -1;
31 this.variables = new Dictionary<string, BindVariable>();
@@ -39,7 +40,7 @@ namespace WixToolset.Core
40
41 foreach (var variable in localization.Variables)
42 {
42 - Localizer.AddWixVariable(this.variables, variable);
43 + Localizer.AddWixVariable(messaging, this.variables, variable);
44 }
45
46 foreach (KeyValuePair<string, LocalizedControl> localizedControl in localization.LocalizedControls)
@@ -86,7 +87,7 @@ namespace WixToolset.Core
87 /// <param name="tableDefinitions">Collection containing TableDefinitions to use when loading the localization file.</param>
88 /// <param name="suppressSchema">Suppress xml schema validation while loading.</param>
89 /// <returns>Returns the loaded localization file.</returns>
89 - public static Localization ParseLocalizationFile(string path)
90 + public static Localization ParseLocalizationFile(IMessaging messaging, string path)
91 {
92 XElement root = XDocument.Load(path).Root;
93 Localization localization = null;
@@ -96,23 +97,23 @@ namespace WixToolset.Core
97 {
98 if (Localizer.WxlNamespace == root.Name.Namespace)
99 {
99 - localization = ParseWixLocalizationElement(root);
100 + localization = ParseWixLocalizationElement(messaging, root);
101 }
102 else // invalid or missing namespace
103 {
104 if (null == root.Name.Namespace)
105 {
105 - Messaging.Instance.OnMessage(WixErrors.InvalidWixXmlNamespace(sourceLineNumbers, Localizer.XmlElementName, Localizer.WxlNamespace.NamespaceName));
106 + messaging.Write(ErrorMessages.InvalidWixXmlNamespace(sourceLineNumbers, Localizer.XmlElementName, Localizer.WxlNamespace.NamespaceName));
107 }
108 else
109 {
109 - Messaging.Instance.OnMessage(WixErrors.InvalidWixXmlNamespace(sourceLineNumbers, Localizer.XmlElementName, root.Name.LocalName, Localizer.WxlNamespace.NamespaceName));
110 + messaging.Write(ErrorMessages.InvalidWixXmlNamespace(sourceLineNumbers, Localizer.XmlElementName, root.Name.LocalName, Localizer.WxlNamespace.NamespaceName));
111 }
112 }
113 }
114 else
115 {
115 - Messaging.Instance.OnMessage(WixErrors.InvalidDocumentElement(sourceLineNumbers, root.Name.LocalName, "localization", Localizer.XmlElementName));
116 + messaging.Write(ErrorMessages.InvalidDocumentElement(sourceLineNumbers, root.Name.LocalName, "localization", Localizer.XmlElementName));
117 }
118
119 return localization;
@@ -123,7 +124,7 @@ namespace WixToolset.Core
124 /// </summary>
125 /// <param name="variables">Dictionary of variable rows.</param>
126 /// <param name="wixVariableRow">Row to add to the variables dictionary.</param>
126 - private static void AddWixVariable(IDictionary<string, BindVariable> variables, BindVariable wixVariableRow)
127 + private static void AddWixVariable(IMessaging messaging, IDictionary<string, BindVariable> variables, BindVariable wixVariableRow)
128 {
129 if (!variables.TryGetValue(wixVariableRow.Id, out var existingWixVariableRow) || (existingWixVariableRow.Overridable && !wixVariableRow.Overridable))
130 {
@@ -131,7 +132,7 @@ namespace WixToolset.Core
132 }
133 else if (!wixVariableRow.Overridable)
134 {
134 - Messaging.Instance.OnMessage(WixErrors.DuplicateLocalizationIdentifier(wixVariableRow.SourceLineNumbers, wixVariableRow.Id));
135 + messaging.Write(ErrorMessages.DuplicateLocalizationIdentifier(wixVariableRow.SourceLineNumbers, wixVariableRow.Id));
136 }
137 }
138
@@ -139,7 +140,7 @@ namespace WixToolset.Core
140 /// Parses the WixLocalization element.
141 /// </summary>
142 /// <param name="node">Element to parse.</param>
142 - private static Localization ParseWixLocalizationElement(XElement node)
143 + private static Localization ParseWixLocalizationElement(IMessaging messaging, XElement node)
144 {
145 int codepage = -1;
146 string culture = null;
@@ -161,13 +162,13 @@ namespace WixToolset.Core
162 // do nothing; @Language is used for locutil which can't convert Culture to lcid
163 break;
164 default:
164 - Common.UnexpectedAttribute(sourceLineNumbers, attrib);
165 + Common.UnexpectedAttribute(messaging, sourceLineNumbers, attrib);
166 break;
167 }
168 }
169 else
170 {
170 - Common.UnexpectedAttribute(sourceLineNumbers, attrib);
171 + Common.UnexpectedAttribute(messaging, sourceLineNumbers, attrib);
172 }
173 }
174
@@ -181,32 +182,32 @@ namespace WixToolset.Core
182 switch (child.Name.LocalName)
183 {
184 case "String":
184 - Localizer.ParseString(child, variables);
185 + Localizer.ParseString(messaging, child, variables);
186 break;
187
188 case "UI":
188 - Localizer.ParseUI(child, localizedControls);
189 + Localizer.ParseUI(messaging, child, localizedControls);
190 break;
191
192 default:
192 - Messaging.Instance.OnMessage(WixErrors.UnexpectedElement(sourceLineNumbers, node.Name.ToString(), child.Name.ToString()));
193 + messaging.Write(ErrorMessages.UnexpectedElement(sourceLineNumbers, node.Name.ToString(), child.Name.ToString()));
194 break;
195 }
196 }
197 else
198 {
198 - Messaging.Instance.OnMessage(WixErrors.UnsupportedExtensionElement(sourceLineNumbers, node.Name.ToString(), child.Name.ToString()));
199 + messaging.Write(ErrorMessages.UnsupportedExtensionElement(sourceLineNumbers, node.Name.ToString(), child.Name.ToString()));
200 }
201 }
202
202 - return Messaging.Instance.EncounteredError ? null : new Localization(codepage, culture, variables, localizedControls);
203 + return messaging.EncounteredError ? null : new Localization(codepage, culture, variables, localizedControls);
204 }
205
206 /// <summary>
207 /// Parse a localization string into a WixVariableRow.
208 /// </summary>
209 /// <param name="node">Element to parse.</param>
209 - private static void ParseString(XElement node, IDictionary<string, BindVariable> variables)
210 + private static void ParseString(IMessaging messaging, XElement node, IDictionary<string, BindVariable> variables)
211 {
212 string id = null;
213 bool overridable = false;
@@ -219,22 +220,22 @@ namespace WixToolset.Core
220 switch (attrib.Name.LocalName)
221 {
222 case "Id":
222 - id = Common.GetAttributeIdentifierValue(sourceLineNumbers, attrib);
223 + id = Common.GetAttributeIdentifierValue(messaging, sourceLineNumbers, attrib);
224 break;
225 case "Overridable":
225 - overridable = YesNoType.Yes == Common.GetAttributeYesNoValue(sourceLineNumbers, attrib);
226 + overridable = YesNoType.Yes == Common.GetAttributeYesNoValue(messaging, sourceLineNumbers, attrib);
227 break;
228 case "Localizable":
229 ; // do nothing
230 break;
231 default:
231 - Messaging.Instance.OnMessage(WixErrors.UnexpectedAttribute(sourceLineNumbers, attrib.Parent.Name.ToString(), attrib.Name.ToString()));
232 + messaging.Write(ErrorMessages.UnexpectedAttribute(sourceLineNumbers, attrib.Parent.Name.ToString(), attrib.Name.ToString()));
233 break;
234 }
235 }
236 else
237 {
237 - Messaging.Instance.OnMessage(WixErrors.UnsupportedExtensionAttribute(sourceLineNumbers, attrib.Parent.Name.ToString(), attrib.Name.ToString()));
238 + messaging.Write(ErrorMessages.UnsupportedExtensionAttribute(sourceLineNumbers, attrib.Parent.Name.ToString(), attrib.Name.ToString()));
239 }
240 }
241
@@ -242,14 +243,14 @@ namespace WixToolset.Core
243
244 if (null == id)
245 {
245 - Messaging.Instance.OnMessage(WixErrors.ExpectedAttribute(sourceLineNumbers, "String", "Id"));
246 + messaging.Write(ErrorMessages.ExpectedAttribute(sourceLineNumbers, "String", "Id"));
247 }
248 else if (0 == id.Length)
249 {
249 - Messaging.Instance.OnMessage(WixErrors.IllegalIdentifier(sourceLineNumbers, "String", "Id", 0));
250 + messaging.Write(ErrorMessages.IllegalIdentifier(sourceLineNumbers, "String", "Id", 0));
251 }
252
252 - if (!Messaging.Instance.EncounteredError)
253 + if (!messaging.EncounteredError)
254 {
255 var variable = new BindVariable
256 {
@@ -259,7 +260,7 @@ namespace WixToolset.Core
260 Value = value,
261 };
262
262 - Localizer.AddWixVariable(variables, variable);
263 + Localizer.AddWixVariable(messaging, variables, variable);
264 }
265 }
266
@@ -268,7 +269,7 @@ namespace WixToolset.Core
269 /// </summary>
270 /// <param name="node">Element to parse.</param>
271 /// <param name="localizedControls">Dictionary of localized controls.</param>
271 - private static void ParseUI(XElement node, IDictionary<string, LocalizedControl> localizedControls)
272 + private static void ParseUI(IMessaging messaging, XElement node, IDictionary<string, LocalizedControl> localizedControls)
273 {
274 string dialog = null;
275 string control = null;
@@ -287,49 +288,49 @@ namespace WixToolset.Core
288 switch (attrib.Name.LocalName)
289 {
290 case "Dialog":
290 - dialog = Common.GetAttributeIdentifierValue(sourceLineNumbers, attrib);
291 + dialog = Common.GetAttributeIdentifierValue(messaging, sourceLineNumbers, attrib);
292 break;
293 case "Control":
293 - control = Common.GetAttributeIdentifierValue(sourceLineNumbers, attrib);
294 + control = Common.GetAttributeIdentifierValue(messaging, sourceLineNumbers, attrib);
295 break;
296 case "X":
296 - x = Common.GetAttributeIntegerValue(sourceLineNumbers, attrib, 0, short.MaxValue);
297 + x = Common.GetAttributeIntegerValue(messaging, sourceLineNumbers, attrib, 0, short.MaxValue);
298 break;
299 case "Y":
299 - y = Common.GetAttributeIntegerValue(sourceLineNumbers, attrib, 0, short.MaxValue);
300 + y = Common.GetAttributeIntegerValue(messaging, sourceLineNumbers, attrib, 0, short.MaxValue);
301 break;
302 case "Width":
302 - width = Common.GetAttributeIntegerValue(sourceLineNumbers, attrib, 0, short.MaxValue);
303 + width = Common.GetAttributeIntegerValue(messaging, sourceLineNumbers, attrib, 0, short.MaxValue);
304 break;
305 case "Height":
305 - height = Common.GetAttributeIntegerValue(sourceLineNumbers, attrib, 0, short.MaxValue);
306 + height = Common.GetAttributeIntegerValue(messaging, sourceLineNumbers, attrib, 0, short.MaxValue);
307 break;
308 case "RightToLeft":
308 - if (YesNoType.Yes == Common.GetAttributeYesNoValue(sourceLineNumbers, attrib))
309 + if (YesNoType.Yes == Common.GetAttributeYesNoValue(messaging, sourceLineNumbers, attrib))
310 {
311 attribs |= MsiInterop.MsidbControlAttributesRTLRO;
312 }
313 break;
314 case "RightAligned":
314 - if (YesNoType.Yes == Common.GetAttributeYesNoValue(sourceLineNumbers, attrib))
315 + if (YesNoType.Yes == Common.GetAttributeYesNoValue(messaging, sourceLineNumbers, attrib))
316 {
317 attribs |= MsiInterop.MsidbControlAttributesRightAligned;
318 }
319 break;
320 case "LeftScroll":
320 - if (YesNoType.Yes == Common.GetAttributeYesNoValue(sourceLineNumbers, attrib))
321 + if (YesNoType.Yes == Common.GetAttributeYesNoValue(messaging, sourceLineNumbers, attrib))
322 {
323 attribs |= MsiInterop.MsidbControlAttributesLeftScroll;
324 }
325 break;
326 default:
326 - Common.UnexpectedAttribute(sourceLineNumbers, attrib);
327 + Common.UnexpectedAttribute(messaging, sourceLineNumbers, attrib);
328 break;
329 }
330 }
331 else
332 {
332 - Common.UnexpectedAttribute(sourceLineNumbers, attrib);
333 + Common.UnexpectedAttribute(messaging, sourceLineNumbers, attrib);
334 }
335 }
336
@@ -339,24 +340,24 @@ namespace WixToolset.Core
340 {
341 if (MsiInterop.MsidbControlAttributesRTLRO == (attribs & MsiInterop.MsidbControlAttributesRTLRO))
342 {
342 - Messaging.Instance.OnMessage(WixErrors.IllegalAttributeWithoutOtherAttributes(sourceLineNumbers, node.Name.ToString(), "RightToLeft", "Control"));
343 + messaging.Write(ErrorMessages.IllegalAttributeWithoutOtherAttributes(sourceLineNumbers, node.Name.ToString(), "RightToLeft", "Control"));
344 }
345 else if (MsiInterop.MsidbControlAttributesRightAligned == (attribs & MsiInterop.MsidbControlAttributesRightAligned))
346 {
346 - Messaging.Instance.OnMessage(WixErrors.IllegalAttributeWithoutOtherAttributes(sourceLineNumbers, node.Name.ToString(), "RightAligned", "Control"));
347 + messaging.Write(ErrorMessages.IllegalAttributeWithoutOtherAttributes(sourceLineNumbers, node.Name.ToString(), "RightAligned", "Control"));
348 }
349 else if (MsiInterop.MsidbControlAttributesLeftScroll == (attribs & MsiInterop.MsidbControlAttributesLeftScroll))
350 {
350 - Messaging.Instance.OnMessage(WixErrors.IllegalAttributeWithoutOtherAttributes(sourceLineNumbers, node.Name.ToString(), "LeftScroll", "Control"));
351 + messaging.Write(ErrorMessages.IllegalAttributeWithoutOtherAttributes(sourceLineNumbers, node.Name.ToString(), "LeftScroll", "Control"));
352 }
353 }
354
355 if (String.IsNullOrEmpty(control) && String.IsNullOrEmpty(dialog))
356 {
356 - Messaging.Instance.OnMessage(WixErrors.ExpectedAttributesWithOtherAttribute(sourceLineNumbers, node.Name.ToString(), "Dialog", "Control"));
357 + messaging.Write(ErrorMessages.ExpectedAttributesWithOtherAttribute(sourceLineNumbers, node.Name.ToString(), "Dialog", "Control"));
358 }
359
359 - if (!Messaging.Instance.EncounteredError)
360 + if (!messaging.EncounteredError)
361 {
362 LocalizedControl localizedControl = new LocalizedControl(dialog, control, x, y, width, height, attribs, text);
363 string key = localizedControl.GetKey();
@@ -364,11 +365,11 @@ namespace WixToolset.Core
365 {
366 if (String.IsNullOrEmpty(localizedControl.Control))
367 {
367 - Messaging.Instance.OnMessage(WixErrors.DuplicatedUiLocalization(sourceLineNumbers, localizedControl.Dialog));
368 + messaging.Write(ErrorMessages.DuplicatedUiLocalization(sourceLineNumbers, localizedControl.Dialog));
369 }
370 else
371 {
371 - Messaging.Instance.OnMessage(WixErrors.DuplicatedUiLocalization(sourceLineNumbers, localizedControl.Dialog, localizedControl.Control));
372 + messaging.Write(ErrorMessages.DuplicatedUiLocalization(sourceLineNumbers, localizedControl.Dialog, localizedControl.Control));
373 }
374 }
375 else
src/WixToolset.Core/Mutator.cs
+3 -3
@@ -71,7 +71,7 @@ namespace WixToolset.Core
71 }
72 finally
73 {
74 - encounteredError = this.Core.EncounteredError;
74 + encounteredError = this.Core.Messaging.EncounteredError;
75 }
76
77 // return the Wix document element only if mutation completed successfully
@@ -98,7 +98,7 @@ namespace WixToolset.Core
98
99 wixString = mutatorExtension.Mutate(wixString);
100
101 - if (String.IsNullOrEmpty(wixString) || this.Core.EncounteredError)
101 + if (String.IsNullOrEmpty(wixString) || this.Core.Messaging.EncounteredError)
102 {
103 break;
104 }
@@ -106,7 +106,7 @@ namespace WixToolset.Core
106 }
107 finally
108 {
109 - encounteredError = this.Core.EncounteredError;
109 + encounteredError = this.Core.Messaging.EncounteredError;
110 }
111
112 return encounteredError ? null : wixString;
src/WixToolset.Core/Preprocess/IfDefEventHandler.cs new
+28
@@ -0,0 +1,28 @@
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.Core.Preprocess
4 +{
5 + using System;
6 + using WixToolset.Data;
7 +
8 + public delegate void IfDefEventHandler(object sender, IfDefEventArgs e);
9 +
10 + public class IfDefEventArgs : EventArgs
11 + {
12 + public IfDefEventArgs(SourceLineNumber sourceLineNumbers, bool isIfDef, bool isDefined, string variableName)
13 + {
14 + this.SourceLineNumbers = sourceLineNumbers;
15 + this.IsIfDef = isIfDef;
16 + this.IsDefined = isDefined;
17 + this.VariableName = variableName;
18 + }
19 +
20 + public SourceLineNumber SourceLineNumbers { get; }
21 +
22 + public bool IsDefined { get; }
23 +
24 + public bool IsIfDef { get; }
25 +
26 + public string VariableName { get; }
27 + }
28 +}
src/WixToolset.Core/Preprocess/IncludedFileEventHandler.cs renamed
+5 -14
@@ -1,6 +1,6 @@
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
3 +namespace WixToolset.Core.Preprocess
4 {
5 using System;
6 using WixToolset.Data;
@@ -17,9 +17,6 @@ namespace WixToolset
17 /// </summary>
18 public class IncludedFileEventArgs : EventArgs
19 {
20 - private SourceLineNumber sourceLineNumbers;
21 - private string fullName;
22 -
20 /// <summary>
21 /// Creates a new IncludedFileEventArgs.
22 /// </summary>
@@ -27,26 +24,20 @@ namespace WixToolset
24 /// <param name="fullName">The full path of the included file.</param>
25 public IncludedFileEventArgs(SourceLineNumber sourceLineNumbers, string fullName)
26 {
30 - this.sourceLineNumbers = sourceLineNumbers;
31 - this.fullName = fullName;
27 + this.SourceLineNumbers = sourceLineNumbers;
28 + this.FullName = fullName;
29 }
30
31 /// <summary>
32 /// Gets the full path of the included file.
33 /// </summary>
34 /// <value>The full path of the included file.</value>
38 - public string FullName
39 - {
40 - get { return this.fullName; }
41 - }
35 + public string FullName { get; }
36
37 /// <summary>
38 /// Gets the source line numbers.
39 /// </summary>
40 /// <value>The source line numbers.</value>
47 - public SourceLineNumber SourceLineNumbers
48 - {
49 - get { return this.sourceLineNumbers; }
50 - }
41 + public SourceLineNumber SourceLineNumbers { get; }
42 }
43 }
src/WixToolset.Core/Preprocess/ProcessedStreamEventHandler.cs renamed
+1 -1
@@ -1,6 +1,6 @@
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
3 +namespace WixToolset.Core.Preprocess
4 {
5 using System;
6 using System.Xml.Linq;
src/WixToolset.Core/Preprocess/ResolvedVariableEventHandler.cs new
+25
@@ -0,0 +1,25 @@
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.Core.Preprocess
4 +{
5 + using System;
6 + using WixToolset.Data;
7 +
8 + public delegate void ResolvedVariableEventHandler(object sender, ResolvedVariableEventArgs e);
9 +
10 + public class ResolvedVariableEventArgs : EventArgs
11 + {
12 + public ResolvedVariableEventArgs(SourceLineNumber sourceLineNumbers, string variableName, string variableValue)
13 + {
14 + this.SourceLineNumbers = sourceLineNumbers;
15 + this.VariableName = variableName;
16 + this.VariableValue = variableValue;
17 + }
18 +
19 + public SourceLineNumber SourceLineNumbers { get; }
20 +
21 + public string VariableName { get; }
22 +
23 + public string VariableValue { get; }
24 + }
25 +}
src/WixToolset.Core/PreprocessContext.cs
+2 -1
@@ -6,6 +6,7 @@ namespace WixToolset.Core
6 using System.Collections.Generic;
7 using WixToolset.Data;
8 using WixToolset.Extensibility;
9 + using WixToolset.Extensibility.Services;
10
11 /// <summary>
12 /// The preprocessor core.
@@ -19,7 +20,7 @@ namespace WixToolset.Core
20
21 public IServiceProvider ServiceProvider { get; }
22
22 - public Messaging Messaging { get; set; }
23 + public IMessaging Messaging { get; set; }
24
25 public IEnumerable<IPreprocessorExtension> Extensions { get; set; }
26
src/WixToolset.Core/Preprocessor.cs
+36 -36
@@ -136,7 +136,7 @@ namespace WixToolset.Core
136 }
137 else
138 {
139 - this.Context.Messaging.OnMessage(WixErrors.DuplicateExtensionPreprocessorType(extension.GetType().ToString(), prefix, collidingExtension.GetType().ToString()));
139 + this.Context.Messaging.Write(ErrorMessages.DuplicateExtensionPreprocessorType(extension.GetType().ToString(), prefix, collidingExtension.GetType().ToString()));
140 }
141 }
142 }
@@ -159,7 +159,7 @@ namespace WixToolset.Core
159 catch (XmlException e)
160 {
161 this.UpdateCurrentLineNumber(reader, 0);
162 - throw new WixException(WixErrors.InvalidXml(this.Context.CurrentSourceLineNumber, "source", e.Message));
162 + throw new WixException(ErrorMessages.InvalidXml(this.Context.CurrentSourceLineNumber, "source", e.Message));
163 }
164 finally
165 {
@@ -347,12 +347,12 @@ namespace WixToolset.Core
347 case "elseif":
348 if (0 == ifStack.Count)
349 {
350 - throw new WixException(WixErrors.UnmatchedPreprocessorInstruction(sourceLineNumbers, "if", "elseif"));
350 + throw new WixException(ErrorMessages.UnmatchedPreprocessorInstruction(sourceLineNumbers, "if", "elseif"));
351 }
352
353 if (IfState.If != ifContext.IfState && IfState.ElseIf != ifContext.IfState)
354 {
355 - throw new WixException(WixErrors.UnmatchedPreprocessorInstruction(sourceLineNumbers, "if", "elseif"));
355 + throw new WixException(ErrorMessages.UnmatchedPreprocessorInstruction(sourceLineNumbers, "if", "elseif"));
356 }
357
358 ifContext.IfState = IfState.ElseIf; // we're now in an elseif
@@ -370,12 +370,12 @@ namespace WixToolset.Core
370 case "else":
371 if (0 == ifStack.Count)
372 {
373 - throw new WixException(WixErrors.UnmatchedPreprocessorInstruction(sourceLineNumbers, "if", "else"));
373 + throw new WixException(ErrorMessages.UnmatchedPreprocessorInstruction(sourceLineNumbers, "if", "else"));
374 }
375
376 if (IfState.If != ifContext.IfState && IfState.ElseIf != ifContext.IfState)
377 {
378 - throw new WixException(WixErrors.UnmatchedPreprocessorInstruction(sourceLineNumbers, "if", "else"));
378 + throw new WixException(ErrorMessages.UnmatchedPreprocessorInstruction(sourceLineNumbers, "if", "else"));
379 }
380
381 ifContext.IfState = IfState.Else; // we're now in an else
@@ -386,7 +386,7 @@ namespace WixToolset.Core
386 case "endif":
387 if (0 == ifStack.Count)
388 {
389 - throw new WixException(WixErrors.UnmatchedPreprocessorInstruction(sourceLineNumbers, "if", "endif"));
389 + throw new WixException(ErrorMessages.UnmatchedPreprocessorInstruction(sourceLineNumbers, "if", "endif"));
390 }
391
392 ifContext = (IfContext)ifStack.Pop();
@@ -466,7 +466,7 @@ namespace WixToolset.Core
466 break;
467
468 case "endforeach": // endforeach is handled in PreprocessForeach, so seeing it here is an error
469 - throw new WixException(WixErrors.UnmatchedPreprocessorInstruction(sourceLineNumbers, "foreach", "endforeach"));
469 + throw new WixException(ErrorMessages.UnmatchedPreprocessorInstruction(sourceLineNumbers, "foreach", "endforeach"));
470
471 case "pragma":
472 this.PreprocessPragma(reader.Value, currentContainer);
@@ -483,7 +483,7 @@ namespace WixToolset.Core
483 {
484 if ("Include" != reader.LocalName)
485 {
486 - this.Context.Messaging.OnMessage(WixErrors.InvalidDocumentElement(sourceLineNumbers, reader.Name, "include", "Include"));
486 + this.Context.Messaging.Write(ErrorMessages.InvalidDocumentElement(sourceLineNumbers, reader.Name, "include", "Include"));
487 }
488
489 this.IncludeNextStack.Pop();
@@ -540,13 +540,13 @@ namespace WixToolset.Core
540
541 if (0 != ifStack.Count)
542 {
543 - throw new WixException(WixErrors.NonterminatedPreprocessorInstruction(this.Context.CurrentSourceLineNumber, "if", "endif"));
543 + throw new WixException(ErrorMessages.NonterminatedPreprocessorInstruction(this.Context.CurrentSourceLineNumber, "if", "endif"));
544 }
545
546 // TODO: can this actually happen?
547 if (0 != containerStack.Count)
548 {
549 - throw new WixException(WixErrors.NonterminatedPreprocessorInstruction(this.Context.CurrentSourceLineNumber, "nodes", "nodes"));
549 + throw new WixException(ErrorMessages.NonterminatedPreprocessorInstruction(this.Context.CurrentSourceLineNumber, "nodes", "nodes"));
550 }
551 }
552
@@ -559,7 +559,7 @@ namespace WixToolset.Core
559 // Resolve other variables in the error message.
560 errorMessage = this.Helper.PreprocessString(this.Context, errorMessage);
561
562 - throw new WixException(WixErrors.PreprocessorError(this.Context.CurrentSourceLineNumber, errorMessage));
562 + throw new WixException(ErrorMessages.PreprocessorError(this.Context.CurrentSourceLineNumber, errorMessage));
563 }
564
565 /// <summary>
@@ -571,7 +571,7 @@ namespace WixToolset.Core
571 // Resolve other variables in the warning message.
572 warningMessage = this.Helper.PreprocessString(this.Context, warningMessage);
573
574 - this.Context.Messaging.OnMessage(WixWarnings.PreprocessorWarning(this.Context.CurrentSourceLineNumber, warningMessage));
574 + this.Context.Messaging.Write(WarningMessages.PreprocessorWarning(this.Context.CurrentSourceLineNumber, warningMessage));
575 }
576
577 /// <summary>
@@ -584,7 +584,7 @@ namespace WixToolset.Core
584
585 if (!match.Success)
586 {
587 - throw new WixException(WixErrors.IllegalDefineStatement(this.Context.CurrentSourceLineNumber, originalDefine));
587 + throw new WixException(ErrorMessages.IllegalDefineStatement(this.Context.CurrentSourceLineNumber, originalDefine));
588 }
589
590 var defineName = match.Groups["varName"].Value;
@@ -645,7 +645,7 @@ namespace WixToolset.Core
645
646 if (null == includeFile)
647 {
648 - throw new WixException(WixErrors.FileNotFound(sourceLineNumbers, includePath, "include"));
648 + throw new WixException(ErrorMessages.FileNotFound(sourceLineNumbers, includePath, "include"));
649 }
650
651 using (XmlReader reader = XmlReader.Create(includeFile, DocumentXmlReaderSettings))
@@ -660,7 +660,7 @@ namespace WixToolset.Core
660 catch (XmlException e)
661 {
662 this.UpdateCurrentLineNumber(reader, 0);
663 - throw new WixException(WixErrors.InvalidXml(sourceLineNumbers, "source", e.Message));
663 + throw new WixException(ErrorMessages.InvalidXml(sourceLineNumbers, "source", e.Message));
664 }
665
666 this.IncludedFile?.Invoke(this, new IncludedFileEventArgs(sourceLineNumbers, includeFile));
@@ -681,7 +681,7 @@ namespace WixToolset.Core
681 var indexOfInToken = reader.Value.IndexOf(" in ", StringComparison.Ordinal);
682 if (0 > indexOfInToken)
683 {
684 - throw new WixException(WixErrors.IllegalForeach(this.Context.CurrentSourceLineNumber, reader.Value));
684 + throw new WixException(ErrorMessages.IllegalForeach(this.Context.CurrentSourceLineNumber, reader.Value));
685 }
686
687 // parse out the variable name
@@ -751,7 +751,7 @@ namespace WixToolset.Core
751 }
752 else if (reader.NodeType == XmlNodeType.None)
753 {
754 - throw new WixException(WixErrors.ExpectedEndforeach(this.Context.CurrentSourceLineNumber));
754 + throw new WixException(ErrorMessages.ExpectedEndforeach(this.Context.CurrentSourceLineNumber));
755 }
756
757 reader.Read();
@@ -773,7 +773,7 @@ namespace WixToolset.Core
773 catch (XmlException e)
774 {
775 this.UpdateCurrentLineNumber(loopReader, offset);
776 - throw new WixException(WixErrors.InvalidXml(this.Context.CurrentSourceLineNumber, "source", e.Message));
776 + throw new WixException(ErrorMessages.InvalidXml(this.Context.CurrentSourceLineNumber, "source", e.Message));
777 }
778
779 fragmentStream.Position = 0; // seek back to the beginning for the next loop.
@@ -791,7 +791,7 @@ namespace WixToolset.Core
791
792 if (!match.Success)
793 {
794 - throw new WixException(WixErrors.InvalidPreprocessorPragma(this.Context.CurrentSourceLineNumber, pragmaText));
794 + throw new WixException(ErrorMessages.InvalidPreprocessorPragma(this.Context.CurrentSourceLineNumber, pragmaText));
795 }
796
797 // resolve other variables in the pragma argument(s)
@@ -803,7 +803,7 @@ namespace WixToolset.Core
803 }
804 catch (Exception e)
805 {
806 - throw new WixException(WixErrors.PreprocessorExtensionPragmaFailed(this.Context.CurrentSourceLineNumber, pragmaText, e.Message));
806 + throw new WixException(ErrorMessages.PreprocessorExtensionPragmaFailed(this.Context.CurrentSourceLineNumber, pragmaText, e.Message));
807 }
808 }
809
@@ -830,7 +830,7 @@ namespace WixToolset.Core
830 int endingQuotes = expression.IndexOf('\"', 1);
831 if (-1 == endingQuotes)
832 {
833 - throw new WixException(WixErrors.UnmatchedQuotesInExpression(this.Context.CurrentSourceLineNumber, originalExpression));
833 + throw new WixException(ErrorMessages.UnmatchedQuotesInExpression(this.Context.CurrentSourceLineNumber, originalExpression));
834 }
835
836 // cut the quotes off the string
@@ -864,7 +864,7 @@ namespace WixToolset.Core
864
865 if (-1 == endingParen)
866 {
867 - throw new WixException(WixErrors.UnmatchedParenthesisInExpression(this.Context.CurrentSourceLineNumber, originalExpression));
867 + throw new WixException(ErrorMessages.UnmatchedParenthesisInExpression(this.Context.CurrentSourceLineNumber, originalExpression));
868 }
869 token = expression.Substring(0, endingParen + 1);
870
@@ -981,12 +981,12 @@ namespace WixToolset.Core
981 else if (variable.IndexOf("(", StringComparison.Ordinal) != -1 || variable.IndexOf(")", StringComparison.Ordinal) != -1)
982 {
983 // make sure it doesn't contain parenthesis
984 - throw new WixException(WixErrors.UnmatchedParenthesisInExpression(this.Context.CurrentSourceLineNumber, originalExpression));
984 + throw new WixException(ErrorMessages.UnmatchedParenthesisInExpression(this.Context.CurrentSourceLineNumber, originalExpression));
985 }
986 else if (variable.IndexOf("\"", StringComparison.Ordinal) != -1)
987 {
988 // shouldn't contain quotes
989 - throw new WixException(WixErrors.UnmatchedQuotesInExpression(this.Context.CurrentSourceLineNumber, originalExpression));
989 + throw new WixException(ErrorMessages.UnmatchedQuotesInExpression(this.Context.CurrentSourceLineNumber, originalExpression));
990 }
991
992 return varValue;
@@ -1017,7 +1017,7 @@ namespace WixToolset.Core
1017 {
1018 if (stringLiteral)
1019 {
1020 - throw new WixException(WixErrors.UnmatchedQuotesInExpression(this.Context.CurrentSourceLineNumber, originalExpression));
1020 + throw new WixException(ErrorMessages.UnmatchedQuotesInExpression(this.Context.CurrentSourceLineNumber, originalExpression));
1021 }
1022
1023 rightValue = this.GetNextToken(originalExpression, ref expression, out stringLiteral);
@@ -1068,7 +1068,7 @@ namespace WixToolset.Core
1068 {
1069 if (operation.Length > 0)
1070 {
1071 - throw new WixException(WixErrors.ExpectedVariable(this.Context.CurrentSourceLineNumber, originalExpression));
1071 + throw new WixException(ErrorMessages.ExpectedVariable(this.Context.CurrentSourceLineNumber, originalExpression));
1072 }
1073
1074 // false expression
@@ -1083,7 +1083,7 @@ namespace WixToolset.Core
1083 }
1084 else
1085 {
1086 - throw new WixException(WixErrors.UnexpectedLiteral(this.Context.CurrentSourceLineNumber, originalExpression));
1086 + throw new WixException(ErrorMessages.UnexpectedLiteral(this.Context.CurrentSourceLineNumber, originalExpression));
1087 }
1088 }
1089 else
@@ -1123,11 +1123,11 @@ namespace WixToolset.Core
1123 }
1124 catch (FormatException)
1125 {
1126 - throw new WixException(WixErrors.IllegalIntegerInExpression(this.Context.CurrentSourceLineNumber, originalExpression));
1126 + throw new WixException(ErrorMessages.IllegalIntegerInExpression(this.Context.CurrentSourceLineNumber, originalExpression));
1127 }
1128 catch (OverflowException)
1129 {
1130 - throw new WixException(WixErrors.IllegalIntegerInExpression(this.Context.CurrentSourceLineNumber, originalExpression));
1130 + throw new WixException(ErrorMessages.IllegalIntegerInExpression(this.Context.CurrentSourceLineNumber, originalExpression));
1131 }
1132
1133 // Compare the numbers
@@ -1169,7 +1169,7 @@ namespace WixToolset.Core
1169 closeParenIndex = expression.IndexOf(')', closeParenIndex);
1170 if (closeParenIndex == -1)
1171 {
1172 - throw new WixException(WixErrors.UnmatchedParenthesisInExpression(this.Context.CurrentSourceLineNumber, originalExpression));
1172 + throw new WixException(ErrorMessages.UnmatchedParenthesisInExpression(this.Context.CurrentSourceLineNumber, originalExpression));
1173 }
1174
1175 if (InsideQuotes(expression, closeParenIndex))
@@ -1218,7 +1218,7 @@ namespace WixToolset.Core
1218 currentValue = !currentValue;
1219 break;
1220 default:
1221 - throw new WixException(WixErrors.UnexpectedPreprocessorOperator(this.Context.CurrentSourceLineNumber, operation.ToString()));
1221 + throw new WixException(ErrorMessages.UnexpectedPreprocessorOperator(this.Context.CurrentSourceLineNumber, operation.ToString()));
1222 }
1223 }
1224
@@ -1267,7 +1267,7 @@ namespace WixToolset.Core
1267 expression = expression.Trim();
1268 if (expression.Length == 0)
1269 {
1270 - throw new WixException(WixErrors.UnexpectedEmptySubexpression(this.Context.CurrentSourceLineNumber, originalExpression));
1270 + throw new WixException(ErrorMessages.UnexpectedEmptySubexpression(this.Context.CurrentSourceLineNumber, originalExpression));
1271 }
1272
1273 // If the expression starts with parenthesis, evaluate it
@@ -1288,7 +1288,7 @@ namespace WixToolset.Core
1288 expression = expression.Substring(3).Trim();
1289 if (expression.Length == 0)
1290 {
1291 - throw new WixException(WixErrors.ExpectedExpressionAfterNot(this.Context.CurrentSourceLineNumber, originalExpression));
1291 + throw new WixException(ErrorMessages.ExpectedExpressionAfterNot(this.Context.CurrentSourceLineNumber, originalExpression));
1292 }
1293
1294 expressionValue = this.EvaluateExpressionRecurse(originalExpression, ref expression, PreprocessorOperation.Not, true);
@@ -1317,7 +1317,7 @@ namespace WixToolset.Core
1317 }
1318 else
1319 {
1320 - throw new WixException(WixErrors.InvalidSubExpression(this.Context.CurrentSourceLineNumber, expression, originalExpression));
1320 + throw new WixException(ErrorMessages.InvalidSubExpression(this.Context.CurrentSourceLineNumber, expression, originalExpression));
1321 }
1322 }
1323
@@ -1351,7 +1351,7 @@ namespace WixToolset.Core
1351 {
1352 if (1023 < this.CurrentFileStack.Count)
1353 {
1354 - throw new WixException(WixErrors.TooDeeplyIncluded(this.Context.CurrentSourceLineNumber, this.CurrentFileStack.Count));
1354 + throw new WixException(ErrorMessages.TooDeeplyIncluded(this.Context.CurrentSourceLineNumber, this.CurrentFileStack.Count));
1355 }
1356
1357 this.CurrentFileStack.Push(fileName);
src/WixToolset.Core/ResolvedVariableEventHandler.cs deleted
-39
@@ -1,39 +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
4 -{
5 - using System;
6 - using System.Text;
7 - using WixToolset.Data;
8 -
9 - public delegate void ResolvedVariableEventHandler(object sender, ResolvedVariableEventArgs e);
10 -
11 - public class ResolvedVariableEventArgs : EventArgs
12 - {
13 - private SourceLineNumber sourceLineNumbers;
14 - private string variableName;
15 - private string variableValue;
16 -
17 - public ResolvedVariableEventArgs(SourceLineNumber sourceLineNumbers, string variableName, string variableValue)
18 - {
19 - this.sourceLineNumbers = sourceLineNumbers;
20 - this.variableName = variableName;
21 - this.variableValue = variableValue;
22 - }
23 -
24 - public SourceLineNumber SourceLineNumbers
25 - {
26 - get { return this.sourceLineNumbers; }
27 - }
28 -
29 - public string VariableName
30 - {
31 - get { return this.variableName; }
32 - }
33 -
34 - public string VariableValue
35 - {
36 - get { return this.variableValue; }
37 - }
38 - }
39 -}
src/WixToolset.Core/SourceFile.cs
-2
@@ -15,7 +15,5 @@ namespace WixToolset.Core
15 public string OutputPath { get; set; }
16
17 public string SourcePath { get; set; }
18 -
19 - public Stream Stream { get; set; }
18 }
19 }
src/WixToolset.Core/Util.cs deleted
-17
@@ -1,17 +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
4 -{
5 - using System;
6 -
7 - /// <summary>
8 - /// Common Wix utility methods and types.
9 - /// </summary>
10 - public sealed class Util
11 - {
12 - /// <summary>
13 - /// Set by WixToolTasks to indicate WIX is running inside MSBuild
14 - /// </summary>
15 - public static bool RunningInMsBuild { get; set; }
16 - }
17 -}
src/WixToolset.Core/Uuid.cs
+1 -8
@@ -10,15 +10,8 @@ namespace WixToolset
10 /// <summary>
11 /// Implementation of RFC 4122 - A Universally Unique Identifier (UUID) URN Namespace.
12 /// </summary>
13 - public sealed class Uuid
13 + public static class Uuid
14 {
15 - /// <summary>
16 - /// Protect the constructor.
17 - /// </summary>
18 - private Uuid()
19 - {
20 - }
21 -
15 /// <summary>
16 /// Creates a version 3 name-based UUID.
17 /// </summary>
src/WixToolset.Core/WixFileNotFoundException.cs renamed
+2 -10
@@ -11,21 +11,13 @@ namespace WixToolset
11 [Serializable]
12 public sealed class WixFileNotFoundException : WixException
13 {
14 - /// <summary>
15 - /// Instantiate a new WixFileNotFoundException.
16 - /// </summary>
17 - /// <param name="file">The file that could not be found.</param>
18 - public WixFileNotFoundException(string file) : this(null, file, null)
19 - {
20 - }
21 -
14 /// <summary>
15 /// Instantiate a new WixFileNotFoundException.
16 /// </summary>
17 /// <param name="sourceLineNumbers">Source line information pertaining to the file that cannot be found.</param>
18 /// <param name="file">The file that could not be found.</param>
19 public WixFileNotFoundException(SourceLineNumber sourceLineNumbers, string file) :
28 - base(WixErrors.FileNotFound(sourceLineNumbers, file))
20 + base(ErrorMessages.FileNotFound(sourceLineNumbers, file))
21 {
22 }
23
@@ -45,7 +37,7 @@ namespace WixToolset
37 /// <param name="file">The file that could not be found.</param>
38 /// <param name="fileType">The type of file that cannot be found.</param>
39 public WixFileNotFoundException(SourceLineNumber sourceLineNumbers, string file, string fileType) :
48 - base(WixErrors.FileNotFound(sourceLineNumbers, file, fileType))
40 + base(ErrorMessages.FileNotFound(sourceLineNumbers, file, fileType))
41 {
42 }
43 }
src/WixToolset.Core/WixGenericMessageEventArgs.cs deleted
-45
@@ -1,45 +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
4 -{
5 - using System;
6 - using System.Resources;
7 - using WixToolset.Data;
8 -
9 - /// <summary>
10 - /// Generic event args for message events.
11 - /// </summary>
12 - public class WixGenericMessageEventArgs : MessageEventArgs
13 - {
14 - /// <summary>
15 - /// Creates a new generc message event arg.
16 - /// </summary>
17 - /// <param name="sourceLineNumbers">Source line numbers for the message.</param>
18 - /// <param name="id">Id for the message.</param>
19 - /// <param name="level">Level for the message.</param>
20 - /// <param name="format">Format message for arguments.</param>
21 - /// <param name="messageArgs">Arguments for the format string.</param>
22 - public WixGenericMessageEventArgs(SourceLineNumber sourceLineNumbers, int id, MessageLevel level, string format, params object[] messageArgs)
23 - : base(sourceLineNumbers, id, format, messageArgs)
24 - {
25 - base.Level = level;
26 - base.ResourceManager = new GenericResourceManager();
27 - }
28 -
29 - /// <summary>
30 - /// Private resource manager to return our format message as the "localized" string untouched.
31 - /// </summary>
32 - private class GenericResourceManager : ResourceManager
33 - {
34 - /// <summary>
35 - /// Passes the "resource name" through as the format string.
36 - /// </summary>
37 - /// <param name="name">Format message that is passed in as the resource name.</param>
38 - /// <returns>The name.</returns>
39 - public override string GetString(string name)
40 - {
41 - return name;
42 - }
43 - }
44 - }
45 -}
src/WixToolset.Core/WixStrings.Designer.cs
+1 -249
@@ -37,102 +37,7 @@ namespace WixToolset {
37 return resourceMan;
38 }
39 }
40 -
41 - /// <summary>
42 - /// Overrides the current thread's CurrentUICulture property for all
43 - /// resource lookups using this strongly typed resource class.
44 - /// </summary>
45 - [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
46 - internal static global::System.Globalization.CultureInfo Culture {
47 - get {
48 - return resourceCulture;
49 - }
50 - set {
51 - resourceCulture = value;
52 - }
53 - }
54 -
55 - /// <summary>
56 - /// Looks up a localized string similar to Cannot index into a FileRowCollection that allows duplicate FileIds.
57 - /// </summary>
58 - internal static string EXP_CannotIndexIntoFileRowCollection {
59 - get {
60 - return ResourceManager.GetString("EXP_CannotIndexIntoFileRowCollection", resourceCulture);
61 - }
62 - }
63 -
64 - /// <summary>
65 - /// Looks up a localized string similar to The value &apos;{0}&apos; is not a legal identifier and therefore cannot be modularized..
66 - /// </summary>
67 - internal static string EXP_CannotModularizeIllegalID {
68 - get {
69 - return ResourceManager.GetString("EXP_CannotModularizeIllegalID", resourceCulture);
70 - }
71 - }
72 -
73 - /// <summary>
74 - /// Looks up a localized string similar to Cannot set column &apos;{0}&apos; with value {1} because it is greater than the maximum allowed value for this column, {2}..
75 - /// </summary>
76 - internal static string EXP_CannotSetColumnWithValueGreaterThanMaxValue {
77 - get {
78 - return ResourceManager.GetString("EXP_CannotSetColumnWithValueGreaterThanMaxValue", resourceCulture);
79 - }
80 - }
81 -
82 - /// <summary>
83 - /// Looks up a localized string similar to Cannot set column &apos;{0}&apos; with value {1} because it is less than the minimum allowed value for this column, {2}..
84 - /// </summary>
85 - internal static string EXP_CannotSetColumnWithValueLessThanMinValue {
86 - get {
87 - return ResourceManager.GetString("EXP_CannotSetColumnWithValueLessThanMinValue", resourceCulture);
88 - }
89 - }
90 -
91 - /// <summary>
92 - /// Looks up a localized string similar to A Merge table FileCompression column cannot be set to the invalid value &apos;{0}&apos;..
93 - /// </summary>
94 - internal static string EXP_CannotSetMergeTableFileCompressionColumnToInvalidValue {
95 - get {
96 - return ResourceManager.GetString("EXP_CannotSetMergeTableFileCompressionColumnToInvalidValue", resourceCulture);
97 - }
98 - }
99 -
100 - /// <summary>
101 - /// Looks up a localized string similar to Cannot set column &apos;{0}&apos; with a null value because this is a required field..
102 - /// </summary>
103 - internal static string EXP_CannotSetNullOnRequiredField {
104 - get {
105 - return ResourceManager.GetString("EXP_CannotSetNullOnRequiredField", resourceCulture);
106 - }
107 - }
108 -
109 - /// <summary>
110 - /// Looks up a localized string similar to Cannot set number column &apos;{0}&apos; with a value of type &apos;{1}&apos;..
111 - /// </summary>
112 - internal static string EXP_CannotSetNumberColumnWithValueOfType {
113 - get {
114 - return ResourceManager.GetString("EXP_CannotSetNumberColumnWithValueOfType", resourceCulture);
115 - }
116 - }
117 -
118 - /// <summary>
119 - /// Looks up a localized string similar to Cannot set string column &apos;{0}&apos; with a value of type &apos;{1}&apos;..
120 - /// </summary>
121 - internal static string EXP_CannotSetStringColumnWithValueOfType {
122 - get {
123 - return ResourceManager.GetString("EXP_CannotSetStringColumnWithValueOfType", resourceCulture);
124 - }
125 - }
126 -
127 - /// <summary>
128 - /// Looks up a localized string similar to Could not determine ProductCode from transform summary information.
129 - /// </summary>
130 - public static string EXP_CouldnotDetermineProductCodeFromTransformSummaryInfo {
131 - get {
132 - return ResourceManager.GetString("EXP_CouldnotDetermineProductCodeFromTransformSummaryInfo", resourceCulture);
133 - }
134 - }
135 -
40 +
41 /// <summary>
42 /// Looks up a localized string similar to Could not find a unique identifier for the given resource name..
43 /// </summary>
@@ -142,24 +47,6 @@ namespace WixToolset {
47 }
48 }
49
145 - /// <summary>
146 - /// Looks up a localized string similar to Didn&apos;t find duplicated symbol..
147 - /// </summary>
148 - internal static string EXP_DidnotFindDuplicateSymbol {
149 - get {
150 - return ResourceManager.GetString("EXP_DidnotFindDuplicateSymbol", resourceCulture);
151 - }
152 - }
153 -
154 - /// <summary>
155 - /// Looks up a localized string similar to Expected ComplexReference type..
156 - /// </summary>
157 - internal static string EXP_ExpectedComplexReferenceType {
158 - get {
159 - return ResourceManager.GetString("EXP_ExpectedComplexReferenceType", resourceCulture);
160 - }
161 - }
162 -
50 /// <summary>
51 /// Looks up a localized string similar to Found an ActionRow with a non-existent {0} action: {1}..
52 /// </summary>
@@ -178,33 +65,6 @@ namespace WixToolset {
65 }
66 }
67
181 - /// <summary>
182 - /// Looks up a localized string similar to Illegal arguments passed..
183 - /// </summary>
184 - internal static string EXP_IllegalArgumentsPassed {
185 - get {
186 - return ResourceManager.GetString("EXP_IllegalArgumentsPassed", resourceCulture);
187 - }
188 - }
189 -
190 - /// <summary>
191 - /// Looks up a localized string similar to Invalid table name passed into GenerateIdentifier..
192 - /// </summary>
193 - internal static string EXP_InvalidTableNamePassed {
194 - get {
195 - return ResourceManager.GetString("EXP_InvalidTableNamePassed", resourceCulture);
196 - }
197 - }
198 -
199 - /// <summary>
200 - /// Looks up a localized string similar to A Merge table FileCompression column contains an invalid value &apos;{0}&apos;..
201 - /// </summary>
202 - internal static string EXP_MergeTableFileCompressionColumnContainsInvalidValue {
203 - get {
204 - return ResourceManager.GetString("EXP_MergeTableFileCompressionColumnContainsInvalidValue", resourceCulture);
205 - }
206 - }
207 -
68 /// <summary>
69 /// Looks up a localized string similar to Multiple harvester extensions specified..
70 /// </summary>
@@ -214,24 +74,6 @@ namespace WixToolset {
74 }
75 }
76
217 - /// <summary>
218 - /// Looks up a localized string similar to The other object is not a FileRow..
219 - /// </summary>
220 - internal static string EXP_OtherObjectIsNotFileRow {
221 - get {
222 - return ResourceManager.GetString("EXP_OtherObjectIsNotFileRow", resourceCulture);
223 - }
224 - }
225 -
226 - /// <summary>
227 - /// Looks up a localized string similar to Transform authored into multiple Media &apos;{0}&apos; and &apos;{1}&apos;..
228 - /// </summary>
229 - public static string EXP_TransformAuthoredIntoMultipleMedia {
230 - get {
231 - return ResourceManager.GetString("EXP_TransformAuthoredIntoMultipleMedia", resourceCulture);
232 - }
233 - }
234 -
77 /// <summary>
78 /// Looks up a localized string similar to Unexpected complex reference child type: {0}.
79 /// </summary>
@@ -268,78 +110,6 @@ namespace WixToolset {
110 }
111 }
112
271 - /// <summary>
272 - /// Looks up a localized string similar to Unknown control attribute: &apos;{0}&apos;..
273 - /// </summary>
274 - internal static string EXP_UnknowControlAttribute {
275 - get {
276 - return ResourceManager.GetString("EXP_UnknowControlAttribute", resourceCulture);
277 - }
278 - }
279 -
280 - /// <summary>
281 - /// Looks up a localized string similar to Unknown column type: {0}.
282 - /// </summary>
283 - internal static string EXP_UnknownColumnType {
284 - get {
285 - return ResourceManager.GetString("EXP_UnknownColumnType", resourceCulture);
286 - }
287 - }
288 -
289 - /// <summary>
290 - /// Looks up a localized string similar to Unknown compression level type: {0}.
291 - /// </summary>
292 - internal static string EXP_UnknownCompressionLevelType {
293 - get {
294 - return ResourceManager.GetString("EXP_UnknownCompressionLevelType", resourceCulture);
295 - }
296 - }
297 -
298 - /// <summary>
299 - /// Looks up a localized string similar to Unknown custom column category &apos;{0}&apos;..
300 - /// </summary>
301 - internal static string EXP_UnknownCustomColumnCategory {
302 - get {
303 - return ResourceManager.GetString("EXP_UnknownCustomColumnCategory", resourceCulture);
304 - }
305 - }
306 -
307 - /// <summary>
308 - /// Looks up a localized string similar to Unknown custom column modularization type &apos;{0}&apos;..
309 - /// </summary>
310 - internal static string EXP_UnknownCustomColumnModularizationType {
311 - get {
312 - return ResourceManager.GetString("EXP_UnknownCustomColumnModularizationType", resourceCulture);
313 - }
314 - }
315 -
316 - /// <summary>
317 - /// Looks up a localized string similar to Unknown custom column type &apos;{0}&apos;..
318 - /// </summary>
319 - internal static string EXP_UnknownCustomColumnType {
320 - get {
321 - return ResourceManager.GetString("EXP_UnknownCustomColumnType", resourceCulture);
322 - }
323 - }
324 -
325 - /// <summary>
326 - /// Looks up a localized string similar to Unknown output type..
327 - /// </summary>
328 - internal static string EXP_UnknownOutputType {
329 - get {
330 - return ResourceManager.GetString("EXP_UnknownOutputType", resourceCulture);
331 - }
332 - }
333 -
334 - /// <summary>
335 - /// Looks up a localized string similar to Unknown permission attribute &apos;{0}&apos;..
336 - /// </summary>
337 - internal static string EXP_UnknownPermissionAttribute {
338 - get {
339 - return ResourceManager.GetString("EXP_UnknownPermissionAttribute", resourceCulture);
340 - }
341 - }
342 -
113 /// <summary>
114 /// Looks up a localized string similar to Unknown platform enumeration &apos;{0}&apos; encountered..
115 /// </summary>
@@ -349,24 +119,6 @@ namespace WixToolset {
119 }
120 }
121
352 - /// <summary>
353 - /// Looks up a localized string similar to Unknown sequence table..
354 - /// </summary>
355 - internal static string EXP_UnknowSequenceTable {
356 - get {
357 - return ResourceManager.GetString("EXP_UnknowSequenceTable", resourceCulture);
358 - }
359 - }
360 -
361 - /// <summary>
362 - /// Looks up a localized string similar to The table {0} is not supported..
363 - /// </summary>
364 - internal static string EXP_UnsupportedTable {
365 - get {
366 - return ResourceManager.GetString("EXP_UnsupportedTable", resourceCulture);
367 - }
368 - }
369 -
122 /// <summary>
123 /// Looks up a localized string similar to {0}({1}).
124 /// </summary>
src/WixToolset.Core/WixStrings.resx
-75
@@ -117,39 +117,9 @@
117 <resheader name="writer">
118 <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
119 </resheader>
120 - <data name="EXP_CannotIndexIntoFileRowCollection" xml:space="preserve">
121 - <value>Cannot index into a FileRowCollection that allows duplicate FileIds</value>
122 - </data>
123 - <data name="EXP_CannotModularizeIllegalID" xml:space="preserve">
124 - <value>The value '{0}' is not a legal identifier and therefore cannot be modularized.</value>
125 - </data>
126 - <data name="EXP_CannotSetColumnWithValueGreaterThanMaxValue" xml:space="preserve">
127 - <value>Cannot set column '{0}' with value {1} because it is greater than the maximum allowed value for this column, {2}.</value>
128 - </data>
129 - <data name="EXP_CannotSetColumnWithValueLessThanMinValue" xml:space="preserve">
130 - <value>Cannot set column '{0}' with value {1} because it is less than the minimum allowed value for this column, {2}.</value>
131 - </data>
132 - <data name="EXP_CannotSetMergeTableFileCompressionColumnToInvalidValue" xml:space="preserve">
133 - <value>A Merge table FileCompression column cannot be set to the invalid value '{0}'.</value>
134 - </data>
135 - <data name="EXP_CannotSetNullOnRequiredField" xml:space="preserve">
136 - <value>Cannot set column '{0}' with a null value because this is a required field.</value>
137 - </data>
138 - <data name="EXP_CannotSetNumberColumnWithValueOfType" xml:space="preserve">
139 - <value>Cannot set number column '{0}' with a value of type '{1}'.</value>
140 - </data>
141 - <data name="EXP_CannotSetStringColumnWithValueOfType" xml:space="preserve">
142 - <value>Cannot set string column '{0}' with a value of type '{1}'.</value>
143 - </data>
144 - <data name="EXP_CouldnotDetermineProductCodeFromTransformSummaryInfo" xml:space="preserve">
145 - <value>Could not determine ProductCode from transform summary information</value>
146 - </data>
120 <data name="EXP_CouldnotFileUniqueIDForResourceName" xml:space="preserve">
121 <value>Could not find a unique identifier for the given resource name.</value>
122 </data>
150 - <data name="EXP_DidnotFindDuplicateSymbol" xml:space="preserve">
151 - <value>Didn't find duplicated symbol.</value>
152 - </data>
123 <data name="EXP_ExpectedComplexReferenceType" xml:space="preserve">
124 <value>Expected ComplexReference type.</value>
125 </data>
@@ -159,24 +129,9 @@
129 <data name="EXP_FoundActionRowWithNoSequenceBeforeOrAfterColumnSet" xml:space="preserve">
130 <value>Found an ActionRow with no Sequence, Before, or After column set.</value>
131 </data>
162 - <data name="EXP_IllegalArgumentsPassed" xml:space="preserve">
163 - <value>Illegal arguments passed.</value>
164 - </data>
165 - <data name="EXP_InvalidTableNamePassed" xml:space="preserve">
166 - <value>Invalid table name passed into GenerateIdentifier.</value>
167 - </data>
168 - <data name="EXP_MergeTableFileCompressionColumnContainsInvalidValue" xml:space="preserve">
169 - <value>A Merge table FileCompression column contains an invalid value '{0}'.</value>
170 - </data>
132 <data name="EXP_MultipleHarvesterExtensionsSpecified" xml:space="preserve">
133 <value>Multiple harvester extensions specified.</value>
134 </data>
174 - <data name="EXP_OtherObjectIsNotFileRow" xml:space="preserve">
175 - <value>The other object is not a FileRow.</value>
176 - </data>
177 - <data name="EXP_TransformAuthoredIntoMultipleMedia" xml:space="preserve">
178 - <value>Transform authored into multiple Media '{0}' and '{1}'.</value>
179 - </data>
135 <data name="EXP_UnexpectedComplexReferenceChildType" xml:space="preserve">
136 <value>Unexpected complex reference child type: {0}</value>
137 </data>
@@ -189,39 +144,9 @@
144 <data name="EXP_UnexpectedMergerErrorWithType" xml:space="preserve">
145 <value>Encountered an unexpected merge error of type '{0}' for which there is currently no error message to display. More information about the merge and the failure can be found in the merge log: '{1}'</value>
146 </data>
192 - <data name="EXP_UnknowControlAttribute" xml:space="preserve">
193 - <value>Unknown control attribute: '{0}'.</value>
194 - </data>
195 - <data name="EXP_UnknownColumnType" xml:space="preserve">
196 - <value>Unknown column type: {0}</value>
197 - </data>
198 - <data name="EXP_UnknownCompressionLevelType" xml:space="preserve">
199 - <value>Unknown compression level type: {0}</value>
200 - </data>
201 - <data name="EXP_UnknownCustomColumnCategory" xml:space="preserve">
202 - <value>Unknown custom column category '{0}'.</value>
203 - </data>
204 - <data name="EXP_UnknownCustomColumnModularizationType" xml:space="preserve">
205 - <value>Unknown custom column modularization type '{0}'.</value>
206 - </data>
207 - <data name="EXP_UnknownCustomColumnType" xml:space="preserve">
208 - <value>Unknown custom column type '{0}'.</value>
209 - </data>
210 - <data name="EXP_UnknownOutputType" xml:space="preserve">
211 - <value>Unknown output type.</value>
212 - </data>
213 - <data name="EXP_UnknownPermissionAttribute" xml:space="preserve">
214 - <value>Unknown permission attribute '{0}'.</value>
215 - </data>
216 - <data name="EXP_UnknowSequenceTable" xml:space="preserve">
217 - <value>Unknown sequence table.</value>
218 - </data>
147 <data name="EXP_UnknownPlatformEnum" xml:space="preserve">
148 <value>Unknown platform enumeration '{0}' encountered.</value>
149 </data>
222 - <data name="EXP_UnsupportedTable" xml:space="preserve">
223 - <value>The table {0} is not supported.</value>
224 - </data>
150 <data name="Format_FirstLineNumber" xml:space="preserve">
151 <value>{0}({1})</value>
152 </data>
src/WixToolset.Core/WixToolsetServiceProvider.cs
+6
@@ -11,6 +11,7 @@ namespace WixToolset.Core
11 public class WixToolsetServiceProvider : IServiceProvider
12 {
13 private ExtensionManager extensionManager;
14 + private Messaging messaging;
15 private ParseHelper parseHelper;
16 private PreprocessHelper preprocessHelper;
17 private TupleDefinitionCreator tupleDefinitionCreator;
@@ -62,6 +63,11 @@ namespace WixToolset.Core
63 return this.extensionManager = this.extensionManager ?? new ExtensionManager();
64 }
65
66 + if (serviceType == typeof(IMessaging))
67 + {
68 + return this.messaging = this.messaging ?? new Messaging();
69 + }
70 +
71 if (serviceType == typeof(ITupleDefinitionCreator))
72 {
73 return this.tupleDefinitionCreator = this.tupleDefinitionCreator ?? new TupleDefinitionCreator(this);
src/WixToolset.Core/WixVariableResolver.cs
+13 -13
@@ -11,6 +11,7 @@ namespace WixToolset.Core
11 using WixToolset.Data;
12 using WixToolset.Data.Tuples;
13 using WixToolset.Extensibility;
14 + using WixToolset.Extensibility.Services;
15
16 /// <summary>
17 /// WiX variable resolver.
@@ -22,16 +23,15 @@ namespace WixToolset.Core
23 /// <summary>
24 /// Instantiate a new WixVariableResolver.
25 /// </summary>
25 - public WixVariableResolver(Localizer localizer = null)
26 + public WixVariableResolver(IMessaging messaging, Localizer localizer = null)
27 {
28 this.wixVariables = new Dictionary<string, string>();
29 + this.Messaging = messaging;
30 this.Localizer = localizer;
31 }
32
31 - /// <summary>
32 - /// Gets or sets the localizer.
33 - /// </summary>
34 - /// <value>The localizer.</value>
33 + private IMessaging Messaging { get; }
34 +
35 private Localizer Localizer { get; }
36
37 /// <summary>
@@ -52,7 +52,7 @@ namespace WixToolset.Core
52 }
53 catch (ArgumentException)
54 {
55 - Messaging.Instance.OnMessage(WixErrors.WixVariableCollision(null, name));
55 + this.Messaging.Write(ErrorMessages.WixVariableCollision(null, name));
56 }
57 }
58
@@ -70,7 +70,7 @@ namespace WixToolset.Core
70 {
71 if (!wixVariableRow.Overridable) // collision
72 {
73 - Messaging.Instance.OnMessage(WixErrors.WixVariableCollision(wixVariableRow.SourceLineNumbers, wixVariableRow.WixVariable));
73 + this.Messaging.Write(ErrorMessages.WixVariableCollision(wixVariableRow.SourceLineNumbers, wixVariableRow.WixVariable));
74 }
75 }
76 }
@@ -153,7 +153,7 @@ namespace WixToolset.Core
153 // localization variables to not support inline default values
154 if ("loc" == variableNamespace)
155 {
156 - Messaging.Instance.OnMessage(WixErrors.IllegalInlineLocVariable(sourceLineNumbers, variableId, variableDefaultValue));
156 + this.Messaging.Write(ErrorMessages.IllegalInlineLocVariable(sourceLineNumbers, variableId, variableDefaultValue));
157 }
158 }
159
@@ -183,7 +183,7 @@ namespace WixToolset.Core
183 // warn about deprecated syntax of $(loc.var)
184 if ('$' == sb[matches[i].Index])
185 {
186 - Messaging.Instance.OnMessage(WixWarnings.DeprecatedLocalizationVariablePrefix(sourceLineNumbers, variableId));
186 + this.Messaging.Write(WarningMessages.DeprecatedLocalizationVariablePrefix(sourceLineNumbers, variableId));
187 }
188
189 resolvedValue = this.Localizer?.GetLocalizedValue(variableId);
@@ -193,7 +193,7 @@ namespace WixToolset.Core
193 // illegal syntax of $(wix.var)
194 if ('$' == sb[matches[i].Index])
195 {
196 - Messaging.Instance.OnMessage(WixErrors.IllegalWixVariablePrefix(sourceLineNumbers, variableId));
196 + this.Messaging.Write(ErrorMessages.IllegalWixVariablePrefix(sourceLineNumbers, variableId));
197 }
198 else
199 {
@@ -225,11 +225,11 @@ namespace WixToolset.Core
225 }
226 else if ("loc" == variableNamespace && errorOnUnknown) // unresolved loc variable
227 {
228 - Messaging.Instance.OnMessage(WixErrors.LocalizationVariableUnknown(sourceLineNumbers, variableId));
228 + this.Messaging.Write(ErrorMessages.LocalizationVariableUnknown(sourceLineNumbers, variableId));
229 }
230 else if (!localizationOnly && "wix" == variableNamespace && errorOnUnknown) // unresolved wix variable
231 {
232 - Messaging.Instance.OnMessage(WixErrors.WixVariableUnknown(sourceLineNumbers, variableId));
232 + this.Messaging.Write(ErrorMessages.WixVariableUnknown(sourceLineNumbers, variableId));
233 }
234 }
235 }
@@ -321,7 +321,7 @@ namespace WixToolset.Core
321 }
322 else
323 {
324 - throw new WixException(WixErrors.UnresolvedBindReference(sourceLineNumbers, value));
324 + throw new WixException(ErrorMessages.UnresolvedBindReference(sourceLineNumbers, value));
325 }
326 }
327 }
src/test/WixToolsetTest.CoreIntegration/ExtensionFixture.cs
+2 -2
@@ -25,7 +25,7 @@ namespace WixToolsetTest.CoreIntegration
25 var intermediateFolder = fs.GetFolder();
26
27 var program = new Program();
28 - var result = program.Run(new WixToolsetServiceProvider(), new[]
28 + var result = program.Run(new WixToolsetServiceProvider(), null, new[]
29 {
30 "build",
31 Path.Combine(folder, "Package.wxs"),
@@ -68,7 +68,7 @@ namespace WixToolsetTest.CoreIntegration
68 var intermediateFolder = fs.GetFolder();
69
70 var program = new Program();
71 - var result = program.Run(new WixToolsetServiceProvider(), new[]
71 + var result = program.Run(new WixToolsetServiceProvider(), null, new[]
72 {
73 "build",
74 Path.Combine(folder, "Package.wxs"),
src/test/WixToolsetTest.CoreIntegration/ProgramFixture.cs
+8 -8
@@ -23,7 +23,7 @@ namespace WixToolsetTest.CoreIntegration
23 var intermediateFolder = fs.GetFolder();
24
25 var program = new Program();
26 - var result = program.Run(new WixToolsetServiceProvider(), new[]
26 + var result = program.Run(new WixToolsetServiceProvider(), null, new[]
27 {
28 "build",
29 Path.Combine(folder, "Package.wxs"),
@@ -59,7 +59,7 @@ namespace WixToolsetTest.CoreIntegration
59 var intermediateFolder = fs.GetFolder();
60
61 var program = new Program();
62 - var result = program.Run(new WixToolsetServiceProvider(), new[]
62 + var result = program.Run(new WixToolsetServiceProvider(), null, new[]
63 {
64 "build",
65 Path.Combine(folder, "Package.wxs"),
@@ -95,7 +95,7 @@ namespace WixToolsetTest.CoreIntegration
95 var intermediateFolder = fs.GetFolder();
96
97 var program = new Program();
98 - var result = program.Run(new WixToolsetServiceProvider(), new[]
98 + var result = program.Run(new WixToolsetServiceProvider(), null, new[]
99 {
100 "build",
101 Path.Combine(folder, "Package.wxs"),
@@ -125,7 +125,7 @@ namespace WixToolsetTest.CoreIntegration
125 var intermediateFolder = fs.GetFolder();
126
127 var program = new Program();
128 - var result = program.Run(new WixToolsetServiceProvider(), new[]
128 + var result = program.Run(new WixToolsetServiceProvider(), null, new[]
129 {
130 "build",
131 Path.Combine(folder, "Package.wxs"),
@@ -155,7 +155,7 @@ namespace WixToolsetTest.CoreIntegration
155 var intermediateFolder = fs.GetFolder();
156
157 var program = new Program();
158 - var result = program.Run(new WixToolsetServiceProvider(), new[]
158 + var result = program.Run(new WixToolsetServiceProvider(), null, new[]
159 {
160 "build",
161 Path.Combine(folder, "Package.wxs"),
@@ -185,7 +185,7 @@ namespace WixToolsetTest.CoreIntegration
185 var intermediateFolder = fs.GetFolder();
186
187 var program = new Program();
188 - var result = program.Run(new WixToolsetServiceProvider(), new[]
188 + var result = program.Run(new WixToolsetServiceProvider(), null, new[]
189 {
190 "build",
191 Path.Combine(folder, "Module.wxs"),
@@ -219,7 +219,7 @@ namespace WixToolsetTest.CoreIntegration
219 var intermediateFolder = fs.GetFolder();
220
221 var program = new Program();
222 - var result = program.Run(new WixToolsetServiceProvider(), new[]
222 + var result = program.Run(new WixToolsetServiceProvider(), null, new[]
223 {
224 "build",
225 Path.Combine(folder, "Package.wxs"),
@@ -255,7 +255,7 @@ namespace WixToolsetTest.CoreIntegration
255 var intermediateFolder = fs.GetFolder();
256
257 var program = new Program();
258 - var result = program.Run(new WixToolsetServiceProvider(), new[]
258 + var result = program.Run(new WixToolsetServiceProvider(), null, new[]
259 {
260 "build",
261 Path.Combine(folder, "Package.wxs"),
src/wix/Program.cs
+55 -15
@@ -3,7 +3,11 @@
3 namespace WixToolset.Core
4 {
5 using System;
6 + using System.Globalization;
7 + using System.Text;
8 + using System.Threading;
9 using WixToolset.Data;
10 + using WixToolset.Extensibility;
11 using WixToolset.Extensibility.Services;
12
13 /// <summary>
@@ -19,12 +23,12 @@ namespace WixToolset.Core
23 [MTAThread]
24 public static int Main(string[] args)
25 {
22 - Messaging.Instance.InitializeAppName("WIX", "wix.exe");
23 - Messaging.Instance.Display += DisplayMessage;
24 -
26 var serviceProvider = new WixToolsetServiceProvider();
27 +
28 + var listener = new ConsoleMessageListener("WIX", "wix.exe");
29 +
30 var program = new Program();
27 - return program.Run(serviceProvider, args);
31 + return program.Run(serviceProvider, listener, args);
32 }
33
34 /// <summary>
@@ -33,10 +37,13 @@ namespace WixToolset.Core
37 /// <param name="serviceProvider">Service provider to use throughout this execution.</param>
38 /// <param name="args">Command-line arguments to execute.</param>
39 /// <returns>Returns the application error code.</returns>
36 - public int Run(IServiceProvider serviceProvider, string[] args)
40 + public int Run(IServiceProvider serviceProvider, IMessageListener listener, string[] args)
41 {
42 + var messaging = serviceProvider.GetService<IMessaging>();
43 + messaging.SetListener(listener);
44 +
45 var context = serviceProvider.GetService<ICommandLineContext>();
39 - context.Messaging = Messaging.Instance;
46 + context.Messaging = messaging;
47 context.ExtensionManager = CreateExtensionManagerWithStandardBackends(serviceProvider);
48 context.ParsedArguments = args;
49
@@ -57,17 +64,50 @@ namespace WixToolset.Core
64 return extensionManager;
65 }
66
60 - private static void DisplayMessage(object sender, DisplayEventArgs e)
67 + private class ConsoleMessageListener : IMessageListener
68 {
62 - switch (e.Level)
69 + public ConsoleMessageListener(string shortName, string longName)
70 + {
71 + this.ShortAppName = shortName;
72 + this.LongAppName = longName;
73 +
74 + PrepareConsoleForLocalization();
75 + }
76 +
77 + public string LongAppName { get; }
78 +
79 + public string ShortAppName { get; }
80 +
81 + public void Write(Message message)
82 {
64 - case MessageLevel.Warning:
65 - case MessageLevel.Error:
66 - Console.Error.WriteLine(e.Message);
67 - break;
68 - default:
69 - Console.WriteLine(e.Message);
70 - break;
83 + var filename = message.SourceLineNumbers?.FileName ?? this.LongAppName;
84 + var line = message.SourceLineNumbers?.LineNumber ?? -1;
85 + var type = message.Level.ToString().ToLowerInvariant();
86 + var output = message.Level >= MessageLevel.Warning ? Console.Out : Console.Error;
87 +
88 + if (line > 0)
89 + {
90 + filename = String.Concat(filename, "(", line, ")");
91 + }
92 +
93 + output.WriteLine("{0} : {1} {2}{3:0000}: {4}", filename, type, this.ShortAppName, message.Id, message.ToString());
94 + }
95 +
96 + public void Write(string message)
97 + {
98 + Console.Out.WriteLine(message);
99 + }
100 +
101 + private static void PrepareConsoleForLocalization()
102 + {
103 + Thread.CurrentThread.CurrentUICulture = CultureInfo.CurrentUICulture.GetConsoleFallbackUICulture();
104 +
105 + if (Console.OutputEncoding.CodePage != Encoding.UTF8.CodePage &&
106 + Console.OutputEncoding.CodePage != Thread.CurrentThread.CurrentUICulture.TextInfo.OEMCodePage &&
107 + Console.OutputEncoding.CodePage != Thread.CurrentThread.CurrentUICulture.TextInfo.ANSICodePage)
108 + {
109 + Thread.CurrentThread.CurrentUICulture = new CultureInfo("en-US");
110 + }
111 }
112 }
113 }