diff options
| author | Mark Stega <mark2002@stega.us> | 2022-01-20 15:47:44 -0500 |
|---|---|---|
| committer | Rob Mensching <rob@firegiant.com> | 2022-03-05 13:01:33 -0800 |
| commit | 08b1dd325761edf6bdc2bca38d614611f3eaaa66 (patch) | |
| tree | 65e245cf9b3d7f6eea86503ad2fbe6ad20366596 /src | |
| parent | b6c0360f825c6f5dd11be04b4087a0a52d51a250 (diff) | |
| download | wix-08b1dd325761edf6bdc2bca38d614611f3eaaa66.tar.gz wix-08b1dd325761edf6bdc2bca38d614611f3eaaa66.tar.bz2 wix-08b1dd325761edf6bdc2bca38d614611f3eaaa66.zip | |
Changed the coverter to use Messages rather than Errors
Diffstat (limited to 'src')
| -rw-r--r-- | src/wix/WixToolset.Converters/WixConverter.cs | 213 |
1 files changed, 127 insertions, 86 deletions
diff --git a/src/wix/WixToolset.Converters/WixConverter.cs b/src/wix/WixToolset.Converters/WixConverter.cs index 5dae29b7..183a7394 100644 --- a/src/wix/WixToolset.Converters/WixConverter.cs +++ b/src/wix/WixToolset.Converters/WixConverter.cs | |||
| @@ -279,7 +279,7 @@ namespace WixToolset.Converters | |||
| 279 | 279 | ||
| 280 | private CustomTableTarget CustomTableSetting { get; } | 280 | private CustomTableTarget CustomTableSetting { get; } |
| 281 | 281 | ||
| 282 | private int Errors { get; set; } | 282 | private int Messages { get; set; } |
| 283 | 283 | ||
| 284 | private HashSet<ConverterTestType> ErrorsAsWarnings { get; set; } | 284 | private HashSet<ConverterTestType> ErrorsAsWarnings { get; set; } |
| 285 | 285 | ||
| @@ -301,8 +301,8 @@ namespace WixToolset.Converters | |||
| 301 | /// Convert a file. | 301 | /// Convert a file. |
| 302 | /// </summary> | 302 | /// </summary> |
| 303 | /// <param name="sourceFile">The file to convert.</param> | 303 | /// <param name="sourceFile">The file to convert.</param> |
| 304 | /// <param name="saveConvertedFile">Option to save the converted errors that are found.</param> | 304 | /// <param name="saveConvertedFile">Option to save the converted Messages that are found.</param> |
| 305 | /// <returns>The number of errors found.</returns> | 305 | /// <returns>The number of Messages found.</returns> |
| 306 | public int ConvertFile(string sourceFile, bool saveConvertedFile) | 306 | public int ConvertFile(string sourceFile, bool saveConvertedFile) |
| 307 | { | 307 | { |
| 308 | var document = this.OpenSourceFile(sourceFile); | 308 | var document = this.OpenSourceFile(sourceFile); |
| @@ -314,30 +314,30 @@ namespace WixToolset.Converters | |||
| 314 | 314 | ||
| 315 | this.ConvertDocument(document); | 315 | this.ConvertDocument(document); |
| 316 | 316 | ||
| 317 | // Fix errors if requested and necessary. | 317 | // Fix Messages if requested and necessary. |
| 318 | if (saveConvertedFile && 0 < this.Errors) | 318 | if (saveConvertedFile && 0 < this.Messages) |
| 319 | { | 319 | { |
| 320 | this.SaveDocument(document); | 320 | this.SaveDocument(document); |
| 321 | } | 321 | } |
| 322 | 322 | ||
| 323 | return this.Errors; | 323 | return this.Messages; |
| 324 | } | 324 | } |
| 325 | 325 | ||
| 326 | /// <summary> | 326 | /// <summary> |
| 327 | /// Convert a document. | 327 | /// Convert a document. |
| 328 | /// </summary> | 328 | /// </summary> |
| 329 | /// <param name="document">The document to convert.</param> | 329 | /// <param name="document">The document to convert.</param> |
| 330 | /// <returns>The number of errors found.</returns> | 330 | /// <returns>The number of Messages found.</returns> |
| 331 | public int ConvertDocument(XDocument document) | 331 | public int ConvertDocument(XDocument document) |
| 332 | { | 332 | { |
| 333 | // Reset the instance info. | 333 | // Reset the instance info. |
| 334 | this.Errors = 0; | 334 | this.Messages = 0; |
| 335 | this.SourceVersion = 0; | 335 | this.SourceVersion = 0; |
| 336 | this.Operation = ConvertOperation.Convert; | 336 | this.Operation = ConvertOperation.Convert; |
| 337 | 337 | ||
| 338 | // Remove the declaration. | 338 | // Remove the declaration. |
| 339 | if (null != document.Declaration | 339 | if (null != document.Declaration |
| 340 | && this.OnError(ConverterTestType.DeclarationPresent, null, "This file contains an XML declaration on the first line.")) | 340 | && this.OnInformation(ConverterTestType.DeclarationPresent, null, "This file contains an XML declaration on the first line.")) |
| 341 | { | 341 | { |
| 342 | document.Declaration = null; | 342 | document.Declaration = null; |
| 343 | TrimLeadingText(document); | 343 | TrimLeadingText(document); |
| @@ -349,15 +349,15 @@ namespace WixToolset.Converters | |||
| 349 | this.ConvertNodes(document.Nodes(), 0); | 349 | this.ConvertNodes(document.Nodes(), 0); |
| 350 | this.RemoveUnusedNamespaces(document.Root); | 350 | this.RemoveUnusedNamespaces(document.Root); |
| 351 | 351 | ||
| 352 | return this.Errors; | 352 | return this.Messages; |
| 353 | } | 353 | } |
| 354 | 354 | ||
| 355 | /// <summary> | 355 | /// <summary> |
| 356 | /// Format a file. | 356 | /// Format a file. |
| 357 | /// </summary> | 357 | /// </summary> |
| 358 | /// <param name="sourceFile">The file to format.</param> | 358 | /// <param name="sourceFile">The file to format.</param> |
| 359 | /// <param name="saveConvertedFile">Option to save the format errors that are found.</param> | 359 | /// <param name="saveConvertedFile">Option to save the format Messages that are found.</param> |
| 360 | /// <returns>The number of errors found.</returns> | 360 | /// <returns>The number of Messages found.</returns> |
| 361 | public int FormatFile(string sourceFile, bool saveConvertedFile) | 361 | public int FormatFile(string sourceFile, bool saveConvertedFile) |
| 362 | { | 362 | { |
| 363 | var document = this.OpenSourceFile(sourceFile); | 363 | var document = this.OpenSourceFile(sourceFile); |
| @@ -369,30 +369,30 @@ namespace WixToolset.Converters | |||
| 369 | 369 | ||
| 370 | this.FormatDocument(document); | 370 | this.FormatDocument(document); |
| 371 | 371 | ||
| 372 | // Fix errors if requested and necessary. | 372 | // Fix Messages if requested and necessary. |
| 373 | if (saveConvertedFile && 0 < this.Errors) | 373 | if (saveConvertedFile && 0 < this.Messages) |
| 374 | { | 374 | { |
| 375 | this.SaveDocument(document); | 375 | this.SaveDocument(document); |
| 376 | } | 376 | } |
| 377 | 377 | ||
| 378 | return this.Errors; | 378 | return this.Messages; |
| 379 | } | 379 | } |
| 380 | 380 | ||
| 381 | /// <summary> | 381 | /// <summary> |
| 382 | /// Format a document. | 382 | /// Format a document. |
| 383 | /// </summary> | 383 | /// </summary> |
| 384 | /// <param name="document">The document to format.</param> | 384 | /// <param name="document">The document to format.</param> |
| 385 | /// <returns>The number of errors found.</returns> | 385 | /// <returns>The number of Messages found.</returns> |
| 386 | public int FormatDocument(XDocument document) | 386 | public int FormatDocument(XDocument document) |
| 387 | { | 387 | { |
| 388 | // Reset the instance info. | 388 | // Reset the instance info. |
| 389 | this.Errors = 0; | 389 | this.Messages = 0; |
| 390 | this.SourceVersion = 0; | 390 | this.SourceVersion = 0; |
| 391 | this.Operation = ConvertOperation.Format; | 391 | this.Operation = ConvertOperation.Format; |
| 392 | 392 | ||
| 393 | // Remove the declaration. | 393 | // Remove the declaration. |
| 394 | if (null != document.Declaration | 394 | if (null != document.Declaration |
| 395 | && this.OnError(ConverterTestType.DeclarationPresent, null, "This file contains an XML declaration on the first line.")) | 395 | && this.OnInformation(ConverterTestType.DeclarationPresent, null, "This file contains an XML declaration on the first line.")) |
| 396 | { | 396 | { |
| 397 | document.Declaration = null; | 397 | document.Declaration = null; |
| 398 | TrimLeadingText(document); | 398 | TrimLeadingText(document); |
| @@ -402,7 +402,7 @@ namespace WixToolset.Converters | |||
| 402 | this.ConvertNodes(document.Nodes(), 0); | 402 | this.ConvertNodes(document.Nodes(), 0); |
| 403 | this.RemoveUnusedNamespaces(document.Root); | 403 | this.RemoveUnusedNamespaces(document.Root); |
| 404 | 404 | ||
| 405 | return this.Errors; | 405 | return this.Messages; |
| 406 | } | 406 | } |
| 407 | 407 | ||
| 408 | private XDocument OpenSourceFile(string sourceFile) | 408 | private XDocument OpenSourceFile(string sourceFile) |
| @@ -521,7 +521,7 @@ namespace WixToolset.Converters | |||
| 521 | { | 521 | { |
| 522 | var message = testType == ConverterTestType.WhitespacePrecedingEndElementWrong ? "The whitespace preceding this end element is incorrect." : "The whitespace preceding this node is incorrect."; | 522 | var message = testType == ConverterTestType.WhitespacePrecedingEndElementWrong ? "The whitespace preceding this end element is incorrect." : "The whitespace preceding this node is incorrect."; |
| 523 | 523 | ||
| 524 | if (this.OnError(testType, node, message)) | 524 | if (this.OnInformation(testType, node, message)) |
| 525 | { | 525 | { |
| 526 | WixConverter.FixupWhitespace(this.IndentationAmount, level, whitespace); | 526 | WixConverter.FixupWhitespace(this.IndentationAmount, level, whitespace); |
| 527 | } | 527 | } |
| @@ -534,7 +534,7 @@ namespace WixToolset.Converters | |||
| 534 | { | 534 | { |
| 535 | var message = testType == ConverterTestType.WhitespacePrecedingEndElementWrong ? "The whitespace preceding this end element is incorrect." : "The whitespace preceding this node is incorrect."; | 535 | var message = testType == ConverterTestType.WhitespacePrecedingEndElementWrong ? "The whitespace preceding this end element is incorrect." : "The whitespace preceding this node is incorrect."; |
| 536 | 536 | ||
| 537 | if (this.OnError(testType, node, message)) | 537 | if (this.OnInformation(testType, node, message)) |
| 538 | { | 538 | { |
| 539 | whitespace.Remove(); | 539 | whitespace.Remove(); |
| 540 | } | 540 | } |
| @@ -563,7 +563,7 @@ namespace WixToolset.Converters | |||
| 563 | 563 | ||
| 564 | if (WixConverter.OldToNewNamespaceMapping.TryGetValue(declaration.Value, out var ns)) | 564 | if (WixConverter.OldToNewNamespaceMapping.TryGetValue(declaration.Value, out var ns)) |
| 565 | { | 565 | { |
| 566 | if (this.OnError(ConverterTestType.XmlnsValueWrong, declaration, "The namespace '{0}' is out of date. It must be '{1}'.", declaration.Value, ns.NamespaceName)) | 566 | if (this.OnInformation(ConverterTestType.XmlnsValueWrong, declaration, "The namespace '{0}' is out of date. It must be '{1}'.", declaration.Value, ns.NamespaceName)) |
| 567 | { | 567 | { |
| 568 | deprecatedToUpdatedNamespaces.Add(declaration.Value, ns); | 568 | deprecatedToUpdatedNamespaces.Add(declaration.Value, ns); |
| 569 | } | 569 | } |
| @@ -597,7 +597,7 @@ namespace WixToolset.Converters | |||
| 597 | { | 597 | { |
| 598 | var xUseUILanguages = element.Attribute(BalUseUILanguagesName); | 598 | var xUseUILanguages = element.Attribute(BalUseUILanguagesName); |
| 599 | if (xUseUILanguages != null && | 599 | if (xUseUILanguages != null && |
| 600 | this.OnError(ConverterTestType.BalUseUILanguagesDeprecated, element, "bal:UseUILanguages is deprecated, 'true' is now the standard behavior.")) | 600 | this.OnInformation(ConverterTestType.BalUseUILanguagesDeprecated, element, "bal:UseUILanguages is deprecated, 'true' is now the standard behavior.")) |
| 601 | { | 601 | { |
| 602 | xUseUILanguages.Remove(); | 602 | xUseUILanguages.Remove(); |
| 603 | } | 603 | } |
| @@ -669,7 +669,7 @@ namespace WixToolset.Converters | |||
| 669 | 669 | ||
| 670 | bool CreateBADllElement(XObject node, out XElement xCreatedBADll) | 670 | bool CreateBADllElement(XObject node, out XElement xCreatedBADll) |
| 671 | { | 671 | { |
| 672 | var create = this.OnError(ConverterTestType.BootstrapperApplicationDll, node, "The bootstrapper application dll is now specified in the BootstrapperApplicationDll element."); | 672 | var create = this.OnInformation(ConverterTestType.BootstrapperApplicationDll, node, "The bootstrapper application dll is now specified in the BootstrapperApplicationDll element."); |
| 673 | xCreatedBADll = create ? new XElement(BootstrapperApplicationDllElementName) : null; | 673 | xCreatedBADll = create ? new XElement(BootstrapperApplicationDllElementName) : null; |
| 674 | return create; | 674 | return create; |
| 675 | } | 675 | } |
| @@ -679,7 +679,7 @@ namespace WixToolset.Converters | |||
| 679 | { | 679 | { |
| 680 | var xUseUILanguages = element.Attribute(BalUseUILanguagesName); | 680 | var xUseUILanguages = element.Attribute(BalUseUILanguagesName); |
| 681 | if (xUseUILanguages != null && | 681 | if (xUseUILanguages != null && |
| 682 | this.OnError(ConverterTestType.BalUseUILanguagesDeprecated, element, "bal:UseUILanguages is deprecated, 'true' is now the standard behavior.")) | 682 | this.OnInformation(ConverterTestType.BalUseUILanguagesDeprecated, element, "bal:UseUILanguages is deprecated, 'true' is now the standard behavior.")) |
| 683 | { | 683 | { |
| 684 | xUseUILanguages.Remove(); | 684 | xUseUILanguages.Remove(); |
| 685 | } | 685 | } |
| @@ -781,7 +781,7 @@ namespace WixToolset.Converters | |||
| 781 | 781 | ||
| 782 | private void ConvertCatalogElement(XElement element) | 782 | private void ConvertCatalogElement(XElement element) |
| 783 | { | 783 | { |
| 784 | if (this.OnError(ConverterTestType.BundleSignatureValidationObsolete, element, "The Catalog element is obsolete. Signature validation is no longer supported. The element will be removed.")) | 784 | if (this.OnInformation(ConverterTestType.BundleSignatureValidationObsolete, element, "The Catalog element is obsolete. Signature validation is no longer supported. The element will be removed.")) |
| 785 | { | 785 | { |
| 786 | element.Remove(); | 786 | element.Remove(); |
| 787 | } | 787 | } |
| @@ -817,7 +817,7 @@ namespace WixToolset.Converters | |||
| 817 | var bootstrapperApplicationData = element.Attribute("BootstrapperApplicationData"); | 817 | var bootstrapperApplicationData = element.Attribute("BootstrapperApplicationData"); |
| 818 | if (bootstrapperApplicationData?.Value == "no") | 818 | if (bootstrapperApplicationData?.Value == "no") |
| 819 | { | 819 | { |
| 820 | if (this.OnError(ConverterTestType.BootstrapperApplicationDataDeprecated, element, "The CustomTable element contains deprecated '{0}' attribute. Use the 'Unreal' attribute instead.", bootstrapperApplicationData.Name)) | 820 | if (this.OnInformation(ConverterTestType.BootstrapperApplicationDataDeprecated, element, "The CustomTable element contains deprecated '{0}' attribute. Use the 'Unreal' attribute instead.", bootstrapperApplicationData.Name)) |
| 821 | { | 821 | { |
| 822 | bootstrapperApplicationData.Remove(); | 822 | bootstrapperApplicationData.Remove(); |
| 823 | } | 823 | } |
| @@ -858,14 +858,14 @@ namespace WixToolset.Converters | |||
| 858 | switch (this.CustomTableSetting) | 858 | switch (this.CustomTableSetting) |
| 859 | { | 859 | { |
| 860 | case CustomTableTarget.Bundle: | 860 | case CustomTableTarget.Bundle: |
| 861 | if (this.OnError(ConverterTestType.CustomTableRef, element, "CustomTable elements that don't contain the table definition are now BundleCustomDataRef for Bundles.")) | 861 | if (this.OnInformation(ConverterTestType.CustomTableRef, element, "CustomTable elements that don't contain the table definition are now BundleCustomDataRef for Bundles.")) |
| 862 | { | 862 | { |
| 863 | element.Name = WixConverter.BundleCustomDataRefElementName; | 863 | element.Name = WixConverter.BundleCustomDataRefElementName; |
| 864 | this.ConvertCustomTableElementToBundle(element); | 864 | this.ConvertCustomTableElementToBundle(element); |
| 865 | } | 865 | } |
| 866 | break; | 866 | break; |
| 867 | case CustomTableTarget.Msi: | 867 | case CustomTableTarget.Msi: |
| 868 | if (this.OnError(ConverterTestType.CustomTableRef, element, "CustomTable elements that don't contain the table definition are now CustomTableRef for MSI.")) | 868 | if (this.OnInformation(ConverterTestType.CustomTableRef, element, "CustomTable elements that don't contain the table definition are now CustomTableRef for MSI.")) |
| 869 | { | 869 | { |
| 870 | element.Name = WixConverter.CustomTableRefElementName; | 870 | element.Name = WixConverter.CustomTableRefElementName; |
| 871 | } | 871 | } |
| @@ -925,7 +925,7 @@ namespace WixToolset.Converters | |||
| 925 | var action = UppercaseFirstChar(xCondition.Attribute("Action")?.Value); | 925 | var action = UppercaseFirstChar(xCondition.Attribute("Action")?.Value); |
| 926 | if (!String.IsNullOrEmpty(action) && | 926 | if (!String.IsNullOrEmpty(action) && |
| 927 | TryGetInnerText(xCondition, out var text) && | 927 | TryGetInnerText(xCondition, out var text) && |
| 928 | this.OnError(ConverterTestType.InnerTextDeprecated, element, "Using {0} element text is deprecated. Use the '{1}Condition' attribute instead.", xCondition.Name.LocalName, action)) | 928 | this.OnInformation(ConverterTestType.InnerTextDeprecated, element, "Using {0} element text is deprecated. Use the '{1}Condition' attribute instead.", xCondition.Name.LocalName, action)) |
| 929 | { | 929 | { |
| 930 | element.Add(new XAttribute(action + "Condition", text)); | 930 | element.Add(new XAttribute(action + "Condition", text)); |
| 931 | remove.Add(xCondition); | 931 | remove.Add(xCondition); |
| @@ -943,7 +943,7 @@ namespace WixToolset.Converters | |||
| 943 | var guid = element.Attribute("Guid"); | 943 | var guid = element.Attribute("Guid"); |
| 944 | if (guid != null && guid.Value == "*") | 944 | if (guid != null && guid.Value == "*") |
| 945 | { | 945 | { |
| 946 | if (this.OnError(ConverterTestType.AutoGuidUnnecessary, element, "Using '*' for the Component Guid attribute is unnecessary. Remove the attribute to remove the redundancy.")) | 946 | if (this.OnInformation(ConverterTestType.AutoGuidUnnecessary, element, "Using '*' for the Component Guid attribute is unnecessary. Remove the attribute to remove the redundancy.")) |
| 947 | { | 947 | { |
| 948 | guid.Remove(); | 948 | guid.Remove(); |
| 949 | } | 949 | } |
| @@ -953,7 +953,7 @@ namespace WixToolset.Converters | |||
| 953 | if (xCondition != null) | 953 | if (xCondition != null) |
| 954 | { | 954 | { |
| 955 | if (TryGetInnerText(xCondition, out var text) && | 955 | if (TryGetInnerText(xCondition, out var text) && |
| 956 | this.OnError(ConverterTestType.InnerTextDeprecated, element, "Using {0} element text is deprecated. Use the 'Condition' attribute instead.", xCondition.Name.LocalName)) | 956 | this.OnInformation(ConverterTestType.InnerTextDeprecated, element, "Using {0} element text is deprecated. Use the 'Condition' attribute instead.", xCondition.Name.LocalName)) |
| 957 | { | 957 | { |
| 958 | element.Add(new XAttribute("Condition", text)); | 958 | element.Add(new XAttribute("Condition", text)); |
| 959 | xCondition.Remove(); | 959 | xCondition.Remove(); |
| @@ -971,7 +971,7 @@ namespace WixToolset.Converters | |||
| 971 | if (null != attribute) | 971 | if (null != attribute) |
| 972 | { | 972 | { |
| 973 | var shortName = attribute.Value; | 973 | var shortName = attribute.Value; |
| 974 | if (this.OnError(ConverterTestType.AssignDirectoryNameFromShortName, element, "The directory ShortName attribute is being renamed to Name since Name wasn't specified for value '{0}'", shortName)) | 974 | if (this.OnInformation(ConverterTestType.AssignDirectoryNameFromShortName, element, "The directory ShortName attribute is being renamed to Name since Name wasn't specified for value '{0}'", shortName)) |
| 975 | { | 975 | { |
| 976 | element.Add(new XAttribute("Name", shortName)); | 976 | element.Add(new XAttribute("Name", shortName)); |
| 977 | attribute.Remove(); | 977 | attribute.Remove(); |
| @@ -982,7 +982,7 @@ namespace WixToolset.Converters | |||
| 982 | var id = element.Attribute("Id")?.Value; | 982 | var id = element.Attribute("Id")?.Value; |
| 983 | 983 | ||
| 984 | if (id == "TARGETDIR" && | 984 | if (id == "TARGETDIR" && |
| 985 | this.OnError(ConverterTestType.TargetDirDeprecated, element, "The TARGETDIR directory should not longer be explicitly defined. Remove the Directory element with Id attribute 'TARGETDIR'.")) | 985 | this.OnInformation(ConverterTestType.TargetDirDeprecated, element, "The TARGETDIR directory should not longer be explicitly defined. Remove the Directory element with Id attribute 'TARGETDIR'.")) |
| 986 | { | 986 | { |
| 987 | var parentElement = element.Parent; | 987 | var parentElement = element.Parent; |
| 988 | 988 | ||
| @@ -1007,7 +1007,7 @@ namespace WixToolset.Converters | |||
| 1007 | } | 1007 | } |
| 1008 | else if (id != null && | 1008 | else if (id != null && |
| 1009 | WindowsInstallerStandard.IsStandardDirectory(id) && | 1009 | WindowsInstallerStandard.IsStandardDirectory(id) && |
| 1010 | this.OnError(ConverterTestType.DefiningStandardDirectoryDeprecated, element, "Standard directories such as '{0}' should no longer be defined using the Directory element. Use the StandardDirectory element instead.", id)) | 1010 | this.OnInformation(ConverterTestType.DefiningStandardDirectoryDeprecated, element, "Standard directories such as '{0}' should no longer be defined using the Directory element. Use the StandardDirectory element instead.", id)) |
| 1011 | { | 1011 | { |
| 1012 | element.Name = StandardDirectoryElementName; | 1012 | element.Name = StandardDirectoryElementName; |
| 1013 | 1013 | ||
| @@ -1022,7 +1022,7 @@ namespace WixToolset.Converters | |||
| 1022 | { | 1022 | { |
| 1023 | var xAbsent = element.Attribute("Absent"); | 1023 | var xAbsent = element.Attribute("Absent"); |
| 1024 | if (xAbsent != null && | 1024 | if (xAbsent != null && |
| 1025 | this.OnError(ConverterTestType.FeatureAbsentAttributeReplaced, element, "The Feature element's Absent attribute has been replaced with the AllowAbsent attribute. Use the 'AllowAbsent' attribute instead.")) | 1025 | this.OnInformation(ConverterTestType.FeatureAbsentAttributeReplaced, element, "The Feature element's Absent attribute has been replaced with the AllowAbsent attribute. Use the 'AllowAbsent' attribute instead.")) |
| 1026 | { | 1026 | { |
| 1027 | if (xAbsent.Value == "disallow") | 1027 | if (xAbsent.Value == "disallow") |
| 1028 | { | 1028 | { |
| @@ -1035,12 +1035,12 @@ namespace WixToolset.Converters | |||
| 1035 | if (xAllowAdvertise != null) | 1035 | if (xAllowAdvertise != null) |
| 1036 | { | 1036 | { |
| 1037 | if ((xAllowAdvertise.Value == "system" || xAllowAdvertise.Value == "allow") && | 1037 | if ((xAllowAdvertise.Value == "system" || xAllowAdvertise.Value == "allow") && |
| 1038 | this.OnError(ConverterTestType.FeatureAllowAdvertiseValueDeprecated, element, "The AllowAdvertise attribute's '{0}' value is deprecated. Set the value to 'yes' instead.", xAllowAdvertise.Value)) | 1038 | this.OnInformation(ConverterTestType.FeatureAllowAdvertiseValueDeprecated, element, "The AllowAdvertise attribute's '{0}' value is deprecated. Set the value to 'yes' instead.", xAllowAdvertise.Value)) |
| 1039 | { | 1039 | { |
| 1040 | xAllowAdvertise.Value = "yes"; | 1040 | xAllowAdvertise.Value = "yes"; |
| 1041 | } | 1041 | } |
| 1042 | else if (xAllowAdvertise.Value == "disallow" && | 1042 | else if (xAllowAdvertise.Value == "disallow" && |
| 1043 | this.OnError(ConverterTestType.FeatureAllowAdvertiseValueDeprecated, element, "The AllowAdvertise attribute's '{0}' value is deprecated. Remove the value instead.", xAllowAdvertise.Value)) | 1043 | this.OnInformation(ConverterTestType.FeatureAllowAdvertiseValueDeprecated, element, "The AllowAdvertise attribute's '{0}' value is deprecated. Remove the value instead.", xAllowAdvertise.Value)) |
| 1044 | { | 1044 | { |
| 1045 | xAllowAdvertise.Remove(); | 1045 | xAllowAdvertise.Remove(); |
| 1046 | } | 1046 | } |
| @@ -1052,7 +1052,7 @@ namespace WixToolset.Converters | |||
| 1052 | var level = xCondition.Attribute("Level")?.Value; | 1052 | var level = xCondition.Attribute("Level")?.Value; |
| 1053 | if (!String.IsNullOrEmpty(level) && | 1053 | if (!String.IsNullOrEmpty(level) && |
| 1054 | TryGetInnerText(xCondition, out var text) && | 1054 | TryGetInnerText(xCondition, out var text) && |
| 1055 | this.OnError(ConverterTestType.InnerTextDeprecated, element, "Using {0} element text is deprecated. Use the 'Level' element instead.", xCondition.Name.LocalName)) | 1055 | this.OnInformation(ConverterTestType.InnerTextDeprecated, element, "Using {0} element text is deprecated. Use the 'Level' element instead.", xCondition.Name.LocalName)) |
| 1056 | { | 1056 | { |
| 1057 | xCondition.AddAfterSelf(new XElement(LevelElementName, | 1057 | xCondition.AddAfterSelf(new XElement(LevelElementName, |
| 1058 | new XAttribute("Value", level), | 1058 | new XAttribute("Value", level), |
| @@ -1078,7 +1078,7 @@ namespace WixToolset.Converters | |||
| 1078 | { | 1078 | { |
| 1079 | var name = Path.GetFileName(attribute.Value); | 1079 | var name = Path.GetFileName(attribute.Value); |
| 1080 | 1080 | ||
| 1081 | if (this.OnError(ConverterTestType.AssignAnonymousFileId, element, "The file id is being updated to '{0}' to ensure it remains the same as the v3 default", name)) | 1081 | if (this.OnInformation(ConverterTestType.AssignAnonymousFileId, element, "The file id is being updated to '{0}' to ensure it remains the same as the v3 default", name)) |
| 1082 | { | 1082 | { |
| 1083 | IEnumerable<XAttribute> attributes = element.Attributes().ToList(); | 1083 | IEnumerable<XAttribute> attributes = element.Attributes().ToList(); |
| 1084 | element.RemoveAttributes(); | 1084 | element.RemoveAttributes(); |
| @@ -1099,7 +1099,7 @@ namespace WixToolset.Converters | |||
| 1099 | 1099 | ||
| 1100 | if (!String.IsNullOrEmpty(message) && | 1100 | if (!String.IsNullOrEmpty(message) && |
| 1101 | TryGetInnerText(xCondition, out var text) && | 1101 | TryGetInnerText(xCondition, out var text) && |
| 1102 | this.OnError(ConverterTestType.InnerTextDeprecated, element, "Using {0} element text is deprecated. Use the 'Launch' element instead.", xCondition.Name.LocalName)) | 1102 | this.OnInformation(ConverterTestType.InnerTextDeprecated, element, "Using {0} element text is deprecated. Use the 'Launch' element instead.", xCondition.Name.LocalName)) |
| 1103 | { | 1103 | { |
| 1104 | xCondition.AddAfterSelf(new XElement(LaunchElementName, | 1104 | xCondition.AddAfterSelf(new XElement(LaunchElementName, |
| 1105 | new XAttribute("Condition", text), | 1105 | new XAttribute("Condition", text), |
| @@ -1133,7 +1133,7 @@ namespace WixToolset.Converters | |||
| 1133 | var attribute = element.Attribute(attributeName); | 1133 | var attribute = element.Attribute(attributeName); |
| 1134 | 1134 | ||
| 1135 | if (attribute != null && | 1135 | if (attribute != null && |
| 1136 | this.OnError(ConverterTestType.RenameExePackageCommandToArguments, element, "The {0} element {1} attribute has been renamed {2}.", element.Name.LocalName, attribute.Name.LocalName, newName)) | 1136 | this.OnInformation(ConverterTestType.RenameExePackageCommandToArguments, element, "The {0} element {1} attribute has been renamed {2}.", element.Name.LocalName, attribute.Name.LocalName, newName)) |
| 1137 | { | 1137 | { |
| 1138 | element.Add(new XAttribute(newName, attribute.Value)); | 1138 | element.Add(new XAttribute(newName, attribute.Value)); |
| 1139 | attribute.Remove(); | 1139 | attribute.Remove(); |
| @@ -1147,7 +1147,7 @@ namespace WixToolset.Converters | |||
| 1147 | if (xCondition != null) | 1147 | if (xCondition != null) |
| 1148 | { | 1148 | { |
| 1149 | if (TryGetInnerText(xCondition, out var text) && | 1149 | if (TryGetInnerText(xCondition, out var text) && |
| 1150 | this.OnError(ConverterTestType.InnerTextDeprecated, element, "Using {0} element text is deprecated. Use the 'Condition' attribute instead.", xCondition.Name.LocalName)) | 1150 | this.OnInformation(ConverterTestType.InnerTextDeprecated, element, "Using {0} element text is deprecated. Use the 'Condition' attribute instead.", xCondition.Name.LocalName)) |
| 1151 | { | 1151 | { |
| 1152 | element.Add(new XAttribute("Condition", text)); | 1152 | element.Add(new XAttribute("Condition", text)); |
| 1153 | xCondition.Remove(); | 1153 | xCondition.Remove(); |
| @@ -1160,7 +1160,7 @@ namespace WixToolset.Converters | |||
| 1160 | private void ConvertModuleElement(XElement element) | 1160 | private void ConvertModuleElement(XElement element) |
| 1161 | { | 1161 | { |
| 1162 | if (element.Attribute("Guid") == null // skip already-converted Module elements | 1162 | if (element.Attribute("Guid") == null // skip already-converted Module elements |
| 1163 | && this.OnError(ConverterTestType.ModuleAndPackageRenamed, element, "The Module and Package elements have been renamed and reorganized for simplicity.")) | 1163 | && this.OnInformation(ConverterTestType.ModuleAndPackageRenamed, element, "The Module and Package elements have been renamed and reorganized for simplicity.")) |
| 1164 | { | 1164 | { |
| 1165 | var xModule = element; | 1165 | var xModule = element; |
| 1166 | 1166 | ||
| @@ -1172,7 +1172,7 @@ namespace WixToolset.Converters | |||
| 1172 | var xInstallerVersion = xSummaryInformation.Attribute("InstallerVersion"); | 1172 | var xInstallerVersion = xSummaryInformation.Attribute("InstallerVersion"); |
| 1173 | if (this.SourceVersion < 4 && xInstallerVersion == null) | 1173 | if (this.SourceVersion < 4 && xInstallerVersion == null) |
| 1174 | { | 1174 | { |
| 1175 | this.OnError(ConverterTestType.InstallerVersionBehaviorChange, element, "Breaking change: The default value for Package/@InstallerVersion has been changed to '500' regardless of build platform. If you need a lower version, set it manually in the Module element."); | 1175 | this.OnInformation(ConverterTestType.InstallerVersionBehaviorChange, element, "Breaking change: The default value for Package/@InstallerVersion has been changed to '500' regardless of build platform. If you need a lower version, set it manually in the Module element."); |
| 1176 | } | 1176 | } |
| 1177 | 1177 | ||
| 1178 | RemoveAttribute(xSummaryInformation, "AdminImage"); | 1178 | RemoveAttribute(xSummaryInformation, "AdminImage"); |
| @@ -1205,7 +1205,7 @@ namespace WixToolset.Converters | |||
| 1205 | var id = element.Attribute("Id"); | 1205 | var id = element.Attribute("Id"); |
| 1206 | if (id != null && id.Value == "*") | 1206 | if (id != null && id.Value == "*") |
| 1207 | { | 1207 | { |
| 1208 | if (this.OnError(ConverterTestType.AutoGuidUnnecessary, element, "Using '*' for the Product Id attribute is unnecessary. Remove the attribute to remove the redundancy.")) | 1208 | if (this.OnInformation(ConverterTestType.AutoGuidUnnecessary, element, "Using '*' for the Product Id attribute is unnecessary. Remove the attribute to remove the redundancy.")) |
| 1209 | { | 1209 | { |
| 1210 | id.Remove(); | 1210 | id.Remove(); |
| 1211 | } | 1211 | } |
| @@ -1218,7 +1218,7 @@ namespace WixToolset.Converters | |||
| 1218 | 1218 | ||
| 1219 | if (!String.IsNullOrEmpty(message) && | 1219 | if (!String.IsNullOrEmpty(message) && |
| 1220 | TryGetInnerText(xCondition, out var text) && | 1220 | TryGetInnerText(xCondition, out var text) && |
| 1221 | this.OnError(ConverterTestType.InnerTextDeprecated, element, "Using {0} element text is deprecated. Use the 'Launch' element instead.", xCondition.Name.LocalName)) | 1221 | this.OnInformation(ConverterTestType.InnerTextDeprecated, element, "Using {0} element text is deprecated. Use the 'Launch' element instead.", xCondition.Name.LocalName)) |
| 1222 | { | 1222 | { |
| 1223 | xCondition.AddAfterSelf(new XElement(LaunchElementName, | 1223 | xCondition.AddAfterSelf(new XElement(LaunchElementName, |
| 1224 | new XAttribute("Condition", text), | 1224 | new XAttribute("Condition", text), |
| @@ -1235,7 +1235,7 @@ namespace WixToolset.Converters | |||
| 1235 | xMediaTemplate.Remove(); | 1235 | xMediaTemplate.Remove(); |
| 1236 | } | 1236 | } |
| 1237 | 1237 | ||
| 1238 | if (this.OnError(ConverterTestType.ProductAndPackageRenamed, element, "The Product and Package elements have been renamed and reorganized for simplicity.")) | 1238 | if (this.OnInformation(ConverterTestType.ProductAndPackageRenamed, element, "The Product and Package elements have been renamed and reorganized for simplicity.")) |
| 1239 | { | 1239 | { |
| 1240 | var xPackage = element; | 1240 | var xPackage = element; |
| 1241 | xPackage.Name = PackageElementName; | 1241 | xPackage.Name = PackageElementName; |
| @@ -1248,7 +1248,7 @@ namespace WixToolset.Converters | |||
| 1248 | var xInstallerVersion = xSummaryInformation.Attribute("InstallerVersion"); | 1248 | var xInstallerVersion = xSummaryInformation.Attribute("InstallerVersion"); |
| 1249 | if (this.SourceVersion < 4 && xInstallerVersion == null) | 1249 | if (this.SourceVersion < 4 && xInstallerVersion == null) |
| 1250 | { | 1250 | { |
| 1251 | this.OnError(ConverterTestType.InstallerVersionBehaviorChange, element, "Breaking change: The default value for Package/@InstallerVersion has been changed to '500' regardless of build platform. If you need a lower version, set it manually in the Package element."); | 1251 | this.OnInformation(ConverterTestType.InstallerVersionBehaviorChange, element, "Breaking change: The default value for Package/@InstallerVersion has been changed to '500' regardless of build platform. If you need a lower version, set it manually in the Package element."); |
| 1252 | } | 1252 | } |
| 1253 | 1253 | ||
| 1254 | if (xSummaryInformation.Attribute("Compressed") == null) | 1254 | if (xSummaryInformation.Attribute("Compressed") == null) |
| @@ -1497,7 +1497,7 @@ namespace WixToolset.Converters | |||
| 1497 | } | 1497 | } |
| 1498 | 1498 | ||
| 1499 | if (!String.IsNullOrEmpty(newElementName) | 1499 | if (!String.IsNullOrEmpty(newElementName) |
| 1500 | && this.OnError(ConverterTestType.ReferencesReplaced, element, "UI, custom action, and property reference {0} has been replaced with strongly-typed element.", id)) | 1500 | && this.OnInformation(ConverterTestType.ReferencesReplaced, element, "UI, custom action and property reference {0} have been replaced with strongly-typed elements.", id)) |
| 1501 | { | 1501 | { |
| 1502 | element.AddAfterSelf(new XElement(WixUtilNamespace + newElementName)); | 1502 | element.AddAfterSelf(new XElement(WixUtilNamespace + newElementName)); |
| 1503 | element.Remove(); | 1503 | element.Remove(); |
| @@ -1510,7 +1510,7 @@ namespace WixToolset.Converters | |||
| 1510 | 1510 | ||
| 1511 | var xCondition = element.Attribute("Condition"); | 1511 | var xCondition = element.Attribute("Condition"); |
| 1512 | if (xCondition?.Value == "1" && | 1512 | if (xCondition?.Value == "1" && |
| 1513 | this.OnError(ConverterTestType.PublishConditionOneUnnecessary, element, "Adding Condition='1' on {0} elements is no longer necessary. Remove the Condition attribute.", xCondition.Name.LocalName)) | 1513 | this.OnInformation(ConverterTestType.PublishConditionOneUnnecessary, element, "Adding Condition='1' on {0} elements is no longer necessary. Remove the Condition attribute.", xCondition.Name.LocalName)) |
| 1514 | { | 1514 | { |
| 1515 | xCondition.Remove(); | 1515 | xCondition.Remove(); |
| 1516 | } | 1516 | } |
| @@ -1523,7 +1523,7 @@ namespace WixToolset.Converters | |||
| 1523 | var xAction = element.Attribute("Action"); | 1523 | var xAction = element.Attribute("Action"); |
| 1524 | 1524 | ||
| 1525 | if (xAction != null | 1525 | if (xAction != null |
| 1526 | && this.OnError(ConverterTestType.RegistryKeyActionObsolete, element, "The RegistryKey element's Action attribute is obsolete. Action='create' will be converted to ForceCreateOnInstall='yes'. Action='createAndRemoveOnUninstall' will be converted to ForceCreateOnInstall='yes' and ForceDeleteOnUninstall='yes'.")) | 1526 | && this.OnInformation(ConverterTestType.RegistryKeyActionObsolete, element, "The RegistryKey element's Action attribute is obsolete. Action='create' will be converted to ForceCreateOnInstall='yes'. Action='createAndRemoveOnUninstall' will be converted to ForceCreateOnInstall='yes' and ForceDeleteOnUninstall='yes'.")) |
| 1527 | { | 1527 | { |
| 1528 | switch (xAction?.Value) | 1528 | switch (xAction?.Value) |
| 1529 | { | 1529 | { |
| @@ -1545,7 +1545,7 @@ namespace WixToolset.Converters | |||
| 1545 | var xParent = element.Parent; | 1545 | var xParent = element.Parent; |
| 1546 | 1546 | ||
| 1547 | if (xParent.Name == ExePackageElementName && | 1547 | if (xParent.Name == ExePackageElementName && |
| 1548 | this.OnError(ConverterTestType.RemotePayloadRenamed, element, "The RemotePayload element has been renamed. Use the 'ExePackagePayload' instead.")) | 1548 | this.OnInformation(ConverterTestType.RemotePayloadRenamed, element, "The RemotePayload element has been renamed. Use the 'ExePackagePayload' instead.")) |
| 1549 | { | 1549 | { |
| 1550 | element.Name = ExePackagePayloadElementName; | 1550 | element.Name = ExePackagePayloadElementName; |
| 1551 | } | 1551 | } |
| @@ -1557,7 +1557,7 @@ namespace WixToolset.Converters | |||
| 1557 | 1557 | ||
| 1558 | var xName = xParent.Attribute("Name"); | 1558 | var xName = xParent.Attribute("Name"); |
| 1559 | if (xName != null && | 1559 | if (xName != null && |
| 1560 | this.OnError(ConverterTestType.NameAttributeMovedToRemotePayload, xParent, "The Name attribute must be specified on the child XxxPackagePayload element when using a remote payload.")) | 1560 | this.OnInformation(ConverterTestType.NameAttributeMovedToRemotePayload, xParent, "The Name attribute must be specified on the child XxxPackagePayload element when using a remote payload.")) |
| 1561 | { | 1561 | { |
| 1562 | element.SetAttributeValue("Name", xName.Value); | 1562 | element.SetAttributeValue("Name", xName.Value); |
| 1563 | xName.Remove(); | 1563 | xName.Remove(); |
| @@ -1565,7 +1565,7 @@ namespace WixToolset.Converters | |||
| 1565 | 1565 | ||
| 1566 | var xDownloadUrl = xParent.Attribute("DownloadUrl"); | 1566 | var xDownloadUrl = xParent.Attribute("DownloadUrl"); |
| 1567 | if (xDownloadUrl != null && | 1567 | if (xDownloadUrl != null && |
| 1568 | this.OnError(ConverterTestType.DownloadUrlAttributeMovedToRemotePayload, xParent, "The DownloadUrl attribute must be specified on the child XxxPackagePayload element when using a remote payload.")) | 1568 | this.OnInformation(ConverterTestType.DownloadUrlAttributeMovedToRemotePayload, xParent, "The DownloadUrl attribute must be specified on the child XxxPackagePayload element when using a remote payload.")) |
| 1569 | { | 1569 | { |
| 1570 | element.SetAttributeValue("DownloadUrl", xDownloadUrl.Value); | 1570 | element.SetAttributeValue("DownloadUrl", xDownloadUrl.Value); |
| 1571 | xDownloadUrl.Remove(); | 1571 | xDownloadUrl.Remove(); |
| @@ -1573,12 +1573,12 @@ namespace WixToolset.Converters | |||
| 1573 | 1573 | ||
| 1574 | var xCompressed = xParent.Attribute("Compressed"); | 1574 | var xCompressed = xParent.Attribute("Compressed"); |
| 1575 | if (xCompressed != null && | 1575 | if (xCompressed != null && |
| 1576 | this.OnError(ConverterTestType.CompressedAttributeUnnecessaryForRemotePayload, xParent, "The Compressed attribute should not be specified when using a remote payload.")) | 1576 | this.OnInformation(ConverterTestType.CompressedAttributeUnnecessaryForRemotePayload, xParent, "The Compressed attribute should not be specified when using a remote payload.")) |
| 1577 | { | 1577 | { |
| 1578 | xCompressed.Remove(); | 1578 | xCompressed.Remove(); |
| 1579 | } | 1579 | } |
| 1580 | 1580 | ||
| 1581 | this.OnError(ConverterTestType.BurnHashAlgorithmChanged, element, "The hash algorithm for bundles changed from SHA1 to SHA512."); | 1581 | this.OnInformation(ConverterTestType.BurnHashAlgorithmChanged, element, "The hash algorithm for bundles changed from SHA1 to SHA512."); |
| 1582 | 1582 | ||
| 1583 | this.RemoveAttributeIfPresent(element, "CertificatePublicKey", ConverterTestType.BundleSignatureValidationObsolete, "The {0} element contains obsolete '{1}' attribute. Signature validation is no longer supported. The attribute will be removed."); | 1583 | this.RemoveAttributeIfPresent(element, "CertificatePublicKey", ConverterTestType.BundleSignatureValidationObsolete, "The {0} element contains obsolete '{1}' attribute. Signature validation is no longer supported. The attribute will be removed."); |
| 1584 | this.RemoveAttributeIfPresent(element, "CertificateThumbprint", ConverterTestType.BundleSignatureValidationObsolete, "The {0} element contains obsolete '{1}' attribute. Signature validation is no longer supported. The attribute will be removed."); | 1584 | this.RemoveAttributeIfPresent(element, "CertificateThumbprint", ConverterTestType.BundleSignatureValidationObsolete, "The {0} element contains obsolete '{1}' attribute. Signature validation is no longer supported. The attribute will be removed."); |
| @@ -1617,7 +1617,7 @@ namespace WixToolset.Converters | |||
| 1617 | } | 1617 | } |
| 1618 | 1618 | ||
| 1619 | if (element.Parent.Name == ComponentElementName && | 1619 | if (element.Parent.Name == ComponentElementName && |
| 1620 | this.OnError(ConverterTestType.IntegratedDependencyNamespace, element, "The Provides element has been integrated into the WiX v4 namespace. Add the 'Check' attribute from the WixDependency.wixext to match v3 runtime behavior.")) | 1620 | this.OnInformation(ConverterTestType.IntegratedDependencyNamespace, element, "The Provides element has been integrated into the WiX v4 namespace. Add the 'Check' attribute from the WixDependency.wixext to match v3 runtime behavior.")) |
| 1621 | { | 1621 | { |
| 1622 | element.Add(new XAttribute(DependencyCheckAttributeName, "yes")); | 1622 | element.Add(new XAttribute(DependencyCheckAttributeName, "yes")); |
| 1623 | } | 1623 | } |
| @@ -1625,14 +1625,14 @@ namespace WixToolset.Converters | |||
| 1625 | 1625 | ||
| 1626 | private void ConvertRequiresElement(XElement element) | 1626 | private void ConvertRequiresElement(XElement element) |
| 1627 | { | 1627 | { |
| 1628 | if (this.OnError(ConverterTestType.IntegratedDependencyNamespace, element, "The Requires element has been integrated into the WiX v4 namespace. Remove the namespace.")) | 1628 | if (this.OnInformation(ConverterTestType.IntegratedDependencyNamespace, element, "The Requires element has been integrated into the WiX v4 namespace. Remove the namespace.")) |
| 1629 | { | 1629 | { |
| 1630 | element.Name = RequiresElementName; | 1630 | element.Name = RequiresElementName; |
| 1631 | } | 1631 | } |
| 1632 | 1632 | ||
| 1633 | if (element.Parent.Name == ProvidesElementName && | 1633 | if (element.Parent.Name == ProvidesElementName && |
| 1634 | element.Parent.Parent?.Name == ComponentElementName && | 1634 | element.Parent.Parent?.Name == ComponentElementName && |
| 1635 | this.OnError(ConverterTestType.IntegratedDependencyNamespace, element, "The Requires element has been integrated into the WiX v4 namespace. Add the 'Enforce' attribute from the WixDependency.wixext to match v3 runtime behavior.")) | 1635 | this.OnInformation(ConverterTestType.IntegratedDependencyNamespace, element, "The Requires element has been integrated into the WiX v4 namespace. Add the 'Enforce' attribute from the WixDependency.wixext to match v3 runtime behavior.")) |
| 1636 | { | 1636 | { |
| 1637 | element.Add(new XAttribute(DependencyEnforceAttributeName, "yes")); | 1637 | element.Add(new XAttribute(DependencyEnforceAttributeName, "yes")); |
| 1638 | } | 1638 | } |
| @@ -1640,14 +1640,14 @@ namespace WixToolset.Converters | |||
| 1640 | 1640 | ||
| 1641 | private void ConvertRequiresRefElement(XElement element) | 1641 | private void ConvertRequiresRefElement(XElement element) |
| 1642 | { | 1642 | { |
| 1643 | if (this.OnError(ConverterTestType.IntegratedDependencyNamespace, element, "The RequiresRef element has been integrated into the WiX v4 namespace. Remove the namespace.")) | 1643 | if (this.OnInformation(ConverterTestType.IntegratedDependencyNamespace, element, "The RequiresRef element has been integrated into the WiX v4 namespace. Remove the namespace.")) |
| 1644 | { | 1644 | { |
| 1645 | element.Name = RequiresRefElementName; | 1645 | element.Name = RequiresRefElementName; |
| 1646 | } | 1646 | } |
| 1647 | 1647 | ||
| 1648 | if (element.Parent.Name == ProvidesElementName && | 1648 | if (element.Parent.Name == ProvidesElementName && |
| 1649 | element.Parent.Parent?.Name == ComponentElementName && | 1649 | element.Parent.Parent?.Name == ComponentElementName && |
| 1650 | this.OnError(ConverterTestType.IntegratedDependencyNamespace, element, "The RequiresRef element has been integrated into the WiX v4 namespace. Add the 'Enforce' attribute from the WixDependency.wixext to match v3 runtime behavior.")) | 1650 | this.OnInformation(ConverterTestType.IntegratedDependencyNamespace, element, "The RequiresRef element has been integrated into the WiX v4 namespace. Add the 'Enforce' attribute from the WixDependency.wixext to match v3 runtime behavior.")) |
| 1651 | { | 1651 | { |
| 1652 | element.Add(new XAttribute(DependencyEnforceAttributeName, "yes")); | 1652 | element.Add(new XAttribute(DependencyEnforceAttributeName, "yes")); |
| 1653 | } | 1653 | } |
| @@ -1658,7 +1658,7 @@ namespace WixToolset.Converters | |||
| 1658 | var suppressSignatureValidation = element.Attribute("SuppressSignatureValidation"); | 1658 | var suppressSignatureValidation = element.Attribute("SuppressSignatureValidation"); |
| 1659 | 1659 | ||
| 1660 | if (null != suppressSignatureValidation | 1660 | if (null != suppressSignatureValidation |
| 1661 | && this.OnError(ConverterTestType.BundleSignatureValidationObsolete, element, "The chain package element contains obsolete '{0}' attribute. Signature validation is no longer supported. The attribute will be removed.", suppressSignatureValidation.Name)) | 1661 | && this.OnInformation(ConverterTestType.BundleSignatureValidationObsolete, element, "The chain package element contains obsolete '{0}' attribute. Signature validation is no longer supported. The attribute will be removed.", suppressSignatureValidation.Name)) |
| 1662 | { | 1662 | { |
| 1663 | suppressSignatureValidation.Remove(); | 1663 | suppressSignatureValidation.Remove(); |
| 1664 | } | 1664 | } |
| @@ -1666,7 +1666,7 @@ namespace WixToolset.Converters | |||
| 1666 | 1666 | ||
| 1667 | private void ConvertTagElement(XElement element) | 1667 | private void ConvertTagElement(XElement element) |
| 1668 | { | 1668 | { |
| 1669 | if (this.OnError(ConverterTestType.TagElementRenamed, element, "The Tag element has been renamed. Use the 'SoftwareTag' element instead.")) | 1669 | if (this.OnInformation(ConverterTestType.TagElementRenamed, element, "The Tag element has been renamed. Use the 'SoftwareTag' element instead.")) |
| 1670 | { | 1670 | { |
| 1671 | element.Name = SoftwareTagElementName; | 1671 | element.Name = SoftwareTagElementName; |
| 1672 | } | 1672 | } |
| @@ -1678,7 +1678,7 @@ namespace WixToolset.Converters | |||
| 1678 | 1678 | ||
| 1679 | private void ConvertTagRefElement(XElement element) | 1679 | private void ConvertTagRefElement(XElement element) |
| 1680 | { | 1680 | { |
| 1681 | if (this.OnError(ConverterTestType.TagRefElementRenamed, element, "The TagRef element has been renamed. Use the 'SoftwareTagRef' element instead.")) | 1681 | if (this.OnInformation(ConverterTestType.TagRefElementRenamed, element, "The TagRef element has been renamed. Use the 'SoftwareTagRef' element instead.")) |
| 1682 | { | 1682 | { |
| 1683 | element.Name = SoftwareTagRefElementName; | 1683 | element.Name = SoftwareTagRefElementName; |
| 1684 | } | 1684 | } |
| @@ -1711,7 +1711,7 @@ namespace WixToolset.Converters | |||
| 1711 | private void ConvertCustomActionElement(XElement xCustomAction) | 1711 | private void ConvertCustomActionElement(XElement xCustomAction) |
| 1712 | { | 1712 | { |
| 1713 | var xBinaryKey = xCustomAction.Attribute("BinaryKey"); | 1713 | var xBinaryKey = xCustomAction.Attribute("BinaryKey"); |
| 1714 | if (xBinaryKey != null && this.OnError(ConverterTestType.CustomActionKeysAreNowRefs, xCustomAction, "The CustomAction attributes have been renamed from BinaryKey and FileKey to BinaryRef and FileRef.")) | 1714 | if (xBinaryKey != null && this.OnInformation(ConverterTestType.CustomActionKeysAreNowRefs, xCustomAction, "The CustomAction attributes have been renamed from BinaryKey and FileKey to BinaryRef and FileRef.")) |
| 1715 | { | 1715 | { |
| 1716 | xCustomAction.SetAttributeValue("BinaryRef", xBinaryKey.Value); | 1716 | xCustomAction.SetAttributeValue("BinaryRef", xBinaryKey.Value); |
| 1717 | xBinaryKey.Remove(); | 1717 | xBinaryKey.Remove(); |
| @@ -1719,7 +1719,7 @@ namespace WixToolset.Converters | |||
| 1719 | } | 1719 | } |
| 1720 | 1720 | ||
| 1721 | var xFileKey = xCustomAction.Attribute("FileKey"); | 1721 | var xFileKey = xCustomAction.Attribute("FileKey"); |
| 1722 | if (xFileKey != null && this.OnError(ConverterTestType.CustomActionKeysAreNowRefs, xCustomAction, "The CustomAction attributes have been renamed from BinaryKey and FileKey to BinaryRef and FileRef.")) | 1722 | if (xFileKey != null && this.OnInformation(ConverterTestType.CustomActionKeysAreNowRefs, xCustomAction, "The CustomAction attributes have been renamed from BinaryKey and FileKey to BinaryRef and FileRef.")) |
| 1723 | { | 1723 | { |
| 1724 | xCustomAction.SetAttributeValue("FileRef", xFileKey.Value); | 1724 | xCustomAction.SetAttributeValue("FileRef", xFileKey.Value); |
| 1725 | xFileKey.Remove(); | 1725 | xFileKey.Remove(); |
| @@ -1727,7 +1727,7 @@ namespace WixToolset.Converters | |||
| 1727 | 1727 | ||
| 1728 | if (xBinaryKey?.Value == "WixCA" || xBinaryKey?.Value == "UtilCA") | 1728 | if (xBinaryKey?.Value == "WixCA" || xBinaryKey?.Value == "UtilCA") |
| 1729 | { | 1729 | { |
| 1730 | if (this.OnError(ConverterTestType.WixCABinaryIdRenamed, xCustomAction, "The WixCA custom action DLL Binary table id has been renamed. Use the id 'Wix4UtilCA_X86' instead.")) | 1730 | if (this.OnInformation(ConverterTestType.WixCABinaryIdRenamed, xCustomAction, "The WixCA custom action DLL Binary table id has been renamed. Use the id 'Wix4UtilCA_X86' instead.")) |
| 1731 | { | 1731 | { |
| 1732 | xBinaryKey.Value = "Wix4UtilCA_X86"; | 1732 | xBinaryKey.Value = "Wix4UtilCA_X86"; |
| 1733 | } | 1733 | } |
| @@ -1735,7 +1735,7 @@ namespace WixToolset.Converters | |||
| 1735 | 1735 | ||
| 1736 | if (xBinaryKey?.Value == "WixCA_x64" || xBinaryKey?.Value == "UtilCA_x64") | 1736 | if (xBinaryKey?.Value == "WixCA_x64" || xBinaryKey?.Value == "UtilCA_x64") |
| 1737 | { | 1737 | { |
| 1738 | if (this.OnError(ConverterTestType.WixCABinaryIdRenamed, xCustomAction, "The WixCA_x64 custom action DLL Binary table id has been renamed. Use the id 'Wix4UtilCA_X64' instead.")) | 1738 | if (this.OnInformation(ConverterTestType.WixCABinaryIdRenamed, xCustomAction, "The WixCA_x64 custom action DLL Binary table id has been renamed. Use the id 'Wix4UtilCA_X64' instead.")) |
| 1739 | { | 1739 | { |
| 1740 | xBinaryKey.Value = "Wix4UtilCA_X64"; | 1740 | xBinaryKey.Value = "Wix4UtilCA_X64"; |
| 1741 | } | 1741 | } |
| @@ -1745,7 +1745,7 @@ namespace WixToolset.Converters | |||
| 1745 | 1745 | ||
| 1746 | if (xDllEntry?.Value == "CAQuietExec" || xDllEntry?.Value == "CAQuietExec64") | 1746 | if (xDllEntry?.Value == "CAQuietExec" || xDllEntry?.Value == "CAQuietExec64") |
| 1747 | { | 1747 | { |
| 1748 | if (this.OnError(ConverterTestType.QuietExecCustomActionsRenamed, xCustomAction, "The CAQuietExec and CAQuietExec64 custom action ids have been renamed. Use the ids 'WixQuietExec' and 'WixQuietExec64' instead.")) | 1748 | if (this.OnInformation(ConverterTestType.QuietExecCustomActionsRenamed, xCustomAction, "The CAQuietExec and CAQuietExec64 custom action ids have been renamed. Use the ids 'WixQuietExec' and 'WixQuietExec64' instead.")) |
| 1749 | { | 1749 | { |
| 1750 | xDllEntry.Value = xDllEntry.Value.Replace("CAQuietExec", "WixQuietExec"); | 1750 | xDllEntry.Value = xDllEntry.Value.Replace("CAQuietExec", "WixQuietExec"); |
| 1751 | } | 1751 | } |
| @@ -1755,7 +1755,7 @@ namespace WixToolset.Converters | |||
| 1755 | 1755 | ||
| 1756 | if (xProperty?.Value == "QtExecCmdLine" || xProperty?.Value == "QtExec64CmdLine") | 1756 | if (xProperty?.Value == "QtExecCmdLine" || xProperty?.Value == "QtExec64CmdLine") |
| 1757 | { | 1757 | { |
| 1758 | if (this.OnError(ConverterTestType.QuietExecCustomActionsRenamed, xCustomAction, "The QtExecCmdLine and QtExec64CmdLine property ids have been renamed. Use the ids 'WixQuietExecCmdLine' and 'WixQuietExec64CmdLine' instead.")) | 1758 | if (this.OnInformation(ConverterTestType.QuietExecCustomActionsRenamed, xCustomAction, "The QtExecCmdLine and QtExec64CmdLine property ids have been renamed. Use the ids 'WixQuietExecCmdLine' and 'WixQuietExec64CmdLine' instead.")) |
| 1759 | { | 1759 | { |
| 1760 | xProperty.Value = xProperty.Value.Replace("QtExec", "WixQuietExec"); | 1760 | xProperty.Value = xProperty.Value.Replace("QtExec", "WixQuietExec"); |
| 1761 | } | 1761 | } |
| @@ -1765,7 +1765,7 @@ namespace WixToolset.Converters | |||
| 1765 | 1765 | ||
| 1766 | if (xScript != null && TryGetInnerText(xCustomAction, out var scriptText)) | 1766 | if (xScript != null && TryGetInnerText(xCustomAction, out var scriptText)) |
| 1767 | { | 1767 | { |
| 1768 | if (this.OnError(ConverterTestType.InnerTextDeprecated, xCustomAction, "Using {0} element text is deprecated. Extract the text to a file and use the 'ScriptSourceFile' attribute to reference it.", xCustomAction.Name.LocalName)) | 1768 | if (this.OnInformation(ConverterTestType.InnerTextDeprecated, xCustomAction, "Using {0} element text is deprecated. Extract the text to a file and use the 'ScriptSourceFile' attribute to reference it.", xCustomAction.Name.LocalName)) |
| 1769 | { | 1769 | { |
| 1770 | var scriptFolder = Path.GetDirectoryName(this.SourceFile) ?? String.Empty; | 1770 | var scriptFolder = Path.GetDirectoryName(this.SourceFile) ?? String.Empty; |
| 1771 | var id = xCustomAction.Attribute("Id")?.Value ?? Guid.NewGuid().ToString("N"); | 1771 | var id = xCustomAction.Attribute("Id")?.Value ?? Guid.NewGuid().ToString("N"); |
| @@ -1789,13 +1789,13 @@ namespace WixToolset.Converters | |||
| 1789 | if (xType == null) | 1789 | if (xType == null) |
| 1790 | { | 1790 | { |
| 1791 | if (WasImplicitlyStringTyped(xValue?.Value) && | 1791 | if (WasImplicitlyStringTyped(xValue?.Value) && |
| 1792 | this.OnError(ConverterTestType.AssignVariableTypeFormatted, xVariable, "The \"string\" variable type now denotes a literal string. Use \"formatted\" to keep the previous behavior.")) | 1792 | this.OnInformation(ConverterTestType.AssignVariableTypeFormatted, xVariable, "The \"string\" variable type now denotes a literal string. Use \"formatted\" to keep the previous behavior.")) |
| 1793 | { | 1793 | { |
| 1794 | xVariable.Add(new XAttribute("Type", "formatted")); | 1794 | xVariable.Add(new XAttribute("Type", "formatted")); |
| 1795 | } | 1795 | } |
| 1796 | } | 1796 | } |
| 1797 | else if (xType.Value == "string" && | 1797 | else if (xType.Value == "string" && |
| 1798 | this.OnError(ConverterTestType.AssignVariableTypeFormatted, xVariable, "The \"string\" variable type now denotes a literal string. Use \"formatted\" to keep the previous behavior.")) | 1798 | this.OnInformation(ConverterTestType.AssignVariableTypeFormatted, xVariable, "The \"string\" variable type now denotes a literal string. Use \"formatted\" to keep the previous behavior.")) |
| 1799 | { | 1799 | { |
| 1800 | xType.Value = "formatted"; | 1800 | xType.Value = "formatted"; |
| 1801 | } | 1801 | } |
| @@ -1808,7 +1808,7 @@ namespace WixToolset.Converters | |||
| 1808 | 1808 | ||
| 1809 | if (xId.Value == "QtExecCmdTimeout") | 1809 | if (xId.Value == "QtExecCmdTimeout") |
| 1810 | { | 1810 | { |
| 1811 | this.OnError(ConverterTestType.QtExecCmdTimeoutAmbiguous, xProperty, "QtExecCmdTimeout was previously used for both CAQuietExec and CAQuietExec64. For WixQuietExec, use WixQuietExecCmdTimeout. For WixQuietExec64, use WixQuietExec64CmdTimeout."); | 1811 | this.OnInformation(ConverterTestType.QtExecCmdTimeoutAmbiguous, xProperty, "QtExecCmdTimeout was previously used for both CAQuietExec and CAQuietExec64. For WixQuietExec, use WixQuietExecCmdTimeout. For WixQuietExec64, use WixQuietExec64CmdTimeout."); |
| 1812 | } | 1812 | } |
| 1813 | 1813 | ||
| 1814 | this.ConvertInnerTextToAttribute(xProperty, "Value"); | 1814 | this.ConvertInnerTextToAttribute(xProperty, "Value"); |
| @@ -1823,7 +1823,7 @@ namespace WixToolset.Converters | |||
| 1823 | var inheritable = element.Parent.Name == CreateFolderElementName; | 1823 | var inheritable = element.Parent.Name == CreateFolderElementName; |
| 1824 | if (!inheritable) | 1824 | if (!inheritable) |
| 1825 | { | 1825 | { |
| 1826 | if (this.OnError(ConverterTestType.AssignPermissionExInheritable, element, "The PermissionEx Inheritable attribute is being set to 'no' to ensure it remains the same as the v3 default.")) | 1826 | if (this.OnInformation(ConverterTestType.AssignPermissionExInheritable, element, "The PermissionEx Inheritable attribute is being set to 'no' to ensure it remains the same as the v3 default.")) |
| 1827 | { | 1827 | { |
| 1828 | element.Add(new XAttribute("Inheritable", "no")); | 1828 | element.Add(new XAttribute("Inheritable", "no")); |
| 1829 | } | 1829 | } |
| @@ -1854,7 +1854,7 @@ namespace WixToolset.Converters | |||
| 1854 | /// <returns>The converted element.</returns> | 1854 | /// <returns>The converted element.</returns> |
| 1855 | private void ConvertElementWithoutNamespace(XElement element) | 1855 | private void ConvertElementWithoutNamespace(XElement element) |
| 1856 | { | 1856 | { |
| 1857 | if (this.OnError(ConverterTestType.XmlnsMissing, element, "The xmlns attribute is missing. It must be present with a value of '{0}'.", WixNamespace.NamespaceName)) | 1857 | if (this.OnInformation(ConverterTestType.XmlnsMissing, element, "The xmlns attribute is missing. It must be present with a value of '{0}'.", WixNamespace.NamespaceName)) |
| 1858 | { | 1858 | { |
| 1859 | element.Name = WixNamespace.GetName(element.Name.LocalName); | 1859 | element.Name = WixNamespace.GetName(element.Name.LocalName); |
| 1860 | 1860 | ||
| @@ -1870,7 +1870,7 @@ namespace WixToolset.Converters | |||
| 1870 | private void ConvertInnerTextToAttribute(XElement element, string attributeName) | 1870 | private void ConvertInnerTextToAttribute(XElement element, string attributeName) |
| 1871 | { | 1871 | { |
| 1872 | if (TryGetInnerText(element, out var text) && | 1872 | if (TryGetInnerText(element, out var text) && |
| 1873 | this.OnError(ConverterTestType.InnerTextDeprecated, element, "Using {0} element text is deprecated. Use the '{1}' attribute instead.", element.Name.LocalName, attributeName)) | 1873 | this.OnInformation(ConverterTestType.InnerTextDeprecated, element, "Using {0} element text is deprecated. Use the '{1}' attribute instead.", element.Name.LocalName, attributeName)) |
| 1874 | { | 1874 | { |
| 1875 | element.Add(new XAttribute(attributeName, text)); | 1875 | element.Add(new XAttribute(attributeName, text)); |
| 1876 | RemoveChildren(element); | 1876 | RemoveChildren(element); |
| @@ -1880,7 +1880,7 @@ namespace WixToolset.Converters | |||
| 1880 | void RemoveAttributeIfPresent(XElement element, string attributeName, ConverterTestType type, string format) | 1880 | void RemoveAttributeIfPresent(XElement element, string attributeName, ConverterTestType type, string format) |
| 1881 | { | 1881 | { |
| 1882 | var xAttribute = element.Attribute(attributeName); | 1882 | var xAttribute = element.Attribute(attributeName); |
| 1883 | if (null != xAttribute && this.OnError(type, element, format, element.Name.LocalName, xAttribute.Name)) | 1883 | if (null != xAttribute && this.OnInformation(type, element, format, element.Name.LocalName, xAttribute.Name)) |
| 1884 | { | 1884 | { |
| 1885 | xAttribute.Remove(); | 1885 | xAttribute.Remove(); |
| 1886 | } | 1886 | } |
| @@ -1889,7 +1889,7 @@ namespace WixToolset.Converters | |||
| 1889 | private void RenameWin64ToBitness(XElement element) | 1889 | private void RenameWin64ToBitness(XElement element) |
| 1890 | { | 1890 | { |
| 1891 | var win64 = element.Attribute("Win64"); | 1891 | var win64 = element.Attribute("Win64"); |
| 1892 | if (win64 != null && this.OnError(ConverterTestType.Win64AttributeRenamed, element, "The {0} element's Win64 attribute has been renamed. Use the Bitness attribute instead.", element.Name.LocalName)) | 1892 | if (win64 != null && this.OnInformation(ConverterTestType.Win64AttributeRenamed, element, "The {0} element's Win64 attribute has been renamed. Use the Bitness attribute instead.", element.Name.LocalName)) |
| 1893 | { | 1893 | { |
| 1894 | var value = this.UpdateWin64ValueToBitnessValue(win64); | 1894 | var value = this.UpdateWin64ValueToBitnessValue(win64); |
| 1895 | element.Add(new XAttribute("Bitness", value)); | 1895 | element.Add(new XAttribute("Bitness", value)); |
| @@ -1917,7 +1917,7 @@ namespace WixToolset.Converters | |||
| 1917 | } | 1917 | } |
| 1918 | 1918 | ||
| 1919 | if (!String.IsNullOrEmpty(replacement) && | 1919 | if (!String.IsNullOrEmpty(replacement) && |
| 1920 | this.OnError(ConverterTestType.BundlePackageCacheAttributeValueObsolete, element, "The chain package element 'Cache' attribute contains obsolete '{0}' value. The value should be '{1}' instead.", cacheValue, replacement)) | 1920 | this.OnInformation(ConverterTestType.BundlePackageCacheAttributeValueObsolete, element, "The chain package element 'Cache' attribute contains obsolete '{0}' value. The value should be '{1}' instead.", cacheValue, replacement)) |
| 1921 | { | 1921 | { |
| 1922 | cacheAttribute.SetValue(replacement); | 1922 | cacheAttribute.SetValue(replacement); |
| 1923 | } | 1923 | } |
| @@ -2068,7 +2068,7 @@ namespace WixToolset.Converters | |||
| 2068 | foreach (var declaration in declarations) | 2068 | foreach (var declaration in declarations) |
| 2069 | { | 2069 | { |
| 2070 | if (namespaces.Contains(declaration.Value) && | 2070 | if (namespaces.Contains(declaration.Value) && |
| 2071 | this.OnError(ConverterTestType.RemoveUnusedNamespaces, declaration, "The namespace '{0}' is not used. Remove unused namespaces.", declaration.Value)) | 2071 | this.OnInformation(ConverterTestType.RemoveUnusedNamespaces, declaration, "The namespace '{0}' is not used. Remove unused namespaces.", declaration.Value)) |
| 2072 | { | 2072 | { |
| 2073 | declaration.Remove(); | 2073 | declaration.Remove(); |
| 2074 | } | 2074 | } |
| @@ -2093,14 +2093,55 @@ namespace WixToolset.Converters | |||
| 2093 | return false; | 2093 | return false; |
| 2094 | } | 2094 | } |
| 2095 | 2095 | ||
| 2096 | // Increase the error count. | 2096 | // Increase the message count. |
| 2097 | this.Errors++; | 2097 | this.Messages++; |
| 2098 | 2098 | ||
| 2099 | var sourceLine = (null == node) ? new SourceLineNumber(this.SourceFile ?? "wix.exe") : new SourceLineNumber(this.SourceFile, ((IXmlLineInfo)node).LineNumber); | 2099 | var sourceLine = (null == node) ? new SourceLineNumber(this.SourceFile ?? "wix.exe") : new SourceLineNumber(this.SourceFile, ((IXmlLineInfo)node).LineNumber); |
| 2100 | var warning = this.ErrorsAsWarnings.Contains(converterTestType); | 2100 | var warning = this.ErrorsAsWarnings.Contains(converterTestType); |
| 2101 | var display = String.Format(CultureInfo.CurrentCulture, message, args); | 2101 | |
| 2102 | var msg = new Message( | ||
| 2103 | sourceLine, | ||
| 2104 | warning ? MessageLevel.Warning : MessageLevel.Error, | ||
| 2105 | (int)converterTestType, | ||
| 2106 | "{0} ({1})", | ||
| 2107 | String.Format(CultureInfo.CurrentCulture, message, args), | ||
| 2108 | converterTestType.ToString()); | ||
| 2109 | |||
| 2110 | this.Messaging.Write(msg); | ||
| 2111 | |||
| 2112 | return true; | ||
| 2113 | } | ||
| 2114 | |||
| 2115 | /// <summary> | ||
| 2116 | /// Output an information message to the console. | ||
| 2117 | /// </summary> | ||
| 2118 | /// <param name="converterTestType">The type of converter test.</param> | ||
| 2119 | /// <param name="node">The node that caused the error.</param> | ||
| 2120 | /// <param name="message">Detailed error message.</param> | ||
| 2121 | /// <param name="args">Additional formatted string arguments.</param> | ||
| 2122 | /// <returns>Returns true indicating that action should be taken on this error, and false if it should be ignored.</returns> | ||
| 2123 | private bool OnInformation(ConverterTestType converterTestType, XObject node, string message, params object[] args) | ||
| 2124 | { | ||
| 2125 | // Ignore the error if explicitly ignored or outside the range of the current operation. | ||
| 2126 | if (this.IgnoreErrors.Contains(converterTestType) || | ||
| 2127 | (this.Operation == ConvertOperation.Convert && converterTestType < ConverterTestType.EndIgnoreInConvert) || | ||
| 2128 | (this.Operation == ConvertOperation.Format && converterTestType > ConverterTestType.BeginIgnoreInFormat)) | ||
| 2129 | { | ||
| 2130 | return false; | ||
| 2131 | } | ||
| 2132 | |||
| 2133 | // Increase the message count. | ||
| 2134 | this.Messages++; | ||
| 2135 | |||
| 2136 | var sourceLine = (null == node) ? new SourceLineNumber(this.SourceFile ?? "wix.exe") : new SourceLineNumber(this.SourceFile, ((IXmlLineInfo)node).LineNumber); | ||
| 2102 | 2137 | ||
| 2103 | var msg = new Message(sourceLine, warning ? MessageLevel.Warning : MessageLevel.Error, (int)converterTestType, "{0} ({1})", display, converterTestType.ToString()); | 2138 | var msg = new Message( |
| 2139 | sourceLine, | ||
| 2140 | MessageLevel.Information, | ||
| 2141 | (int)converterTestType, | ||
| 2142 | "[Converted] {0} ({1})", | ||
| 2143 | String.Format(CultureInfo.CurrentCulture, message, args), | ||
| 2144 | converterTestType.ToString()); | ||
| 2104 | 2145 | ||
| 2105 | this.Messaging.Write(msg); | 2146 | this.Messaging.Write(msg); |
| 2106 | 2147 | ||
