From cc083c765e8b7baa239c4d800a372cc729ada9d8 Mon Sep 17 00:00:00 2001 From: Bob Arnson Date: Sun, 17 May 2020 21:03:28 -0400 Subject: Support ARM64. --- appveyor.cmd | 3 ++ nuget.config | 1 + src/ca/fwca.vcxproj | 37 ++++++++++++++++--- src/ca/packages.config | 4 +- .../FirewallExtensionFixture.cs | 43 ++++++++++++++++++++-- src/wixext/FirewallCompiler.cs | 15 ++------ .../FirewallWindowsInstallerBackendExtension.cs | 4 +- src/wixlib/FirewallExtension_Platform.wxi | 32 ++++++++-------- src/wixlib/FirewallExtension_arm.wxs | 8 ++++ src/wixlib/FirewallExtension_arm64.wxs | 8 ++++ src/wixlib/FirewallExtension_x64.wxs | 8 ++++ src/wixlib/caDecor.wxi | 40 ++++++++++++++++++++ src/wixlib/caSuffix.wxi | 28 -------------- src/wixlib/firewall.wixproj | 39 +++++++++++++++++++- src/wixlib/packages.config | 2 +- 15 files changed, 199 insertions(+), 73 deletions(-) create mode 100644 src/wixlib/FirewallExtension_arm.wxs create mode 100644 src/wixlib/FirewallExtension_arm64.wxs create mode 100644 src/wixlib/FirewallExtension_x64.wxs create mode 100644 src/wixlib/caDecor.wxi delete mode 100644 src/wixlib/caSuffix.wxi diff --git a/appveyor.cmd b/appveyor.cmd index 6742048a..f40602b7 100644 --- a/appveyor.cmd +++ b/appveyor.cmd @@ -9,5 +9,8 @@ msbuild -p:Configuration=Release src\test\WixToolsetTest.Firewall\WixToolsetTest msbuild -p:Configuration=Release -t:Pack src\wixext\WixToolset.Firewall.wixext.csproj +msbuild -p:Configuration=Release src\test\WixToolsetTest.Firewall\WixToolsetTest.Firewall.csproj +dotnet test -c Release --no-build src\test\WixToolsetTest.Firewall + @popd @endlocal \ No newline at end of file diff --git a/nuget.config b/nuget.config index aaee3228..d5408d52 100644 --- a/nuget.config +++ b/nuget.config @@ -6,6 +6,7 @@ + diff --git a/src/ca/fwca.vcxproj b/src/ca/fwca.vcxproj index 0172ddbc..c2addf82 100644 --- a/src/ca/fwca.vcxproj +++ b/src/ca/fwca.vcxproj @@ -2,10 +2,37 @@ - - + + + + Debug + ARM + + + Release + ARM + + + + Debug + ARM64 + + + Release + ARM64 + + + + Debug + X64 + + + Release + X64 + + Debug Win32 @@ -20,7 +47,7 @@ {F72D34CA-48DA-4DFD-91A9-A0C78BEF6981} DynamicLibrary fwca - v141 + v142 Unicode fwca.def WiX Toolset Firewall CustomAction @@ -57,7 +84,7 @@ This project references NuGet package(s) that are missing on this computer. Use NuGet Package Restore to download them. For more information, see http://go.microsoft.com/fwlink/?LinkID=322105. The missing file is {0}. - - + + diff --git a/src/ca/packages.config b/src/ca/packages.config index 4e9403bf..97a06c72 100644 --- a/src/ca/packages.config +++ b/src/ca/packages.config @@ -1,5 +1,5 @@  - - + + \ No newline at end of file diff --git a/src/test/WixToolsetTest.Firewall/FirewallExtensionFixture.cs b/src/test/WixToolsetTest.Firewall/FirewallExtensionFixture.cs index fa64f7d3..8f8ba44a 100644 --- a/src/test/WixToolsetTest.Firewall/FirewallExtensionFixture.cs +++ b/src/test/WixToolsetTest.Firewall/FirewallExtensionFixture.cs @@ -11,22 +11,57 @@ namespace WixToolsetTest.Firewall public class FirewallExtensionFixture { [Fact] - public void CanBuildUsingFileShare() + public void CanBuildUsingFirewall() { var folder = TestData.Get(@"TestData\UsingFirewall"); var build = new Builder(folder, typeof(FirewallExtensionFactory), new[] { folder }); - var results = build.BuildAndQuery(Build, "WixFirewallException"); + var results = build.BuildAndQuery(Build, "WixFirewallException", "CustomAction"); Assert.Equal(new[] { + "CustomAction:Wix4ExecFirewallExceptionsInstall_X86\t3073\tWix4FWCA_X86\tExecFirewallExceptions\t", + "CustomAction:Wix4ExecFirewallExceptionsUninstall_X86\t3073\tWix4FWCA_X86\tExecFirewallExceptions\t", + "CustomAction:Wix4RollbackFirewallExceptionsInstall_X86\t3329\tWix4FWCA_X86\tExecFirewallExceptions\t", + "CustomAction:Wix4RollbackFirewallExceptionsUninstall_X86\t3329\tWix4FWCA_X86\tExecFirewallExceptions\t", + "CustomAction:Wix4SchedFirewallExceptionsInstall_X86\t1\tWix4FWCA_X86\tSchedFirewallExceptionsInstall\t", + "CustomAction:Wix4SchedFirewallExceptionsUninstall_X86\t1\tWix4FWCA_X86\tSchedFirewallExceptionsUninstall\t", + "WixFirewallException:ExampleFirewall\texample\t*\t42\t6\t\t0\t2147483647\tfilF5_pLhBuF5b4N9XEo52g_hUM5Lo\tAn example firewall", + }, results); + } + + [Fact] + public void CanBuildUsingFirewallARM64() + { + var folder = TestData.Get(@"TestData\UsingFirewall"); + var build = new Builder(folder, typeof(FirewallExtensionFactory), new[] { folder }); + + var results = build.BuildAndQuery(BuildARM64, "WixFirewallException", "CustomAction"); + Assert.Equal(new[] + { + "CustomAction:Wix4ExecFirewallExceptionsInstall_A64\t3073\tWix4FWCA_A64\tExecFirewallExceptions\t", + "CustomAction:Wix4ExecFirewallExceptionsUninstall_A64\t3073\tWix4FWCA_A64\tExecFirewallExceptions\t", + "CustomAction:Wix4RollbackFirewallExceptionsInstall_A64\t3329\tWix4FWCA_A64\tExecFirewallExceptions\t", + "CustomAction:Wix4RollbackFirewallExceptionsUninstall_A64\t3329\tWix4FWCA_A64\tExecFirewallExceptions\t", + "CustomAction:Wix4SchedFirewallExceptionsInstall_A64\t1\tWix4FWCA_A64\tSchedFirewallExceptionsInstall\t", + "CustomAction:Wix4SchedFirewallExceptionsUninstall_A64\t1\tWix4FWCA_A64\tSchedFirewallExceptionsUninstall\t", "WixFirewallException:ExampleFirewall\texample\t*\t42\t6\t\t0\t2147483647\tfilF5_pLhBuF5b4N9XEo52g_hUM5Lo\tAn example firewall", }, results); } private static void Build(string[] args) { - var result = WixRunner.Execute(args) - .AssertSuccess(); + var result = WixRunner.Execute(args); + result.AssertSuccess(); + } + + private static void BuildARM64(string[] args) + { + var newArgs = args.ToList(); + newArgs.Add("-platform"); + newArgs.Add("arm64"); + + var result = WixRunner.Execute(newArgs.ToArray()); + result.AssertSuccess(); } } } diff --git a/src/wixext/FirewallCompiler.cs b/src/wixext/FirewallCompiler.cs index 16136954..1fa80f48 100644 --- a/src/wixext/FirewallCompiler.cs +++ b/src/wixext/FirewallCompiler.cs @@ -7,6 +7,7 @@ namespace WixToolset.Firewall using System.Xml.Linq; using WixToolset.Data; using WixToolset.Extensibility; + using WixToolset.Extensibility.Data; using WixToolset.Firewall.Tuples; /// @@ -292,18 +293,8 @@ namespace WixToolset.Firewall tuple.Attributes = attributes; } - if (this.Context.Platform == Platform.ARM) - { - // Ensure ARM version of the CA is referenced - this.ParseHelper.CreateSimpleReference(section, sourceLineNumbers, TupleDefinitions.CustomAction, "WixSchedFirewallExceptionsInstall_ARM"); - this.ParseHelper.CreateSimpleReference(section, sourceLineNumbers, TupleDefinitions.CustomAction, "WixSchedFirewallExceptionsUninstall_ARM"); - } - else - { - // All other supported platforms use x86 - this.ParseHelper.CreateSimpleReference(section, sourceLineNumbers, TupleDefinitions.CustomAction, "WixSchedFirewallExceptionsInstall"); - this.ParseHelper.CreateSimpleReference(section, sourceLineNumbers, TupleDefinitions.CustomAction, "WixSchedFirewallExceptionsUninstall"); - } + this.ParseHelper.CreateCustomActionReference(sourceLineNumbers, section, "SchedFirewallExceptionsInstall", this.Context.Platform, CustomActionPlatforms.ARM | CustomActionPlatforms.ARM64 | CustomActionPlatforms.X64 | CustomActionPlatforms.X86); + this.ParseHelper.CreateCustomActionReference(sourceLineNumbers, section, "SchedFirewallExceptionsUninstall", this.Context.Platform, CustomActionPlatforms.ARM | CustomActionPlatforms.ARM64 | CustomActionPlatforms.X64 | CustomActionPlatforms.X86); } } diff --git a/src/wixext/FirewallWindowsInstallerBackendExtension.cs b/src/wixext/FirewallWindowsInstallerBackendExtension.cs index dea355b4..46fdfa77 100644 --- a/src/wixext/FirewallWindowsInstallerBackendExtension.cs +++ b/src/wixext/FirewallWindowsInstallerBackendExtension.cs @@ -1,10 +1,8 @@ -// 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. +// 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. namespace WixToolset.Firewall { using System.Collections.Generic; - using System.Linq; - using System.Xml; using WixToolset.Data.WindowsInstaller; using WixToolset.Extensibility; diff --git a/src/wixlib/FirewallExtension_Platform.wxi b/src/wixlib/FirewallExtension_Platform.wxi index 263651d2..afd5f20b 100644 --- a/src/wixlib/FirewallExtension_Platform.wxi +++ b/src/wixlib/FirewallExtension_Platform.wxi @@ -2,33 +2,33 @@ - + - !(loc.WixSchedFirewallExceptionsInstall) - !(loc.WixSchedFirewallExceptionsUninstall) - !(loc.WixRollbackFirewallExceptionsInstall) - !(loc.WixExecFirewallExceptionsInstall) - !(loc.WixRollbackFirewallExceptionsUninstall) - !(loc.WixExecFirewallExceptionsUninstall) + !(loc.WixSchedFirewallExceptionsInstall) + !(loc.WixSchedFirewallExceptionsUninstall) + !(loc.WixRollbackFirewallExceptionsInstall) + !(loc.WixExecFirewallExceptionsInstall) + !(loc.WixRollbackFirewallExceptionsUninstall) + !(loc.WixExecFirewallExceptionsUninstall) - - - - - - + + + + + + - + = 600 OR (VersionNT >= 501 AND ((MsiNTProductType = 1 AND ServicePackLevel >= 2) OR (MsiNTProductType > 1 AND ServicePackLevel >= 1))) ]]> - + = 600 OR (VersionNT >= 501 AND ((MsiNTProductType = 1 AND ServicePackLevel >= 2) OR (MsiNTProductType > 1 AND ServicePackLevel >= 1))) ]]> @@ -36,6 +36,6 @@ - + diff --git a/src/wixlib/FirewallExtension_arm.wxs b/src/wixlib/FirewallExtension_arm.wxs new file mode 100644 index 00000000..8afe1589 --- /dev/null +++ b/src/wixlib/FirewallExtension_arm.wxs @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/src/wixlib/FirewallExtension_arm64.wxs b/src/wixlib/FirewallExtension_arm64.wxs new file mode 100644 index 00000000..4fc16b63 --- /dev/null +++ b/src/wixlib/FirewallExtension_arm64.wxs @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/src/wixlib/FirewallExtension_x64.wxs b/src/wixlib/FirewallExtension_x64.wxs new file mode 100644 index 00000000..8317c20b --- /dev/null +++ b/src/wixlib/FirewallExtension_x64.wxs @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/src/wixlib/caDecor.wxi b/src/wixlib/caDecor.wxi new file mode 100644 index 00000000..1d00df8f --- /dev/null +++ b/src/wixlib/caDecor.wxi @@ -0,0 +1,40 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/wixlib/caSuffix.wxi b/src/wixlib/caSuffix.wxi deleted file mode 100644 index a56a2393..00000000 --- a/src/wixlib/caSuffix.wxi +++ /dev/null @@ -1,28 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/src/wixlib/firewall.wixproj b/src/wixlib/firewall.wixproj index f9260c88..cb273a38 100644 --- a/src/wixlib/firewall.wixproj +++ b/src/wixlib/firewall.wixproj @@ -1,7 +1,7 @@ - + {1acffefd-505a-41a5-acbf-a02b7b473aa2} @@ -13,12 +13,31 @@ + + + + + + + x86 + + + x64 + + + arm + + + arm64 + + + @@ -26,6 +45,22 @@ fwca {F72D34CA-48DA-4DFD-91A9-A0C78BEF6981} + Platform=ARM + + + fwca + {F72D34CA-48DA-4DFD-91A9-A0C78BEF6981} + Platform=ARM64 + + + fwca + {F72D34CA-48DA-4DFD-91A9-A0C78BEF6981} + Platform=x86 + + + fwca + {F72D34CA-48DA-4DFD-91A9-A0C78BEF6981} + Platform=x64 @@ -38,7 +73,7 @@ This project references NuGet package(s) that are missing on this computer. Use NuGet Package Restore to download them. For more information, see http://go.microsoft.com/fwlink/?LinkID=322105. The missing file is {0}. - + \ No newline at end of file diff --git a/src/wixlib/packages.config b/src/wixlib/packages.config index 1e5a9850..20afb58c 100644 --- a/src/wixlib/packages.config +++ b/src/wixlib/packages.config @@ -1,5 +1,5 @@  - + \ No newline at end of file -- cgit v1.2.3-55-g6feb