@joebigelow / wix / commits / ecad1128

Set DpiAwareness to "unaware" from v3.

Sean Hall committed Jul 19, 2020 at 19:08 UTC ecad1128c6223920a035cd12502e316452e61c93
2 files changed +93 -1
src/WixToolset.Converters/WixConverter.cs
+17 -1
@@ -39,6 +39,7 @@ namespace WixToolset.Converters
39 private static readonly XName AdvertiseExecuteSequenceElementName = WixNamespace + "AdvertiseExecuteSequence";
40 private static readonly XName InstallExecuteSequenceElementName = WixNamespace + "InstallExecuteSequence";
41 private static readonly XName InstallUISequenceSequenceElementName = WixNamespace + "InstallUISequence";
42 + private static readonly XName BootstrapperApplicationElementName = WixNamespace + "BootstrapperApplication";
43 private static readonly XName EmbeddedChainerElementName = WixNamespace + "EmbeddedChainer";
44 private static readonly XName ColumnElementName = WixNamespace + "Column";
45 private static readonly XName ComponentElementName = WixNamespace + "Component";
@@ -130,6 +131,7 @@ namespace WixToolset.Converters
131 { WixConverter.AdvertiseExecuteSequenceElementName, this.ConvertSequenceElement },
132 { WixConverter.InstallUISequenceSequenceElementName, this.ConvertSequenceElement },
133 { WixConverter.InstallExecuteSequenceElementName, this.ConvertSequenceElement },
134 + { WixConverter.BootstrapperApplicationElementName, this.ConvertBootstrapperApplicationElement },
135 { WixConverter.ColumnElementName, this.ConvertColumnElement },
136 { WixConverter.CustomTableElementName, this.ConvertCustomTableElement },
137 { WixConverter.ControlElementName, this.ConvertControlElement },
@@ -442,6 +444,15 @@ namespace WixToolset.Converters
444 }
445 }
446
447 + private void ConvertBootstrapperApplicationElement(XElement element)
448 + {
449 + if (this.SourceVersion < 4 && null == element.Attribute("DpiAwareness") &&
450 + this.OnError(ConverterTestType.AssignBootstrapperApplicationDpiAwareness, element, "The BootstrapperApplication DpiAwareness attribute is being set to 'unaware' to ensure it remains the same as the v3 default"))
451 + {
452 + element.Add(new XAttribute("DpiAwareness", "unaware"));
453 + }
454 + }
455 +
456 private void ConvertColumnElement(XElement element)
457 {
458 var category = element.Attribute("Category");
@@ -1212,7 +1223,12 @@ namespace WixToolset.Converters
1223 /// <summary>
1224 /// The Condition='1' attribute is unnecessary on Publish elements.
1225 /// </summary>
1215 - PublishConditionOneUnnecessary
1226 + PublishConditionOneUnnecessary,
1227 +
1228 + /// <summary>
1229 + /// DpiAwareness is new and is defaulted to 'perMonitorV2' which is a change in behavior.
1230 + /// </summary>
1231 + AssignBootstrapperApplicationDpiAwareness,
1232 }
1233 }
1234 }
src/test/WixToolsetTest.Converters/BootstrapperApplicationFixture.cs new
+76
@@ -0,0 +1,76 @@
1 +// Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information.
2 +
3 +namespace WixToolsetTest.Converters
4 +{
5 + using System;
6 + using System.Xml.Linq;
7 + using WixBuildTools.TestSupport;
8 + using WixToolset.Converters;
9 + using WixToolsetTest.Converters.Mocks;
10 + using Xunit;
11 +
12 + public class BootstrapperApplicationFixture : BaseConverterFixture
13 + {
14 + [Fact]
15 + public void SetsDpiUnawareFromV3()
16 + {
17 + var parse = String.Join(Environment.NewLine,
18 + "<Wix xmlns='http://schemas.microsoft.com/wix/2006/wi'>",
19 + " <Fragment>",
20 + " <BootstrapperApplication Id='ba' />",
21 + " </Fragment>",
22 + "</Wix>");
23 +
24 + var expected = new[]
25 + {
26 + "<Wix xmlns=\"http://wixtoolset.org/schemas/v4/wxs\">",
27 + " <Fragment>",
28 + " <BootstrapperApplication Id=\"ba\" DpiAwareness=\"unaware\" />",
29 + " </Fragment>",
30 + "</Wix>"
31 + };
32 +
33 + var document = XDocument.Parse(parse, LoadOptions.PreserveWhitespace | LoadOptions.SetLineInfo);
34 +
35 + var messaging = new MockMessaging();
36 + var converter = new WixConverter(messaging, 2, null, null);
37 +
38 + var errors = converter.ConvertDocument(document);
39 + Assert.Equal(2, errors);
40 +
41 + var actualLines = UnformattedDocumentLines(document);
42 + CompareLineByLine(expected, actualLines);
43 + }
44 +
45 + [Fact]
46 + public void DoesntSetDpiUnawareFromV4()
47 + {
48 + var parse = String.Join(Environment.NewLine,
49 + "<Wix xmlns='http://wixtoolset.org/schemas/v4/wxs'>",
50 + " <Fragment>",
51 + " <BootstrapperApplication Id='ba' />",
52 + " </Fragment>",
53 + "</Wix>");
54 +
55 + var expected = new[]
56 + {
57 + "<Wix xmlns=\"http://wixtoolset.org/schemas/v4/wxs\">",
58 + " <Fragment>",
59 + " <BootstrapperApplication Id=\"ba\" />",
60 + " </Fragment>",
61 + "</Wix>"
62 + };
63 +
64 + var document = XDocument.Parse(parse, LoadOptions.PreserveWhitespace | LoadOptions.SetLineInfo);
65 +
66 + var messaging = new MockMessaging();
67 + var converter = new WixConverter(messaging, 2, null, null);
68 +
69 + var errors = converter.ConvertDocument(document);
70 + Assert.Equal(0, errors);
71 +
72 + var actualLines = UnformattedDocumentLines(document);
73 + CompareLineByLine(expected, actualLines);
74 + }
75 + }
76 +}