aboutsummaryrefslogtreecommitdiff
path: root/src/WixToolset.Data/ErrorMessages.cs
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--src/WixToolset.Data/ErrorMessages.cs2615
1 files changed, 2615 insertions, 0 deletions
diff --git a/src/WixToolset.Data/ErrorMessages.cs b/src/WixToolset.Data/ErrorMessages.cs
new file mode 100644
index 00000000..7ce94157
--- /dev/null
+++ b/src/WixToolset.Data/ErrorMessages.cs
@@ -0,0 +1,2615 @@
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
3namespace WixToolset.Data
4{
5 using System;
6 using System.Resources;
7
8 public static class ErrorMessages
9 {
10 public static Message ActionCircularDependency(SourceLineNumber sourceLineNumbers, string sequenceTableName, string actionName1, string actionName2)
11 {
12 return Message(sourceLineNumbers, Ids.ActionCircularDependency, "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.", sequenceTableName, actionName1, actionName2);
13 }
14
15 public static Message ActionCollision(SourceLineNumber sourceLineNumbers, string sequenceTableName, string actionName)
16 {
17 return Message(sourceLineNumbers, Ids.ActionCollision, "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.", sequenceTableName, actionName);
18 }
19
20 public static Message ActionCollision2(SourceLineNumber sourceLineNumbers)
21 {
22 return Message(sourceLineNumbers, Ids.ActionCollision2, "The location of the action related to previous error.");
23 }
24
25 public static Message ActionScheduledRelativeToItself(SourceLineNumber sourceLineNumbers, string elementName, string attributeName, string attributeValue)
26 {
27 return Message(sourceLineNumbers, Ids.ActionScheduledRelativeToItself, "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.", elementName, attributeName, attributeValue);
28 }
29
30 public static Message ActionScheduledRelativeToTerminationAction(SourceLineNumber sourceLineNumbers, string sequenceTableName, string actionName1, string actionName2)
31 {
32 return Message(sourceLineNumbers, Ids.ActionScheduledRelativeToTerminationAction, "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.", sequenceTableName, actionName1, actionName2);
33 }
34
35 public static Message ActionScheduledRelativeToTerminationAction2(SourceLineNumber sourceLineNumbers)
36 {
37 return Message(sourceLineNumbers, Ids.ActionScheduledRelativeToTerminationAction2, "The location of the special termination action related to previous error(s).");
38 }
39
40 public static Message AdditionalArgumentUnexpected(string argument)
41 {
42 return Message(null, Ids.AdditionalArgumentUnexpected, "Additional argument '{0}' was unexpected. Remove the argument and add the '-?' switch for more information.", argument);
43 }
44
45 public static Message AdminImageRequired(string productCode)
46 {
47 return Message(null, Ids.AdminImageRequired, "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.", productCode);
48 }
49
50 public static Message AdvertiseStateMustMatch(SourceLineNumber sourceLineNumbers, string advertiseState, string parentAdvertiseState)
51 {
52 return Message(sourceLineNumbers, Ids.AdvertiseStateMustMatch, "The advertise state of this element: '{0}', does not match the advertise state set on the parent element: '{1}'.", advertiseState, parentAdvertiseState);
53 }
54
55 public static Message AppIdIncompatibleAdvertiseState(SourceLineNumber sourceLineNumbers, string elementName, string attributeName, string value, string parentValue)
56 {
57 return Message(sourceLineNumbers, Ids.AppIdIncompatibleAdvertiseState, "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.)", elementName, attributeName, value, parentValue);
58 }
59
60 public static Message BaselineRequired()
61 {
62 return Message(null, Ids.BaselineRequired, "No baseline was specified for one of the transforms specified. A baseline is required for all transforms in a patch.");
63 }
64
65 public static Message BinderFileManagerMissingFile(SourceLineNumber sourceLineNumbers, string exceptionMessage)
66 {
67 return Message(sourceLineNumbers, Ids.BinderFileManagerMissingFile, "{0}", exceptionMessage);
68 }
69
70 public static Message BothUpgradeCodesRequired()
71 {
72 return Message(null, Ids.BothUpgradeCodesRequired, "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.");
73 }
74
75 public static Message BundleTooNew(string bundleExecutable, long bundleVersion)
76 {
77 return Message(null, Ids.BundleTooNew, "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.", bundleExecutable, bundleVersion);
78 }
79
80 public static Message CabClosureFailed(string cabinet)
81 {
82 return Message(null, Ids.CabClosureFailed, "Failed to close cab '{0}'.", cabinet);
83 }
84
85 public static Message CabClosureFailed(string cabinet, int error)
86 {
87 return Message(null, Ids.CabClosureFailed, "Failed to close cab '{0}', error: {1}.", cabinet, error);
88 }
89
90 public static Message CabCreationFailed(string cabName, string fileName, int error)
91 {
92 return Message(null, Ids.CabCreationFailed, "Failed to create cab '{0}' while compressing file '{1}' with error 0x{2:X8}.", cabName, fileName, error);
93 }
94
95 public static Message CabCreationFailed(string cabName, int error)
96 {
97 return Message(null, Ids.CabCreationFailed, "Failed to create cab '{0}' with error 0x{1:X8}.", cabName, error);
98 }
99
100 public static Message CabExtractionFailed(string cabName, string directoryName)
101 {
102 return Message(null, Ids.CabExtractionFailed, "Failed to extract cab '{0}' to directory '{1}'. This is most likely due to a lack of available disk space on the destination drive.", cabName, directoryName);
103 }
104
105 public static Message CabExtractionFailed(string cabName, string mergeModulePath, string directoryName)
106 {
107 return Message(null, Ids.CabExtractionFailed, "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.", cabName, mergeModulePath, directoryName);
108 }
109
110 public static Message CabFileDoesNotExist(string cabName, string mergeModulePath, string directoryName)
111 {
112 return Message(null, Ids.CabFileDoesNotExist, "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.", cabName, mergeModulePath, directoryName);
113 }
114
115 public static Message CannotAuthorSpecialProperties(SourceLineNumber sourceLineNumbers, string propertyName)
116 {
117 return Message(sourceLineNumbers, Ids.CannotAuthorSpecialProperties, "The {0} property was specified. Special MSI properties cannot be authored. Use the attributes on the Property element instead.", propertyName);
118 }
119
120 public static Message CannotDefaultComponentId(SourceLineNumber sourceLineNumbers)
121 {
122 return Message(sourceLineNumbers, Ids.CannotDefaultComponentId, "The Component/@Id attribute was not found; it is required when there is no valid keypath to use as the default id value.");
123 }
124
125 public static Message CannotDefaultMismatchedAdvertiseStates(SourceLineNumber sourceLineNumbers)
126 {
127 return Message(sourceLineNumbers, Ids.CannotDefaultMismatchedAdvertiseStates, "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.");
128 }
129
130 public static Message CannotFindFile(SourceLineNumber sourceLineNumbers, string fileId, string fileName, string filePath)
131 {
132 return Message(sourceLineNumbers, Ids.CannotFindFile, "The file with id '{0}' and name '{1}' could not be found with source path: '{2}'.", fileId, fileName, filePath);
133 }
134
135 public static Message CanNotHaveTwoParents(SourceLineNumber sourceLineNumbers, string directorySearch, string parentAttribute, string parentElement)
136 {
137 return Message(sourceLineNumbers, Ids.CanNotHaveTwoParents, "The DirectorySearchRef {0} can not have a Parent attribute {1} and also be nested under parent element {2}", directorySearch, parentAttribute, parentElement);
138 }
139
140 public static Message CannotLoadBinderFileManager(string binderFileManager, string currentBinderFileManager)
141 {
142 return Message(null, Ids.CannotLoadBinderFileManager, "Cannot load binder file manager: {0}. Light can only load one binder file manager and has already loaded binder file manager: {1}.", binderFileManager, currentBinderFileManager);
143 }
144
145 public static Message CannotLoadLinkerExtension(string linkerExtension, string currentLinkerExtension)
146 {
147 return Message(null, Ids.CannotLoadLinkerExtension, "Cannot load linker extension: {0}. Light can only load one link extension and has already loaded link extension: {1}.", linkerExtension, currentLinkerExtension);
148 }
149
150 public static Message CannotOpenMergeModule(SourceLineNumber sourceLineNumbers, string mergeModuleIdentifier, string mergeModuleFile)
151 {
152 return Message(sourceLineNumbers, Ids.CannotOpenMergeModule, "Cannot open the merge module '{0}' from file '{1}'.", mergeModuleIdentifier, mergeModuleFile);
153 }
154
155 public static Message CannotReundefineVariable(SourceLineNumber sourceLineNumbers, string variableName)
156 {
157 return Message(sourceLineNumbers, Ids.CannotReundefineVariable, "The variable '{0}' cannot be undefined because its already undefined.", variableName);
158 }
159
160 public static Message CatalogFileHashFailed(string fileName, int errorCode)
161 {
162 return Message(null, Ids.CatalogFileHashFailed, "Could not get hash of file '{0}'. Error: {2}.", fileName, errorCode);
163 }
164
165 public static Message CatalogVerificationFailed(string fileName)
166 {
167 return Message(null, Ids.CatalogVerificationFailed, "File '{0}' could not be verified with a catalog file.", fileName);
168 }
169
170 public static Message CheckBoxValueOnlyValidWithCheckBox(SourceLineNumber sourceLineNumbers, string elementName, string controlType)
171 {
172 return Message(sourceLineNumbers, Ids.CheckBoxValueOnlyValidWithCheckBox, "A {0} element was specified with Type='{1}' and a CheckBoxValue. Check box values can only be specified with Type='CheckBox'.", elementName, controlType);
173 }
174
175 public static Message CollidingModularizationTypes(string tableName, string columnName, string foreignTableName, int foreignColumnNumber, string modularizationType, string foreignModularizationType)
176 {
177 return Message(null, Ids.CollidingModularizationTypes, "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.", tableName, columnName, foreignTableName, foreignColumnNumber, modularizationType, foreignModularizationType);
178 }
179
180 public static Message ComponentExpectedFeature(SourceLineNumber sourceLineNumbers, string component, string type, string target)
181 {
182 return Message(sourceLineNumbers, Ids.ComponentExpectedFeature, "The component '{0}' is not assigned to a feature. The component's {1} '{2}' requires it to be assigned to at least one feature.", component, type, target);
183 }
184
185 public static Message ComponentMultipleKeyPaths(SourceLineNumber sourceLineNumbers, string elementName, string attributeName, string value, string fileElementName, string registryElementName, string odbcDataSourceElementName)
186 {
187 return Message(sourceLineNumbers, Ids.ComponentMultipleKeyPaths, "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}.", elementName, attributeName, value, fileElementName, registryElementName, odbcDataSourceElementName);
188 }
189
190 public static Message ComponentReferencedTwice(SourceLineNumber sourceLineNumbers, string crefChildId)
191 {
192 return Message(sourceLineNumbers, Ids.ComponentReferencedTwice, "Component {0} cannot be contained in a Module twice.", crefChildId);
193 }
194
195 public static Message ConditionExpected(SourceLineNumber sourceLineNumbers, string elementName)
196 {
197 return Message(sourceLineNumbers, Ids.ConditionExpected, "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.", elementName);
198 }
199
200 public static Message CorruptFileFormat(string path, FileFormat format)
201 {
202 return Message(null, Ids.CorruptFileFormat, "Attempted to load corrupt file from path: {0}. The file with format {1} contained unexpected content. Ensure the correct path was provided and that the file has not been incorrectly modified.", path, format.ToString().ToLowerInvariant());
203 }
204
205 public static Message CreateCabAddFileFailed()
206 {
207 return Message(null, Ids.CreateCabAddFileFailed, "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.");
208 }
209
210 public static Message CreateCabInsufficientDiskSpace()
211 {
212 return Message(null, Ids.CreateCabInsufficientDiskSpace, "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.");
213 }
214
215 public static Message CubeFileNotFound(string cubeFile)
216 {
217 return Message(null, Ids.CubeFileNotFound, "The cube file '{0}' cannot be found. This file is required for MSI validation.", cubeFile);
218 }
219
220 public static Message CustomActionIllegalInnerText(SourceLineNumber sourceLineNumbers, string elementName, string innerText, string attributeName)
221 {
222 return Message(sourceLineNumbers, Ids.CustomActionIllegalInnerText, "The {0} element contains illegal inner text: '{1}'. It may not contain inner text unless the {2} attribute is specified.", elementName, innerText, attributeName);
223 }
224
225 public static Message CustomActionMultipleSources(SourceLineNumber sourceLineNumbers, string elementName, string attributeName, string attributeName1, string attributeName2, string attributeName3, string attributeName4, string attributeName5)
226 {
227 return Message(sourceLineNumbers, Ids.CustomActionMultipleSources, "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}.", elementName, attributeName, attributeName1, attributeName2, attributeName3, attributeName4, attributeName5);
228 }
229
230 public static Message CustomActionMultipleTargets(SourceLineNumber sourceLineNumbers, string elementName, string attributeName, string attributeName1, string attributeName2, string attributeName3, string attributeName4, string attributeName5, string attributeName6, string attributeName7)
231 {
232 return Message(sourceLineNumbers, Ids.CustomActionMultipleTargets, "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}.", elementName, attributeName, attributeName1, attributeName2, attributeName3, attributeName4, attributeName5, attributeName6, attributeName7);
233 }
234
235 public static Message CustomActionSequencedInModule(SourceLineNumber sourceLineNumbers, string sequenceTableName, string actionName)
236 {
237 return Message(sourceLineNumbers, Ids.CustomActionSequencedInModule, "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.", sequenceTableName, actionName);
238 }
239
240 public static Message CustomTableIllegalColumnWidth(SourceLineNumber sourceLineNumbers, string elementName, string attributeName, int value)
241 {
242 return Message(sourceLineNumbers, Ids.CustomTableIllegalColumnWidth, "The {0}/@{1} attribute's value, '{2}', is not a valid column width. Valid column widths are 2 or 4.", elementName, attributeName, value);
243 }
244
245 public static Message CustomTableMissingPrimaryKey(SourceLineNumber sourceLineNumbers)
246 {
247 return Message(sourceLineNumbers, Ids.CustomTableMissingPrimaryKey, "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.");
248 }
249
250 public static Message CustomTableNameTooLong(SourceLineNumber sourceLineNumbers, string elementName, string attributeName, string value)
251 {
252 return Message(sourceLineNumbers, Ids.CustomTableNameTooLong, "The {0}/@{1} attribute's value, '{2}', is too long for a table name. It cannot be more than than 31 characters long.", elementName, attributeName, value);
253 }
254
255 public static Message DatabaseSchemaMismatch(SourceLineNumber sourceLineNumbers, string tableName)
256 {
257 return Message(sourceLineNumbers, Ids.DatabaseSchemaMismatch, "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.", tableName);
258 }
259
260 public static Message DirectoryPathRequired(string parameter)
261 {
262 return Message(null, Ids.DirectoryPathRequired, "The parameter '{0}' must be followed by a directory path.", parameter);
263 }
264
265 public static Message DirectoryRootWithoutName(SourceLineNumber sourceLineNumbers, string elementName, string attributeName)
266 {
267 return Message(sourceLineNumbers, Ids.DirectoryRootWithoutName, "The {0} element requires the {1} attribute because there is no parent {0} element.", elementName, attributeName);
268 }
269
270 public static Message DisallowedMsiProperty(SourceLineNumber sourceLineNumbers, string property, string illegalValueList)
271 {
272 return Message(sourceLineNumbers, Ids.DisallowedMsiProperty, "The '{0}' MsiProperty is controlled by the bootstrapper and cannot be authored. (Illegal properties are: {1}.) Remove the MsiProperty element.", property, illegalValueList);
273 }
274
275 public static Message DuplicateCabinetName(SourceLineNumber sourceLineNumbers, string cabinetName)
276 {
277 return Message(sourceLineNumbers, Ids.DuplicateCabinetName, "Duplicate cabinet name '{0}' found.", cabinetName);
278 }
279
280 public static Message DuplicateCabinetName2(SourceLineNumber sourceLineNumbers, string cabinetName)
281 {
282 return Message(sourceLineNumbers, Ids.DuplicateCabinetName2, "Duplicate cabinet name '{0}' error related to previous error.", cabinetName);
283 }
284
285 public static Message DuplicateCommandLineOptionInExtension(string arg)
286 {
287 return Message(null, Ids.DuplicateCommandLineOptionInExtension, "The command line option '{0}' has already been loaded by another Heat extension.", arg);
288 }
289
290 public static Message DuplicateComponentGuids(SourceLineNumber sourceLineNumbers, string componentId, string guid)
291 {
292 return Message(sourceLineNumbers, Ids.DuplicateComponentGuids, "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.", componentId, guid);
293 }
294
295 public static Message DuplicateContextValue(SourceLineNumber sourceLineNumbers, string contextValue)
296 {
297 return Message(sourceLineNumbers, Ids.DuplicateContextValue, "The context value '{0}' was duplicated. Context values must be distinct.", contextValue);
298 }
299
300 public static Message DuplicatedUiLocalization(SourceLineNumber sourceLineNumbers, string controlName, string dialogName)
301 {
302 return Message(sourceLineNumbers, Ids.DuplicatedUiLocalization, "The localization for control {0} in dialog {1} is duplicated. Only one localization per control is allowed.", controlName, dialogName);
303 }
304
305 public static Message DuplicatedUiLocalization(SourceLineNumber sourceLineNumbers, string dialogName)
306 {
307 return Message(sourceLineNumbers, Ids.DuplicatedUiLocalization, "The localization for dialog {0} is duplicated. Only one localization per dialog is allowed.", dialogName);
308 }
309
310 public static Message DuplicateExtensionPreprocessorType(string extension, string variablePrefix, string collidingExtension)
311 {
312 return Message(null, Ids.DuplicateExtensionPreprocessorType, "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.", extension, variablePrefix, collidingExtension);
313 }
314
315 public static Message DuplicateExtensionTable(string extension, string tableName)
316 {
317 return Message(null, Ids.DuplicateExtensionTable, "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.", extension, tableName);
318 }
319
320 public static Message DuplicateExtensionXmlSchemaNamespace(string extension, string extensionXmlSchemaNamespace, string collidingExtension)
321 {
322 return Message(null, Ids.DuplicateExtensionXmlSchemaNamespace, "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.", extension, extensionXmlSchemaNamespace, collidingExtension);
323 }
324
325 public static Message DuplicateFileId(string fileId)
326 {
327 return Message(null, Ids.DuplicateFileId, "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.", fileId);
328 }
329
330 public static Message DuplicateLocalizationIdentifier(SourceLineNumber sourceLineNumbers, string localizationId)
331 {
332 return Message(sourceLineNumbers, Ids.DuplicateLocalizationIdentifier, "The localization identifier '{0}' has been duplicated in multiple locations. Please resolve the conflict.", localizationId);
333 }
334
335 public static Message DuplicateModuleCaseInsensitiveFileIdentifier(SourceLineNumber sourceLineNumbers, string moduleId, string fileId1, string fileId2)
336 {
337 return Message(sourceLineNumbers, Ids.DuplicateModuleCaseInsensitiveFileIdentifier, "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.", moduleId, fileId1, fileId2);
338 }
339
340 public static Message DuplicateModuleFileIdentifier(SourceLineNumber sourceLineNumbers, string moduleId, string fileId)
341 {
342 return Message(sourceLineNumbers, Ids.DuplicateModuleFileIdentifier, "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.", moduleId, fileId);
343 }
344
345 public static Message DuplicatePrimaryKey(SourceLineNumber sourceLineNumbers, string primaryKey, string tableName)
346 {
347 return Message(sourceLineNumbers, Ids.DuplicatePrimaryKey, "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.", primaryKey, tableName);
348 }
349
350 public static Message DuplicateProviderDependencyKey(string providerKey, string packageId)
351 {
352 return Message(null, Ids.DuplicateProviderDependencyKey, "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.", providerKey, packageId);
353 }
354
355 public static Message DuplicateSourcesForOutput(string sourceList, string outputFile)
356 {
357 return Message(null, Ids.DuplicateSourcesForOutput, "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.", sourceList, outputFile);
358 }
359
360 public static Message DuplicateSymbol(SourceLineNumber sourceLineNumbers, string symbolName)
361 {
362 return Message(sourceLineNumbers, Ids.DuplicateSymbol, "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.", symbolName);
363 }
364
365 public static Message DuplicateSymbol(SourceLineNumber sourceLineNumbers, string symbolName, string referencingSourceLineNumber)
366 {
367 return Message(sourceLineNumbers, Ids.DuplicateSymbol, "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.", symbolName, referencingSourceLineNumber);
368 }
369
370 public static Message DuplicateSymbol2(SourceLineNumber sourceLineNumbers)
371 {
372 return Message(sourceLineNumbers, Ids.DuplicateSymbol2, "Location of symbol related to previous error.");
373 }
374
375 public static Message DuplicateTransform(string transform)
376 {
377 return Message(null, Ids.DuplicateTransform, "The transform {0} was included twice on the command line. Each transform can be applied to a patch only once.", transform);
378 }
379
380 public static Message DuplicateVariableDefinition(string variableName, string variableValue, string variableCollidingValue)
381 {
382 return Message(null, Ids.DuplicateVariableDefinition, "The variable '{0}' with value '{1}' was previously declared with value '{2}'.", variableName, variableValue, variableCollidingValue);
383 }
384
385 public static Message ExampleGuid(SourceLineNumber sourceLineNumbers, string elementName, string attributeName, string value)
386 {
387 return Message(sourceLineNumbers, Ids.ExampleGuid, "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.", elementName, attributeName, value);
388 }
389
390 public static Message ExpectedArgument(string argument)
391 {
392 return Message(null, Ids.ExpectedArgument, "{0} is expected to be followed by a value argument.", argument);
393 }
394
395 public static Message ExpectedAttribute(SourceLineNumber sourceLineNumbers, string elementName, string attributeName)
396 {
397 return Message(sourceLineNumbers, Ids.ExpectedAttribute, "The {0}/@{1} attribute was not found; it is required.", elementName, attributeName);
398 }
399
400 public static Message ExpectedAttribute(SourceLineNumber sourceLineNumbers, string elementName, string attribute1Name, string attribute2Name, Boolean eitherOr)
401 {
402 return Message(sourceLineNumbers, Ids.ExpectedAttribute, "The {0} element must have a value for exactly one of the {1} or {2} attributes.", elementName, attribute1Name, attribute2Name, eitherOr);
403 }
404
405 public static Message ExpectedAttribute(SourceLineNumber sourceLineNumbers, string elementName, string attributeName, string otherAttributeName)
406 {
407 return Message(sourceLineNumbers, Ids.ExpectedAttribute, "The {0}/@{1} attribute was not found; it is required when attribute {2} is specified.", elementName, attributeName, otherAttributeName);
408 }
409
410 public static Message ExpectedAttribute(SourceLineNumber sourceLineNumbers, string elementName, string attributeName, string otherAttributeName, string otherAttributeValue)
411 {
412 return Message(sourceLineNumbers, Ids.ExpectedAttribute, "The {0}/@{1} attribute was not found; it is required when attribute {2} has a value of '{3}'.", elementName, attributeName, otherAttributeName, otherAttributeValue);
413 }
414
415 public static Message ExpectedAttribute(SourceLineNumber sourceLineNumbers, string elementName, string attributeName, string otherAttributeName, string otherAttributeValue, Boolean otherAttributeValueUnless)
416 {
417 return Message(sourceLineNumbers, Ids.ExpectedAttribute, "The {0}/@{1} attribute was not found; it is required unless the attribute {2} has a value of '{3}'.", elementName, attributeName, otherAttributeName, otherAttributeValue, otherAttributeValueUnless);
418 }
419
420 public static Message ExpectedAttributeInElementOrParent(SourceLineNumber sourceLineNumbers, string elementName, string attributeName, string parentElementName)
421 {
422 return Message(sourceLineNumbers, Ids.ExpectedAttributeInElementOrParent, "The {0}/@{1} attribute was not found or empty; it is required, or it can be specified in the parent {2} element.", elementName, attributeName, parentElementName);
423 }
424
425 public static Message ExpectedAttributeInElementOrParent(SourceLineNumber sourceLineNumbers, string elementName, string attributeName, string parentElementName, string parentAttributeName)
426 {
427 return Message(sourceLineNumbers, Ids.ExpectedAttributeInElementOrParent, "The {0}/@{1} attribute was not found or empty; it is required, or it can be specified in the parent {2}/@{3} attribute.", elementName, attributeName, parentElementName, parentAttributeName);
428 }
429
430 public static Message ExpectedAttributeOrElement(SourceLineNumber sourceLineNumbers, string parentElement, string attribute, string childElement)
431 {
432 return Message(sourceLineNumbers, Ids.ExpectedAttributeOrElement, "Element '{0}' missing attribute '{1}' or child element '{2}'. Exactly one of those is required.", parentElement, attribute, childElement);
433 }
434
435 public static Message ExpectedAttributes(SourceLineNumber sourceLineNumbers, string elementName, string attributeName1, string attributeName2)
436 {
437 return Message(sourceLineNumbers, Ids.ExpectedAttributes, "The {0} element's {1} or {2} attribute was not found; one of these is required.", elementName, attributeName1, attributeName2);
438 }
439
440 public static Message ExpectedAttributes(SourceLineNumber sourceLineNumbers, string elementName, string attributeName1, string attributeName2, string attributeName3)
441 {
442 return Message(sourceLineNumbers, Ids.ExpectedAttributes, "The {0} element's {1}, {2}, or {3} attribute was not found; one of these is required.", elementName, attributeName1, attributeName2, attributeName3);
443 }
444
445 public static Message ExpectedAttributes(SourceLineNumber sourceLineNumbers, string elementName, string attributeName1, string attributeName2, string attributeName3, string attributeName4)
446 {
447 return Message(sourceLineNumbers, Ids.ExpectedAttributes, "The {0} element's {1}, {2}, {3}, or {4} attribute was not found; one of these is required.", elementName, attributeName1, attributeName2, attributeName3, attributeName4);
448 }
449
450 public static Message ExpectedAttributes(SourceLineNumber sourceLineNumbers, string elementName, string attributeName1, string attributeName2, string attributeName3, string attributeName4, string attributeName5)
451 {
452 return Message(sourceLineNumbers, Ids.ExpectedAttributes, "The {0} element's {1}, {2}, {3}, {4}, or {5} attribute was not found; one of these is required.", elementName, attributeName1, attributeName2, attributeName3, attributeName4, attributeName5);
453 }
454
455 public static Message ExpectedAttributes(SourceLineNumber sourceLineNumbers, string elementName, string attributeName1, string attributeName2, string attributeName3, string attributeName4, string attributeName5, string attributeName6)
456 {
457 return Message(sourceLineNumbers, Ids.ExpectedAttributes, "The {0} element's {1}, {2}, {3}, {4}, {5}, or {6} attribute was not found; one of these is required.", elementName, attributeName1, attributeName2, attributeName3, attributeName4, attributeName5, attributeName6);
458 }
459
460 public static Message ExpectedAttributes(SourceLineNumber sourceLineNumbers, string elementName, string attributeName1, string attributeName2, string attributeName3, string attributeName4, string attributeName5, string attributeName6, string attributeName7)
461 {
462 return Message(sourceLineNumbers, Ids.ExpectedAttributes, "The {0} element's {1}, {2}, {3}, {4}, {5}, {6}, or {7} attribute was not found; one of these is required.", elementName, attributeName1, attributeName2, attributeName3, attributeName4, attributeName5, attributeName6, attributeName7);
463 }
464
465 public static Message ExpectedAttributesWithOtherAttribute(SourceLineNumber sourceLineNumbers, string elementName, string attributeName1, string attributeName2)
466 {
467 return Message(sourceLineNumbers, Ids.ExpectedAttributesWithOtherAttribute, "The {0} element's {1} or {2} attribute was not found; at least one of these attributes must be specified.", elementName, attributeName1, attributeName2);
468 }
469
470 public static Message ExpectedAttributesWithOtherAttribute(SourceLineNumber sourceLineNumbers, string elementName, string attributeName1, string attributeName2, string otherAttributeName)
471 {
472 return Message(sourceLineNumbers, Ids.ExpectedAttributesWithOtherAttribute, "The {0} element's {1} or {2} attribute was not found; one of these is required when attribute {3} is present.", elementName, attributeName1, attributeName2, otherAttributeName);
473 }
474
475 public static Message ExpectedAttributesWithOtherAttribute(SourceLineNumber sourceLineNumbers, string elementName, string attributeName1, string attributeName2, string otherAttributeName, string otherAttributeValue)
476 {
477 return Message(sourceLineNumbers, Ids.ExpectedAttributesWithOtherAttribute, "The {0} element's {1} or {2} attribute was not found; one of these is required when attribute {3} has a value of '{4}'.", elementName, attributeName1, attributeName2, otherAttributeName, otherAttributeValue);
478 }
479
480 public static Message ExpectedAttributesWithoutOtherAttribute(SourceLineNumber sourceLineNumbers, string elementName, string attributeName1, string attributeName2, string otherAttributeName)
481 {
482 return Message(sourceLineNumbers, Ids.ExpectedAttributesWithoutOtherAttribute, "The {0} element's {1} or {2} attribute was not found; one of these is required without attribute {3} present.", elementName, attributeName1, attributeName2, otherAttributeName);
483 }
484
485 public static Message ExpectedAttributeWhenElementNotUnderElement(SourceLineNumber sourceLineNumbers, string elementName, string attributeName, string parentElementName)
486 {
487 return Message(sourceLineNumbers, Ids.ExpectedAttributeWhenElementNotUnderElement, "The '{0}/@{1}' attribute was not found; it is required when element '{0}' is not nested under a '{2}' element.", elementName, attributeName, parentElementName);
488 }
489
490 public static Message ExpectedAttributeWithElement(SourceLineNumber sourceLineNumbers, string elementName, string attribute, string childElementName)
491 {
492 return Message(sourceLineNumbers, Ids.ExpectedAttributeWithElement, "The {0} element must have attribute '{1}' when child element '{2}' is present.", elementName, attribute, childElementName);
493 }
494
495 public static Message ExpectedBinaryCategory(SourceLineNumber sourceLineNumbers)
496 {
497 return Message(sourceLineNumbers, Ids.ExpectedBinaryCategory, "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'.");
498 }
499
500 public static Message ExpectedClientPatchIdInWixMsp()
501 {
502 return Message(null, Ids.ExpectedClientPatchIdInWixMsp, "The WixMsp is missing the client patch ID. Recompile the patch source files with the latest WiX toolset.");
503 }
504
505 public static Message ExpectedDecompiler(string identifier)
506 {
507 return Message(null, Ids.ExpectedDecompiler, "No decompiler was provided. {0} requires a decompiler.", identifier);
508 }
509
510 public static Message ExpectedDirectory(string directory)
511 {
512 return Message(null, Ids.ExpectedDirectory, "The directory '{0}' could not be found.", directory);
513 }
514
515 public static Message ExpectedDirectoryGotFile(string option, string path)
516 {
517 return Message(null, Ids.ExpectedDirectoryGotFile, "The {0} option requires a directory, but the provided path is a file: {1}", option, path);
518 }
519
520 public static Message ExpectedElement(SourceLineNumber sourceLineNumbers, string elementName, string childName)
521 {
522 return Message(sourceLineNumbers, Ids.ExpectedElement, "A {0} element must have at least one child element of type {1}.", elementName, childName);
523 }
524
525 public static Message ExpectedElement(SourceLineNumber sourceLineNumbers, string elementName, string childName1, string childName2)
526 {
527 return Message(sourceLineNumbers, Ids.ExpectedElement, "A {0} element must have at least one child element of type {1} or {2}.", elementName, childName1, childName2);
528 }
529
530 public static Message ExpectedElement(SourceLineNumber sourceLineNumbers, string elementName, string childName1, string childName2, string childName3)
531 {
532 return Message(sourceLineNumbers, Ids.ExpectedElement, "A {0} element must have at least one child element of type {1}, {2}, or {3}.", elementName, childName1, childName2, childName3);
533 }
534
535 public static Message ExpectedElement(SourceLineNumber sourceLineNumbers, string elementName, string childName1, string childName2, string childName3, string childName4)
536 {
537 return Message(sourceLineNumbers, Ids.ExpectedElement, "A {0} element must have at least one child element of type {1}, {2}, {3}, or {4}.", elementName, childName1, childName2, childName3, childName4);
538 }
539
540 public static Message ExpectedEndElement(SourceLineNumber sourceLineNumbers, string elementName)
541 {
542 return Message(sourceLineNumbers, Ids.ExpectedEndElement, "The end element matching the '{0}' start element was not found.", elementName);
543 }
544
545 public static Message ExpectedEndforeach(SourceLineNumber sourceLineNumbers)
546 {
547 return Message(sourceLineNumbers, Ids.ExpectedEndforeach, "A <?foreach?> statement was found that had no matching <?endforeach?>.");
548 }
549
550 public static Message ExpectedExpressionAfterNot(SourceLineNumber sourceLineNumbers, string expression)
551 {
552 return Message(sourceLineNumbers, Ids.ExpectedExpressionAfterNot, "Expecting an argument for 'NOT' in expression '{0}'.", expression);
553 }
554
555 public static Message ExpectedFileGotDirectory(string option, string path)
556 {
557 return Message(null, Ids.ExpectedFileGotDirectory, "The {0} option requires a file, but the provided path is a directory: {1}", option, path);
558 }
559
560 public static Message ExpectedMediaCabinet(SourceLineNumber sourceLineNumbers, string fileId, int diskId)
561 {
562 return Message(sourceLineNumbers, Ids.ExpectedMediaCabinet, "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}'.", fileId, diskId);
563 }
564
565 public static Message ExpectedMediaRowsInWixMsp()
566 {
567 return Message(null, Ids.ExpectedMediaRowsInWixMsp, "The WixMsp has no media rows defined.");
568 }
569
570 public static Message ExpectedParentWithAttribute(SourceLineNumber sourceLineNumbers, string parentElement, string attribute, string grandparentElement)
571 {
572 return Message(sourceLineNumbers, Ids.ExpectedParentWithAttribute, "When the {0}/@{1} attribute is specified, the {0} element must be nested under a {2} element.", parentElement, attribute, grandparentElement);
573 }
574
575 public static Message ExpectedPatchIdInWixMsp()
576 {
577 return Message(null, Ids.ExpectedPatchIdInWixMsp, "The WixMsp is missing the patch ID.");
578 }
579
580 public static Message ExpectedRowInPatchCreationPackage(string tableName)
581 {
582 return Message(null, Ids.ExpectedRowInPatchCreationPackage, "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.", tableName);
583 }
584
585 public static Message ExpectedSignedCabinetName(SourceLineNumber sourceLineNumbers)
586 {
587 return Message(sourceLineNumbers, Ids.ExpectedSignedCabinetName, "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.");
588 }
589
590 public static Message ExpectedTableInMergeModule(string identifier)
591 {
592 return Message(null, Ids.ExpectedTableInMergeModule, "The table '{0}' was expected but was missing.", identifier);
593 }
594
595 public static Message ExpectedVariable(SourceLineNumber sourceLineNumbers, string expression)
596 {
597 return Message(sourceLineNumbers, Ids.ExpectedVariable, "A required variable was missing in the expression '{0}'.", expression);
598 }
599
600 public static Message ExpectedWixVariableValue(string variableId)
601 {
602 return Message(null, Ids.ExpectedWixVariableValue, "The WiX variable '{0}' was declared without a value. Please specify a value for the variable.", variableId);
603 }
604
605 public static Message FamilyNameTooLong(SourceLineNumber sourceLineNumbers, string elementName, string attributeName, string value, int length)
606 {
607 return Message(sourceLineNumbers, Ids.FamilyNameTooLong, "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.", elementName, attributeName, value, length);
608 }
609
610 public static Message FeatureCannotFavorAndDisallowAdvertise(SourceLineNumber sourceLineNumbers, string elementName, string attributeName, string value, string otherAttributeName, string otherValue)
611 {
612 return Message(sourceLineNumbers, Ids.FeatureCannotFavorAndDisallowAdvertise, "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.", elementName, attributeName, value, otherAttributeName, otherValue);
613 }
614
615 public static Message FeatureCannotFollowParentAndFavorLocalOrSource(SourceLineNumber sourceLineNumbers, string elementName, string attributeName, string otherAttributeName, string otherValue)
616 {
617 return Message(sourceLineNumbers, Ids.FeatureCannotFollowParentAndFavorLocalOrSource, "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.", elementName, attributeName, otherAttributeName, otherValue);
618 }
619
620 public static Message FeatureConfigurableDirectoryNotUppercase(SourceLineNumber sourceLineNumbers, string elementName, string attributeName, string value)
621 {
622 return Message(sourceLineNumbers, Ids.FeatureConfigurableDirectoryNotUppercase, "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.", elementName, attributeName, value);
623 }
624
625 public static Message FeatureNameTooLong(SourceLineNumber sourceLineNumbers, string elementName, string attributeName, string attributeValue)
626 {
627 return Message(sourceLineNumbers, Ids.FeatureNameTooLong, "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.", elementName, attributeName, attributeValue);
628 }
629
630 public static Message FileIdentifierNotFound(SourceLineNumber sourceLineNumbers, string fileIdentifier)
631 {
632 return Message(sourceLineNumbers, Ids.FileIdentifierNotFound, "The file row with identifier '{0}' could not be found.", fileIdentifier);
633 }
634
635 public static Message FileInUse(SourceLineNumber sourceLineNumbers, string file)
636 {
637 return Message(sourceLineNumbers, Ids.FileInUse, "The process can not access the file '{0}' because it is being used by another process.", file);
638 }
639
640 public static Message FileNotFound(SourceLineNumber sourceLineNumbers, string file)
641 {
642 return Message(sourceLineNumbers, Ids.FileNotFound, "The system cannot find the file '{0}'.", file);
643 }
644
645 public static Message FileNotFound(SourceLineNumber sourceLineNumbers, string file, string fileType)
646 {
647 return Message(sourceLineNumbers, Ids.FileNotFound, "The system cannot find the file '{0}' with type '{1}'.", file, fileType);
648 }
649
650 public static Message FileOrDirectoryPathRequired(string parameter)
651 {
652 return Message(null, Ids.FileOrDirectoryPathRequired, "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\\\".", parameter);
653 }
654
655 public static Message FilePathRequired(string parameter)
656 {
657 return Message(null, Ids.FilePathRequired, "The parameter '{0}' must be followed by a file path.", parameter);
658 }
659
660 public static Message FileTooLarge(SourceLineNumber sourceLineNumbers, string fileName)
661 {
662 return Message(sourceLineNumbers, Ids.FileTooLarge, "'{0}' is too large, file size must be less than 2147483648.", fileName);
663 }
664
665 public static Message FileWriteError(string path, string error)
666 {
667 return Message(null, Ids.FileWriteError, "Error writing to the path: '{0}'. Error message: '{1}'", path, error);
668 }
669
670 public static Message FinishCabFailed()
671 {
672 return Message(null, Ids.FinishCabFailed, "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.");
673 }
674
675 public static Message FullTempDirectory(string prefix, string directory)
676 {
677 return Message(null, Ids.FullTempDirectory, "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.", prefix, directory);
678 }
679
680 public static Message GACAssemblyIdentityWarning(SourceLineNumber sourceLineNumbers, string fileName, string assemblyName)
681 {
682 return Message(sourceLineNumbers, Ids.GACAssemblyIdentityWarning, "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.", fileName, assemblyName);
683 }
684
685 public static Message GacAssemblyNoStrongName(SourceLineNumber sourceLineNumbers, string assemblyName, string componentName)
686 {
687 return Message(sourceLineNumbers, Ids.GacAssemblyNoStrongName, "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.", assemblyName, componentName);
688 }
689
690 public static Message GenericReadNotAllowed(SourceLineNumber sourceLineNumbers)
691 {
692 return Message(sourceLineNumbers, Ids.GenericReadNotAllowed, "Permission elements cannot have GenericRead as the only permission specified. Include at least one other permission.");
693 }
694
695 public static Message GuidContainsLowercaseLetters(SourceLineNumber sourceLineNumbers, string elementName, string attributeName, string value)
696 {
697 return Message(sourceLineNumbers, Ids.GuidContainsLowercaseLetters, "The {0}/@{1} attribute's value, '{2}', is a mixed-case guid. All letters in a guid value should be uppercase.", elementName, attributeName, value);
698 }
699
700 public static Message HarvestSourceNotSpecified()
701 {
702 return Message(null, Ids.HarvestSourceNotSpecified, "A harvest source must be specified after the harvest type and can be followed by harvester arguments.");
703 }
704
705 public static Message HarvestTypeNotFound()
706 {
707 return Message(null, Ids.HarvestTypeNotFound, "The harvest type was not found in the list of loaded Heat extensions.");
708 }
709
710 public static Message HarvestTypeNotFound(string harvestType)
711 {
712 return Message(null, Ids.HarvestTypeNotFound, "The harvest type '{0}' was specified. Harvest types cannot start with a '-'. Remove the '-' to specify a valid harvest type.", harvestType);
713 }
714
715 public static Message IdentifierNotFound(string type, string identifier)
716 {
717 return Message(null, Ids.IdentifierNotFound, "An expected identifier ('{1}', of type '{0}') was not found.", type, identifier);
718 }
719
720 public static Message IdentifierTooLongError(SourceLineNumber sourceLineNumbers, string elementName, string attributeName, string value, int maxLength)
721 {
722 return Message(sourceLineNumbers, Ids.IdentifierTooLongError, "The {0}/@{1} attribute's value, '{2}', is too long. {0}/@{1} attribute's must be {3} characters long or less.", elementName, attributeName, value, maxLength);
723 }
724
725 public static Message IllegalAttributeExceptOnElement(SourceLineNumber sourceLineNumbers, string elementName, string attributeName, string expectedElementName)
726 {
727 return Message(sourceLineNumbers, Ids.IllegalAttributeExceptOnElement, "The {1} attribute can only be specified on the {2} element.", elementName, attributeName, expectedElementName);
728 }
729
730 public static Message IllegalAttributeInMergeModule(SourceLineNumber sourceLineNumbers, string elementName, string attributeName)
731 {
732 return Message(sourceLineNumbers, Ids.IllegalAttributeInMergeModule, "The {0}/@{1} attribute cannot be specified in a merge module.", elementName, attributeName);
733 }
734
735 public static Message IllegalAttributeValue(SourceLineNumber sourceLineNumbers, string elementName, string attributeName, string value, string legalValue1)
736 {
737 return Message(sourceLineNumbers, Ids.IllegalAttributeValue, "The {0}/@{1} attribute's value, '{2}', is not one of the legal options: '{3}'.", elementName, attributeName, value, legalValue1);
738 }
739
740 public static Message IllegalAttributeValue(SourceLineNumber sourceLineNumbers, string elementName, string attributeName, string value, string legalValue1, string legalValue2)
741 {
742 return Message(sourceLineNumbers, Ids.IllegalAttributeValue, "The {0}/@{1} attribute's value, '{2}', is not one of the legal options: '{3}', or '{4}'.", elementName, attributeName, value, legalValue1, legalValue2);
743 }
744
745 public static Message IllegalAttributeValue(SourceLineNumber sourceLineNumbers, string elementName, string attributeName, string value, string legalValue1, string legalValue2, string legalValue3)
746 {
747 return Message(sourceLineNumbers, Ids.IllegalAttributeValue, "The {0}/@{1} attribute's value, '{2}', is not one of the legal options: '{3}', '{4}', or '{5}'.", elementName, attributeName, value, legalValue1, legalValue2, legalValue3);
748 }
749
750 public static Message IllegalAttributeValue(SourceLineNumber sourceLineNumbers, string elementName, string attributeName, string value, string legalValue1, string legalValue2, string legalValue3, string legalValue4)
751 {
752 return Message(sourceLineNumbers, Ids.IllegalAttributeValue, "The {0}/@{1} attribute's value, '{2}', is not one of the legal options: '{3}', '{4}', '{5}', or '{6}'.", elementName, attributeName, value, legalValue1, legalValue2, legalValue3, legalValue4);
753 }
754
755 public static Message IllegalAttributeValue(SourceLineNumber sourceLineNumbers, string elementName, string attributeName, string value, string legalValue1, string legalValue2, string legalValue3, string legalValue4, string legalValue5)
756 {
757 return Message(sourceLineNumbers, Ids.IllegalAttributeValue, "The {0}/@{1} attribute's value, '{2}', is not one of the legal options: '{3}', '{4}', '{5}', '{6}', or '{7}'.", elementName, attributeName, value, legalValue1, legalValue2, legalValue3, legalValue4, legalValue5);
758 }
759
760 public static Message IllegalAttributeValue(SourceLineNumber sourceLineNumbers, string elementName, string attributeName, string value, string legalValue1, string legalValue2, string legalValue3, string legalValue4, string legalValue5, string legalValue6)
761 {
762 return Message(sourceLineNumbers, Ids.IllegalAttributeValue, "The {0}/@{1} attribute's value, '{2}', is not one of the legal options: '{3}', '{4}', '{5}', '{6}', '{7}', or '{8}'.", elementName, attributeName, value, legalValue1, legalValue2, legalValue3, legalValue4, legalValue5, legalValue6);
763 }
764
765 public static Message IllegalAttributeValue(SourceLineNumber sourceLineNumbers, string elementName, string attributeName, string value, string legalValue1, string legalValue2, string legalValue3, string legalValue4, string legalValue5, string legalValue6, string legalValue7)
766 {
767 return Message(sourceLineNumbers, Ids.IllegalAttributeValue, "The {0}/@{1} attribute's value, '{2}', is not one of the legal options: '{3}', '{4}', '{5}', '{6}', '{7}', '{8}', or '{9}'.", elementName, attributeName, value, legalValue1, legalValue2, legalValue3, legalValue4, legalValue5, legalValue6, legalValue7);
768 }
769
770 public static Message 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)
771 {
772 return Message(sourceLineNumbers, Ids.IllegalAttributeValue, "The {0}/@{1} attribute's value, '{2}', is not one of the legal options: '{3}', '{4}', '{5}', '{6}', '{7}', '{8}', '{9}', or '{10}'.", elementName, attributeName, value, legalValue1, legalValue2, legalValue3, legalValue4, legalValue5, legalValue6, legalValue7, legalValue8);
773 }
774
775 public static Message 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, string legalValue9, string legalValue10, string legalValue11, string legalValue12, string legalValue13, string legalValue14, string legalValue15, string legalValue16, string legalValue17, string legalValue18, string legalValue19, string legalValue20, string legalValue21, string legalValue22, string legalValue23, string legalValue24, string legalValue25, string legalValue26)
776 {
777 return Message(sourceLineNumbers, Ids.IllegalAttributeValue, "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}'.", 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);
778 }
779
780 public static Message IllegalAttributeValueWhenNested(SourceLineNumber sourceLineNumbers, string elementName, string attributeName, string attrivuteValue, string parentElementName)
781 {
782 return Message(sourceLineNumbers, Ids.IllegalAttributeValueWhenNested, "The {0}/@{1} attribute value, '{2}', cannot be specified when the {0} element is nested underneath a {3} element.", elementName, attributeName, attrivuteValue, parentElementName);
783 }
784
785 public static Message IllegalAttributeValueWithIllegalList(SourceLineNumber sourceLineNumbers, string elementName, string attributeName, string value, string illegalValueList)
786 {
787 return Message(sourceLineNumbers, Ids.IllegalAttributeValueWithIllegalList, "The {0}/@{1} attribute's value, '{2}', is one of the illegal options: {3}.", elementName, attributeName, value, illegalValueList);
788 }
789
790 public static Message IllegalAttributeValueWithLegalList(SourceLineNumber sourceLineNumbers, string elementName, string attributeName, string value, string legalValueList)
791 {
792 return Message(sourceLineNumbers, Ids.IllegalAttributeValueWithLegalList, "The {0}/@{1} attribute's value, '{2}', is not one of the legal options: {3}.", elementName, attributeName, value, legalValueList);
793 }
794
795 public static Message IllegalAttributeValueWithOtherAttribute(SourceLineNumber sourceLineNumbers, string elementName, string attributeName, string attributeValue, string otherAttributeName)
796 {
797 return Message(sourceLineNumbers, Ids.IllegalAttributeValueWithOtherAttribute, "The {0}/@{1} attribute's value, '{2}', cannot be specified with attribute {3} present.", elementName, attributeName, attributeValue, otherAttributeName);
798 }
799
800 public static Message IllegalAttributeValueWithOtherAttribute(SourceLineNumber sourceLineNumbers, string elementName, string attributeName, string attributeValue, string otherAttributeName, string otherAttributeValue)
801 {
802 return Message(sourceLineNumbers, Ids.IllegalAttributeValueWithOtherAttribute, "The {0}/@{1} attribute's value, '{2}', cannot be specified with attribute {3} present with value '{4}'.", elementName, attributeName, attributeValue, otherAttributeName, otherAttributeValue);
803 }
804
805 public static Message IllegalAttributeValueWithoutOtherAttribute(SourceLineNumber sourceLineNumbers, string elementName, string attributeName, string attributeValue, string otherAttributeName, string otherAttributeValue)
806 {
807 return Message(sourceLineNumbers, Ids.IllegalAttributeValueWithoutOtherAttribute, "The {0}/@{1} attribute's value, '{2}', can only be specified with attribute {3} present with value '{4}'.", elementName, attributeName, attributeValue, otherAttributeName, otherAttributeValue);
808 }
809
810 public static Message IllegalAttributeValueWithoutOtherAttribute(SourceLineNumber sourceLineNumbers, string elementName, string attributeName, string attributeValue, string otherAttributeName)
811 {
812 return Message(sourceLineNumbers, Ids.IllegalAttributeValueWithoutOtherAttribute, "The {0}/@{1} attribute's value, '{2}', cannot be specified without attribute {3} present.", elementName, attributeName, attributeValue, otherAttributeName);
813 }
814
815 public static Message IllegalAttributeWhenAdvertised(SourceLineNumber sourceLineNumbers, string elementName, string attributeName)
816 {
817 return Message(sourceLineNumbers, Ids.IllegalAttributeWhenAdvertised, "The {0}/@{1} attribute cannot be specified because the element is advertised.", elementName, attributeName);
818 }
819
820 public static Message IllegalAttributeWhenNested(SourceLineNumber sourceLineNumbers, string elementName, string attributeName, string parentElement)
821 {
822 return Message(sourceLineNumbers, Ids.IllegalAttributeWhenNested, "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.", elementName, attributeName, parentElement);
823 }
824
825 public static Message IllegalAttributeWithInnerText(SourceLineNumber sourceLineNumbers, string elementName, string attributeName)
826 {
827 return Message(sourceLineNumbers, Ids.IllegalAttributeWithInnerText, "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.", elementName, attributeName);
828 }
829
830 public static Message IllegalAttributeWithOtherAttribute(SourceLineNumber sourceLineNumbers, string elementName, string attributeName, string otherAttributeName)
831 {
832 return Message(sourceLineNumbers, Ids.IllegalAttributeWithOtherAttribute, "The {0}/@{1} attribute cannot be specified when attribute {2} is present.", elementName, attributeName, otherAttributeName);
833 }
834
835 public static Message IllegalAttributeWithOtherAttribute(SourceLineNumber sourceLineNumbers, string elementName, string attributeName, string otherAttributeName, string otherAttributeValue)
836 {
837 return Message(sourceLineNumbers, Ids.IllegalAttributeWithOtherAttribute, "The {0}/@{1} attribute cannot be specified when attribute {2} is present with value '{3}'.", elementName, attributeName, otherAttributeName, otherAttributeValue);
838 }
839
840 public static Message IllegalAttributeWithOtherAttributes(SourceLineNumber sourceLineNumbers, string elementName, string attributeName, string otherAttributeName1, string otherAttributeName2)
841 {
842 return Message(sourceLineNumbers, Ids.IllegalAttributeWithOtherAttributes, "The {0}/@{1} attribute cannot be specified when attribute {2} or {3} is also present.", elementName, attributeName, otherAttributeName1, otherAttributeName2);
843 }
844
845 public static Message IllegalAttributeWithOtherAttributes(SourceLineNumber sourceLineNumbers, string elementName, string attributeName, string otherAttributeName1, string otherAttributeName2, string otherAttributeName3)
846 {
847 return Message(sourceLineNumbers, Ids.IllegalAttributeWithOtherAttributes, "The {0}/@{1} attribute cannot be specified when attribute {2}, {3}, or {4} is also present.", elementName, attributeName, otherAttributeName1, otherAttributeName2, otherAttributeName3);
848 }
849
850 public static Message IllegalAttributeWithOtherAttributes(SourceLineNumber sourceLineNumbers, string elementName, string attributeName, string otherAttributeName1, string otherAttributeName2, string otherAttributeName3, string otherAttributeName4)
851 {
852 return Message(sourceLineNumbers, Ids.IllegalAttributeWithOtherAttributes, "The {0}/@{1} attribute cannot be specified when attribute {2}, {3}, {4}, or {5} is also present.", elementName, attributeName, otherAttributeName1, otherAttributeName2, otherAttributeName3, otherAttributeName4);
853 }
854
855 public static Message IllegalAttributeWithoutOtherAttributes(SourceLineNumber sourceLineNumbers, string elementName, string attributeName, string otherAttributeName)
856 {
857 return Message(sourceLineNumbers, Ids.IllegalAttributeWithoutOtherAttributes, "The {0}/@{1} attribute can only be specified with the following attribute {2} present.", elementName, attributeName, otherAttributeName);
858 }
859
860 public static Message IllegalAttributeWithoutOtherAttributes(SourceLineNumber sourceLineNumbers, string elementName, string attributeName, string otherAttributeName1, string otherAttributeName2)
861 {
862 return Message(sourceLineNumbers, Ids.IllegalAttributeWithoutOtherAttributes, "The {0}/@{1} attribute can only be specified with one of the following attributes: {2} or {3} present.", elementName, attributeName, otherAttributeName1, otherAttributeName2);
863 }
864
865 public static Message IllegalAttributeWithoutOtherAttributes(SourceLineNumber sourceLineNumbers, string elementName, string attributeName, string otherAttributeName1, string otherAttributeName2, string otherAttributeValue, Boolean uniquifier)
866 {
867 return Message(sourceLineNumbers, Ids.IllegalAttributeWithoutOtherAttributes, "The {0}/@{1} attribute can only be specified with one of the following attributes: {2} or {3} present with value '{4}'.", elementName, attributeName, otherAttributeName1, otherAttributeName2, otherAttributeValue, uniquifier);
868 }
869
870 public static Message IllegalAttributeWithoutOtherAttributes(SourceLineNumber sourceLineNumbers, string elementName, string attributeName, string otherAttributeName1, string otherAttributeName2, string otherAttributeName3)
871 {
872 return Message(sourceLineNumbers, Ids.IllegalAttributeWithoutOtherAttributes, "The {0}/@{1} attribute can only be specified with one of the following attributes: {2}, {3}, or {4} present.", elementName, attributeName, otherAttributeName1, otherAttributeName2, otherAttributeName3);
873 }
874
875 public static Message IllegalAttributeWithoutOtherAttributes(SourceLineNumber sourceLineNumbers, string elementName, string attributeName, string otherAttributeName1, string otherAttributeName2, string otherAttributeName3, string otherAttributeName4)
876 {
877 return Message(sourceLineNumbers, Ids.IllegalAttributeWithoutOtherAttributes, "The {0}/@{1} attribute can only be specified with one of the following attributes: {2}, {3}, {4}, or {5} present.", elementName, attributeName, otherAttributeName1, otherAttributeName2, otherAttributeName3, otherAttributeName4);
878 }
879
880 public static Message IllegalBinderClassName()
881 {
882 return Message(null, Ids.IllegalBinderClassName, "Illegal binder class name specified for -binder command line option.");
883 }
884
885 public static Message IllegalCabbingThreadCount(string numThreads)
886 {
887 return Message(null, Ids.IllegalCabbingThreadCount, "Illegal number of threads to create cabinets: '{0}' for -ct <N> command line option. Specify the number of threads to use like -ct 2.", numThreads);
888 }
889
890 public static Message IllegalCharactersInPath(string pathName)
891 {
892 return Message(null, Ids.IllegalCharactersInPath, "Illegal characters in path '{0}'. Ensure you provided a valid path to the file.", pathName);
893 }
894
895 public static Message IllegalCodepage(int codepage)
896 {
897 return Message(null, Ids.IllegalCodepage, "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.", codepage);
898 }
899
900 public static Message IllegalCodepageAttribute(SourceLineNumber sourceLineNumbers, string codepage, string elementName, string attributeName)
901 {
902 return Message(sourceLineNumbers, Ids.IllegalCodepageAttribute, "The code page '{0}' is not a valid Windows code page. Please check the {1}/@{2} attribute value in your source file.", codepage, elementName, attributeName);
903 }
904
905 public static Message IllegalColumnName(SourceLineNumber sourceLineNumbers, string elementName, string attributeName, string value)
906 {
907 return Message(sourceLineNumbers, Ids.IllegalColumnName, "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.", elementName, attributeName, value);
908 }
909
910 public static Message IllegalCommandlineArgumentCombination(string arg1, string arg2)
911 {
912 return Message(null, Ids.IllegalCommandlineArgumentCombination, "'-{0}' cannot be specfied in combination with '-{1}'.", arg1, arg2);
913 }
914
915 public static Message IllegalComponentWithAutoGeneratedGuid(SourceLineNumber sourceLineNumbers)
916 {
917 return Message(sourceLineNumbers, Ids.IllegalComponentWithAutoGeneratedGuid, "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.");
918 }
919
920 public static Message IllegalComponentWithAutoGeneratedGuid(SourceLineNumber sourceLineNumbers, Boolean registryKeyPath)
921 {
922 return Message(sourceLineNumbers, Ids.IllegalComponentWithAutoGeneratedGuid, "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.", registryKeyPath);
923 }
924
925 public static Message IllegalCompressionLevel(string compressionLevel)
926 {
927 return Message(null, Ids.IllegalCompressionLevel, "The compression level '{0}' is not valid. Valid values are 'none', 'low', 'medium', 'high', and 'mszip'.", compressionLevel);
928 }
929
930 public static Message IllegalDefineStatement(SourceLineNumber sourceLineNumbers, string defineStatement)
931 {
932 return Message(sourceLineNumbers, Ids.IllegalDefineStatement, "The define statement '<?define {0}?>' is not well-formed. Define statements should be in the form <?define variableName = \"variable value\"?>.", defineStatement);
933 }
934
935 public static Message IllegalEmptyAttributeValue(SourceLineNumber sourceLineNumbers, string elementName, string attributeName)
936 {
937 return Message(sourceLineNumbers, Ids.IllegalEmptyAttributeValue, "The {0}/@{1} attribute's value cannot be an empty string. If a value is not required, simply remove the entire attribute.", elementName, attributeName);
938 }
939
940 public static Message IllegalEmptyAttributeValue(SourceLineNumber sourceLineNumbers, string elementName, string attributeName, string defaultValue)
941 {
942 return Message(sourceLineNumbers, Ids.IllegalEmptyAttributeValue, "The {0}/@{1} attribute's value cannot be an empty string. To use the default value \"{2}\", simply remove the entire attribute.", elementName, attributeName, defaultValue);
943 }
944
945 public static Message IllegalEnvironmentVariable(string environmentVariable, string value)
946 {
947 return Message(null, Ids.IllegalEnvironmentVariable, "The {0} environment variable is set to an invalid value of '{1}'.", environmentVariable, value);
948 }
949
950 public static Message IllegalFamilyName(SourceLineNumber sourceLineNumbers, string elementName, string attributeName, string value)
951 {
952 return Message(sourceLineNumbers, Ids.IllegalFamilyName, "The {0}/@{1} attribute's value, '{2}', contains illegal characters for a family name. Legal values include letters, numbers, and underscores.", elementName, attributeName, value);
953 }
954
955 public static Message IllegalFileCompressionAttributes(SourceLineNumber sourceLineNumbers)
956 {
957 return Message(sourceLineNumbers, Ids.IllegalFileCompressionAttributes, "Cannot have both the MsidbFileAttributesCompressed and MsidbFileAttributesNoncompressed options set in a file attributes column.");
958 }
959
960 public static Message IllegalForeach(SourceLineNumber sourceLineNumbers, string foreachStatement)
961 {
962 return Message(sourceLineNumbers, Ids.IllegalForeach, "The foreach statement '{0}' is illegal. The proper format for foreach is <?foreach varName in valueList?>.", foreachStatement);
963 }
964
965 public static Message IllegalGeneratedGuidComponentUnversionedKeypath(SourceLineNumber sourceLineNumbers)
966 {
967 return Message(sourceLineNumbers, Ids.IllegalGeneratedGuidComponentUnversionedKeypath, "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.");
968 }
969
970 public static Message IllegalGeneratedGuidComponentVersionedNonkeypath(SourceLineNumber sourceLineNumbers)
971 {
972 return Message(sourceLineNumbers, Ids.IllegalGeneratedGuidComponentVersionedNonkeypath, "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.");
973 }
974
975 public static Message IllegalGuidValue(SourceLineNumber sourceLineNumbers, string elementName, string attributeName, string value)
976 {
977 return Message(sourceLineNumbers, Ids.IllegalGuidValue, "The {0}/@{1} attribute's value, '{2}', is not a legal guid value.", elementName, attributeName, value);
978 }
979
980 public static Message IllegalIdentifier(SourceLineNumber sourceLineNumbers, string elementName, string value)
981 {
982 return Message(sourceLineNumbers, Ids.IllegalIdentifier, "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.", elementName, value);
983 }
984
985 public static Message IllegalIdentifier(SourceLineNumber sourceLineNumbers, string elementName, string attributeName, int disambiguator)
986 {
987 return Message(sourceLineNumbers, Ids.IllegalIdentifier, "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.", elementName, attributeName, disambiguator);
988 }
989
990 public static Message IllegalIdentifier(SourceLineNumber sourceLineNumbers, string elementName, string attributeName, string value)
991 {
992 return Message(sourceLineNumbers, Ids.IllegalIdentifier, "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.", elementName, attributeName, value);
993 }
994
995 public static Message IllegalIdentifier(SourceLineNumber sourceLineNumbers, string elementName, string attributeName, string value, string identifier)
996 {
997 return Message(sourceLineNumbers, Ids.IllegalIdentifier, "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.", elementName, attributeName, value, identifier);
998 }
999
1000 public static Message IllegalIdentifierLooksLikeFormatted(SourceLineNumber sourceLineNumbers, string elementName, string attributeName, string value)
1001 {
1002 return Message(sourceLineNumbers, Ids.IllegalIdentifierLooksLikeFormatted, "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.", elementName, attributeName, value);
1003 }
1004
1005 public static Message IllegalInlineLocVariable(SourceLineNumber sourceLineNumbers, string variableName, string variableValue)
1006 {
1007 return Message(sourceLineNumbers, Ids.IllegalInlineLocVariable, "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.", variableName, variableValue);
1008 }
1009
1010 public static Message IllegalIntegerInExpression(SourceLineNumber sourceLineNumbers, string expression)
1011 {
1012 return Message(sourceLineNumbers, Ids.IllegalIntegerInExpression, "An illegal number was found in the expression '{0}'.", expression);
1013 }
1014
1015 public static Message IllegalIntegerValue(SourceLineNumber sourceLineNumbers, string elementName, string attributeName, string value)
1016 {
1017 return Message(sourceLineNumbers, Ids.IllegalIntegerValue, "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.", elementName, attributeName, value);
1018 }
1019
1020 public static Message IllegalLongFilename(SourceLineNumber sourceLineNumbers, string elementName, string attributeName, string value)
1021 {
1022 return Message(sourceLineNumbers, Ids.IllegalLongFilename, "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: \\ ? | > < : / * \".", elementName, attributeName, value);
1023 }
1024
1025 public static Message IllegalLongFilename(SourceLineNumber sourceLineNumbers, string elementName, string attributeName, string value, string filename)
1026 {
1027 return Message(sourceLineNumbers, Ids.IllegalLongFilename, "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: \\ ? | > < : / * \".", elementName, attributeName, value, filename);
1028 }
1029
1030 public static Message IllegalLongValue(SourceLineNumber sourceLineNumbers, string elementName, string attributeName, string value)
1031 {
1032 return Message(sourceLineNumbers, Ids.IllegalLongValue, "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.", elementName, attributeName, value);
1033 }
1034
1035 public static Message IllegalModuleExclusionLanguageAttributes(SourceLineNumber sourceLineNumbers)
1036 {
1037 return Message(sourceLineNumbers, Ids.IllegalModuleExclusionLanguageAttributes, "Cannot set both ExcludeLanguage and ExcludeExceptLanguage attributes on a ModuleExclusion element.");
1038 }
1039
1040 public static Message IllegalParentAttributeWhenNested(SourceLineNumber sourceLineNumbers, string parentElementName, string parentAttributeName, string childElement)
1041 {
1042 return Message(sourceLineNumbers, Ids.IllegalParentAttributeWhenNested, "The {0}/@{1} attribute cannot be specified when a {2} element is nested underneath the {0} element.", parentElementName, parentAttributeName, childElement);
1043 }
1044
1045 public static Message IllegalPathForGeneratedComponentGuid(SourceLineNumber sourceLineNumbers, string componentName, string keyFilePath)
1046 {
1047 return Message(sourceLineNumbers, Ids.IllegalPathForGeneratedComponentGuid, "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.)", componentName, keyFilePath);
1048 }
1049
1050 public static Message IllegalPropertyCustomActionAttributes(SourceLineNumber sourceLineNumbers)
1051 {
1052 return Message(sourceLineNumbers, Ids.IllegalPropertyCustomActionAttributes, "The CustomAction sets a property but its Execute attribute is not 'immediate' (the default). Property-setting custom actions cannot be deferred.\"");
1053 }
1054
1055 public static Message IllegalRelativeLongFilename(SourceLineNumber sourceLineNumbers, string elementName, string attributeName, string value)
1056 {
1057 return Message(sourceLineNumbers, Ids.IllegalRelativeLongFilename, "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: ? | > < : / * \".", elementName, attributeName, value);
1058 }
1059
1060 public static Message IllegalRootDirectory(SourceLineNumber sourceLineNumbers, string directoryId)
1061 {
1062 return Message(sourceLineNumbers, Ids.IllegalRootDirectory, "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'.", directoryId);
1063 }
1064
1065 public static Message IllegalSearchIdForParentDepth(SourceLineNumber sourceLineNumbers, string id, string parentId)
1066 {
1067 return Message(sourceLineNumbers, Ids.IllegalSearchIdForParentDepth, "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.", id, parentId);
1068 }
1069
1070 public static Message IllegalShortFilename(SourceLineNumber sourceLineNumbers, string elementName, string attributeName, string value)
1071 {
1072 return Message(sourceLineNumbers, Ids.IllegalShortFilename, "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: \\ ? | > < : / * \" + , ; = [ ] (space).", elementName, attributeName, value);
1073 }
1074
1075 public static Message IllegalSuppressWarningId(string suppressedId)
1076 {
1077 return Message(null, Ids.IllegalSuppressWarningId, "Illegal value '{0}' for the -sw<N> command line option. Specify a particular warning number, like '-sw6' to suppress the warning with ID 6, or '-sw' alone to suppress all warnings.", suppressedId);
1078 }
1079
1080 public static Message IllegalTargetDirDefaultDir(SourceLineNumber sourceLineNumbers, string defaultDir)
1081 {
1082 return Message(sourceLineNumbers, Ids.IllegalTargetDirDefaultDir, "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'.", defaultDir);
1083 }
1084
1085 public static Message IllegalTerminalServerCustomActionAttributes(SourceLineNumber sourceLineNumbers)
1086 {
1087 return Message(sourceLineNumbers, Ids.IllegalTerminalServerCustomActionAttributes, "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.\"");
1088 }
1089
1090 public static Message IllegalValidationArguments()
1091 {
1092 return Message(null, Ids.IllegalValidationArguments, "You may only specify a single default type using -t or specify custom validation using -serr and -val.");
1093 }
1094
1095 public static Message IllegalVersionValue(SourceLineNumber sourceLineNumbers, string elementName, string attributeName, string value)
1096 {
1097 return Message(sourceLineNumbers, Ids.IllegalVersionValue, "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.", elementName, attributeName, value);
1098 }
1099
1100 public static Message IllegalWarningIdAsError(string warningId)
1101 {
1102 return Message(null, Ids.IllegalWarningIdAsError, "Illegal value '{0}' for the -wx<N> 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.", warningId);
1103 }
1104
1105 public static Message IllegalWixVariablePrefix(SourceLineNumber sourceLineNumbers, string variableId)
1106 {
1107 return Message(sourceLineNumbers, Ids.IllegalWixVariablePrefix, "The WiX variable $(wix.{0}) uses an illegal prefix '$'. Please use the '!' prefix instead.", variableId);
1108 }
1109
1110 public static Message IllegalYesNoAlwaysValue(SourceLineNumber sourceLineNumbers, string elementName, string attributeName, string value)
1111 {
1112 return Message(sourceLineNumbers, Ids.IllegalYesNoAlwaysValue, "The {0}/@{1} attribute's value, '{2}', is not a legal yes/no/always value. The only legal values are 'always', 'no' or 'yes'.", elementName, attributeName, value);
1113 }
1114
1115 public static Message IllegalYesNoDefaultValue(SourceLineNumber sourceLineNumbers, string elementName, string attributeName, string value)
1116 {
1117 return Message(sourceLineNumbers, Ids.IllegalYesNoDefaultValue, "The {0}/@{1} attribute's value, '{2}', is not a legal yes/no/default value. The only legal values are 'default', 'no' or 'yes'.", elementName, attributeName, value);
1118 }
1119
1120 public static Message IllegalYesNoValue(SourceLineNumber sourceLineNumbers, string elementName, string attributeName, string value)
1121 {
1122 return Message(sourceLineNumbers, Ids.IllegalYesNoValue, "The {0}/@{1} attribute's value, '{2}', is not a legal yes/no value. The only legal values are 'no' and 'yes'.", elementName, attributeName, value);
1123 }
1124
1125 public static Message ImplicitComponentKeyPath(SourceLineNumber sourceLineNumbers, string componentId)
1126 {
1127 return Message(sourceLineNumbers, Ids.ImplicitComponentKeyPath, "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.", componentId);
1128 }
1129
1130 public static Message InlineDirectorySyntaxRequiresPath(SourceLineNumber sourceLineNumbers, string elementName, string attributeName, string value, string identifier)
1131 {
1132 return Message(sourceLineNumbers, Ids.InlineDirectorySyntaxRequiresPath, "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.", elementName, attributeName, value, identifier);
1133 }
1134
1135 public static Message InsecureBundleFilename(string filename)
1136 {
1137 return Message(null, Ids.InsecureBundleFilename, "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.", filename);
1138 }
1139
1140 public static Message InsertInvalidSequenceActionOrder(SourceLineNumber sourceLineNumbers, string sequenceTableName, string actionNameBefore, string actionNameAfter, string actionNameNew)
1141 {
1142 return Message(sourceLineNumbers, Ids.InsertInvalidSequenceActionOrder, "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}.", sequenceTableName, actionNameBefore, actionNameAfter, actionNameNew);
1143 }
1144
1145 public static Message InsertSequenceNoSpace(SourceLineNumber sourceLineNumbers, string sequenceTableName, string actionNameBefore, string actionNameAfter, string actionNameNew)
1146 {
1147 return Message(sourceLineNumbers, Ids.InsertSequenceNoSpace, "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.", sequenceTableName, actionNameBefore, actionNameAfter, actionNameNew);
1148 }
1149
1150 public static Message InsufficientVersion(SourceLineNumber sourceLineNumbers, Version currentVersion, Version requiredVersion)
1151 {
1152 return Message(sourceLineNumbers, Ids.InsufficientVersion, "The current version of the toolset is {0}, but version {1} is required.", currentVersion, requiredVersion);
1153 }
1154
1155 public static Message InsufficientVersion(SourceLineNumber sourceLineNumbers, Version currentVersion, Version requiredVersion, string extension)
1156 {
1157 return Message(sourceLineNumbers, Ids.InsufficientVersion, "The current version of the extension '{2}' is {0}, but version {1} is required.", currentVersion, requiredVersion, extension);
1158 }
1159
1160 public static Message IntegralValueOutOfRange(SourceLineNumber sourceLineNumbers, string elementName, string attributeName, int value, int minimum, int maximum)
1161 {
1162 return Message(sourceLineNumbers, Ids.IntegralValueOutOfRange, "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}.", elementName, attributeName, value, minimum, maximum);
1163 }
1164
1165 public static Message IntegralValueOutOfRange(SourceLineNumber sourceLineNumbers, string elementName, string attributeName, long value, long minimum, long maximum)
1166 {
1167 return Message(sourceLineNumbers, Ids.IntegralValueOutOfRange, "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}.", elementName, attributeName, value, minimum, maximum);
1168 }
1169
1170 public static Message IntegralValueSentinelCollision(SourceLineNumber sourceLineNumbers, int value)
1171 {
1172 return Message(sourceLineNumbers, Ids.IntegralValueSentinelCollision, "The integer value {0} collides with a sentinel value in the compiler code.", value);
1173 }
1174
1175 public static Message IntegralValueSentinelCollision(SourceLineNumber sourceLineNumbers, long value)
1176 {
1177 return Message(sourceLineNumbers, Ids.IntegralValueSentinelCollision, "The long integral value {0} collides with a sentinel value in the compiler code.", value);
1178 }
1179
1180 public static Message InvalidAddedFileRowWithoutSequence(SourceLineNumber sourceLineNumbers, string fileRowId)
1181 {
1182 return Message(sourceLineNumbers, Ids.InvalidAddedFileRowWithoutSequence, "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.", fileRowId);
1183 }
1184
1185 public static Message InvalidAssemblyFile(SourceLineNumber sourceLineNumbers, string assemblyFile, string moreInformation)
1186 {
1187 return Message(sourceLineNumbers, Ids.InvalidAssemblyFile, "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}", assemblyFile, moreInformation);
1188 }
1189
1190 public static Message InvalidBundle(string bundleExecutable)
1191 {
1192 return Message(null, Ids.InvalidBundle, "Unable to read bundle executable '{0}'. This is not a valid WiX bundle.", bundleExecutable);
1193 }
1194
1195 public static Message InvalidCabinetTemplate(SourceLineNumber sourceLineNumbers, string cabinetTemplate)
1196 {
1197 return Message(sourceLineNumbers, Ids.InvalidCabinetTemplate, "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: \\ ? | > < : / * \" + , ; = [ ] (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).", cabinetTemplate);
1198 }
1199
1200 public static Message InvalidCommandLineFileName(string fileName, string error)
1201 {
1202 return Message(null, Ids.InvalidCommandLineFileName, "Invalid file name specified on the command line: '{0}'. Error message: '{1}'", fileName, error);
1203 }
1204
1205 public static Message InvalidDateTimeFormat(SourceLineNumber sourceLineNumbers, string elementName, string attributeName, string value)
1206 {
1207 return Message(sourceLineNumbers, Ids.InvalidDateTimeFormat, "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.", elementName, attributeName, value);
1208 }
1209
1210 public static Message InvalidDocumentElement(SourceLineNumber sourceLineNumbers, string elementName, string fileType, string expectedElementName)
1211 {
1212 return Message(sourceLineNumbers, Ids.InvalidDocumentElement, "The document element name '{0}' is invalid. A WiX {1} file must use '{2}' as the document element name.", elementName, fileType, expectedElementName);
1213 }
1214
1215 public static Message InvalidEmbeddedUIFileName(SourceLineNumber sourceLineNumbers, string codepage)
1216 {
1217 return Message(sourceLineNumbers, Ids.InvalidEmbeddedUIFileName, "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.", codepage);
1218 }
1219
1220 public static Message InvalidExtension(string extension)
1221 {
1222 return Message(null, Ids.InvalidExtension, "The extension '{0}' could not be loaded.", extension);
1223 }
1224
1225 public static Message InvalidExtension(string extension, string invalidReason)
1226 {
1227 return Message(null, Ids.InvalidExtension, "The extension '{0}' could not be loaded because of the following reason: {1}", extension, invalidReason);
1228 }
1229
1230 public static Message InvalidExtension(string extension, string extensionType, string expectedType)
1231 {
1232 return Message(null, Ids.InvalidExtension, "The extension '{0}' is the wrong type: '{1}'. The expected type was '{2}'.", extension, extensionType, expectedType);
1233 }
1234
1235 public static Message InvalidExtension(string extension, string extensionType, string expectedType1, string expectedType2)
1236 {
1237 return Message(null, Ids.InvalidExtension, "The extension '{0}' is the wrong type: '{1}'. The expected type was '{2}' or '{3}'.", extension, extensionType, expectedType1, expectedType2);
1238 }
1239
1240 public static Message InvalidExtensionType(string extension, string attributeType)
1241 {
1242 return Message(null, Ids.InvalidExtensionType, "Either '{1}' was not defined in the assembly or the type defined in extension '{0}' could not be loaded.", extension, attributeType);
1243 }
1244
1245 public static Message InvalidExtensionType(string extension, string className, string expectedType)
1246 {
1247 return Message(null, Ids.InvalidExtensionType, "The extension type '{1}' in extension '{0}' does not inherit from the expected class '{2}'.", extension, className, expectedType);
1248 }
1249
1250 public static Message InvalidExtensionType(string extension, string className, string exceptionType, string exceptionMessage)
1251 {
1252 return Message(null, Ids.InvalidExtensionType, "The type '{1}' in extension '{0}' could not be loaded. Exception type '{2}' returned the following message: {3}", extension, className, exceptionType, exceptionMessage);
1253 }
1254
1255 public static Message InvalidFileName(SourceLineNumber sourceLineNumbers, string fileName)
1256 {
1257 return Message(sourceLineNumbers, Ids.InvalidFileName, "Invalid file name '{0}'.", fileName);
1258 }
1259
1260 public static Message InvalidIdt(SourceLineNumber sourceLineNumbers, string idtFile)
1261 {
1262 return Message(sourceLineNumbers, Ids.InvalidIdt, "There was an error importing the file '{0}'.", idtFile);
1263 }
1264
1265 public static Message InvalidIdt(SourceLineNumber sourceLineNumbers, string idtFile, string tableName)
1266 {
1267 return Message(sourceLineNumbers, Ids.InvalidIdt, "There was an error importing table '{1}' from file '{0}'.", idtFile, tableName);
1268 }
1269
1270 public static Message InvalidKeyColumn(string tableName, string columnName, string foreignTableName, int foreignColumnNumber)
1271 {
1272 return Message(null, Ids.InvalidKeyColumn, "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.", tableName, columnName, foreignTableName, foreignColumnNumber);
1273 }
1274
1275 public static Message InvalidKeypathChange(SourceLineNumber sourceLineNumbers, string component, string transformPath)
1276 {
1277 return Message(sourceLineNumbers, Ids.InvalidKeypathChange, "Component '{0}' has a changed keypath in the transform '{1}'. Patches cannot change the keypath of a component.", component, transformPath);
1278 }
1279
1280 public static Message InvalidManifestContent(SourceLineNumber sourceLineNumbers, string fileName)
1281 {
1282 return Message(sourceLineNumbers, Ids.InvalidManifestContent, "The manifest '{0}' does not have the required assembly/assemblyIdentity element.", fileName);
1283 }
1284
1285 public static Message InvalidMergeLanguage(SourceLineNumber sourceLineNumbers, string mergeId, string mergeLanguage)
1286 {
1287 return Message(sourceLineNumbers, Ids.InvalidMergeLanguage, "The Merge element '{0}' specified an invalid language '{1}'. Verify that localization tokens are being properly resolved to a numeric LCID.", mergeId, mergeLanguage);
1288 }
1289
1290 public static Message InvalidModuleOrBundleVersion(SourceLineNumber sourceLineNumbers, string moduleOrBundle, string version)
1291 {
1292 return Message(sourceLineNumbers, Ids.InvalidModuleOrBundleVersion, "Invalid {0}/@Version '{1}'. {0} version has a max value of \"65535.65535.65535.65535\" and must be all numeric.", moduleOrBundle, version);
1293 }
1294
1295 public static Message InvalidPlatformParameter(string name, string value)
1296 {
1297 return Message(null, Ids.InvalidPlatformParameter, "The parameter '{0}' is missing or has an invalid value {1}. Possible values are x86, x64, or ia64.", name, value);
1298 }
1299
1300 public static Message InvalidPlatformValue(SourceLineNumber sourceLineNumbers, string value)
1301 {
1302 return Message(sourceLineNumbers, Ids.InvalidPlatformValue, "The Platform attribute has an invalid value {0}. Possible values are x86, x64, or ia64.", value);
1303 }
1304
1305 public static Message InvalidPreprocessorFunction(SourceLineNumber sourceLineNumbers, string variable)
1306 {
1307 return Message(sourceLineNumbers, Ids.InvalidPreprocessorFunction, "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.", variable);
1308 }
1309
1310 public static Message InvalidPreprocessorFunctionAutoVersion(SourceLineNumber sourceLineNumbers)
1311 {
1312 return Message(sourceLineNumbers, Ids.InvalidPreprocessorFunctionAutoVersion, "Invalid AutoVersion template specified.");
1313 }
1314
1315 public static Message InvalidPreprocessorPragma(SourceLineNumber sourceLineNumbers, string variable)
1316 {
1317 return Message(sourceLineNumbers, Ids.InvalidPreprocessorPragma, "Malformed preprocessor pragma '{0}'. Pragmas must have a prefix, a name of at least 1 character long, and be followed by optional arguments.", variable);
1318 }
1319
1320 public static Message InvalidPreprocessorVariable(SourceLineNumber sourceLineNumbers, string variable)
1321 {
1322 return Message(sourceLineNumbers, Ids.InvalidPreprocessorVariable, "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})'.", variable);
1323 }
1324
1325 public static Message InvalidProductVersion(SourceLineNumber sourceLineNumbers, string version)
1326 {
1327 return Message(sourceLineNumbers, Ids.InvalidProductVersion, "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.", version);
1328 }
1329
1330 public static Message InvalidProductVersion(SourceLineNumber sourceLineNumbers, string version, string packagePath)
1331 {
1332 return Message(sourceLineNumbers, Ids.InvalidProductVersion, "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.", version, packagePath);
1333 }
1334
1335 public static Message InvalidRemoveComponent(SourceLineNumber sourceLineNumbers, string component, string feature, string transformPath)
1336 {
1337 return Message(sourceLineNumbers, Ids.InvalidRemoveComponent, "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.", component, feature, transformPath);
1338 }
1339
1340 public static Message InvalidSequenceTable(string sequenceTableName)
1341 {
1342 return Message(null, Ids.InvalidSequenceTable, "Found an invalid sequence table '{0}'.", sequenceTableName);
1343 }
1344
1345 public static Message InvalidStringForCodepage(SourceLineNumber sourceLineNumbers, string codepage)
1346 {
1347 return Message(sourceLineNumbers, Ids.InvalidStringForCodepage, "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.", codepage);
1348 }
1349
1350 public static Message InvalidStubExe(string filename)
1351 {
1352 return Message(null, Ids.InvalidStubExe, "Stub executable '{0}' is not a valid Win32 executable.", filename);
1353 }
1354
1355 public static Message InvalidSubExpression(SourceLineNumber sourceLineNumbers, string subExpression, string expression)
1356 {
1357 return Message(sourceLineNumbers, Ids.InvalidSubExpression, "Found invalid subexpression '{0}' in expression '{1}'.", subExpression, expression);
1358 }
1359
1360 public static Message InvalidSummaryInfoCodePage(SourceLineNumber sourceLineNumbers, int codePage)
1361 {
1362 return Message(sourceLineNumbers, Ids.InvalidSummaryInfoCodePage, "The code page '{0}' is invalid for summary information. You must specify an ANSI code page.", codePage);
1363 }
1364
1365 public static Message InvalidValidatorMessageType(string type)
1366 {
1367 return Message(null, Ids.InvalidValidatorMessageType, "Unknown validation message type '{0}'.", type);
1368 }
1369
1370 public static Message InvalidVariableDefinition(string variableDefinition)
1371 {
1372 return Message(null, Ids.InvalidVariableDefinition, "The variable definition '{0}' is not valid. Variable definitions should be in the form -dname=value where the value is optional.", variableDefinition);
1373 }
1374
1375 public static Message InvalidWixTransform(string fileName)
1376 {
1377 return Message(null, Ids.InvalidWixTransform, "The file '{0}' is not a valid WiX Transform.", fileName);
1378 }
1379
1380 public static Message InvalidWixXmlNamespace(SourceLineNumber sourceLineNumbers, string wixElementName, string wixNamespace)
1381 {
1382 return Message(sourceLineNumbers, Ids.InvalidWixXmlNamespace, "The {0} element has no namespace. Please make the {0} element look like the following: <{0} xmlns=\"{1}\">.", wixElementName, wixNamespace);
1383 }
1384
1385 public static Message InvalidWixXmlNamespace(SourceLineNumber sourceLineNumbers, string wixElementName, string elementNamespace, string wixNamespace)
1386 {
1387 return Message(sourceLineNumbers, Ids.InvalidWixXmlNamespace, "The {0} element has an incorrect namespace of '{1}'. Please make the {0} element look like the following: <{0} xmlns=\"{2}\">.", wixElementName, elementNamespace, wixNamespace);
1388 }
1389
1390 public static Message InvalidXml(SourceLineNumber sourceLineNumbers, string fileType, string detail)
1391 {
1392 return Message(sourceLineNumbers, Ids.InvalidXml, "Not a valid {0} file; detail: {1}", fileType, detail);
1393 }
1394
1395 public static Message LocalizationVariableUnknown(SourceLineNumber sourceLineNumbers, string variableId)
1396 {
1397 return Message(sourceLineNumbers, Ids.LocalizationVariableUnknown, "The localization variable !(loc.{0}) is unknown. Please ensure the variable is defined.", variableId);
1398 }
1399
1400 public static Message MaximumCabinetSizeForLargeFileSplittingTooLarge(SourceLineNumber sourceLineNumbers, int maximumCabinetSizeForLargeFileSplitting, int maxValueOfMaxCabSizeForLargeFileSplitting)
1401 {
1402 return Message(sourceLineNumbers, Ids.MaximumCabinetSizeForLargeFileSplittingTooLarge, "'{0}' is too large. Reduce the size of maximum cabinet size for large file splitting. The maximum permitted value is '{1}' MB.", maximumCabinetSizeForLargeFileSplitting, maxValueOfMaxCabSizeForLargeFileSplitting);
1403 }
1404
1405 public static Message MaximumUncompressedMediaSizeTooLarge(SourceLineNumber sourceLineNumbers, int maximumUncompressedMediaSize)
1406 {
1407 return Message(sourceLineNumbers, Ids.MaximumUncompressedMediaSizeTooLarge, "'{0}' is too large. Reduce the size of maximum uncompressed media size.", maximumUncompressedMediaSize);
1408 }
1409
1410 public static Message MediaEmbeddedCabinetNameTooLong(SourceLineNumber sourceLineNumbers, string elementName, string attributeName, string value, int length)
1411 {
1412 return Message(sourceLineNumbers, Ids.MediaEmbeddedCabinetNameTooLong, "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.", elementName, attributeName, value, length);
1413 }
1414
1415 public static Message MediaTableCollision(SourceLineNumber sourceLineNumbers)
1416 {
1417 return Message(sourceLineNumbers, Ids.MediaTableCollision, "Only one of Media and MediaTemplate tables should be authored.");
1418 }
1419
1420 public static Message MergeExcludedModule(SourceLineNumber sourceLineNumbers, string mergeId, string otherMergeId)
1421 {
1422 return Message(sourceLineNumbers, Ids.MergeExcludedModule, "The module '{0}' cannot be merged because it excludes or is excluded by the merge module with signature '{1}'.", mergeId, otherMergeId);
1423 }
1424
1425 public static Message MergeFeatureRequired(SourceLineNumber sourceLineNumbers, string tableName, string primaryKeys, string mergeModuleFile, string mergeId)
1426 {
1427 return Message(sourceLineNumbers, Ids.MergeFeatureRequired, "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.", tableName, primaryKeys, mergeModuleFile, mergeId);
1428 }
1429
1430 public static Message MergeLanguageFailed(SourceLineNumber sourceLineNumbers, Int16 language, string mergeModuleFile)
1431 {
1432 return Message(sourceLineNumbers, Ids.MergeLanguageFailed, "The language '{0}' is supported but uses an invalid language transform in the merge module '{1}'.", language, mergeModuleFile);
1433 }
1434
1435 public static Message MergeLanguageUnsupported(SourceLineNumber sourceLineNumbers, Int16 language, string mergeModuleFile)
1436 {
1437 return Message(sourceLineNumbers, Ids.MergeLanguageUnsupported, "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.", language, mergeModuleFile);
1438 }
1439
1440 public static Message MergeModuleExpectedFeature(SourceLineNumber sourceLineNumbers, string mergeId)
1441 {
1442 return Message(sourceLineNumbers, Ids.MergeModuleExpectedFeature, "The merge module '{0}' is not assigned to a feature. All merge modules must be assigned to at least one feature.", mergeId);
1443 }
1444
1445 public static Message MergePlatformMismatch(SourceLineNumber sourceLineNumbers, string mergeModuleFile)
1446 {
1447 return Message(sourceLineNumbers, Ids.MergePlatformMismatch, "'{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.", mergeModuleFile);
1448 }
1449
1450 public static Message MissingBundleInformation(string data)
1451 {
1452 return Message(null, Ids.MissingBundleInformation, "The Bundle is missing '{0}' data, and cannot continue.", data);
1453 }
1454
1455 public static Message MissingDependencyVersion(string packageId)
1456 {
1457 return Message(null, Ids.MissingDependencyVersion, "The provider dependency version was not authored for the package with Id '{0}'. Please author the Provides/@Version attribute for this package.", packageId);
1458 }
1459
1460 public static Message MissingEntrySection(string sectionType)
1461 {
1462 return Message(null, Ids.MissingEntrySection, "Could not find entry section in provided list of intermediates. Expected section of type '{0}'.", sectionType);
1463 }
1464
1465 public static Message MissingManifestForWin32Assembly(SourceLineNumber sourceLineNumbers, string file, string manifest)
1466 {
1467 return Message(sourceLineNumbers, Ids.MissingManifestForWin32Assembly, "File '{0}' is marked as a Win32 assembly but it refers to assembly manifest '{1}' that is not present in this product.", file, manifest);
1468 }
1469
1470 public static Message MissingMedia(SourceLineNumber sourceLineNumbers, int diskId)
1471 {
1472 return Message(sourceLineNumbers, Ids.MissingMedia, "There is no media defined for disk id '{0}'. You must author either <Media Id='{0}' ...> or <MediaTemplate ...>.", diskId);
1473 }
1474
1475 public static Message MissingOrInvalidModuleInstallerVersion(SourceLineNumber sourceLineNumbers, string moduleId, string mergeModuleFile, string productInstallerVersion)
1476 {
1477 return Message(sourceLineNumbers, Ids.MissingOrInvalidModuleInstallerVersion, "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.", moduleId, mergeModuleFile, productInstallerVersion);
1478 }
1479
1480 public static Message MissingTableDefinition(string tableName)
1481 {
1482 return Message(null, Ids.MissingTableDefinition, "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.", tableName);
1483 }
1484
1485 public static Message MissingTypeLibFile(SourceLineNumber sourceLineNumbers, string elementName, string fileElementName)
1486 {
1487 return Message(sourceLineNumbers, Ids.MissingTypeLibFile, "The {0} element is non-advertised and therefore requires a parent {1} element.", elementName, fileElementName);
1488 }
1489
1490 public static Message MissingValidatorExtension()
1491 {
1492 return Message(null, Ids.MissingValidatorExtension, "The validator requires at least one extension. Add \"ValidatorExtension, Wix\" for the default implementation.");
1493 }
1494
1495 public static Message MsiTransactionX86BeforeX64(SourceLineNumber sourceLineNumbers)
1496 {
1497 return Message(sourceLineNumbers, Ids.MsiTransactionX86BeforeX64, "MSI transactions must install all x64 packages before any x86 package.");
1498 }
1499
1500 public static Message MultipleEntrySections(SourceLineNumber sourceLineNumbers, string sectionName1, string sectionName2)
1501 {
1502 return Message(sourceLineNumbers, Ids.MultipleEntrySections, "Multiple entry sections '{0}' and '{1}' found. Only one entry section may be present in a single target.", sectionName1, sectionName2);
1503 }
1504
1505 public static Message MultipleEntrySections2(SourceLineNumber sourceLineNumbers)
1506 {
1507 return Message(sourceLineNumbers, Ids.MultipleEntrySections2, "Location of entry section related to previous error.");
1508 }
1509
1510 public static Message MultipleFilesMatchedWithOutputSpecification(string sourceSpecification, string sourceList)
1511 {
1512 return Message(null, Ids.MultipleFilesMatchedWithOutputSpecification, "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.", sourceSpecification, sourceList);
1513 }
1514
1515 public static Message MultipleIdentifiersFound(SourceLineNumber sourceLineNumbers, string elementName, string identifier, string mismatchIdentifier)
1516 {
1517 return Message(sourceLineNumbers, Ids.MultipleIdentifiersFound, "Under a '{0}' element, multiple identifiers were found: '{1}' and '{2}'. All search elements under this element must have the same id.", elementName, identifier, mismatchIdentifier);
1518 }
1519
1520 public static Message MultiplePrimaryReferences(SourceLineNumber sourceLineNumbers, string crefChildType, string crefChildId, string crefParentType, string crefParentId, string conflictParentType, string conflictParentId)
1521 {
1522 return Message(sourceLineNumbers, Ids.MultiplePrimaryReferences, "Multiple primary references were found for {0} '{1}' in {2} '{3}' and {4} '{5}'.", crefChildType, crefChildId, crefParentType, crefParentId, conflictParentType, conflictParentId);
1523 }
1524
1525 public static Message MustSpecifyOutputWithMoreThanOneInput()
1526 {
1527 return Message(null, Ids.MustSpecifyOutputWithMoreThanOneInput, "You must specify an output file using the \"-o\" or \"-out\" switch when you provide more than one input file.");
1528 }
1529
1530 public static Message NeedSequenceBeforeOrAfter(SourceLineNumber sourceLineNumbers, string elementName)
1531 {
1532 return Message(sourceLineNumbers, Ids.NeedSequenceBeforeOrAfter, "A {0} element must have a Before attribute, After attribute, or a Sequence attribute.", elementName);
1533 }
1534
1535 public static Message NewRowAddedInTable(SourceLineNumber sourceLineNumbers, string productCode, string tableName, string rowId)
1536 {
1537 return Message(sourceLineNumbers, Ids.NewRowAddedInTable, "Product '{0}': Table '{1}' has a new row '{2}' added. This makes the patch not uninstallable.", productCode, tableName, rowId);
1538 }
1539
1540 public static Message NoDataForColumn(SourceLineNumber sourceLineNumbers, string columnName, string tableName)
1541 {
1542 return Message(sourceLineNumbers, Ids.NoDataForColumn, "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.", columnName, tableName);
1543 }
1544
1545 public static Message NoDifferencesInTransform(SourceLineNumber sourceLineNumbers)
1546 {
1547 return Message(sourceLineNumbers, Ids.NoDifferencesInTransform, "The transform being built did not contain any differences so it could not be created.");
1548 }
1549
1550 public static Message NoFirstControlSpecified(SourceLineNumber sourceLineNumbers, string dialogName)
1551 {
1552 return Message(sourceLineNumbers, Ids.NoFirstControlSpecified, "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'.", dialogName);
1553 }
1554
1555 public static Message NonterminatedPreprocessorInstruction(SourceLineNumber sourceLineNumbers, string beginInstruction, string endInstruction)
1556 {
1557 return Message(sourceLineNumbers, Ids.NonterminatedPreprocessorInstruction, "Found a <?{0}?> processing instruction without a matching <?{1}?> after it.", beginInstruction, endInstruction);
1558 }
1559
1560 public static Message NoUniqueActionSequenceNumber(SourceLineNumber sourceLineNumbers, string sequenceTableName, string actionName1, string actionName2)
1561 {
1562 return Message(sourceLineNumbers, Ids.NoUniqueActionSequenceNumber, "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).", sequenceTableName, actionName1, actionName2);
1563 }
1564
1565 public static Message NoUniqueActionSequenceNumber2(SourceLineNumber sourceLineNumbers)
1566 {
1567 return Message(sourceLineNumbers, Ids.NoUniqueActionSequenceNumber2, "The location of the sequenced action related to previous error.");
1568 }
1569
1570 public static Message OpenDatabaseFailed(string databaseFile)
1571 {
1572 return Message(null, Ids.OpenDatabaseFailed, "Failed to open database '{0}'. Ensure it is a valid database, and it is not open by another process.", databaseFile);
1573 }
1574
1575 public static Message OrderingReferenceLoopDetected(SourceLineNumber sourceLineNumbers, string loopList)
1576 {
1577 return Message(sourceLineNumbers, Ids.OrderingReferenceLoopDetected, "A circular reference of ordering dependencies was detected. The infinite loop includes: {0}. Ordering dependency references must form a directed acyclic graph.", loopList);
1578 }
1579
1580 public static Message OrphanedComponent(SourceLineNumber sourceLineNumbers, string componentName)
1581 {
1582 return Message(sourceLineNumbers, Ids.OrphanedComponent, "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.", componentName);
1583 }
1584
1585 public static Message OutputCodepageMismatch(SourceLineNumber sourceLineNumbers, int beforeCodepage, int afterCodepage)
1586 {
1587 return Message(sourceLineNumbers, Ids.OutputCodepageMismatch, "The code pages of the outputs do not match. One output's code page is '{0}' while the other is '{1}'.", beforeCodepage, afterCodepage);
1588 }
1589
1590 public static Message OutputCodepageMismatch2(SourceLineNumber sourceLineNumbers)
1591 {
1592 return Message(sourceLineNumbers, Ids.OutputCodepageMismatch2, "The location of the mismatched code page related to the previous warning.");
1593 }
1594
1595 public static Message OutputTargetNotSpecified()
1596 {
1597 return Message(null, Ids.OutputTargetNotSpecified, "The '-out' or '-o' parameter must specify a file path.");
1598 }
1599
1600 public static Message OutputTypeMismatch(SourceLineNumber sourceLineNumbers, string beforeOutputType, string afterOutputType)
1601 {
1602 return Message(sourceLineNumbers, Ids.OutputTypeMismatch, "The types of the outputs do not match. One output's type is '{0}' while the other is '{1}'.", beforeOutputType, afterOutputType);
1603 }
1604
1605 public static Message OverridableActionCollision(SourceLineNumber sourceLineNumbers, string sequenceTableName, string actionName)
1606 {
1607 return Message(sourceLineNumbers, Ids.OverridableActionCollision, "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.", sequenceTableName, actionName);
1608 }
1609
1610 public static Message OverridableActionCollision2(SourceLineNumber sourceLineNumbers)
1611 {
1612 return Message(sourceLineNumbers, Ids.OverridableActionCollision2, "The location of the action related to previous error.");
1613 }
1614
1615 public static Message ParentElementAttributeRequired(SourceLineNumber sourceLineNumbers, string parentElement, string parentAttribute, string childElement)
1616 {
1617 return Message(sourceLineNumbers, Ids.ParentElementAttributeRequired, "The parent {0} element is missing the {1} attribute that is required for the {2} child element.", parentElement, parentAttribute, childElement);
1618 }
1619
1620 public static Message PatchNotRemovable()
1621 {
1622 return Message(null, Ids.PatchNotRemovable, "This patch is not uninstallable. The 'Patch' element's attribute 'AllowRemoval' should be set to 'no'.");
1623 }
1624
1625 public static Message PatchWithoutTransforms()
1626 {
1627 return Message(null, Ids.PatchWithoutTransforms, "No transforms were provided to attach to the patch.");
1628 }
1629
1630 public static Message PatchWithoutValidTransforms()
1631 {
1632 return Message(null, Ids.PatchWithoutValidTransforms, "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.");
1633 }
1634
1635 public static Message PathCannotContainQuote(string fileName)
1636 {
1637 return Message(null, Ids.PathCannotContainQuote, "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\\\\\".", fileName);
1638 }
1639
1640 public static Message PathTooLong(SourceLineNumber sourceLineNumbers, string fileName)
1641 {
1642 return Message(sourceLineNumbers, Ids.PathTooLong, "'{0}' is too long, the fully qualified file name must be less than 260 characters, and the directory name must be less than 248 characters.", fileName);
1643 }
1644
1645 public static Message PayloadMustBeRelativeToCache(SourceLineNumber sourceLineNumbers, string elementName, string attributeName, string attributeValue)
1646 {
1647 return Message(sourceLineNumbers, Ids.PayloadMustBeRelativeToCache, "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 '..'.", elementName, attributeName, attributeValue);
1648 }
1649
1650 public static Message PerUserButAllUsersEquals1(SourceLineNumber sourceLineNumbers, string path)
1651 {
1652 return Message(sourceLineNumbers, Ids.PerUserButAllUsersEquals1, "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.", path);
1653 }
1654
1655 public static Message PreprocessorError(SourceLineNumber sourceLineNumbers, string message)
1656 {
1657 return Message(sourceLineNumbers, Ids.PreprocessorError, "{0}", message);
1658 }
1659
1660 public static Message PreprocessorExtensionEvaluateFunctionFailed(SourceLineNumber sourceLineNumbers, string prefix, string function, string args, string message)
1661 {
1662 return Message(sourceLineNumbers, Ids.PreprocessorExtensionEvaluateFunctionFailed, "In the preprocessor extension that handles prefix '{0}' while trying to call function '{1}({2})' and exception has occurred : {3}", prefix, function, args, message);
1663 }
1664
1665 public static Message PreprocessorExtensionForParameterMissing(SourceLineNumber sourceLineNumbers, string parameterName, string parameterPrefix)
1666 {
1667 return Message(sourceLineNumbers, Ids.PreprocessorExtensionForParameterMissing, "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'.", parameterName, parameterPrefix);
1668 }
1669
1670 public static Message PreprocessorExtensionGetVariableValueFailed(SourceLineNumber sourceLineNumbers, string prefix, string variable, string message)
1671 {
1672 return Message(sourceLineNumbers, Ids.PreprocessorExtensionGetVariableValueFailed, "In the preprocessor extension that handles prefix '{0}' while trying to get the value for variable '{1}' and exception has occured : {2}", prefix, variable, message);
1673 }
1674
1675 public static Message PreprocessorExtensionPragmaFailed(SourceLineNumber sourceLineNumbers, string pragma, string message)
1676 {
1677 return Message(sourceLineNumbers, Ids.PreprocessorExtensionPragmaFailed, "Exception thrown while processing pragma '{0}'. The exception's message is: {1}", pragma, message);
1678 }
1679
1680 public static Message PreprocessorIllegalForeachVariable(SourceLineNumber sourceLineNumbers, string variableName)
1681 {
1682 return Message(sourceLineNumbers, Ids.PreprocessorIllegalForeachVariable, "The variable named '{0}' is not allowed in a foreach expression.", variableName);
1683 }
1684
1685 public static Message PreprocessorMissingParameterPrefix(SourceLineNumber sourceLineNumbers, string parameterName)
1686 {
1687 return Message(sourceLineNumbers, Ids.PreprocessorMissingParameterPrefix, "Could not find the prefix in parameter name: '{0}'.", parameterName);
1688 }
1689
1690 public static Message ProductCodeInvalidForTransform(SourceLineNumber sourceLineNumbers)
1691 {
1692 return Message(sourceLineNumbers, Ids.ProductCodeInvalidForTransform, "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.");
1693 }
1694
1695 public static Message ProgIdNestedTooDeep(SourceLineNumber sourceLineNumbers)
1696 {
1697 return Message(sourceLineNumbers, Ids.ProgIdNestedTooDeep, "ProgId elements may not be nested more than 1 level deep.");
1698 }
1699
1700 public static Message RadioButtonBitmapAndIconDisallowed(SourceLineNumber sourceLineNumbers)
1701 {
1702 return Message(sourceLineNumbers, Ids.RadioButtonBitmapAndIconDisallowed, "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.");
1703 }
1704
1705 public static Message RadioButtonTypeInconsistent(SourceLineNumber sourceLineNumbers)
1706 {
1707 return Message(sourceLineNumbers, Ids.RadioButtonTypeInconsistent, "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.");
1708 }
1709
1710 public static Message ReadOnlyOutputFile(string filePath)
1711 {
1712 return Message(null, Ids.ReadOnlyOutputFile, "Unable to output to file '{0}' because it is marked as read-only.", filePath);
1713 }
1714
1715 public static Message RealTableMissingPrimaryKeyColumn(SourceLineNumber sourceLineNumbers, string tableName)
1716 {
1717 return Message(sourceLineNumbers, Ids.RealTableMissingPrimaryKeyColumn, "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.", tableName);
1718 }
1719
1720 public static Message RecursiveAction(string action, string tableName)
1721 {
1722 return Message(null, Ids.RecursiveAction, "The action '{0}' is recursively placed in the '{1}' table.", action, tableName);
1723 }
1724
1725 public static Message ReferenceLoopDetected(SourceLineNumber sourceLineNumbers, string loopList)
1726 {
1727 return Message(sourceLineNumbers, Ids.ReferenceLoopDetected, "A circular reference of groups was detected. The infinite loop includes: {0}. Group references must form a directed acyclic graph.", loopList);
1728 }
1729
1730 public static Message RegistryMultipleValuesWithoutMultiString(SourceLineNumber sourceLineNumbers, string registryElementName, string valueAttributeName, string registryValueElementName, string typeAttributeName)
1731 {
1732 return Message(sourceLineNumbers, Ids.RegistryMultipleValuesWithoutMultiString, "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'.", registryElementName, valueAttributeName, registryValueElementName, typeAttributeName);
1733 }
1734
1735 public static Message RegistryNameValueIncorrect(SourceLineNumber sourceLineNumbers, string elementName, string attributeName, string value)
1736 {
1737 return Message(sourceLineNumbers, Ids.RegistryNameValueIncorrect, "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'.", elementName, attributeName, value);
1738 }
1739
1740 public static Message RegistryRootInvalid(SourceLineNumber sourceLineNumbers)
1741 {
1742 return Message(sourceLineNumbers, Ids.RegistryRootInvalid, "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.");
1743 }
1744
1745 public static Message RegistrySubElementCannotBeRemoved(SourceLineNumber sourceLineNumbers, string registryElementName, string registryValueElementName, string actionAttributeName, string removeValue, string removeKeyOnInstallValue)
1746 {
1747 return Message(sourceLineNumbers, Ids.RegistrySubElementCannotBeRemoved, "The {0}/{1} element cannot be specified if the {2} attribute's value is '{3}' or '{4}'.", registryElementName, registryValueElementName, actionAttributeName, removeValue, removeKeyOnInstallValue);
1748 }
1749
1750 public static Message RelativePathForRegistryElement(SourceLineNumber sourceLineNumbers)
1751 {
1752 return Message(sourceLineNumbers, Ids.RelativePathForRegistryElement, "Cannot convert RelativePath into Registry elements.");
1753 }
1754
1755 public static Message RemotePayloadUnsupported(SourceLineNumber sourceLineNumbers)
1756 {
1757 return Message(sourceLineNumbers, Ids.RemotePayloadUnsupported, "The RemotePayload element can only be used for ExePackage and MsuPackage payloads.");
1758 }
1759
1760 public static Message ReservedNamespaceViolation(SourceLineNumber sourceLineNumbers, string element, string attribute, string prefix)
1761 {
1762 return Message(sourceLineNumbers, Ids.ReservedNamespaceViolation, "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.", element, attribute, prefix);
1763 }
1764
1765 public static Message RootFeatureCannotFollowParent(SourceLineNumber sourceLineNumbers)
1766 {
1767 return Message(sourceLineNumbers, Ids.RootFeatureCannotFollowParent, "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.");
1768 }
1769
1770 public static Message SameFileIdDifferentSource(SourceLineNumber sourceLineNumbers, string fileId, string sourcePath1, string sourcePath2)
1771 {
1772 return Message(sourceLineNumbers, Ids.SameFileIdDifferentSource, "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.", fileId, sourcePath1, sourcePath2);
1773 }
1774
1775 public static Message SamePatchBaselineId(SourceLineNumber sourceLineNumbers, string id)
1776 {
1777 return Message(sourceLineNumbers, Ids.SamePatchBaselineId, "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.", id);
1778 }
1779
1780 public static Message SchemaValidationFailed(SourceLineNumber sourceLineNumbers, string validationError, int lineNumber, int linePosition)
1781 {
1782 return Message(sourceLineNumbers, Ids.SchemaValidationFailed, "Schema validation failed with the following error at line {1}, column {2}: {0}", validationError, lineNumber, linePosition);
1783 }
1784
1785 public static Message SearchElementRequired(SourceLineNumber sourceLineNumbers, string elementName)
1786 {
1787 return Message(sourceLineNumbers, Ids.SearchElementRequired, "A '{0}' element must have a search element as a child.", elementName);
1788 }
1789
1790 public static Message SearchElementRequiredWithAttribute(SourceLineNumber sourceLineNumbers, string elementName, string attributeName, string attributeValue)
1791 {
1792 return Message(sourceLineNumbers, Ids.SearchElementRequiredWithAttribute, "A {0} element must have a search element as a child when the {0}/@{1} attribute has the value '{2}'.", elementName, attributeName, attributeValue);
1793 }
1794
1795 public static Message SearchPropertyNotUppercase(SourceLineNumber sourceLineNumbers, string elementName, string attributeName, string value)
1796 {
1797 return Message(sourceLineNumbers, Ids.SearchPropertyNotUppercase, "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.", elementName, attributeName, value);
1798 }
1799
1800 public static Message SecurePropertyNotUppercase(SourceLineNumber sourceLineNumbers, string elementName, string attributeName, string propertyId)
1801 {
1802 return Message(sourceLineNumbers, Ids.SecurePropertyNotUppercase, "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.", elementName, attributeName, propertyId);
1803 }
1804
1805 public static Message SignedEmbeddedCabinet(SourceLineNumber sourceLineNumbers)
1806 {
1807 return Message(sourceLineNumbers, Ids.SignedEmbeddedCabinet, "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'.");
1808 }
1809
1810 public static Message SingleExtensionSupported()
1811 {
1812 return Message(null, Ids.SingleExtensionSupported, "Multiple extensions were specified on the command line, only a single extension is supported.");
1813 }
1814
1815 public static Message SmokeMalformedPath()
1816 {
1817 return Message(null, Ids.SmokeMalformedPath, "Path contains one or more invalid characters.");
1818 }
1819
1820 public static Message SmokeUnknownFileExtension()
1821 {
1822 return Message(null, Ids.SmokeUnknownFileExtension, "Unknown input file format - expected a .msi or .msm file.");
1823 }
1824
1825 public static Message SmokeUnsupportedFileExtension()
1826 {
1827 return Message(null, Ids.SmokeUnsupportedFileExtension, "Files with an extension of .msp are not currently supported.");
1828 }
1829
1830 public static Message SpecifiedBinderNotFound(string binderClass)
1831 {
1832 return Message(null, Ids.SpecifiedBinderNotFound, "The specified binder class '{0}' was not found in any extensions.", binderClass);
1833 }
1834
1835 public static Message SplitCabinetCopyRegistrationFailed(string newCabName, string firstCabName)
1836 {
1837 return Message(null, Ids.SplitCabinetCopyRegistrationFailed, "Failed to register the copy command for cabinet '{0}' formed by splitting cabinet '{1}'.", newCabName, firstCabName);
1838 }
1839
1840 public static Message SplitCabinetInsertionFailed(string newCabName, string firstCabName, string lastCabinetOfThisSequence)
1841 {
1842 return Message(null, Ids.SplitCabinetInsertionFailed, "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.", newCabName, firstCabName, lastCabinetOfThisSequence);
1843 }
1844
1845 public static Message SplitCabinetNameCollision(string newCabName, string firstCabName)
1846 {
1847 return Message(null, Ids.SplitCabinetNameCollision, "The cabinet name '{0}' collides with the new cabinet formed by splitting cabinet '{1}', consider renaming cabinet '{0}'.", newCabName, firstCabName);
1848 }
1849
1850 public static Message StandardActionRelativelyScheduledInModule(SourceLineNumber sourceLineNumbers, string sequenceTableName, string actionName)
1851 {
1852 return Message(sourceLineNumbers, Ids.StandardActionRelativelyScheduledInModule, "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.", sequenceTableName, actionName);
1853 }
1854
1855 public static Message StreamNameTooLong(SourceLineNumber sourceLineNumbers, string elementName, string attributeName, string value, int length, int maximumLength)
1856 {
1857 return Message(sourceLineNumbers, Ids.StreamNameTooLong, "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.", elementName, attributeName, value, length, maximumLength);
1858 }
1859
1860 public static Message StreamNameTooLong(SourceLineNumber sourceLineNumbers, string tableName, string streamName, int streamLength)
1861 {
1862 return Message(sourceLineNumbers, Ids.StreamNameTooLong, "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.", tableName, streamName, streamLength);
1863 }
1864
1865 public static Message StubMissingWixburnSection(string filename)
1866 {
1867 return Message(null, Ids.StubMissingWixburnSection, "Stub executable '{0}' does not contain a .wixburn data section.", filename);
1868 }
1869
1870 public static Message StubWixburnSectionTooSmall(string filename)
1871 {
1872 return Message(null, Ids.StubWixburnSectionTooSmall, "Stub executable '{0}' .wixburn data section is too small to store the Burn container header.", filename);
1873 }
1874
1875 public static Message SuppressNonoverridableAction(SourceLineNumber sourceLineNumbers, string sequenceTableName, string actionName)
1876 {
1877 return Message(sourceLineNumbers, Ids.SuppressNonoverridableAction, "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.", sequenceTableName, actionName);
1878 }
1879
1880 public static Message SuppressNonoverridableAction2(SourceLineNumber sourceLineNumbers)
1881 {
1882 return Message(sourceLineNumbers, Ids.SuppressNonoverridableAction2, "The location of the non-overridable definition of the action related to previous error.");
1883 }
1884
1885 public static Message TabbableControlNotAllowedInBillboard(SourceLineNumber sourceLineNumbers, string elementName, string controlType)
1886 {
1887 return Message(sourceLineNumbers, Ids.TabbableControlNotAllowedInBillboard, "A {0} element was specified with Type='{1}' and TabSkip='no'. Tabbable controls are not allowed in Billboards.", elementName, controlType);
1888 }
1889
1890 public static Message TableDecompilationUnimplemented(string tableName)
1891 {
1892 return Message(null, Ids.TableDecompilationUnimplemented, "Decompilation of the {0} table has not been implemented by its extension.", tableName);
1893 }
1894
1895 public static Message TableNameTooLong(SourceLineNumber sourceLineNumbers, string elementName, string attributeName, string value)
1896 {
1897 return Message(sourceLineNumbers, Ids.TableNameTooLong, "The {0}/@{1} attribute's value, '{2}', is too long for a table name. It cannot be more than than 31 characters long.", elementName, attributeName, value);
1898 }
1899
1900 public static Message TooDeeplyIncluded(SourceLineNumber sourceLineNumbers, int depth)
1901 {
1902 return Message(sourceLineNumbers, Ids.TooDeeplyIncluded, "Include files cannot be nested more deeply than {0} times. Make sure included files don't accidentally include themselves.", depth);
1903 }
1904
1905 public static Message TooManyChildren(SourceLineNumber sourceLineNumbers, string elementName, string childElementName)
1906 {
1907 return Message(sourceLineNumbers, Ids.TooManyChildren, "The {0} element contains multiple {1} child elements. There can only be one {1} child element per {0} element.", elementName, childElementName);
1908 }
1909
1910 public static Message TooManyColumnsInRealTable(string tableName, int columnCount, int supportedColumnCount)
1911 {
1912 return Message(null, Ids.TooManyColumnsInRealTable, "The table '{0}' contains {1} columns which is not supported by Windows Installer. Windows Installer supports a maximum of {2} columns.", tableName, columnCount, supportedColumnCount);
1913 }
1914
1915 public static Message TooManyElements(SourceLineNumber sourceLineNumbers, string elementName, string childElementName, int expectedInstances)
1916 {
1917 return Message(sourceLineNumbers, Ids.TooManyElements, "The {0} element contains an unexpected child element '{1}'. The '{1}' element may only occur {2} time(s) under the {0} element.", elementName, childElementName, expectedInstances);
1918 }
1919
1920 public static Message TooManySearchElements(SourceLineNumber sourceLineNumbers, string elementName)
1921 {
1922 return Message(sourceLineNumbers, Ids.TooManySearchElements, "Only one search element can appear under a '{0}' element.", elementName);
1923 }
1924
1925 public static Message TransformSchemaMismatch()
1926 {
1927 return Message(null, Ids.TransformSchemaMismatch, "The transform schema does not match the database schema. The transform may have been generated from a different database.");
1928 }
1929
1930 public static Message TypeSpecificationForExtensionRequired(string parameter)
1931 {
1932 return Message(null, Ids.TypeSpecificationForExtensionRequired, "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\".", parameter);
1933 }
1934
1935 public static Message UnableToGetAuthenticodeCertOfFile(string filePath, string moreInformation)
1936 {
1937 return Message(null, Ids.UnableToGetAuthenticodeCertOfFile, "Unable to get the authenticode certificate of '{0}'. More information: {1}", filePath, moreInformation);
1938 }
1939
1940 public static Message UnableToGetAuthenticodeCertOfFileDownlevelOS(string filePath, string moreInformation)
1941 {
1942 return Message(null, Ids.UnableToGetAuthenticodeCertOfFileDownlevelOS, "Unable to get the authenticode certificate of '{0}'. The cryptography API has limitations on Windows XP and Windows Server 2003. More information: {1}", filePath, moreInformation);
1943 }
1944
1945 public static Message UnableToOpenModule(SourceLineNumber sourceLineNumbers, string modulePath, string message)
1946 {
1947 return Message(sourceLineNumbers, Ids.UnableToOpenModule, "Unable to open merge module '{0}'. Check to make sure the module language is correct. '{1}'", modulePath, message);
1948 }
1949
1950 public static Message UnableToReadPackageInformation(SourceLineNumber sourceLineNumbers, string packagePath, string detailedErrorMessage)
1951 {
1952 return Message(sourceLineNumbers, Ids.UnableToReadPackageInformation, "Unable to read package '{0}'. {1}", packagePath, detailedErrorMessage);
1953 }
1954
1955 public static Message UnauthorizedAccess(string filePath)
1956 {
1957 return Message(null, Ids.UnauthorizedAccess, "Access to the path '{0}' is denied.", filePath);
1958 }
1959
1960 public static Message UndefinedPreprocessorFunction(SourceLineNumber sourceLineNumbers, string variableName)
1961 {
1962 return Message(sourceLineNumbers, Ids.UndefinedPreprocessorFunction, "Undefined preprocessor function '$({0})'.", variableName);
1963 }
1964
1965 public static Message UndefinedPreprocessorVariable(SourceLineNumber sourceLineNumbers, string variableName)
1966 {
1967 return Message(sourceLineNumbers, Ids.UndefinedPreprocessorVariable, "Undefined preprocessor variable '$({0})'.", variableName);
1968 }
1969
1970 public static Message UnexpectedAttribute(SourceLineNumber sourceLineNumbers, string elementName, string attributeName)
1971 {
1972 return Message(sourceLineNumbers, Ids.UnexpectedAttribute, "The {0} element contains an unexpected attribute '{1}'.", elementName, attributeName);
1973 }
1974
1975 public static Message UnexpectedColumnCount(SourceLineNumber sourceLineNumbers, string tableName)
1976 {
1977 return Message(sourceLineNumbers, Ids.UnexpectedColumnCount, "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.", tableName);
1978 }
1979
1980 public static Message UnexpectedContentNode(SourceLineNumber sourceLineNumbers, string elementName, string unexpectedNodeType)
1981 {
1982 return Message(sourceLineNumbers, Ids.UnexpectedContentNode, "The {0} element contains an unexpected xml node of type {1}.", elementName, unexpectedNodeType);
1983 }
1984
1985 public static Message UnexpectedCustomTableColumn(SourceLineNumber sourceLineNumbers, string column)
1986 {
1987 return Message(sourceLineNumbers, Ids.UnexpectedCustomTableColumn, "The custom table column '{0}' is unknown.", column);
1988 }
1989
1990 public static Message UnexpectedElement(SourceLineNumber sourceLineNumbers, string elementName, string childElementName)
1991 {
1992 return Message(sourceLineNumbers, Ids.UnexpectedElement, "The {0} element contains an unexpected child element '{1}'.", elementName, childElementName);
1993 }
1994
1995 public static Message UnexpectedElementWithAttribute(SourceLineNumber sourceLineNumbers, string elementName, string childElementName, string attribute)
1996 {
1997 return Message(sourceLineNumbers, Ids.UnexpectedElementWithAttribute, "The {0} element cannot have a child element '{1}' when attribute '{2}' is set.", elementName, childElementName, attribute);
1998 }
1999
2000 public static Message UnexpectedElementWithAttributeValue(SourceLineNumber sourceLineNumbers, string elementName, string childElementName, string attribute, string attributeValue)
2001 {
2002 return Message(sourceLineNumbers, Ids.UnexpectedElementWithAttributeValue, "The {0} element cannot have a child element '{1}' unless attribute '{2}' is set to '{3}'.", elementName, childElementName, attribute, attributeValue);
2003 }
2004
2005 public static Message UnexpectedElementWithAttributeValue(SourceLineNumber sourceLineNumbers, string elementName, string childElementName, string attribute, string attributeValue1, string attributeValue2)
2006 {
2007 return Message(sourceLineNumbers, Ids.UnexpectedElementWithAttributeValue, "The {0} element cannot have a child element '{1}' unless attribute '{2}' is set to '{3}' or '{4}'.", elementName, childElementName, attribute, attributeValue1, attributeValue2);
2008 }
2009
2010 public static Message UnexpectedEmptySubexpression(SourceLineNumber sourceLineNumbers, string expression)
2011 {
2012 return Message(sourceLineNumbers, Ids.UnexpectedEmptySubexpression, "The empty subexpression is unexpected in the expression '{0}'.", expression);
2013 }
2014
2015 public static Message UnexpectedException(string message, string type, string stackTrace)
2016 {
2017 return Message(null, Ids.UnexpectedException, "{0}\r\n\r\nException Type: {1}\r\n\r\nStack Trace:\r\n{2}", message, type, stackTrace);
2018 }
2019
2020 public static Message UnexpectedExternalUIMessage(string message)
2021 {
2022 return Message(null, Ids.UnexpectedExternalUIMessage, "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: \"{0}\".", message);
2023 }
2024
2025 public static Message UnexpectedExternalUIMessage(string message, string action)
2026 {
2027 return Message(null, Ids.UnexpectedExternalUIMessage, "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: \"{0}\".", message, action);
2028 }
2029
2030 public static Message UnexpectedFileExtension(string fileName, string expectedExtensions)
2031 {
2032 return Message(null, Ids.UnexpectedFileExtension, "The file '{0}' has an unexpected extension. Expected one of the following: '{1}'.", fileName, expectedExtensions);
2033 }
2034
2035 public static Message UnexpectedFileFormat(string path, FileFormat expectedFormat, FileFormat actualFormat)
2036 {
2037 return Message(null, Ids.UnexpectedFileFormat, "Unexpected file format loaded from path: {0}. The file was expected to be a {1} but was actually: {2}. Ensure the correct path was provided.", path, expectedFormat.ToString().ToLowerInvariant(), actualFormat.ToString().ToLowerInvariant());
2038 }
2039
2040 public static Message UnexpectedGroupChild(string parentType, string parentId, string childType, string childId)
2041 {
2042 return Message(null, Ids.UnexpectedGroupChild, "A group parent ('{0}'/'{1}') had an unexpected child ('{2}'/'{3}').", parentType, parentId, childType, childId);
2043 }
2044
2045 public static Message UnexpectedLiteral(SourceLineNumber sourceLineNumbers, string expression)
2046 {
2047 return Message(sourceLineNumbers, Ids.UnexpectedLiteral, "An unexpected literal was found in the expression '{0}'.", expression);
2048 }
2049
2050 public static Message UnexpectedPreprocessorOperator(SourceLineNumber sourceLineNumbers, string op)
2051 {
2052 return Message(sourceLineNumbers, Ids.UnexpectedPreprocessorOperator, "The operator '{0}' is unexpected.", op);
2053 }
2054
2055 public static Message UnexpectedTableInMergeModule(SourceLineNumber sourceLineNumbers, string tableName)
2056 {
2057 return Message(sourceLineNumbers, Ids.UnexpectedTableInMergeModule, "An unexpected row in the '{0}' table was found in this merge module. Merge modules cannot contain the '{0}' table.", tableName);
2058 }
2059
2060 public static Message UnexpectedTableInPatch(SourceLineNumber sourceLineNumbers, string tableName)
2061 {
2062 return Message(sourceLineNumbers, Ids.UnexpectedTableInPatch, "An unexpected row in the '{0}' table was found in this patch. Patches cannot contain the '{0}' table.", tableName);
2063 }
2064
2065 public static Message UnexpectedTableInPatchCreationPackage(SourceLineNumber sourceLineNumbers, string tableName)
2066 {
2067 return Message(sourceLineNumbers, Ids.UnexpectedTableInPatchCreationPackage, "An unexpected row in the '{0}' table was found in this patch creation package. Patch creation packages cannot contain the '{0}' table.", tableName);
2068 }
2069
2070 public static Message UnhandledExtensionAttribute(SourceLineNumber sourceLineNumbers, string elementName, string extensionAttributeName, string extensionNamespace)
2071 {
2072 return Message(sourceLineNumbers, Ids.UnhandledExtensionAttribute, "The {0} element contains an unhandled extension attribute '{1}'. Please ensure that the extension for attributes in the '{2}' namespace has been provided.", elementName, extensionAttributeName, extensionNamespace);
2073 }
2074
2075 public static Message UnhandledExtensionElement(SourceLineNumber sourceLineNumbers, string elementName, string extensionElementName, string extensionNamespace)
2076 {
2077 return Message(sourceLineNumbers, Ids.UnhandledExtensionElement, "The {0} element contains an unhandled extension element '{1}'. Please ensure that the extension for elements in the '{2}' namespace has been provided.", elementName, extensionElementName, extensionNamespace);
2078 }
2079
2080 public static Message UniqueFileSearchIdRequired(SourceLineNumber sourceLineNumbers, string id, string elementName)
2081 {
2082 return Message(sourceLineNumbers, Ids.UniqueFileSearchIdRequired, "The DirectorySearch element '{0}' requires that the child {1} element has a unique Id when the DirectorySearch/@AssignToProperty attribute is set to 'yes'.", id, elementName);
2083 }
2084
2085 public static Message UnknownCustomTableColumnType(SourceLineNumber sourceLineNumbers, string columnType)
2086 {
2087 return Message(sourceLineNumbers, Ids.UnknownCustomTableColumnType, "Encountered an unknown custom table column type '{0}'.", columnType);
2088 }
2089
2090 public static Message UnmatchedParenthesisInExpression(SourceLineNumber sourceLineNumbers, string expression)
2091 {
2092 return Message(sourceLineNumbers, Ids.UnmatchedParenthesisInExpression, "The parenthesis don't match in the expression '{0}'.", expression);
2093 }
2094
2095 public static Message UnmatchedPreprocessorInstruction(SourceLineNumber sourceLineNumbers, string beginInstruction, string endInstruction)
2096 {
2097 return Message(sourceLineNumbers, Ids.UnmatchedPreprocessorInstruction, "Found a <?{1}?> processing instruction without a matching <?{0}?> before it.", beginInstruction, endInstruction);
2098 }
2099
2100 public static Message UnmatchedQuotesInExpression(SourceLineNumber sourceLineNumbers, string expression)
2101 {
2102 return Message(sourceLineNumbers, Ids.UnmatchedQuotesInExpression, "The quotes don't match in the expression '{0}'.", expression);
2103 }
2104
2105 public static Message UnresolvedBindReference(SourceLineNumber sourceLineNumbers, string BindRef)
2106 {
2107 return Message(sourceLineNumbers, Ids.UnresolvedBindReference, "Unresolved bind-time variable {0}.", BindRef);
2108 }
2109
2110 public static Message UnresolvedReference(SourceLineNumber sourceLineNumbers, string symbolName)
2111 {
2112 return Message(sourceLineNumbers, Ids.UnresolvedReference, "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.", symbolName);
2113 }
2114
2115 public static Message UnresolvedReference(SourceLineNumber sourceLineNumbers, string symbolName, WixToolset.Data.AccessModifier accessModifier)
2116 {
2117 return Message(sourceLineNumbers, Ids.UnresolvedReference, "The identifier '{0}' is inaccessible due to its protection level.", symbolName, accessModifier);
2118 }
2119
2120 public static Message UnsupportedAllUsersValue(SourceLineNumber sourceLineNumbers, string path, string value)
2121 {
2122 return Message(sourceLineNumbers, Ids.UnsupportedAllUsersValue, "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.", path, value);
2123 }
2124
2125 public static Message UnsupportedExtensionAttribute(SourceLineNumber sourceLineNumbers, string elementName, string extensionElementName)
2126 {
2127 return Message(sourceLineNumbers, Ids.UnsupportedExtensionAttribute, "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?", elementName, extensionElementName);
2128 }
2129
2130 public static Message UnsupportedExtensionElement(SourceLineNumber sourceLineNumbers, string elementName, string extensionElementName)
2131 {
2132 return Message(sourceLineNumbers, Ids.UnsupportedExtensionElement, "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?", elementName, extensionElementName);
2133 }
2134
2135 public static Message UnsupportedPlatformForElement(SourceLineNumber sourceLineNumbers, string platform, string elementName)
2136 {
2137 return Message(sourceLineNumbers, Ids.UnsupportedPlatformForElement, "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.", platform, elementName);
2138 }
2139
2140 public static Message ValidationError(SourceLineNumber sourceLineNumbers, string ice, string message)
2141 {
2142 return Message(sourceLineNumbers, Ids.ValidationError, "{0}: {1}", ice, message);
2143 }
2144
2145 public static Message ValidationFailedDueToInvalidPackage()
2146 {
2147 return Message(null, Ids.ValidationFailedDueToInvalidPackage, "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.");
2148 }
2149
2150 public static Message ValidationFailedDueToLowMsiEngine()
2151 {
2152 return Message(null, Ids.ValidationFailedDueToLowMsiEngine, "The package being validated requires a higher version of Windows Installer than is installed on this machine. Validation cannot continue.");
2153 }
2154
2155 public static Message ValidationFailedDueToMultilanguageMergeModule()
2156 {
2157 return Message(null, Ids.ValidationFailedDueToMultilanguageMergeModule, "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.");
2158 }
2159
2160 public static Message ValidationFailedToOpenDatabase()
2161 {
2162 return Message(null, Ids.ValidationFailedToOpenDatabase, "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.");
2163 }
2164
2165 public static Message ValueAndMaskMustBeSameLength(SourceLineNumber sourceLineNumbers)
2166 {
2167 return Message(sourceLineNumbers, Ids.ValueAndMaskMustBeSameLength, "The FileTypeMask/@Value and FileTypeMask/@Mask attributes must be the same length.");
2168 }
2169
2170 public static Message ValueNotSupported(SourceLineNumber sourceLineNumbers, string elementName, string attributeName, string attributeValue)
2171 {
2172 return Message(sourceLineNumbers, Ids.ValueNotSupported, "The {0}/@{1} attribute's value, '{2}, is not supported by the Windows Installer.", elementName, attributeName, attributeValue);
2173 }
2174
2175 public static Message VariableDeclarationCollision(SourceLineNumber sourceLineNumbers, string variableName, string variableValue, string variableCollidingValue)
2176 {
2177 return Message(sourceLineNumbers, Ids.VariableDeclarationCollision, "The variable '{0}' with value '{1}' was previously declared with value '{2}'.", variableName, variableValue, variableCollidingValue);
2178 }
2179
2180 public static Message VersionIndependentProgIdsCannotHaveIcons(SourceLineNumber sourceLineNumbers)
2181 {
2182 return Message(sourceLineNumbers, Ids.VersionIndependentProgIdsCannotHaveIcons, "Version independent ProgIds cannot have Icons. Remove the Icon and/or IconIndex attributes from your ProgId element.");
2183 }
2184
2185 public static Message VersionMismatch(SourceLineNumber sourceLineNumbers, string fileType, string version, string expectedVersion)
2186 {
2187 return Message(sourceLineNumbers, Ids.VersionMismatch, "The {0} file format version {1} is not compatible with the expected {0} file format version {2}.", fileType, version, expectedVersion);
2188 }
2189
2190 public static Message Win32Exception(int nativeErrorCode, string message)
2191 {
2192 return Message(null, Ids.Win32Exception, "An unexpected Win32 exception with error code 0x{0:X} occurred: {1}", nativeErrorCode, message);
2193 }
2194
2195 public static Message Win32Exception(int nativeErrorCode, string file, string message)
2196 {
2197 return Message(null, Ids.Win32Exception, "An unexpected Win32 exception with error code 0x{0:X} occurred while accessing file '{1}': {2}", nativeErrorCode, file, message);
2198 }
2199
2200 public static Message WixFileNotFound(string file)
2201 {
2202 return Message(null, Ids.WixFileNotFound, "The file '{0}' cannot be found.", file);
2203 }
2204
2205 public static Message WixVariableCollision(SourceLineNumber sourceLineNumbers, string variableId)
2206 {
2207 return Message(sourceLineNumbers, Ids.WixVariableCollision, "The WiX variable '{0}' is declared in more than one location. Please remove one of the declarations.", variableId);
2208 }
2209
2210 public static Message WixVariableUnknown(SourceLineNumber sourceLineNumbers, string variableId)
2211 {
2212 return Message(sourceLineNumbers, Ids.WixVariableUnknown, "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).", variableId);
2213 }
2214
2215 public static Message WrongFileExtensionForNumberOfInputs(string inputExtension, string input)
2216 {
2217 return Message(null, Ids.WrongFileExtensionForNumberOfInputs, "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.", inputExtension, input);
2218 }
2219
2220 private static Message Message(SourceLineNumber sourceLineNumber, Ids id, string format, params object[] args)
2221 {
2222 return new Message(sourceLineNumber, MessageLevel.Error, (int)id, format, args);
2223 }
2224
2225 private static Message Message(SourceLineNumber sourceLineNumber, Ids id, ResourceManager resourceManager, string resourceName, params object[] args)
2226 {
2227 return new Message(sourceLineNumber, MessageLevel.Error, (int)id, resourceManager, resourceName, args);
2228 }
2229
2230 public enum Ids
2231 {
2232 UnexpectedException = 1,
2233 UnexpectedFileFormat = 2,
2234 CorruptFileFormat = 3,
2235 UnexpectedAttribute = 4,
2236 UnexpectedElement = 5,
2237 IllegalEmptyAttributeValue = 6,
2238 InsufficientVersion = 7,
2239 IllegalIntegerValue = 8,
2240 IllegalGuidValue = 9,
2241 ExpectedAttribute = 10,
2242 SecurePropertyNotUppercase = 11,
2243 SearchPropertyNotUppercase = 12,
2244 StreamNameTooLong = 13,
2245 IllegalIdentifier = 14,
2246 IllegalYesNoValue = 15,
2247 CabCreationFailed = 16,
2248 CabExtractionFailed = 17,
2249 AppIdIncompatibleAdvertiseState = 18,
2250 IllegalAttributeWhenAdvertised = 19,
2251 ConditionExpected = 20,
2252 IllegalAttributeValue = 21,
2253 CustomActionMultipleSources = 22,
2254 CustomActionMultipleTargets = 23,
2255 CustomActionIllegalInnerText = 24,
2256 DirectoryRootWithoutName = 25,
2257 IllegalShortFilename = 26,
2258 IllegalLongFilename = 27,
2259 TableNameTooLong = 28,
2260 FeatureConfigurableDirectoryNotUppercase = 29,
2261 FeatureCannotFavorAndDisallowAdvertise = 30,
2262 FeatureCannotFollowParentAndFavorLocalOrSource = 31,
2263 MediaEmbeddedCabinetNameTooLong = 32,
2264 RegistrySubElementCannotBeRemoved = 33,
2265 RegistryMultipleValuesWithoutMultiString = 34,
2266 IllegalAttributeWithOtherAttribute = 35,
2267 IllegalAttributeWithOtherAttributes = 36,
2268 IllegalAttributeWithoutOtherAttributes = 37,
2269 IllegalAttributeValueWithoutOtherAttribute = 38,
2270 IntegralValueSentinelCollision = 39,
2271 ExampleGuid = 40,
2272 TooManyChildren = 41,
2273 ComponentMultipleKeyPaths = 42,
2274 CabClosureFailed = 43,
2275 ExpectedAttributes = 44,
2276 ExpectedAttributesWithOtherAttribute = 45,
2277 ExpectedAttributesWithoutOtherAttribute = 46,
2278 MissingTypeLibFile = 47,
2279 InvalidDocumentElement = 48,
2280 ExpectedAttributeInElementOrParent = 49,
2281 UnauthorizedAccess = 50,
2282 IllegalModuleExclusionLanguageAttributes = 51,
2283 NoFirstControlSpecified = 52,
2284 NoDataForColumn = 53,
2285 ValueAndMaskMustBeSameLength = 54,
2286 TooManySearchElements = 55,
2287 IllegalAttributeExceptOnElement = 56,
2288 SearchElementRequired = 57,
2289 MultipleIdentifiersFound = 58,
2290 AdvertiseStateMustMatch = 59,
2291 DuplicateContextValue = 60,
2292 RelativePathForRegistryElement = 61,
2293 IllegalAttributeWhenNested = 62,
2294 ExpectedElement = 63,
2295 RegistryRootInvalid = 64,
2296 IllegalYesNoDefaultValue = 65,
2297 IllegalAttributeInMergeModule = 66,
2298 GenericReadNotAllowed = 67,
2299 IllegalAttributeWithInnerText = 68,
2300 SearchElementRequiredWithAttribute = 69,
2301 CannotAuthorSpecialProperties = 70,
2302 NeedSequenceBeforeOrAfter = 72,
2303 ValueNotSupported = 73,
2304 TabbableControlNotAllowedInBillboard = 74,
2305 CheckBoxValueOnlyValidWithCheckBox = 75,
2306 CabFileDoesNotExist = 76,
2307 RadioButtonTypeInconsistent = 77,
2308 RadioButtonBitmapAndIconDisallowed = 78,
2309 IllegalSuppressWarningId = 79,
2310 PreprocessorIllegalForeachVariable = 80,
2311 PreprocessorMissingParameterPrefix = 81,
2312 PreprocessorExtensionForParameterMissing = 82,
2313 CannotFindFile = 83,
2314 BinderFileManagerMissingFile = 84,
2315 InvalidFileName = 85,
2316 ReferenceLoopDetected = 86,
2317 GuidContainsLowercaseLetters = 87,
2318 InvalidDateTimeFormat = 88,
2319 MultipleEntrySections = 89,
2320 MultipleEntrySections2 = 90,
2321 DuplicateSymbol = 91,
2322 DuplicateSymbol2 = 92,
2323 MissingEntrySection = 93,
2324 UnresolvedReference = 94,
2325 MultiplePrimaryReferences = 95,
2326 ComponentReferencedTwice = 96,
2327 DuplicateModuleFileIdentifier = 97,
2328 DuplicateModuleCaseInsensitiveFileIdentifier = 98,
2329 ImplicitComponentKeyPath = 99,
2330 DuplicateLocalizationIdentifier = 100,
2331 LocalizationVariableUnknown = 102,
2332 FileNotFound = 103,
2333 InvalidXml = 104,
2334 ProgIdNestedTooDeep = 105,
2335 CanNotHaveTwoParents = 106,
2336 SchemaValidationFailed = 107,
2337 IllegalVersionValue = 108,
2338 CustomTableNameTooLong = 109,
2339 CustomTableIllegalColumnWidth = 110,
2340 CustomTableMissingPrimaryKey = 111,
2341 TypeSpecificationForExtensionRequired = 113,
2342 FilePathRequired = 114,
2343 DirectoryPathRequired = 115,
2344 FileOrDirectoryPathRequired = 116,
2345 PathCannotContainQuote = 117,
2346 AdditionalArgumentUnexpected = 118,
2347 RegistryNameValueIncorrect = 119,
2348 FamilyNameTooLong = 120,
2349 IllegalFamilyName = 121,
2350 IllegalLongValue = 122,
2351 IntegralValueOutOfRange = 123,
2352 DuplicateExtensionXmlSchemaNamespace = 125,
2353 DuplicateExtensionTable = 126,
2354 DuplicateExtensionPreprocessorType = 127,
2355 FileInUse = 128,
2356 CannotOpenMergeModule = 129,
2357 DuplicatePrimaryKey = 130,
2358 FileIdentifierNotFound = 131,
2359 InvalidAssemblyFile = 132,
2360 ExpectedEndElement = 133,
2361 IllegalCodepage = 134,
2362 ExpectedMediaCabinet = 135,
2363 InvalidIdt = 136,
2364 InvalidSequenceTable = 137,
2365 ExpectedDirectory = 138,
2366 ComponentExpectedFeature = 139,
2367 RecursiveAction = 140,
2368 VersionMismatch = 141,
2369 UnexpectedContentNode = 142,
2370 UnexpectedColumnCount = 143,
2371 InvalidExtension = 144,
2372 InvalidSubExpression = 145,
2373 UnmatchedPreprocessorInstruction = 146,
2374 NonterminatedPreprocessorInstruction = 147,
2375 ExpectedExpressionAfterNot = 148,
2376 InvalidPreprocessorVariable = 149,
2377 UndefinedPreprocessorVariable = 150,
2378 IllegalDefineStatement = 151,
2379 VariableDeclarationCollision = 152,
2380 CannotReundefineVariable = 153,
2381 IllegalForeach = 154,
2382 IllegalParentAttributeWhenNested = 155,
2383 ExpectedEndforeach = 156,
2384 UnmatchedQuotesInExpression = 158,
2385 UnmatchedParenthesisInExpression = 159,
2386 ExpectedVariable = 160,
2387 UnexpectedLiteral = 161,
2388 IllegalIntegerInExpression = 162,
2389 UnexpectedPreprocessorOperator = 163,
2390 UnexpectedEmptySubexpression = 164,
2391 UnexpectedCustomTableColumn = 165,
2392 UnknownCustomTableColumnType = 166,
2393 IllegalFileCompressionAttributes = 167,
2394 OverridableActionCollision = 168,
2395 OverridableActionCollision2 = 169,
2396 ActionCollision = 170,
2397 ActionCollision2 = 171,
2398 SuppressNonoverridableAction = 172,
2399 SuppressNonoverridableAction2 = 173,
2400 CustomActionSequencedInModule = 174,
2401 StandardActionRelativelyScheduledInModule = 175,
2402 ActionCircularDependency = 176,
2403 ActionScheduledRelativeToTerminationAction = 177,
2404 ActionScheduledRelativeToTerminationAction2 = 178,
2405 NoUniqueActionSequenceNumber = 179,
2406 NoUniqueActionSequenceNumber2 = 180,
2407 ActionScheduledRelativeToItself = 181,
2408 MissingTableDefinition = 182,
2409 ExpectedRowInPatchCreationPackage = 183,
2410 UnexpectedTableInMergeModule = 184,
2411 UnexpectedTableInPatchCreationPackage = 185,
2412 MergeExcludedModule = 186,
2413 MergeFeatureRequired = 187,
2414 MergeLanguageFailed = 188,
2415 MergeLanguageUnsupported = 189,
2416 TableDecompilationUnimplemented = 190,
2417 CannotDefaultMismatchedAdvertiseStates = 191,
2418 VersionIndependentProgIdsCannotHaveIcons = 192,
2419 IllegalAttributeValueWithOtherAttribute = 193,
2420 InvalidMergeLanguage = 194,
2421 WixVariableCollision = 195,
2422 ExpectedWixVariableValue = 196,
2423 WixVariableUnknown = 197,
2424 IllegalWixVariablePrefix = 198,
2425 InvalidWixXmlNamespace = 199,
2426 UnhandledExtensionElement = 200,
2427 UnhandledExtensionAttribute = 201,
2428 UnsupportedExtensionAttribute = 202,
2429 UnsupportedExtensionElement = 203,
2430 ValidationError = 204,
2431 IllegalRootDirectory = 205,
2432 IllegalTargetDirDefaultDir = 206,
2433 TooManyElements = 207,
2434 ExpectedBinaryCategory = 208,
2435 RootFeatureCannotFollowParent = 209,
2436 FeatureNameTooLong = 210,
2437 SignedEmbeddedCabinet = 211,
2438 ExpectedSignedCabinetName = 212,
2439 IllegalInlineLocVariable = 213,
2440 MergeModuleExpectedFeature = 215,
2441 Win32Exception = 216,
2442 UnexpectedExternalUIMessage = 217,
2443 IllegalCabbingThreadCount = 218,
2444 IllegalEnvironmentVariable = 219,
2445 InvalidKeyColumn = 220,
2446 CollidingModularizationTypes = 221,
2447 CubeFileNotFound = 222,
2448 OpenDatabaseFailed = 223,
2449 OutputTypeMismatch = 224,
2450 RealTableMissingPrimaryKeyColumn = 225,
2451 IllegalColumnName = 226,
2452 NoDifferencesInTransform = 227,
2453 OutputCodepageMismatch = 228,
2454 OutputCodepageMismatch2 = 229,
2455 IllegalComponentWithAutoGeneratedGuid = 230,
2456 IllegalPathForGeneratedComponentGuid = 231,
2457 IllegalTerminalServerCustomActionAttributes = 232,
2458 IllegalPropertyCustomActionAttributes = 233,
2459 InvalidPreprocessorFunction = 234,
2460 UndefinedPreprocessorFunction = 235,
2461 PreprocessorExtensionEvaluateFunctionFailed = 236,
2462 PreprocessorExtensionGetVariableValueFailed = 237,
2463 InvalidManifestContent = 238,
2464 InvalidWixTransform = 239,
2465 UnexpectedFileExtension = 240,
2466 UnexpectedTableInPatch = 241,
2467 InvalidProductVersion = 242,
2468 InvalidKeypathChange = 243,
2469 MissingValidatorExtension = 244,
2470 InvalidValidatorMessageType = 245,
2471 PatchWithoutTransforms = 246,
2472 SingleExtensionSupported = 247,
2473 DuplicateTransform = 248,
2474 BaselineRequired = 249,
2475 PreprocessorError = 250,
2476 ExpectedArgument = 251,
2477 PatchWithoutValidTransforms = 252,
2478 ExpectedDecompiler = 253,
2479 ExpectedTableInMergeModule = 254,
2480 UnexpectedElementWithAttributeValue = 255,
2481 ExpectedPatchIdInWixMsp = 256,
2482 ExpectedMediaRowsInWixMsp = 257,
2483 WixFileNotFound = 258,
2484 ExpectedClientPatchIdInWixMsp = 259,
2485 NewRowAddedInTable = 260,
2486 PatchNotRemovable = 261,
2487 PathTooLong = 262,
2488 FileTooLarge = 263,
2489 InvalidPlatformParameter = 264,
2490 InvalidPlatformValue = 265,
2491 IllegalValidationArguments = 266,
2492 OrphanedComponent = 267,
2493 IllegalCommandlineArgumentCombination = 268,
2494 ProductCodeInvalidForTransform = 269,
2495 InsertInvalidSequenceActionOrder = 270,
2496 InsertSequenceNoSpace = 271,
2497 MissingManifestForWin32Assembly = 272,
2498 UnableToOpenModule = 273,
2499 ExpectedAttributeWhenElementNotUnderElement = 274,
2500 IllegalIdentifierLooksLikeFormatted = 275,
2501 IllegalCodepageAttribute = 276,
2502 IllegalCompressionLevel = 277,
2503 TransformSchemaMismatch = 278,
2504 DatabaseSchemaMismatch = 279,
2505 ExpectedDirectoryGotFile = 280,
2506 ExpectedFileGotDirectory = 281,
2507 GacAssemblyNoStrongName = 282,
2508 FileWriteError = 283,
2509 InvalidCommandLineFileName = 284,
2510 ExpectedParentWithAttribute = 285,
2511 IllegalWarningIdAsError = 286,
2512 ExpectedAttributeOrElement = 287,
2513 DuplicateVariableDefinition = 288,
2514 InvalidVariableDefinition = 289,
2515 DuplicateCabinetName = 290,
2516 DuplicateCabinetName2 = 291,
2517 InvalidAddedFileRowWithoutSequence = 292,
2518 DuplicateFileId = 293,
2519 FullTempDirectory = 294,
2520 CreateCabAddFileFailed = 296,
2521 CreateCabInsufficientDiskSpace = 297,
2522 UnresolvedBindReference = 298,
2523 GACAssemblyIdentityWarning = 299,
2524 IllegalCharactersInPath = 300,
2525 ValidationFailedToOpenDatabase = 301,
2526 MustSpecifyOutputWithMoreThanOneInput = 302,
2527 IllegalSearchIdForParentDepth = 303,
2528 IdentifierTooLongError = 304,
2529 InvalidRemoveComponent = 305,
2530 FinishCabFailed = 306,
2531 InvalidExtensionType = 307,
2532 ValidationFailedDueToMultilanguageMergeModule = 309,
2533 ValidationFailedDueToInvalidPackage = 310,
2534 InvalidStringForCodepage = 311,
2535 InvalidEmbeddedUIFileName = 312,
2536 UniqueFileSearchIdRequired = 313,
2537 IllegalAttributeValueWhenNested = 314,
2538 AdminImageRequired = 315,
2539 SamePatchBaselineId = 316,
2540 SameFileIdDifferentSource = 317,
2541 HarvestSourceNotSpecified = 318,
2542 OutputTargetNotSpecified = 319,
2543 DuplicateCommandLineOptionInExtension = 320,
2544 HarvestTypeNotFound = 321,
2545 BothUpgradeCodesRequired = 322,
2546 IllegalBinderClassName = 323,
2547 SpecifiedBinderNotFound = 324,
2548 CannotLoadBinderFileManager = 325,
2549 CannotLoadLinkerExtension = 326,
2550 UnableToGetAuthenticodeCertOfFile = 327,
2551 UnableToGetAuthenticodeCertOfFileDownlevelOS = 328,
2552 ReadOnlyOutputFile = 329,
2553 CannotDefaultComponentId = 330,
2554 ParentElementAttributeRequired = 331,
2555 PreprocessorExtensionPragmaFailed = 333,
2556 InvalidPreprocessorPragma = 334,
2557 SmokeUnknownFileExtension = 335,
2558 SmokeUnsupportedFileExtension = 336,
2559 SmokeMalformedPath = 337,
2560 InvalidStubExe = 338,
2561 StubMissingWixburnSection = 339,
2562 StubWixburnSectionTooSmall = 340,
2563 MissingBundleInformation = 341,
2564 UnexpectedGroupChild = 342,
2565 OrderingReferenceLoopDetected = 343,
2566 IdentifierNotFound = 344,
2567 MergePlatformMismatch = 345,
2568 IllegalRelativeLongFilename = 346,
2569 IllegalAttributeValueWithLegalList = 347,
2570 IllegalAttributeValueWithIllegalList = 348,
2571 InvalidSummaryInfoCodePage = 349,
2572 ValidationFailedDueToLowMsiEngine = 350,
2573 DuplicateSourcesForOutput = 351,
2574 UnableToReadPackageInformation = 352,
2575 MultipleFilesMatchedWithOutputSpecification = 353,
2576 InvalidBundle = 354,
2577 BundleTooNew = 355,
2578 WrongFileExtensionForNumberOfInputs = 356,
2579 MediaTableCollision = 357,
2580 InvalidCabinetTemplate = 358,
2581 MaximumUncompressedMediaSizeTooLarge = 359,
2582 CatalogVerificationFailed = 360,
2583 CatalogFileHashFailed = 361,
2584 ReservedNamespaceViolation = 362,
2585 PerUserButAllUsersEquals1 = 363,
2586 UnsupportedAllUsersValue = 364,
2587 DisallowedMsiProperty = 365,
2588 MissingOrInvalidModuleInstallerVersion = 366,
2589 IllegalGeneratedGuidComponentUnversionedKeypath = 367,
2590 IllegalGeneratedGuidComponentVersionedNonkeypath = 368,
2591 DuplicateComponentGuids = 369,
2592 DuplicateProviderDependencyKey = 370,
2593 MissingDependencyVersion = 371,
2594 UnexpectedElementWithAttribute = 372,
2595 ExpectedAttributeWithElement = 373,
2596 DuplicatedUiLocalization = 374,
2597 MaximumCabinetSizeForLargeFileSplittingTooLarge = 375,
2598 SplitCabinetCopyRegistrationFailed = 376,
2599 SplitCabinetNameCollision = 377,
2600 SplitCabinetInsertionFailed = 378,
2601 InvalidPreprocessorFunctionAutoVersion = 379,
2602 InvalidModuleOrBundleVersion = 380,
2603 UnsupportedPlatformForElement = 381,
2604 MissingMedia = 382,
2605 RemotePayloadUnsupported = 383,
2606 IllegalYesNoAlwaysValue = 384,
2607 TooDeeplyIncluded = 385,
2608 TooManyColumnsInRealTable = 386,
2609 InlineDirectorySyntaxRequiresPath = 387,
2610 InsecureBundleFilename = 388,
2611 PayloadMustBeRelativeToCache = 389,
2612 MsiTransactionX86BeforeX64 = 390,
2613 }
2614 }
2615}