@joebigelow / wix-1 / commits / 2accc355

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>