aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRob Mensching <rob@firegiant.com>2023-04-03 22:21:18 -0700
committerRob Mensching <rob@firegiant.com>2023-04-04 10:03:45 -0700
commitef800a635a79effeec25775163002e1c8da9bb98 (patch)
tree133eb6e203dc602bbf0dfbe45b2182ab4956fd11
parent238a1601a3cdf11cb9becaf8a53f281bdbbcbf09 (diff)
downloadwix-ef800a635a79effeec25775163002e1c8da9bb98.tar.gz
wix-ef800a635a79effeec25775163002e1c8da9bb98.tar.bz2
wix-ef800a635a79effeec25775163002e1c8da9bb98.zip
Convert iis:Certificate BinaryKey to BinaryRef
Fixes 7341
-rw-r--r--src/wix/WixToolset.Converters/WixConverter.cs21
-rw-r--r--src/wix/test/WixToolsetTest.Converters/IisExtensionFixture.cs51
2 files changed, 71 insertions, 1 deletions
diff --git a/src/wix/WixToolset.Converters/WixConverter.cs b/src/wix/WixToolset.Converters/WixConverter.cs
index f2711300..2f00d15d 100644
--- a/src/wix/WixToolset.Converters/WixConverter.cs
+++ b/src/wix/WixToolset.Converters/WixConverter.cs
@@ -52,6 +52,7 @@ namespace WixToolset.Converters
52 private static readonly XNamespace WixDependencyNamespace = "http://wixtoolset.org/schemas/v4/wxs/dependency"; 52 private static readonly XNamespace WixDependencyNamespace = "http://wixtoolset.org/schemas/v4/wxs/dependency";
53 private static readonly XNamespace WixDirectXNamespace = "http://wixtoolset.org/schemas/v4/wxs/directx"; 53 private static readonly XNamespace WixDirectXNamespace = "http://wixtoolset.org/schemas/v4/wxs/directx";
54 private static readonly XNamespace WixFirewallNamespace = "http://wixtoolset.org/schemas/v4/wxs/firewall"; 54 private static readonly XNamespace WixFirewallNamespace = "http://wixtoolset.org/schemas/v4/wxs/firewall";
55 private static readonly XNamespace WixIisNamespace = "http://wixtoolset.org/schemas/v4/wxs/iis";
55 private static readonly XNamespace WixUiNamespace = "http://wixtoolset.org/schemas/v4/wxs/ui"; 56 private static readonly XNamespace WixUiNamespace = "http://wixtoolset.org/schemas/v4/wxs/ui";
56 private static readonly XNamespace WixUtilNamespace = "http://wixtoolset.org/schemas/v4/wxs/util"; 57 private static readonly XNamespace WixUtilNamespace = "http://wixtoolset.org/schemas/v4/wxs/util";
57 private static readonly XNamespace WixVSNamespace = "http://wixtoolset.org/schemas/v4/wxs/vs"; 58 private static readonly XNamespace WixVSNamespace = "http://wixtoolset.org/schemas/v4/wxs/vs";
@@ -76,6 +77,7 @@ namespace WixToolset.Converters
76 private static readonly XName CustomTableElementName = WixNamespace + "CustomTable"; 77 private static readonly XName CustomTableElementName = WixNamespace + "CustomTable";
77 private static readonly XName CustomTableRefElementName = WixNamespace + "CustomTableRef"; 78 private static readonly XName CustomTableRefElementName = WixNamespace + "CustomTableRef";
78 private static readonly XName CatalogElementName = WixNamespace + "Catalog"; 79 private static readonly XName CatalogElementName = WixNamespace + "Catalog";
80 private static readonly XName CertificateElementName = WixIisNamespace + "Certificate";
79 private static readonly XName ColumnElementName = WixNamespace + "Column"; 81 private static readonly XName ColumnElementName = WixNamespace + "Column";
80 private static readonly XName ComponentElementName = WixNamespace + "Component"; 82 private static readonly XName ComponentElementName = WixNamespace + "Component";
81 private static readonly XName ControlElementName = WixNamespace + "Control"; 83 private static readonly XName ControlElementName = WixNamespace + "Control";
@@ -173,7 +175,7 @@ namespace WixToolset.Converters
173 { "http://schemas.microsoft.com/wix/DifxAppExtension", "http://wixtoolset.org/schemas/v4/wxs/difxapp" }, 175 { "http://schemas.microsoft.com/wix/DifxAppExtension", "http://wixtoolset.org/schemas/v4/wxs/difxapp" },
174 { "http://schemas.microsoft.com/wix/FirewallExtension", WixFirewallNamespace }, 176 { "http://schemas.microsoft.com/wix/FirewallExtension", WixFirewallNamespace },
175 { "http://schemas.microsoft.com/wix/HttpExtension", "http://wixtoolset.org/schemas/v4/wxs/http" }, 177 { "http://schemas.microsoft.com/wix/HttpExtension", "http://wixtoolset.org/schemas/v4/wxs/http" },
176 { "http://schemas.microsoft.com/wix/IIsExtension", "http://wixtoolset.org/schemas/v4/wxs/iis" }, 178 { "http://schemas.microsoft.com/wix/IIsExtension", WixIisNamespace },
177 { "http://schemas.microsoft.com/wix/MsmqExtension", "http://wixtoolset.org/schemas/v4/wxs/msmq" }, 179 { "http://schemas.microsoft.com/wix/MsmqExtension", "http://wixtoolset.org/schemas/v4/wxs/msmq" },
178 { "http://schemas.microsoft.com/wix/NetFxExtension", "http://wixtoolset.org/schemas/v4/wxs/netfx" }, 180 { "http://schemas.microsoft.com/wix/NetFxExtension", "http://wixtoolset.org/schemas/v4/wxs/netfx" },
179 { "http://schemas.microsoft.com/wix/PSExtension", "http://wixtoolset.org/schemas/v4/wxs/powershell" }, 181 { "http://schemas.microsoft.com/wix/PSExtension", "http://wixtoolset.org/schemas/v4/wxs/powershell" },
@@ -278,6 +280,7 @@ namespace WixToolset.Converters
278 { WixConverter.BootstrapperApplicationRefElementName, this.ConvertBootstrapperApplicationRefElement }, 280 { WixConverter.BootstrapperApplicationRefElementName, this.ConvertBootstrapperApplicationRefElement },
279 { WixConverter.ApprovedExeForElevationElementName, this.ConvertApprovedExeForElevationElement }, 281 { WixConverter.ApprovedExeForElevationElementName, this.ConvertApprovedExeForElevationElement },
280 { WixConverter.CatalogElementName, this.ConvertCatalogElement }, 282 { WixConverter.CatalogElementName, this.ConvertCatalogElement },
283 { WixConverter.CertificateElementName, this.ConvertCertificateElement },
281 { WixConverter.ColumnElementName, this.ConvertColumnElement }, 284 { WixConverter.ColumnElementName, this.ConvertColumnElement },
282 { WixConverter.ComponentElementName, this.ConvertComponentElement }, 285 { WixConverter.ComponentElementName, this.ConvertComponentElement },
283 { WixConverter.ControlElementName, this.ConvertControlElement }, 286 { WixConverter.ControlElementName, this.ConvertControlElement },
@@ -864,6 +867,17 @@ namespace WixToolset.Converters
864 } 867 }
865 } 868 }
866 869
870
871 private void ConvertCertificateElement(XElement xCertificate)
872 {
873 var xBinaryKey = xCertificate.Attribute("BinaryKey");
874 if (xBinaryKey != null && this.OnInformation(ConverterTestType.CertificateBinaryKeyIsNowBinaryRef, xCertificate, "The Certificate BinaryKey element has been renamed to BinaryRef."))
875 {
876 xCertificate.SetAttributeValue("BinaryRef", xBinaryKey.Value);
877 xBinaryKey.Remove();
878 }
879 }
880
867 private void ConvertColumnElement(XElement element) 881 private void ConvertColumnElement(XElement element)
868 { 882 {
869 var category = element.Attribute("Category"); 883 var category = element.Attribute("Category");
@@ -3284,6 +3298,11 @@ namespace WixToolset.Converters
3284 /// A reference to the TARGETDIR Directory was removed. This may cause the Fragment that defined TARGETDIR to not be included in the final output. If this happens, reference a different element in the Fragment to replace the old reference to TARGEDIR. 3298 /// A reference to the TARGETDIR Directory was removed. This may cause the Fragment that defined TARGETDIR to not be included in the final output. If this happens, reference a different element in the Fragment to replace the old reference to TARGEDIR.
3285 /// </summary> 3299 /// </summary>
3286 TargetDirRefRemoved, 3300 TargetDirRefRemoved,
3301
3302 /// <summary>
3303 /// The Certificate BinaryKey element has been renamed to BinaryRef.
3304 /// </summary>
3305 CertificateBinaryKeyIsNowBinaryRef,
3287 } 3306 }
3288 } 3307 }
3289} 3308}
diff --git a/src/wix/test/WixToolsetTest.Converters/IisExtensionFixture.cs b/src/wix/test/WixToolsetTest.Converters/IisExtensionFixture.cs
new file mode 100644
index 00000000..b20ac90d
--- /dev/null
+++ b/src/wix/test/WixToolsetTest.Converters/IisExtensionFixture.cs
@@ -0,0 +1,51 @@
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 WixToolsetTest.Converters
4{
5 using System;
6 using System.Xml.Linq;
7 using WixInternal.TestSupport;
8 using WixToolset.Converters;
9 using WixToolsetTest.Converters.Mocks;
10 using Xunit;
11
12 public class IisExtensionFixture : BaseConverterFixture
13 {
14 [Fact]
15 public void FixCertificateBinaryKey()
16 {
17 var parse = String.Join(Environment.NewLine,
18 "<Wix xmlns='http://schemas.microsoft.com/wix/2006/wi' xmlns:iis='http://schemas.microsoft.com/wix/IIsExtension'>",
19 " <Fragment>",
20 " <iis:Certificate BinaryKey=\"SomeBinary\" />",
21 " </Fragment>",
22 " <Fragment>",
23 " <Binary Id=\"SomeBinary\" SourceFile=\"path\\to\\bin.dll\" />",
24 " </Fragment>",
25 "</Wix>");
26
27 var expected = new[]
28 {
29 "<Wix xmlns=\"http://wixtoolset.org/schemas/v4/wxs\" xmlns:iis=\"http://wixtoolset.org/schemas/v4/wxs/iis\">",
30 " <Fragment>",
31 " <iis:Certificate BinaryRef=\"SomeBinary\" />",
32 " </Fragment>",
33 " <Fragment>",
34 " <Binary Id=\"SomeBinary\" SourceFile=\"path\\to\\bin.dll\" />",
35 " </Fragment>",
36 "</Wix>"
37 };
38
39 var document = XDocument.Parse(parse, LoadOptions.PreserveWhitespace | LoadOptions.SetLineInfo);
40
41 var messaging = new MockMessaging();
42 var converter = new WixConverter(messaging, 2, null, null);
43
44 var errors = converter.ConvertDocument(document);
45 Assert.Equal(3, errors);
46
47 var actualLines = UnformattedDocumentLines(document);
48 WixAssert.CompareLineByLine(expected, actualLines);
49 }
50 }
51}