Rename ExePackage/@XxxCommand attributes to @XxxArguments
Fixes wixtoolset/issues#6245
Rob Mensching committed
Jan 8, 2021 at 15:33 UTC
2accc355d9dadb2688cf226f8736232d583281aa
3 files changed
+75
-3
src/WixToolset.Converters/WixConverter.cs
+24
-1
@@ -161,7 +161,7 @@ namespace WixToolset.Converters
161
{ WixConverter.FirewallRemoteAddressElementName, this.ConvertFirewallRemoteAddressElement },
162
{ WixConverter.EmbeddedChainerElementName, this.ConvertEmbeddedChainerElement },
163
{ WixConverter.ErrorElementName, this.ConvertErrorElement },
164
- { WixConverter.ExePackageElementName, this.ConvertSuppressSignatureValidation },
164
+ { WixConverter.ExePackageElementName, this.ConvertExePackageElement },
165
{ WixConverter.ModuleElementName, this.ConvertModuleElement },
166
{ WixConverter.MsiPackageElementName, this.ConvertWindowsInstallerPackageElement },
167
{ WixConverter.MspPackageElementName, this.ConvertWindowsInstallerPackageElement },
@@ -843,6 +843,24 @@ namespace WixToolset.Converters
843
844
private void ConvertErrorElement(XElement element) => this.ConvertInnerTextToAttribute(element, "Message");
845
846
+ private void ConvertExePackageElement(XElement element)
847
+ {
848
+ this.ConvertSuppressSignatureValidation(element);
849
+
850
+ foreach (var attributeName in new[] { "InstallCommand", "RepairCommand", "UninstallCommand" })
851
+ {
852
+ var newName = attributeName.Replace("Command", "Arguments");
853
+ var attribute = element.Attribute(attributeName);
854
+
855
+ if (attribute != null &&
856
+ this.OnError(ConverterTestType.RenameExePackageCommandToArguments, element, "The {0} element {1} attribute has been renamed {2}.", element.Name.LocalName, attribute.Name.LocalName, newName))
857
+ {
858
+ element.Add(new XAttribute(newName, attribute.Value));
859
+ attribute.Remove();
860
+ }
861
+ }
862
+ }
863
+
864
private void ConvertPermissionExElement(XElement element)
865
{
866
var xCondition = element.Element(ConditionElementName);
@@ -1691,6 +1709,11 @@ namespace WixToolset.Converters
1709
/// The custom elements for built-in BAs are now required.
1710
/// </summary>
1711
BalBootstrapperApplicationRefToElement,
1712
+
1713
+ /// <summary>
1714
+ /// The ExePackage elements "XxxCommand" attributes have been renamed to "XxxArguments".
1715
+ /// </summary>
1716
+ RenameExePackageCommandToArguments,
1717
}
1718
}
1719
}
src/test/WixToolsetTest.Converters/ExePackageFixture.cs
new
+49
@@ -0,0 +1,49 @@
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 ExePackageFixture : BaseConverterFixture
13
+ {
14
+ [Fact]
15
+ public void CanConvertExePackageCommandToArguments()
16
+ {
17
+ var parse = String.Join(Environment.NewLine,
18
+ "<Wix xmlns='http://wixtoolset.org/schemas/v4/wxs'>",
19
+ " <Fragment>",
20
+ " <PackageGroup Id='exe'>",
21
+ " <ExePackage InstallCommand='-install' RepairCommand='-repair' UninstallCommand='-uninstall' SourceFile='test.exe' />",
22
+ " </PackageGroup>",
23
+ " </Fragment>",
24
+ "</Wix>");
25
+
26
+ var expected = new[]
27
+ {
28
+ "<Wix xmlns=\"http://wixtoolset.org/schemas/v4/wxs\">",
29
+ " <Fragment>",
30
+ " <PackageGroup Id=\"exe\">",
31
+ " <ExePackage SourceFile=\"test.exe\" InstallArguments=\"-install\" RepairArguments=\"-repair\" UninstallArguments=\"-uninstall\" />",
32
+ " </PackageGroup>",
33
+ " </Fragment>",
34
+ "</Wix>"
35
+ };
36
+
37
+ var document = XDocument.Parse(parse, LoadOptions.PreserveWhitespace | LoadOptions.SetLineInfo);
38
+
39
+ var messaging = new MockMessaging();
40
+ var converter = new WixConverter(messaging, 2, null, null);
41
+
42
+ var errors = converter.ConvertDocument(document);
43
+ Assert.Equal(3, errors);
44
+
45
+ var actualLines = UnformattedDocumentLines(document);
46
+ WixAssert.CompareLineByLine(expected, actualLines);
47
+ }
48
+ }
49
+}
src/test/WixToolsetTest.Converters/WixToolsetTest.Converters.csproj
+2
-2
@@ -36,8 +36,8 @@
36
</ItemGroup>
37
38
<ItemGroup>
39
- <PackageReference Include="Microsoft.NET.Test.Sdk" Version="16.1.0" />
39
+ <PackageReference Include="Microsoft.NET.Test.Sdk" Version="16.8.3" />
40
<PackageReference Include="xunit" Version="2.4.1" />
41
- <PackageReference Include="xunit.runner.visualstudio" Version="2.4.1" PrivateAssets="All" />
41
+ <PackageReference Include="xunit.runner.visualstudio" Version="2.4.3" PrivateAssets="All" />
42
</ItemGroup>
43
</Project>