diff options
author | chris_bednarski <Chris.Bednarski@minfos.com.au> | 2023-09-21 16:03:28 +1000 |
---|---|---|
committer | Bob Arnson <github@bobs.org> | 2023-11-19 12:17:13 -0500 |
commit | dfb7512b85536b7726080648f2228cf8d0153724 (patch) | |
tree | d053018ee47afe7e349dda6739a6580c771a1a3d /src/ext/Firewall/test | |
parent | 80e604761b4f43b9b79a4878fcae360b071a7c35 (diff) | |
download | wix-dfb7512b85536b7726080648f2228cf8d0153724.tar.gz wix-dfb7512b85536b7726080648f2228cf8d0153724.tar.bz2 wix-dfb7512b85536b7726080648f2228cf8d0153724.zip |
add firewall extension decompiler, make msi modifications work, add all attributes
Diffstat (limited to 'src/ext/Firewall/test')
7 files changed, 574 insertions, 30 deletions
diff --git a/src/ext/Firewall/test/WixToolsetTest.Firewall/FirewallExtensionFixture.cs b/src/ext/Firewall/test/WixToolsetTest.Firewall/FirewallExtensionFixture.cs index 7119e92d..df18f0e0 100644 --- a/src/ext/Firewall/test/WixToolsetTest.Firewall/FirewallExtensionFixture.cs +++ b/src/ext/Firewall/test/WixToolsetTest.Firewall/FirewallExtensionFixture.cs | |||
@@ -2,6 +2,7 @@ | |||
2 | 2 | ||
3 | namespace WixToolsetTest.Firewall | 3 | namespace WixToolsetTest.Firewall |
4 | { | 4 | { |
5 | using System.Data; | ||
5 | using System.IO; | 6 | using System.IO; |
6 | using System.Linq; | 7 | using System.Linq; |
7 | using System.Xml.Linq; | 8 | using System.Xml.Linq; |
@@ -27,12 +28,27 @@ namespace WixToolsetTest.Firewall | |||
27 | "CustomAction:Wix5RollbackFirewallExceptionsUninstall_X86\t3329\tWix5FWCA_X86\tExecFirewallExceptions\t", | 28 | "CustomAction:Wix5RollbackFirewallExceptionsUninstall_X86\t3329\tWix5FWCA_X86\tExecFirewallExceptions\t", |
28 | "CustomAction:Wix5SchedFirewallExceptionsInstall_X86\t1\tWix5FWCA_X86\tSchedFirewallExceptionsInstall\t", | 29 | "CustomAction:Wix5SchedFirewallExceptionsInstall_X86\t1\tWix5FWCA_X86\tSchedFirewallExceptionsInstall\t", |
29 | "CustomAction:Wix5SchedFirewallExceptionsUninstall_X86\t1\tWix5FWCA_X86\tSchedFirewallExceptionsUninstall\t", | 30 | "CustomAction:Wix5SchedFirewallExceptionsUninstall_X86\t1\tWix5FWCA_X86\tSchedFirewallExceptionsUninstall\t", |
30 | "Wix5FirewallException:ExampleFirewall\tExampleApp\t*\t42\t6\t[#filNdJBJmq3UCUIwmXS8x21aAsvqzk]\t0\t2147483647\tfilNdJBJmq3UCUIwmXS8x21aAsvqzk\tAn app-based firewall exception\t1", | 31 | "Wix5FirewallException:ExampleFirewall\tExampleApp\t*\t42\t6\t[#filNdJBJmq3UCUIwmXS8x21aAsvqzk]\t2\t-2147483648\tfilNdJBJmq3UCUIwmXS8x21aAsvqzk\tAn app-based firewall exception\t1\t-2147483648\t-2147483648\t-2147483648\t\t\t\t\t\t\t\t\t\t\t\t\t-2147483648", |
31 | "Wix5FirewallException:fex_ZpDsnKyHlYiA24JHzvFxm3uLZ8\tExampleDefaultGatewayScope\tDefaultGateway\t4432\t6\t\t0\t2\tfilNdJBJmq3UCUIwmXS8x21aAsvqzk\tdefaultGateway scope firewall exception\t1", | 32 | "Wix5FirewallException:fex.BGtyMRGAhxb2hG.49JvWYz7fM0\tLocalScopeExample2\t*\t\t-2147483648\t\t0\t-2147483648\tfilNdJBJmq3UCUIwmXS8x21aAsvqzk\tRule with local scope property\t1\t-2147483648\t-2147483648\t-2147483648\t\t\t\t\t[LOCALSCOPE_PROP]\t\t\t\t\t\t\t\t-2147483648", |
32 | "Wix5FirewallException:fex6bkfWwpiRGI.wVFx0T7W4LXIHxU\tExampleDHCPScope\tdhcp\t\t211\ttest.exe\t0\t4\tfilNdJBJmq3UCUIwmXS8x21aAsvqzk\tDHCP scope firewall exception\t1", | 33 | "Wix5FirewallException:fex0HTxATWjpC2PCoY6DB7f2D1WaKU\tLocalScopeExample1\t*\t\t-2147483648\t\t0\t-2147483648\tfilNdJBJmq3UCUIwmXS8x21aAsvqzk\tSimple rule with local scope\t1\t-2147483648\t-2147483648\t-2147483648\t\t\t\t\tLocalSubnet\t\t\t\t\t\t\t\t-2147483648", |
33 | "Wix5FirewallException:fex70IVsYNnbwiHQrEepmdTPKH8XYs\tExamplePort\tLocalSubnet\t42\t6\t\t0\t2147483647\tfilNdJBJmq3UCUIwmXS8x21aAsvqzk\tA port-based firewall exception\t2", | 34 | "Wix5FirewallException:fex4FeP470wYcFpw.g7fbIKiLnZPzg\tExampleDNSScope\tdns\t356\t17\t\t0\t-2147483648\tfilNdJBJmq3UCUIwmXS8x21aAsvqzk\tDNS scope firewall exception\t1\t-2147483648\t-2147483648\t-2147483648\t\t\t\t\t\t\t\t\t\t\t\t\t-2147483648", |
34 | "Wix5FirewallException:fexXxaXCXXFh.UxO_BjmZxi1B1du_Q\tExampleWINSScope\twins\t6573\t6\t\t0\t1\tfilNdJBJmq3UCUIwmXS8x21aAsvqzk\tWINS scope firewall exception\t1", | 35 | "Wix5FirewallException:fex4zTcT0Iwu3dUtHIHXD5qfymvpcM\tdefertouser\t\t\t-2147483648\tfw.exe\t8\t-2147483648\tfilNdJBJmq3UCUIwmXS8x21aAsvqzk\tDefer to user edge traversal\t1\t-2147483648\t3\t-2147483648\t\t\t\t\t\t\t\t\t\t\t\t\t-2147483648", |
35 | "Wix5FirewallException:fexxY71H2ZBkPalv7uid1Yy4qaA_lA\tExampleDNSScope\tdns\t356\t17\t\t0\t2147483647\tfilNdJBJmq3UCUIwmXS8x21aAsvqzk\tDNS scope firewall exception\t1", | 36 | "Wix5FirewallException:fex8vMfBplrod4daEz3PqDTeX6olGE\tExampleDefaultGatewayScope\tDefaultGateway\t4432\t6\t\t0\t2\tfilNdJBJmq3UCUIwmXS8x21aAsvqzk\tdefaultGateway scope firewall exception\t1\t-2147483648\t-2147483648\t-2147483648\t\t\t\t\t\t\t\t\t\t\t\t\t-2147483648", |
37 | "Wix5FirewallException:fexAMmHzFDyQmubTOnKS1Cn0Y3q_Ug\tINetFwRule3 properties\t*\t\t-2147483648\t\t16\t-2147483648\tfilNdJBJmq3UCUIwmXS8x21aAsvqzk\tINetFwRule3 passed via properties\t1\t-2147483648\t-2147483648\t-2147483648\t\t\t\t\t\t\t\t[PROP1]\t[PROP2]\t[PROP3]\t[PROP4]\t[PROP5]\t[PROP6]", | ||
38 | "Wix5FirewallException:fexArlOkFR7CAwVZ2wk8yNdiREydu0\tRemotePortExample2\t\t\t6\tfw.exe\t0\t-2147483648\tfilNdJBJmq3UCUIwmXS8x21aAsvqzk\tRule with remote port property\t1\t-2147483648\t-2147483648\t-2147483648\t\t\t\t\t\t[REMOTEPORT_PROP]\t\t\t\t\t\t\t-2147483648", | ||
39 | "Wix5FirewallException:fexaUTe2tRRcSYrPUTn44DAZhE.40Q\tExamplePort\tLocalSubnet\t42\t6\t\t4\t-2147483648\tfilNdJBJmq3UCUIwmXS8x21aAsvqzk\tA port-based firewall exception\t2\t-2147483648\t-2147483648\t-2147483648\t\t\t\t\t\t\t\t\t\t\t\t\t-2147483648", | ||
40 | "Wix5FirewallException:fexD6w20c5HfNi4l1vHFj_eet4cC8I\tExampleWINSScope\twins\t6573\t6\t\t0\t1\tfilNdJBJmq3UCUIwmXS8x21aAsvqzk\tWINS scope firewall exception\t1\t-2147483648\t-2147483648\t-2147483648\t\t\t\t\t\t\t\t\t\t\t\t\t-2147483648", | ||
41 | "Wix5FirewallException:fexeD3yox6fMflfRy7sDwSN2CMCS2s\tExampleService\t\t12000\t6\t%windir%\\system32\\svchost.exe\t0\t-2147483648\tfilNdJBJmq3UCUIwmXS8x21aAsvqzk\tA port-based service exception\t1\t-2147483648\t-2147483648\t-2147483648\t\t\t\t\tDHCP,WINS\t\tftpsrv\t\t\t\t\t\t-2147483648", | ||
42 | "Wix5FirewallException:fexeok6aI2_AlclZggec4d8PBLFXLw\tinterface property\t\t54671\t6\t\t0\t-2147483648\tfilNdJBJmq3UCUIwmXS8x21aAsvqzk\tInterfaces with property\t1\t-2147483648\t-2147483648\t-2147483648\t\t\t[INTERFACE_PROPERTY]\t\t\t\t\t\t\t\t\t\t-2147483648", | ||
43 | "Wix5FirewallException:fexEPvcf4iexD1mVQdvxm7tD02nZEc\tICMPExample1\t\t\t2\t\t0\t-2147483648\tfilNdJBJmq3UCUIwmXS8x21aAsvqzk\tSimple ICMP rule\t1\t-2147483648\t-2147483648\t-2147483648\t\t4:*,9:*,12:*\t\t\t\t\t\t\t\t\t\t\t-2147483648", | ||
44 | "Wix5FirewallException:fexfzjTQsWwZkHQpObtl0XaUosfcRk\tGroupingExample1\t\t\t-2147483648\tfw.exe\t0\t-2147483648\tfilNdJBJmq3UCUIwmXS8x21aAsvqzk\tSimple rule with grouping\t1\t-2147483648\t-2147483648\t-2147483648\t@yourresources.dll,-1005\t\t\t\t\t\t\t\t\t\t\t\t-2147483648", | ||
45 | "Wix5FirewallException:fexHx2xbwZYzAi0oYp4YGWevJQs5eM\tRemotePortExample1\t*\t\t6\t\t0\t-2147483648\tfilNdJBJmq3UCUIwmXS8x21aAsvqzk\tSimple rule with remote port\t1\t-2147483648\t-2147483648\t-2147483648\t\t\t\t\t\t34560\t\t\t\t\t\t\t-2147483648", | ||
46 | "Wix5FirewallException:fexpWUzK53RVnaluW36gSmphPRY8VY\tExampleDHCPScope\tdhcp\t\t211\ttest.exe\t0\t4\tfilNdJBJmq3UCUIwmXS8x21aAsvqzk\tDHCP scope firewall exception\t1\t-2147483648\t-2147483648\t-2147483648\t\t\t\t\t\t\t\t\t\t\t\t\t-2147483648", | ||
47 | "Wix5FirewallException:fexuanTga5xaaFzr9JsAnUmpCNediw\tICMPExample2\t\t\t2\t\t0\t-2147483648\tfilNdJBJmq3UCUIwmXS8x21aAsvqzk\tRule with ICMP property\t1\t-2147483648\t-2147483648\t-2147483648\t\t[ICMP_PROP]\t\t\t\t\t\t\t\t\t\t\t-2147483648", | ||
48 | "Wix5FirewallException:fexv60s7u2Dmd1imH5vEFYKPgEWhG4\tinterface nested\t127.0.0.1\t54671\t6\t\t0\t-2147483648\tfilNdJBJmq3UCUIwmXS8x21aAsvqzk\tInterfaces with nested elements\t1\t-2147483648\t-2147483648\t-2147483648\t\t\tWi-Fi|Local Area Connection\t\t\t\t\t\t\t\t\t\t-2147483648", | ||
49 | "Wix5FirewallException:fexVr6uHcOCak5MHuTLwujjh_oKtbI\tGroupingExample2\t\t8732\t6\t\t0\t-2147483648\tfilNdJBJmq3UCUIwmXS8x21aAsvqzk\tRule with grouping property\t1\t-2147483648\t-2147483648\t-2147483648\t[GROUPING_PROP]\t\t\t\t\t\t\t\t\t\t\t\t-2147483648", | ||
50 | "Wix5FirewallException:fexwjf4OTFVE9SNiC4goVxBA6ENJBE\tINetFwRule3 values\t*\t\t-2147483648\t\t16\t-2147483648\tfilNdJBJmq3UCUIwmXS8x21aAsvqzk\tSimple INetFwRule3 values\t1\t-2147483648\t-2147483648\t-2147483648\t\t\t\t\t\t\t\tS-1-15-2-1239072475-3687740317-1842961305-3395936705-4023953123-1525404051-2779347315\tO:LSD:(A;;CC;;;S-1-5-84-0-0-0-0-0)\tS-1-5-21-1898747406-2352535518-1247798438-1914\t127.0.0.1\tO:LSD:(A;;CC;;;S-1-5-84-0-0-0-0-0)\t3", | ||
51 | "Wix5FirewallException:ServiceInstall.nested\tExampleNestedService\tLocalSubnet\t3546-7890\t6\t\t1\t-2147483648\tfilNdJBJmq3UCUIwmXS8x21aAsvqzk\tA port-based firewall exception for a windows service\t1\t-2147483648\t-2147483648\t-2147483648\t\t\t\tLan,Wireless\t\t\tsvc1\t\t\t\t\t\t-2147483648", | ||
36 | }, results); | 52 | }, results); |
37 | } | 53 | } |
38 | 54 | ||
@@ -51,12 +67,69 @@ namespace WixToolsetTest.Firewall | |||
51 | "CustomAction:Wix5RollbackFirewallExceptionsUninstall_A64\t3329\tWix5FWCA_A64\tExecFirewallExceptions\t", | 67 | "CustomAction:Wix5RollbackFirewallExceptionsUninstall_A64\t3329\tWix5FWCA_A64\tExecFirewallExceptions\t", |
52 | "CustomAction:Wix5SchedFirewallExceptionsInstall_A64\t1\tWix5FWCA_A64\tSchedFirewallExceptionsInstall\t", | 68 | "CustomAction:Wix5SchedFirewallExceptionsInstall_A64\t1\tWix5FWCA_A64\tSchedFirewallExceptionsInstall\t", |
53 | "CustomAction:Wix5SchedFirewallExceptionsUninstall_A64\t1\tWix5FWCA_A64\tSchedFirewallExceptionsUninstall\t", | 69 | "CustomAction:Wix5SchedFirewallExceptionsUninstall_A64\t1\tWix5FWCA_A64\tSchedFirewallExceptionsUninstall\t", |
54 | "Wix5FirewallException:ExampleFirewall\tExampleApp\t*\t42\t6\t[#filNdJBJmq3UCUIwmXS8x21aAsvqzk]\t0\t2147483647\tfilNdJBJmq3UCUIwmXS8x21aAsvqzk\tAn app-based firewall exception\t1", | 70 | "Wix5FirewallException:ExampleFirewall\tExampleApp\t*\t42\t6\t[#filNdJBJmq3UCUIwmXS8x21aAsvqzk]\t2\t-2147483648\tfilNdJBJmq3UCUIwmXS8x21aAsvqzk\tAn app-based firewall exception\t1\t-2147483648\t-2147483648\t-2147483648\t\t\t\t\t\t\t\t\t\t\t\t\t-2147483648", |
55 | "Wix5FirewallException:fex_ZpDsnKyHlYiA24JHzvFxm3uLZ8\tExampleDefaultGatewayScope\tDefaultGateway\t4432\t6\t\t0\t2\tfilNdJBJmq3UCUIwmXS8x21aAsvqzk\tdefaultGateway scope firewall exception\t1", | 71 | "Wix5FirewallException:fex.BGtyMRGAhxb2hG.49JvWYz7fM0\tLocalScopeExample2\t*\t\t-2147483648\t\t0\t-2147483648\tfilNdJBJmq3UCUIwmXS8x21aAsvqzk\tRule with local scope property\t1\t-2147483648\t-2147483648\t-2147483648\t\t\t\t\t[LOCALSCOPE_PROP]\t\t\t\t\t\t\t\t-2147483648", |
56 | "Wix5FirewallException:fex6bkfWwpiRGI.wVFx0T7W4LXIHxU\tExampleDHCPScope\tdhcp\t\t211\ttest.exe\t0\t4\tfilNdJBJmq3UCUIwmXS8x21aAsvqzk\tDHCP scope firewall exception\t1", | 72 | "Wix5FirewallException:fex0HTxATWjpC2PCoY6DB7f2D1WaKU\tLocalScopeExample1\t*\t\t-2147483648\t\t0\t-2147483648\tfilNdJBJmq3UCUIwmXS8x21aAsvqzk\tSimple rule with local scope\t1\t-2147483648\t-2147483648\t-2147483648\t\t\t\t\tLocalSubnet\t\t\t\t\t\t\t\t-2147483648", |
57 | "Wix5FirewallException:fex70IVsYNnbwiHQrEepmdTPKH8XYs\tExamplePort\tLocalSubnet\t42\t6\t\t0\t2147483647\tfilNdJBJmq3UCUIwmXS8x21aAsvqzk\tA port-based firewall exception\t2", | 73 | "Wix5FirewallException:fex4FeP470wYcFpw.g7fbIKiLnZPzg\tExampleDNSScope\tdns\t356\t17\t\t0\t-2147483648\tfilNdJBJmq3UCUIwmXS8x21aAsvqzk\tDNS scope firewall exception\t1\t-2147483648\t-2147483648\t-2147483648\t\t\t\t\t\t\t\t\t\t\t\t\t-2147483648", |
58 | "Wix5FirewallException:fexXxaXCXXFh.UxO_BjmZxi1B1du_Q\tExampleWINSScope\twins\t6573\t6\t\t0\t1\tfilNdJBJmq3UCUIwmXS8x21aAsvqzk\tWINS scope firewall exception\t1", | 74 | "Wix5FirewallException:fex4zTcT0Iwu3dUtHIHXD5qfymvpcM\tdefertouser\t\t\t-2147483648\tfw.exe\t8\t-2147483648\tfilNdJBJmq3UCUIwmXS8x21aAsvqzk\tDefer to user edge traversal\t1\t-2147483648\t3\t-2147483648\t\t\t\t\t\t\t\t\t\t\t\t\t-2147483648", |
59 | "Wix5FirewallException:fexxY71H2ZBkPalv7uid1Yy4qaA_lA\tExampleDNSScope\tdns\t356\t17\t\t0\t2147483647\tfilNdJBJmq3UCUIwmXS8x21aAsvqzk\tDNS scope firewall exception\t1", | 75 | "Wix5FirewallException:fex8vMfBplrod4daEz3PqDTeX6olGE\tExampleDefaultGatewayScope\tDefaultGateway\t4432\t6\t\t0\t2\tfilNdJBJmq3UCUIwmXS8x21aAsvqzk\tdefaultGateway scope firewall exception\t1\t-2147483648\t-2147483648\t-2147483648\t\t\t\t\t\t\t\t\t\t\t\t\t-2147483648", |
76 | "Wix5FirewallException:fexAMmHzFDyQmubTOnKS1Cn0Y3q_Ug\tINetFwRule3 properties\t*\t\t-2147483648\t\t16\t-2147483648\tfilNdJBJmq3UCUIwmXS8x21aAsvqzk\tINetFwRule3 passed via properties\t1\t-2147483648\t-2147483648\t-2147483648\t\t\t\t\t\t\t\t[PROP1]\t[PROP2]\t[PROP3]\t[PROP4]\t[PROP5]\t[PROP6]", | ||
77 | "Wix5FirewallException:fexArlOkFR7CAwVZ2wk8yNdiREydu0\tRemotePortExample2\t\t\t6\tfw.exe\t0\t-2147483648\tfilNdJBJmq3UCUIwmXS8x21aAsvqzk\tRule with remote port property\t1\t-2147483648\t-2147483648\t-2147483648\t\t\t\t\t\t[REMOTEPORT_PROP]\t\t\t\t\t\t\t-2147483648", | ||
78 | "Wix5FirewallException:fexaUTe2tRRcSYrPUTn44DAZhE.40Q\tExamplePort\tLocalSubnet\t42\t6\t\t4\t-2147483648\tfilNdJBJmq3UCUIwmXS8x21aAsvqzk\tA port-based firewall exception\t2\t-2147483648\t-2147483648\t-2147483648\t\t\t\t\t\t\t\t\t\t\t\t\t-2147483648", | ||
79 | "Wix5FirewallException:fexD6w20c5HfNi4l1vHFj_eet4cC8I\tExampleWINSScope\twins\t6573\t6\t\t0\t1\tfilNdJBJmq3UCUIwmXS8x21aAsvqzk\tWINS scope firewall exception\t1\t-2147483648\t-2147483648\t-2147483648\t\t\t\t\t\t\t\t\t\t\t\t\t-2147483648", | ||
80 | "Wix5FirewallException:fexeD3yox6fMflfRy7sDwSN2CMCS2s\tExampleService\t\t12000\t6\t%windir%\\system32\\svchost.exe\t0\t-2147483648\tfilNdJBJmq3UCUIwmXS8x21aAsvqzk\tA port-based service exception\t1\t-2147483648\t-2147483648\t-2147483648\t\t\t\t\tDHCP,WINS\t\tftpsrv\t\t\t\t\t\t-2147483648", | ||
81 | "Wix5FirewallException:fexeok6aI2_AlclZggec4d8PBLFXLw\tinterface property\t\t54671\t6\t\t0\t-2147483648\tfilNdJBJmq3UCUIwmXS8x21aAsvqzk\tInterfaces with property\t1\t-2147483648\t-2147483648\t-2147483648\t\t\t[INTERFACE_PROPERTY]\t\t\t\t\t\t\t\t\t\t-2147483648", | ||
82 | "Wix5FirewallException:fexEPvcf4iexD1mVQdvxm7tD02nZEc\tICMPExample1\t\t\t2\t\t0\t-2147483648\tfilNdJBJmq3UCUIwmXS8x21aAsvqzk\tSimple ICMP rule\t1\t-2147483648\t-2147483648\t-2147483648\t\t4:*,9:*,12:*\t\t\t\t\t\t\t\t\t\t\t-2147483648", | ||
83 | "Wix5FirewallException:fexfzjTQsWwZkHQpObtl0XaUosfcRk\tGroupingExample1\t\t\t-2147483648\tfw.exe\t0\t-2147483648\tfilNdJBJmq3UCUIwmXS8x21aAsvqzk\tSimple rule with grouping\t1\t-2147483648\t-2147483648\t-2147483648\t@yourresources.dll,-1005\t\t\t\t\t\t\t\t\t\t\t\t-2147483648", | ||
84 | "Wix5FirewallException:fexHx2xbwZYzAi0oYp4YGWevJQs5eM\tRemotePortExample1\t*\t\t6\t\t0\t-2147483648\tfilNdJBJmq3UCUIwmXS8x21aAsvqzk\tSimple rule with remote port\t1\t-2147483648\t-2147483648\t-2147483648\t\t\t\t\t\t34560\t\t\t\t\t\t\t-2147483648", | ||
85 | "Wix5FirewallException:fexpWUzK53RVnaluW36gSmphPRY8VY\tExampleDHCPScope\tdhcp\t\t211\ttest.exe\t0\t4\tfilNdJBJmq3UCUIwmXS8x21aAsvqzk\tDHCP scope firewall exception\t1\t-2147483648\t-2147483648\t-2147483648\t\t\t\t\t\t\t\t\t\t\t\t\t-2147483648", | ||
86 | "Wix5FirewallException:fexuanTga5xaaFzr9JsAnUmpCNediw\tICMPExample2\t\t\t2\t\t0\t-2147483648\tfilNdJBJmq3UCUIwmXS8x21aAsvqzk\tRule with ICMP property\t1\t-2147483648\t-2147483648\t-2147483648\t\t[ICMP_PROP]\t\t\t\t\t\t\t\t\t\t\t-2147483648", | ||
87 | "Wix5FirewallException:fexv60s7u2Dmd1imH5vEFYKPgEWhG4\tinterface nested\t127.0.0.1\t54671\t6\t\t0\t-2147483648\tfilNdJBJmq3UCUIwmXS8x21aAsvqzk\tInterfaces with nested elements\t1\t-2147483648\t-2147483648\t-2147483648\t\t\tWi-Fi|Local Area Connection\t\t\t\t\t\t\t\t\t\t-2147483648", | ||
88 | "Wix5FirewallException:fexVr6uHcOCak5MHuTLwujjh_oKtbI\tGroupingExample2\t\t8732\t6\t\t0\t-2147483648\tfilNdJBJmq3UCUIwmXS8x21aAsvqzk\tRule with grouping property\t1\t-2147483648\t-2147483648\t-2147483648\t[GROUPING_PROP]\t\t\t\t\t\t\t\t\t\t\t\t-2147483648", | ||
89 | "Wix5FirewallException:fexwjf4OTFVE9SNiC4goVxBA6ENJBE\tINetFwRule3 values\t*\t\t-2147483648\t\t16\t-2147483648\tfilNdJBJmq3UCUIwmXS8x21aAsvqzk\tSimple INetFwRule3 values\t1\t-2147483648\t-2147483648\t-2147483648\t\t\t\t\t\t\t\tS-1-15-2-1239072475-3687740317-1842961305-3395936705-4023953123-1525404051-2779347315\tO:LSD:(A;;CC;;;S-1-5-84-0-0-0-0-0)\tS-1-5-21-1898747406-2352535518-1247798438-1914\t127.0.0.1\tO:LSD:(A;;CC;;;S-1-5-84-0-0-0-0-0)\t3", | ||
90 | "Wix5FirewallException:ServiceInstall.nested\tExampleNestedService\tLocalSubnet\t3546-7890\t6\t\t1\t-2147483648\tfilNdJBJmq3UCUIwmXS8x21aAsvqzk\tA port-based firewall exception for a windows service\t1\t-2147483648\t-2147483648\t-2147483648\t\t\t\tLan,Wireless\t\t\tsvc1\t\t\t\t\t\t-2147483648", | ||
91 | }, results); | ||
92 | } | ||
93 | |||
94 | [Fact] | ||
95 | public void CanBuildWithProperties() | ||
96 | { | ||
97 | var folder = TestData.Get(@"TestData\UsingProperties"); | ||
98 | var build = new Builder(folder, typeof(FirewallExtensionFactory), new[] { folder }); | ||
99 | |||
100 | var results = build.BuildAndQuery(Build, "Wix5FirewallException", "CustomAction"); | ||
101 | WixAssert.CompareLineByLine(new[] | ||
102 | { | ||
103 | "CustomAction:Wix5ExecFirewallExceptionsInstall_X86\t3073\tWix5FWCA_X86\tExecFirewallExceptions\t", | ||
104 | "CustomAction:Wix5ExecFirewallExceptionsUninstall_X86\t3073\tWix5FWCA_X86\tExecFirewallExceptions\t", | ||
105 | "CustomAction:Wix5RollbackFirewallExceptionsInstall_X86\t3329\tWix5FWCA_X86\tExecFirewallExceptions\t", | ||
106 | "CustomAction:Wix5RollbackFirewallExceptionsUninstall_X86\t3329\tWix5FWCA_X86\tExecFirewallExceptions\t", | ||
107 | "CustomAction:Wix5SchedFirewallExceptionsInstall_X86\t1\tWix5FWCA_X86\tSchedFirewallExceptionsInstall\t", | ||
108 | "CustomAction:Wix5SchedFirewallExceptionsUninstall_X86\t1\tWix5FWCA_X86\tSchedFirewallExceptionsUninstall\t", | ||
109 | "Wix5FirewallException:fexRrE4bS.DwUJQMvzX0ALEsx7jrZs\tSingle Nested properties\t[REMOTEADDRESS]\t\t-2147483648\t\t0\t-2147483648\tFirewallComponent\t\t1\t-2147483648\t-2147483648\t-2147483648\t\t\t[INTERFACE]\t[INTERFACETYPE]\t[LOCALADDRESS]\t\t\t\t\t\t\t\t-2147483648", | ||
110 | "Wix5FirewallException:fexvEy1GfdOjHlKcvsguyqK6mvYKyk\t[NAME]\t[REMOTESCOPE]\t[LOCALPORT]\t[PROTOCOL]\t[PROGRAM]\t16\t[PROFILE]\tFirewallComponent\t[DESCRIPTION]\t1\t[ACTION]\t[EDGETRAVERSAL]\t[ENABLED]\t[GROUPING]\t[ICMPTYPES]\t[INTERFACE]\t[INTERFACETYPE]\t[LOCALSCOPE]\t[REMOTEPORT]\t[SERVICE]\t[PACKAGEID]\t[LOCALUSERS]\t[LOCALOWNER]\t[REMOTEMACHINES]\t[REMOTEUSERS]\t[SECUREFLAGS]", | ||
111 | "Wix5FirewallException:fexWywW3VGiEuG23FOv1YM6h7R6F5Q\tMultiple Nested properties\t[REMOTEADDRESS1],[REMOTEADDRESS2]\t\t-2147483648\t\t0\t-2147483648\tFirewallComponent\t\t1\t-2147483648\t-2147483648\t-2147483648\t\t\t[INTERFACE1]|[INTERFACE2]\t[INTERFACETYPE1],[INTERFACETYPE2]\t[LOCALADDRESS1],[LOCALADDRESS2]\t\t\t\t\t\t\t\t-2147483648", | ||
112 | }, results); | ||
113 | } | ||
114 | |||
115 | [Fact] | ||
116 | public void CanBuildWithPropertiesUsingFirewallARM64() | ||
117 | { | ||
118 | var folder = TestData.Get(@"TestData\UsingProperties"); | ||
119 | var build = new Builder(folder, typeof(FirewallExtensionFactory), new[] { folder }); | ||
120 | |||
121 | var results = build.BuildAndQuery(BuildARM64, "Wix5FirewallException", "CustomAction"); | ||
122 | WixAssert.CompareLineByLine(new[] | ||
123 | { | ||
124 | "CustomAction:Wix5ExecFirewallExceptionsInstall_A64\t3073\tWix5FWCA_A64\tExecFirewallExceptions\t", | ||
125 | "CustomAction:Wix5ExecFirewallExceptionsUninstall_A64\t3073\tWix5FWCA_A64\tExecFirewallExceptions\t", | ||
126 | "CustomAction:Wix5RollbackFirewallExceptionsInstall_A64\t3329\tWix5FWCA_A64\tExecFirewallExceptions\t", | ||
127 | "CustomAction:Wix5RollbackFirewallExceptionsUninstall_A64\t3329\tWix5FWCA_A64\tExecFirewallExceptions\t", | ||
128 | "CustomAction:Wix5SchedFirewallExceptionsInstall_A64\t1\tWix5FWCA_A64\tSchedFirewallExceptionsInstall\t", | ||
129 | "CustomAction:Wix5SchedFirewallExceptionsUninstall_A64\t1\tWix5FWCA_A64\tSchedFirewallExceptionsUninstall\t", | ||
130 | "Wix5FirewallException:fexRrE4bS.DwUJQMvzX0ALEsx7jrZs\tSingle Nested properties\t[REMOTEADDRESS]\t\t-2147483648\t\t0\t-2147483648\tFirewallComponent\t\t1\t-2147483648\t-2147483648\t-2147483648\t\t\t[INTERFACE]\t[INTERFACETYPE]\t[LOCALADDRESS]\t\t\t\t\t\t\t\t-2147483648", | ||
131 | "Wix5FirewallException:fexvEy1GfdOjHlKcvsguyqK6mvYKyk\t[NAME]\t[REMOTESCOPE]\t[LOCALPORT]\t[PROTOCOL]\t[PROGRAM]\t16\t[PROFILE]\tFirewallComponent\t[DESCRIPTION]\t1\t[ACTION]\t[EDGETRAVERSAL]\t[ENABLED]\t[GROUPING]\t[ICMPTYPES]\t[INTERFACE]\t[INTERFACETYPE]\t[LOCALSCOPE]\t[REMOTEPORT]\t[SERVICE]\t[PACKAGEID]\t[LOCALUSERS]\t[LOCALOWNER]\t[REMOTEMACHINES]\t[REMOTEUSERS]\t[SECUREFLAGS]", | ||
132 | "Wix5FirewallException:fexWywW3VGiEuG23FOv1YM6h7R6F5Q\tMultiple Nested properties\t[REMOTEADDRESS1],[REMOTEADDRESS2]\t\t-2147483648\t\t0\t-2147483648\tFirewallComponent\t\t1\t-2147483648\t-2147483648\t-2147483648\t\t\t[INTERFACE1]|[INTERFACE2]\t[INTERFACETYPE1],[INTERFACETYPE2]\t[LOCALADDRESS1],[LOCALADDRESS2]\t\t\t\t\t\t\t\t-2147483648", | ||
60 | }, results); | 133 | }, results); |
61 | } | 134 | } |
62 | 135 | ||
@@ -83,6 +156,59 @@ namespace WixToolsetTest.Firewall | |||
83 | "FirewallException", | 156 | "FirewallException", |
84 | "FirewallException", | 157 | "FirewallException", |
85 | "FirewallException", | 158 | "FirewallException", |
159 | "FirewallException", | ||
160 | "FirewallException", | ||
161 | "LocalAddress", | ||
162 | "LocalAddress", | ||
163 | "FirewallException", | ||
164 | "RemoteAddress", | ||
165 | "Interface", | ||
166 | "Interface", | ||
167 | "FirewallException", | ||
168 | "FirewallException", | ||
169 | "InterfaceType", | ||
170 | "InterfaceType", | ||
171 | "FirewallException", | ||
172 | "FirewallException", | ||
173 | "FirewallException", | ||
174 | "FirewallException", | ||
175 | "FirewallException", | ||
176 | "FirewallException", | ||
177 | "FirewallException", | ||
178 | "FirewallException", | ||
179 | "FirewallException", | ||
180 | "FirewallException", | ||
181 | }, actual.Select(a => a.Name).ToArray()); | ||
182 | } | ||
183 | |||
184 | [Fact] | ||
185 | public void CanRoundtripFirewallExceptionsWithProperties() | ||
186 | { | ||
187 | var folder = TestData.Get(@"TestData", "UsingProperties"); | ||
188 | var build = new Builder(folder, typeof(FirewallExtensionFactory), new[] { folder }); | ||
189 | var output = Path.Combine(folder, "FirewallPropertiesDecompile.xml"); | ||
190 | |||
191 | build.BuildAndDecompileAndBuild(Build, Decompile, output); | ||
192 | |||
193 | var doc = XDocument.Load(output); | ||
194 | var actual = doc.Descendants() | ||
195 | .Where(e => e.Name.Namespace == "http://wixtoolset.org/schemas/v4/wxs/firewall") | ||
196 | .Select(fe => new { Name = fe.Name.LocalName, Attributes = fe.Attributes().Select(a => $"{a.Name.LocalName}={a.Value}").ToArray() }) | ||
197 | .ToArray(); | ||
198 | |||
199 | WixAssert.CompareLineByLine(new[] | ||
200 | { | ||
201 | "FirewallException", | ||
202 | "FirewallException", | ||
203 | "FirewallException", | ||
204 | "RemoteAddress", | ||
205 | "RemoteAddress", | ||
206 | "Interface", | ||
207 | "Interface", | ||
208 | "InterfaceType", | ||
209 | "InterfaceType", | ||
210 | "LocalAddress", | ||
211 | "LocalAddress", | ||
86 | }, actual.Select(a => a.Name).ToArray()); | 212 | }, actual.Select(a => a.Name).ToArray()); |
87 | } | 213 | } |
88 | 214 | ||
@@ -98,9 +224,8 @@ namespace WixToolsetTest.Firewall | |||
98 | "Port=42", | 224 | "Port=42", |
99 | "Protocol=tcp", | 225 | "Protocol=tcp", |
100 | "Program=[#filNdJBJmq3UCUIwmXS8x21aAsvqzk]", | 226 | "Program=[#filNdJBJmq3UCUIwmXS8x21aAsvqzk]", |
101 | "Profile=all", | 227 | "OnUpdate=DoNothing", |
102 | "Description=An app-based firewall exception", | 228 | "Description=An app-based firewall exception", |
103 | "Outbound=no", | ||
104 | "xmlns=http://wixtoolset.org/schemas/v4/wxs/firewall", | 229 | "xmlns=http://wixtoolset.org/schemas/v4/wxs/firewall", |
105 | }, actual.Attributes); | 230 | }, actual.Attributes); |
106 | } | 231 | } |
@@ -111,12 +236,12 @@ namespace WixToolsetTest.Firewall | |||
111 | var actual = BuildAndDecompileAndBuild("http://wixtoolset.org/schemas/v4/wxs/firewall", "ExamplePort"); | 236 | var actual = BuildAndDecompileAndBuild("http://wixtoolset.org/schemas/v4/wxs/firewall", "ExamplePort"); |
112 | WixAssert.CompareLineByLine(new[] | 237 | WixAssert.CompareLineByLine(new[] |
113 | { | 238 | { |
114 | "Id=fex70IVsYNnbwiHQrEepmdTPKH8XYs", | 239 | "Id=fexaUTe2tRRcSYrPUTn44DAZhE.40Q", |
115 | "Name=ExamplePort", | 240 | "Name=ExamplePort", |
116 | "Scope=localSubnet", | 241 | "Scope=localSubnet", |
117 | "Port=42", | 242 | "Port=42", |
118 | "Protocol=tcp", | 243 | "Protocol=tcp", |
119 | "Profile=all", | 244 | "OnUpdate=EnableOnly", |
120 | "Description=A port-based firewall exception", | 245 | "Description=A port-based firewall exception", |
121 | "Outbound=yes", | 246 | "Outbound=yes", |
122 | "xmlns=http://wixtoolset.org/schemas/v4/wxs/firewall", | 247 | "xmlns=http://wixtoolset.org/schemas/v4/wxs/firewall", |
@@ -129,14 +254,12 @@ namespace WixToolsetTest.Firewall | |||
129 | var actual = BuildAndDecompileAndBuild("http://wixtoolset.org/schemas/v4/wxs/firewall", "ExampleDNSScope"); | 254 | var actual = BuildAndDecompileAndBuild("http://wixtoolset.org/schemas/v4/wxs/firewall", "ExampleDNSScope"); |
130 | WixAssert.CompareLineByLine(new[] | 255 | WixAssert.CompareLineByLine(new[] |
131 | { | 256 | { |
132 | "Id=fexxY71H2ZBkPalv7uid1Yy4qaA_lA", | 257 | "Id=fex4FeP470wYcFpw.g7fbIKiLnZPzg", |
133 | "Name=ExampleDNSScope", | 258 | "Name=ExampleDNSScope", |
134 | "Scope=DNS", | 259 | "Scope=DNS", |
135 | "Port=356", | 260 | "Port=356", |
136 | "Protocol=udp", | 261 | "Protocol=udp", |
137 | "Profile=all", | ||
138 | "Description=DNS scope firewall exception", | 262 | "Description=DNS scope firewall exception", |
139 | "Outbound=no", | ||
140 | "xmlns=http://wixtoolset.org/schemas/v4/wxs/firewall", | 263 | "xmlns=http://wixtoolset.org/schemas/v4/wxs/firewall", |
141 | }, actual.Attributes); | 264 | }, actual.Attributes); |
142 | } | 265 | } |
@@ -147,14 +270,13 @@ namespace WixToolsetTest.Firewall | |||
147 | var actual = BuildAndDecompileAndBuild("http://wixtoolset.org/schemas/v4/wxs/firewall", "ExampleDHCPScope"); | 270 | var actual = BuildAndDecompileAndBuild("http://wixtoolset.org/schemas/v4/wxs/firewall", "ExampleDHCPScope"); |
148 | WixAssert.CompareLineByLine(new[] | 271 | WixAssert.CompareLineByLine(new[] |
149 | { | 272 | { |
150 | "Id=fex6bkfWwpiRGI.wVFx0T7W4LXIHxU", | 273 | "Id=fexpWUzK53RVnaluW36gSmphPRY8VY", |
151 | "Name=ExampleDHCPScope", | 274 | "Name=ExampleDHCPScope", |
152 | "Scope=DHCP", | 275 | "Scope=DHCP", |
153 | "Protocol=211", | 276 | "Protocol=211", |
154 | "Program=test.exe", | 277 | "Program=test.exe", |
155 | "Profile=public", | 278 | "Profile=public", |
156 | "Description=DHCP scope firewall exception", | 279 | "Description=DHCP scope firewall exception", |
157 | "Outbound=no", | ||
158 | "xmlns=http://wixtoolset.org/schemas/v4/wxs/firewall" | 280 | "xmlns=http://wixtoolset.org/schemas/v4/wxs/firewall" |
159 | }, actual.Attributes); | 281 | }, actual.Attributes); |
160 | } | 282 | } |
@@ -165,14 +287,13 @@ namespace WixToolsetTest.Firewall | |||
165 | var actual = BuildAndDecompileAndBuild("http://wixtoolset.org/schemas/v4/wxs/firewall", "ExampleWINSScope"); | 287 | var actual = BuildAndDecompileAndBuild("http://wixtoolset.org/schemas/v4/wxs/firewall", "ExampleWINSScope"); |
166 | WixAssert.CompareLineByLine(new[] | 288 | WixAssert.CompareLineByLine(new[] |
167 | { | 289 | { |
168 | "Id=fexXxaXCXXFh.UxO_BjmZxi1B1du_Q", | 290 | "Id=fexD6w20c5HfNi4l1vHFj_eet4cC8I", |
169 | "Name=ExampleWINSScope", | 291 | "Name=ExampleWINSScope", |
170 | "Scope=WINS", | 292 | "Scope=WINS", |
171 | "Port=6573", | 293 | "Port=6573", |
172 | "Protocol=tcp", | 294 | "Protocol=tcp", |
173 | "Profile=domain", | 295 | "Profile=domain", |
174 | "Description=WINS scope firewall exception", | 296 | "Description=WINS scope firewall exception", |
175 | "Outbound=no", | ||
176 | "xmlns=http://wixtoolset.org/schemas/v4/wxs/firewall", | 297 | "xmlns=http://wixtoolset.org/schemas/v4/wxs/firewall", |
177 | }, actual.Attributes); | 298 | }, actual.Attributes); |
178 | } | 299 | } |
@@ -183,18 +304,322 @@ namespace WixToolsetTest.Firewall | |||
183 | var actual = BuildAndDecompileAndBuild("http://wixtoolset.org/schemas/v4/wxs/firewall", "ExampleDefaultGatewayScope"); | 304 | var actual = BuildAndDecompileAndBuild("http://wixtoolset.org/schemas/v4/wxs/firewall", "ExampleDefaultGatewayScope"); |
184 | WixAssert.CompareLineByLine(new[] | 305 | WixAssert.CompareLineByLine(new[] |
185 | { | 306 | { |
186 | "Id=fex_ZpDsnKyHlYiA24JHzvFxm3uLZ8", | 307 | "Id=fex8vMfBplrod4daEz3PqDTeX6olGE", |
187 | "Name=ExampleDefaultGatewayScope", | 308 | "Name=ExampleDefaultGatewayScope", |
188 | "Scope=defaultGateway", | 309 | "Scope=defaultGateway", |
189 | "Port=4432", | 310 | "Port=4432", |
190 | "Protocol=tcp", | 311 | "Protocol=tcp", |
191 | "Profile=private", | 312 | "Profile=private", |
192 | "Description=defaultGateway scope firewall exception", | 313 | "Description=defaultGateway scope firewall exception", |
193 | "Outbound=no", | ||
194 | "xmlns=http://wixtoolset.org/schemas/v4/wxs/firewall", | 314 | "xmlns=http://wixtoolset.org/schemas/v4/wxs/firewall", |
195 | }, actual.Attributes); | 315 | }, actual.Attributes); |
196 | } | 316 | } |
197 | 317 | ||
318 | [Fact] | ||
319 | public void RoundtripAttributesAreCorrectForINetFwRule3Values() | ||
320 | { | ||
321 | var actual = BuildAndDecompileAndBuild("http://wixtoolset.org/schemas/v4/wxs/firewall", "INetFwRule3 values"); | ||
322 | WixAssert.CompareLineByLine(new[] | ||
323 | { | ||
324 | "Id=fexwjf4OTFVE9SNiC4goVxBA6ENJBE", | ||
325 | "Name=INetFwRule3 values", | ||
326 | "Scope=any", | ||
327 | "Description=Simple INetFwRule3 values", | ||
328 | "LocalAppPackageId=S-1-15-2-1239072475-3687740317-1842961305-3395936705-4023953123-1525404051-2779347315", | ||
329 | "LocalUserAuthorizedList=O:LSD:(A;;CC;;;S-1-5-84-0-0-0-0-0)", | ||
330 | "LocalUserOwner=S-1-5-21-1898747406-2352535518-1247798438-1914", | ||
331 | "RemoteMachineAuthorizedList=127.0.0.1", | ||
332 | "RemoteUserAuthorizedList=O:LSD:(A;;CC;;;S-1-5-84-0-0-0-0-0)", | ||
333 | "IPSecSecureFlags=NegotiateEncryption", | ||
334 | "xmlns=http://wixtoolset.org/schemas/v4/wxs/firewall", | ||
335 | }, actual.Attributes); | ||
336 | } | ||
337 | |||
338 | [Fact] | ||
339 | public void RoundtripAttributesAreCorrectForINetFwRule3Properties() | ||
340 | { | ||
341 | var actual = BuildAndDecompileAndBuild("http://wixtoolset.org/schemas/v4/wxs/firewall", "INetFwRule3 properties"); | ||
342 | WixAssert.CompareLineByLine(new[] | ||
343 | { | ||
344 | "Id=fexAMmHzFDyQmubTOnKS1Cn0Y3q_Ug", | ||
345 | "Name=INetFwRule3 properties", | ||
346 | "Scope=any", | ||
347 | "Description=INetFwRule3 passed via properties", | ||
348 | "LocalAppPackageId=[PROP1]", | ||
349 | "LocalUserAuthorizedList=[PROP2]", | ||
350 | "LocalUserOwner=[PROP3]", | ||
351 | "RemoteMachineAuthorizedList=[PROP4]", | ||
352 | "RemoteUserAuthorizedList=[PROP5]", | ||
353 | "IPSecSecureFlags=[PROP6]", | ||
354 | "xmlns=http://wixtoolset.org/schemas/v4/wxs/firewall", | ||
355 | }, actual.Attributes); | ||
356 | } | ||
357 | |||
358 | [Fact] | ||
359 | public void RoundtripAttributesAreCorrectForGroupingValue() | ||
360 | { | ||
361 | var actual = BuildAndDecompileAndBuild("http://wixtoolset.org/schemas/v4/wxs/firewall", "GroupingExample1"); | ||
362 | WixAssert.CompareLineByLine(new[] | ||
363 | { | ||
364 | "Id=fexfzjTQsWwZkHQpObtl0XaUosfcRk", | ||
365 | "Name=GroupingExample1", | ||
366 | "Program=fw.exe", | ||
367 | "Description=Simple rule with grouping", | ||
368 | "Grouping=@yourresources.dll,-1005", | ||
369 | "xmlns=http://wixtoolset.org/schemas/v4/wxs/firewall", | ||
370 | }, actual.Attributes); | ||
371 | } | ||
372 | |||
373 | [Fact] | ||
374 | public void RoundtripAttributesAreCorrectForGroupingProperty() | ||
375 | { | ||
376 | var actual = BuildAndDecompileAndBuild("http://wixtoolset.org/schemas/v4/wxs/firewall", "GroupingExample2"); | ||
377 | WixAssert.CompareLineByLine(new[] | ||
378 | { | ||
379 | "Id=fexVr6uHcOCak5MHuTLwujjh_oKtbI", | ||
380 | "Name=GroupingExample2", | ||
381 | "Port=8732", | ||
382 | "Protocol=tcp", | ||
383 | "Description=Rule with grouping property", | ||
384 | "Grouping=[GROUPING_PROP]", | ||
385 | "xmlns=http://wixtoolset.org/schemas/v4/wxs/firewall", | ||
386 | }, actual.Attributes); | ||
387 | } | ||
388 | |||
389 | [Fact] | ||
390 | public void RoundtripAttributesAreCorrectForIcmpValue() | ||
391 | { | ||
392 | var actual = BuildAndDecompileAndBuild("http://wixtoolset.org/schemas/v4/wxs/firewall", "ICMPExample1"); | ||
393 | WixAssert.CompareLineByLine(new[] | ||
394 | { | ||
395 | "Id=fexEPvcf4iexD1mVQdvxm7tD02nZEc", | ||
396 | "Name=ICMPExample1", | ||
397 | "Protocol=2", | ||
398 | "Description=Simple ICMP rule", | ||
399 | "IcmpTypesAndCodes=4:*,9:*,12:*", | ||
400 | "xmlns=http://wixtoolset.org/schemas/v4/wxs/firewall", | ||
401 | }, actual.Attributes); | ||
402 | } | ||
403 | |||
404 | [Fact] | ||
405 | public void RoundtripAttributesAreCorrectForIcmpProperty() | ||
406 | { | ||
407 | var actual = BuildAndDecompileAndBuild("http://wixtoolset.org/schemas/v4/wxs/firewall", "ICMPExample2"); | ||
408 | WixAssert.CompareLineByLine(new[] | ||
409 | { | ||
410 | "Id=fexuanTga5xaaFzr9JsAnUmpCNediw", | ||
411 | "Name=ICMPExample2", | ||
412 | "Protocol=2", | ||
413 | "Description=Rule with ICMP property", | ||
414 | "IcmpTypesAndCodes=[ICMP_PROP]", | ||
415 | "xmlns=http://wixtoolset.org/schemas/v4/wxs/firewall", | ||
416 | }, actual.Attributes); | ||
417 | } | ||
418 | |||
419 | [Fact] | ||
420 | public void RoundtripAttributesAreCorrectForLocalScopeValue() | ||
421 | { | ||
422 | var actual = BuildAndDecompileAndBuild("http://wixtoolset.org/schemas/v4/wxs/firewall", "LocalScopeExample1"); | ||
423 | WixAssert.CompareLineByLine(new[] | ||
424 | { | ||
425 | "Id=fex0HTxATWjpC2PCoY6DB7f2D1WaKU", | ||
426 | "Name=LocalScopeExample1", | ||
427 | "Scope=any", | ||
428 | "Description=Simple rule with local scope", | ||
429 | "LocalScope=localSubnet", | ||
430 | "xmlns=http://wixtoolset.org/schemas/v4/wxs/firewall", | ||
431 | }, actual.Attributes); | ||
432 | } | ||
433 | |||
434 | [Fact] | ||
435 | public void RoundtripAttributesAreCorrectForLocalScopeProperty() | ||
436 | { | ||
437 | var actual = BuildAndDecompileAndBuild("http://wixtoolset.org/schemas/v4/wxs/firewall", "LocalScopeExample2"); | ||
438 | WixAssert.CompareLineByLine(new[] | ||
439 | { | ||
440 | "Id=fex.BGtyMRGAhxb2hG.49JvWYz7fM0", | ||
441 | "Name=LocalScopeExample2", | ||
442 | "Scope=any", | ||
443 | "Description=Rule with local scope property", | ||
444 | "LocalScope=[LOCALSCOPE_PROP]", | ||
445 | "xmlns=http://wixtoolset.org/schemas/v4/wxs/firewall", | ||
446 | }, actual.Attributes); | ||
447 | } | ||
448 | |||
449 | [Fact] | ||
450 | public void RoundtripAttributesAreCorrectForRemotePorts() | ||
451 | { | ||
452 | var actual = BuildAndDecompileAndBuild("http://wixtoolset.org/schemas/v4/wxs/firewall", "RemotePortExample1"); | ||
453 | WixAssert.CompareLineByLine(new[] | ||
454 | { | ||
455 | "Id=fexHx2xbwZYzAi0oYp4YGWevJQs5eM", | ||
456 | "Name=RemotePortExample1", | ||
457 | "Scope=any", | ||
458 | "Protocol=tcp", | ||
459 | "Description=Simple rule with remote port", | ||
460 | "RemotePort=34560", | ||
461 | "xmlns=http://wixtoolset.org/schemas/v4/wxs/firewall", | ||
462 | }, actual.Attributes); | ||
463 | } | ||
464 | |||
465 | [Fact] | ||
466 | public void RoundtripAttributesAreCorrectForRemotePortsProperty() | ||
467 | { | ||
468 | var actual = BuildAndDecompileAndBuild("http://wixtoolset.org/schemas/v4/wxs/firewall", "RemotePortExample2"); | ||
469 | WixAssert.CompareLineByLine(new[] | ||
470 | { | ||
471 | "Id=fexArlOkFR7CAwVZ2wk8yNdiREydu0", | ||
472 | "Name=RemotePortExample2", | ||
473 | "Protocol=tcp", | ||
474 | "Program=fw.exe", | ||
475 | "Description=Rule with remote port property", | ||
476 | "RemotePort=[REMOTEPORT_PROP]", | ||
477 | "xmlns=http://wixtoolset.org/schemas/v4/wxs/firewall", | ||
478 | }, actual.Attributes); | ||
479 | } | ||
480 | |||
481 | [Fact] | ||
482 | public void RoundtripAttributesAreCorrectWhenPropertiesAreUsed() | ||
483 | { | ||
484 | var actual = BuildAndDecompileAndBuild("http://wixtoolset.org/schemas/v4/wxs/firewall", "[NAME]", "UsingProperties"); | ||
485 | WixAssert.CompareLineByLine(new[] | ||
486 | { | ||
487 | "Id=fexvEy1GfdOjHlKcvsguyqK6mvYKyk", | ||
488 | "Name=[NAME]", | ||
489 | "Scope=[REMOTESCOPE]", | ||
490 | "Port=[LOCALPORT]", | ||
491 | "Protocol=[PROTOCOL]", | ||
492 | "Program=[PROGRAM]", | ||
493 | "Profile=[PROFILE]", | ||
494 | "Description=[DESCRIPTION]", | ||
495 | "Action=[ACTION]", | ||
496 | "EdgeTraversal=[EDGETRAVERSAL]", | ||
497 | "Enabled=[ENABLED]", | ||
498 | "Grouping=[GROUPING]", | ||
499 | "IcmpTypesAndCodes=[ICMPTYPES]", | ||
500 | "Interface=[INTERFACE]", | ||
501 | "InterfaceType=[INTERFACETYPE]", | ||
502 | "LocalScope=[LOCALSCOPE]", | ||
503 | "RemotePort=[REMOTEPORT]", | ||
504 | "Service=[SERVICE]", | ||
505 | "LocalAppPackageId=[PACKAGEID]", | ||
506 | "LocalUserAuthorizedList=[LOCALUSERS]", | ||
507 | "LocalUserOwner=[LOCALOWNER]", | ||
508 | "RemoteMachineAuthorizedList=[REMOTEMACHINES]", | ||
509 | "RemoteUserAuthorizedList=[REMOTEUSERS]", | ||
510 | "IPSecSecureFlags=[SECUREFLAGS]", | ||
511 | "xmlns=http://wixtoolset.org/schemas/v4/wxs/firewall" | ||
512 | }, actual.Attributes); | ||
513 | |||
514 | var folder = TestData.Get(@"TestData", "UsingProperties"); | ||
515 | var build = new Builder(folder, typeof(FirewallExtensionFactory), new[] { folder }); | ||
516 | var output = Path.Combine(folder, $"FirewallNothingNested.xml"); | ||
517 | |||
518 | build.BuildAndDecompileAndBuild(Build, Decompile, output); | ||
519 | |||
520 | var doc = XDocument.Load(output); | ||
521 | var related = doc.Descendants() | ||
522 | .Where(e => | ||
523 | { | ||
524 | return e.Name.Namespace == "http://wixtoolset.org/schemas/v4/wxs/firewall" && | ||
525 | e.Parent.Attributes().Any(a => a.Name.LocalName == "Name" && a.Value == "[NAME]"); | ||
526 | }); | ||
527 | |||
528 | var nested = related.Select(e => e.Attributes().Single(a => a.Name.LocalName == "Name").Value); | ||
529 | Assert.False(nested.Any()); | ||
530 | } | ||
531 | |||
532 | [Fact] | ||
533 | public void RoundtripAttributesAreCorrectWhenNestedPropertiesAreUsed() | ||
534 | { | ||
535 | var actual = BuildAndDecompileAndBuild("http://wixtoolset.org/schemas/v4/wxs/firewall", "Single Nested properties", "UsingProperties"); | ||
536 | WixAssert.CompareLineByLine(new[] | ||
537 | { | ||
538 | "Id=fexRrE4bS.DwUJQMvzX0ALEsx7jrZs", | ||
539 | "Name=Single Nested properties", | ||
540 | "Scope=[REMOTEADDRESS]", | ||
541 | "Interface=[INTERFACE]", | ||
542 | "InterfaceType=[INTERFACETYPE]", | ||
543 | "LocalScope=[LOCALADDRESS]", | ||
544 | "xmlns=http://wixtoolset.org/schemas/v4/wxs/firewall" | ||
545 | }, actual.Attributes); | ||
546 | |||
547 | var folder = TestData.Get(@"TestData", "UsingProperties"); | ||
548 | var build = new Builder(folder, typeof(FirewallExtensionFactory), new[] { folder }); | ||
549 | var output = Path.Combine(folder, $"FirewallSingleNested.xml"); | ||
550 | |||
551 | build.BuildAndDecompileAndBuild(Build, Decompile, output); | ||
552 | |||
553 | var doc = XDocument.Load(output); | ||
554 | var related = doc.Descendants() | ||
555 | .Where(e => | ||
556 | { | ||
557 | return e.Name.Namespace == "http://wixtoolset.org/schemas/v4/wxs/firewall" && | ||
558 | e.Parent.Attributes().Any(a => a.Name.LocalName == "Name" && a.Value == "Single Nested properties"); | ||
559 | }); | ||
560 | |||
561 | var nested = related.Select(e => e.Attributes().Single(a => a.Name.LocalName == "Name").Value); | ||
562 | Assert.False(nested.Any()); | ||
563 | } | ||
564 | |||
565 | [Fact] | ||
566 | public void RoundtripAttributesAreCorrectWhenMultipleNestedPropertiesAreUsed() | ||
567 | { | ||
568 | var actual = BuildAndDecompileAndBuild("http://wixtoolset.org/schemas/v4/wxs/firewall", "Multiple Nested properties", "UsingProperties"); | ||
569 | WixAssert.CompareLineByLine(new[] | ||
570 | { | ||
571 | "Id=fexWywW3VGiEuG23FOv1YM6h7R6F5Q", | ||
572 | "Name=Multiple Nested properties", | ||
573 | "xmlns=http://wixtoolset.org/schemas/v4/wxs/firewall" | ||
574 | }, actual.Attributes); | ||
575 | |||
576 | var folder = TestData.Get(@"TestData", "UsingProperties"); | ||
577 | var build = new Builder(folder, typeof(FirewallExtensionFactory), new[] { folder }); | ||
578 | var output = Path.Combine(folder, $"FirewallMultipleNested.xml"); | ||
579 | |||
580 | build.BuildAndDecompileAndBuild(Build, Decompile, output); | ||
581 | |||
582 | var doc = XDocument.Load(output); | ||
583 | var related = doc.Descendants() | ||
584 | .Where(e => | ||
585 | { | ||
586 | return e.Name.Namespace == "http://wixtoolset.org/schemas/v4/wxs/firewall" && | ||
587 | e.Parent.Attributes().Any(a => a.Name.LocalName == "Name" && a.Value == "Multiple Nested properties"); | ||
588 | }); | ||
589 | |||
590 | var interfaces = related.Where(e => e.Name.LocalName == "Interface") | ||
591 | .Select(e => e.Attributes().Single(a => a.Name.LocalName == "Name").Value); | ||
592 | WixAssert.CompareLineByLine(new[] | ||
593 | { | ||
594 | "[INTERFACE1]", | ||
595 | "[INTERFACE2]", | ||
596 | }, interfaces.ToArray()); | ||
597 | |||
598 | var interfaceTypes = related.Where(e => e.Name.LocalName == "InterfaceType") | ||
599 | .Select(e => e.Attributes().Single(a => a.Name.LocalName == "Value").Value); | ||
600 | WixAssert.CompareLineByLine(new[] | ||
601 | { | ||
602 | "[INTERFACETYPE1]", | ||
603 | "[INTERFACETYPE2]", | ||
604 | }, interfaceTypes.ToArray()); | ||
605 | |||
606 | var remotes = related.Where(e => e.Name.LocalName == "RemoteAddress") | ||
607 | .Select(e => e.Attributes().Single(a => a.Name.LocalName == "Value").Value); | ||
608 | WixAssert.CompareLineByLine(new[] | ||
609 | { | ||
610 | "[REMOTEADDRESS1]", | ||
611 | "[REMOTEADDRESS2]", | ||
612 | }, remotes.ToArray()); | ||
613 | |||
614 | var locals = related.Where(e => e.Name.LocalName == "LocalAddress") | ||
615 | .Select(e => e.Attributes().Single(a => a.Name.LocalName == "Value").Value); | ||
616 | WixAssert.CompareLineByLine(new[] | ||
617 | { | ||
618 | "[LOCALADDRESS1]", | ||
619 | "[LOCALADDRESS2]", | ||
620 | }, locals.ToArray()); | ||
621 | } | ||
622 | |||
198 | private static void Build(string[] args) | 623 | private static void Build(string[] args) |
199 | { | 624 | { |
200 | var result = WixRunner.Execute(args); | 625 | var result = WixRunner.Execute(args); |
@@ -216,15 +641,16 @@ namespace WixToolsetTest.Firewall | |||
216 | var result = WixRunner.Execute(args); | 641 | var result = WixRunner.Execute(args); |
217 | result.AssertSuccess(); | 642 | result.AssertSuccess(); |
218 | } | 643 | } |
644 | |||
219 | class AttributeVerifier | 645 | class AttributeVerifier |
220 | { | 646 | { |
221 | public string Name { get; set; } | 647 | public string Name { get; set; } |
222 | public string[] Attributes { get; set; } | 648 | public string[] Attributes { get; set; } |
223 | } | 649 | } |
224 | 650 | ||
225 | private static AttributeVerifier BuildAndDecompileAndBuild(string nameSpace, string ruleName) | 651 | private static AttributeVerifier BuildAndDecompileAndBuild(string nameSpace, string ruleName, string path = "UsingFirewall") |
226 | { | 652 | { |
227 | var folder = TestData.Get(@"TestData", "UsingFirewall"); | 653 | var folder = TestData.Get(@"TestData", path); |
228 | var build = new Builder(folder, typeof(FirewallExtensionFactory), new[] { folder }); | 654 | var build = new Builder(folder, typeof(FirewallExtensionFactory), new[] { folder }); |
229 | var output = Path.Combine(folder, $"Firewall{ruleName}.xml"); | 655 | var output = Path.Combine(folder, $"Firewall{ruleName}.xml"); |
230 | 656 | ||
@@ -232,7 +658,10 @@ namespace WixToolsetTest.Firewall | |||
232 | 658 | ||
233 | var doc = XDocument.Load(output); | 659 | var doc = XDocument.Load(output); |
234 | var actual = doc.Descendants() | 660 | var actual = doc.Descendants() |
235 | .Where(e => e.Name.Namespace == nameSpace) | 661 | .Where(e => |
662 | { | ||
663 | return e.Name.Namespace == nameSpace && e.Name.LocalName == "FirewallException"; | ||
664 | }) | ||
236 | .Select(fe => new AttributeVerifier | 665 | .Select(fe => new AttributeVerifier |
237 | { | 666 | { |
238 | Name = fe.Attributes().Single(a => a.Name.LocalName == "Name").Value, | 667 | Name = fe.Attributes().Single(a => a.Name.LocalName == "Name").Value, |
diff --git a/src/ext/Firewall/test/WixToolsetTest.Firewall/TestData/UsingFirewall/PackageComponents.wxs b/src/ext/Firewall/test/WixToolsetTest.Firewall/TestData/UsingFirewall/PackageComponents.wxs index 957aa642..4bb2e192 100644 --- a/src/ext/Firewall/test/WixToolsetTest.Firewall/TestData/UsingFirewall/PackageComponents.wxs +++ b/src/ext/Firewall/test/WixToolsetTest.Firewall/TestData/UsingFirewall/PackageComponents.wxs | |||
@@ -6,16 +6,51 @@ | |||
6 | <Component> | 6 | <Component> |
7 | <File Name="fw.exe" Source="example.txt"> | 7 | <File Name="fw.exe" Source="example.txt"> |
8 | <Shortcut Id="FwShortcut" Directory="INSTALLFOLDER" Name="Firewall" /> | 8 | <Shortcut Id="FwShortcut" Directory="INSTALLFOLDER" Name="Firewall" /> |
9 | <fw:FirewallException Id="ExampleFirewall" Description="An app-based firewall exception" Name="ExampleApp" Port="42"> | 9 | <fw:FirewallException Id="ExampleFirewall" Description="An app-based firewall exception" Name="ExampleApp" Port="42" OnUpdate="DoNothing" > |
10 | <fw:RemoteAddress Value="*" /> | 10 | <fw:RemoteAddress Value="*" /> |
11 | </fw:FirewallException> | 11 | </fw:FirewallException> |
12 | </File> | 12 | </File> |
13 | 13 | ||
14 | <fw:FirewallException Description="A port-based firewall exception" Name="ExamplePort" Port="42" Outbound="yes" Scope="localSubnet" /> | 14 | <fw:FirewallException Description="A port-based firewall exception" Name="ExamplePort" Port="42" Outbound="yes" Scope="localSubnet" OnUpdate="EnableOnly" /> |
15 | <fw:FirewallException Description="DNS scope firewall exception" Name="ExampleDNSScope" Port="356" Protocol="udp" Scope="DNS" /> | 15 | <fw:FirewallException Description="DNS scope firewall exception" Name="ExampleDNSScope" Port="356" Protocol="udp" Scope="DNS" /> |
16 | <fw:FirewallException Description="DHCP scope firewall exception" Name="ExampleDHCPScope" Program="test.exe" Protocol="211" Scope="DHCP" Profile="public" /> | 16 | <fw:FirewallException Description="DHCP scope firewall exception" Name="ExampleDHCPScope" Program="test.exe" Protocol="211" Scope="DHCP" Profile="public" /> |
17 | <fw:FirewallException Description="WINS scope firewall exception" Name="ExampleWINSScope" Port="6573" Scope="WINS" Profile="domain"/> | 17 | <fw:FirewallException Description="WINS scope firewall exception" Name="ExampleWINSScope" Port="6573" Scope="WINS" Profile="domain"/> |
18 | <fw:FirewallException Description="defaultGateway scope firewall exception" Name="ExampleDefaultGatewayScope" Port="4432" Scope="defaultGateway" Profile="private" /> | 18 | <fw:FirewallException Description="defaultGateway scope firewall exception" Name="ExampleDefaultGatewayScope" Port="4432" Scope="defaultGateway" Profile="private" /> |
19 | |||
20 | <fw:FirewallException Description="Defer to user edge traversal" Name="defertouser" Program="fw.exe" EdgeTraversal="DeferToUser" /> | ||
21 | <fw:FirewallException Description="A port-based service exception" Name="ExampleService" Port="12000" Service="ftpsrv" Program="%windir%\system32\svchost.exe" > | ||
22 | <fw:LocalAddress Value="DHCP"/> | ||
23 | <fw:LocalAddress Value="WINS"/> | ||
24 | </fw:FirewallException> | ||
25 | |||
26 | <fw:FirewallException Description="Interfaces with nested elements" Name="interface nested" Port="54671" > | ||
27 | <fw:RemoteAddress Value="127.0.0.1"/> | ||
28 | <fw:Interface Name="Wi-Fi" /> | ||
29 | <fw:Interface Name="Local Area Connection" /> | ||
30 | </fw:FirewallException> | ||
31 | <fw:FirewallException Description="Interfaces with property" Name="interface property" Port="54671" Interface="[INTERFACE_PROPERTY]" /> | ||
32 | |||
33 | <ServiceInstall Name="svc1" Type="ownProcess" Start="disabled" ErrorControl="ignore" > | ||
34 | <fw:FirewallException Id="ServiceInstall.nested" IgnoreFailure="true" Description="A port-based firewall exception for a windows service" Name="ExampleNestedService" Port="3546-7890" Scope="localSubnet" > | ||
35 | <fw:InterfaceType Value="Lan" /> | ||
36 | <fw:InterfaceType Value="Wireless" /> | ||
37 | </fw:FirewallException> | ||
38 | </ServiceInstall> | ||
39 | |||
40 | <fw:FirewallException Description="Simple INetFwRule3 values" Name="INetFwRule3 values" Scope="any" LocalAppPackageId="S-1-15-2-1239072475-3687740317-1842961305-3395936705-4023953123-1525404051-2779347315" LocalUserAuthorizedList="O:LSD:(A;;CC;;;S-1-5-84-0-0-0-0-0)" LocalUserOwner="S-1-5-21-1898747406-2352535518-1247798438-1914" RemoteMachineAuthorizedList="127.0.0.1" RemoteUserAuthorizedList="O:LSD:(A;;CC;;;S-1-5-84-0-0-0-0-0)" IPSecSecureFlags="NegotiateEncryption" /> | ||
41 | <fw:FirewallException Description="INetFwRule3 passed via properties" Name="INetFwRule3 properties" Scope="any" LocalAppPackageId="[PROP1]" LocalUserAuthorizedList="[PROP2]" LocalUserOwner="[PROP3]" RemoteMachineAuthorizedList="[PROP4]" RemoteUserAuthorizedList="[PROP5]" IPSecSecureFlags="[PROP6]" /> | ||
42 | |||
43 | <fw:FirewallException Description="Simple rule with grouping" Name="GroupingExample1" Program="fw.exe" Grouping="@yourresources.dll,-1005" /> | ||
44 | <fw:FirewallException Description="Rule with grouping property" Name="GroupingExample2" Port="8732" Grouping="[GROUPING_PROP]" /> | ||
45 | |||
46 | <fw:FirewallException Description="Simple ICMP rule" Name="ICMPExample1" Protocol="2" IcmpTypesAndCodes="4:*,9:*,12:*" /> | ||
47 | <fw:FirewallException Description="Rule with ICMP property" Name="ICMPExample2" Protocol="2" IcmpTypesAndCodes="[ICMP_PROP]" /> | ||
48 | |||
49 | <fw:FirewallException Description="Simple rule with local scope" Name="LocalScopeExample1" Scope="any" LocalScope="localSubnet" /> | ||
50 | <fw:FirewallException Description="Rule with local scope property" Name="LocalScopeExample2" Scope="any" LocalScope="[LOCALSCOPE_PROP]" /> | ||
51 | |||
52 | <fw:FirewallException Description="Simple rule with remote port" Name="RemotePortExample1" Scope="any" RemotePort="34560" /> | ||
53 | <fw:FirewallException Description="Rule with remote port property" Name="RemotePortExample2" Program="fw.exe" RemotePort="[REMOTEPORT_PROP]" /> | ||
19 | </Component> | 54 | </Component> |
20 | </ComponentGroup> | 55 | </ComponentGroup> |
21 | </Fragment> | 56 | </Fragment> |
diff --git a/src/ext/Firewall/test/WixToolsetTest.Firewall/TestData/UsingProperties/Package.en-us.wxl b/src/ext/Firewall/test/WixToolsetTest.Firewall/TestData/UsingProperties/Package.en-us.wxl new file mode 100644 index 00000000..f1df1234 --- /dev/null +++ b/src/ext/Firewall/test/WixToolsetTest.Firewall/TestData/UsingProperties/Package.en-us.wxl | |||
@@ -0,0 +1,9 @@ | |||
1 | <!-- | ||
2 | This file contains the declaration of all the localizable strings. | ||
3 | --> | ||
4 | <WixLocalization xmlns="http://wixtoolset.org/schemas/v4/wxl" Culture="en-US"> | ||
5 | |||
6 | <String Id="DowngradeError" Value="A newer version of [ProductName] is already installed." /> | ||
7 | <String Id="FeatureTitle" Value="MsiPackage" /> | ||
8 | |||
9 | </WixLocalization> | ||
diff --git a/src/ext/Firewall/test/WixToolsetTest.Firewall/TestData/UsingProperties/Package.wxs b/src/ext/Firewall/test/WixToolsetTest.Firewall/TestData/UsingProperties/Package.wxs new file mode 100644 index 00000000..814becd1 --- /dev/null +++ b/src/ext/Firewall/test/WixToolsetTest.Firewall/TestData/UsingProperties/Package.wxs | |||
@@ -0,0 +1,15 @@ | |||
1 | <Wix xmlns="http://wixtoolset.org/schemas/v4/wxs"> | ||
2 | <Package Name="MsiPackage" Language="1033" Version="1.0.0.0" Manufacturer="Example Corporation" UpgradeCode="BB4E61B3-EBE5-4DE7-B3E0-8699B5901D2E"> | ||
3 | <MajorUpgrade DowngradeErrorMessage="!(loc.DowngradeError)" /> | ||
4 | |||
5 | <Feature Id="ProductFeature" Title="!(loc.FeatureTitle)"> | ||
6 | <ComponentGroupRef Id="ProductComponents" /> | ||
7 | </Feature> | ||
8 | </Package> | ||
9 | |||
10 | <Fragment> | ||
11 | <StandardDirectory Id="ProgramFilesFolder"> | ||
12 | <Directory Id="INSTALLFOLDER" Name="MsiPackage" /> | ||
13 | </StandardDirectory> | ||
14 | </Fragment> | ||
15 | </Wix> | ||
diff --git a/src/ext/Firewall/test/WixToolsetTest.Firewall/TestData/UsingProperties/PackageComponents.wxs b/src/ext/Firewall/test/WixToolsetTest.Firewall/TestData/UsingProperties/PackageComponents.wxs new file mode 100644 index 00000000..05c3ea8a --- /dev/null +++ b/src/ext/Firewall/test/WixToolsetTest.Firewall/TestData/UsingProperties/PackageComponents.wxs | |||
@@ -0,0 +1,53 @@ | |||
1 | <?xml version="1.0" encoding="utf-8"?> | ||
2 | <Wix xmlns="http://wixtoolset.org/schemas/v4/wxs" | ||
3 | xmlns:fw="http://wixtoolset.org/schemas/v4/wxs/firewall"> | ||
4 | <Fragment> | ||
5 | <ComponentGroup Id="ProductComponents" Directory="INSTALLFOLDER"> | ||
6 | <Component Id="FirewallComponent" Guid="28DF3387-F30E-4DBE-90E2-D2C760CB4DD9"> | ||
7 | <fw:FirewallException | ||
8 | Name="[NAME]" | ||
9 | Port="[LOCALPORT]" | ||
10 | Protocol="[PROTOCOL]" | ||
11 | Program="[PROGRAM]" | ||
12 | Profile="[PROFILE]" | ||
13 | Description="[DESCRIPTION]" | ||
14 | Scope="[REMOTESCOPE]" | ||
15 | Action="[ACTION]" | ||
16 | EdgeTraversal="[EDGETRAVERSAL]" | ||
17 | Enabled="[ENABLED]" | ||
18 | Grouping="[GROUPING]" | ||
19 | IcmpTypesAndCodes="[ICMPTYPES]" | ||
20 | Interface="[INTERFACE]" | ||
21 | InterfaceType="[INTERFACETYPE]" | ||
22 | LocalScope="[LOCALSCOPE]" | ||
23 | RemotePort="[REMOTEPORT]" | ||
24 | Service="[SERVICE]" | ||
25 | LocalAppPackageId="[PACKAGEID]" | ||
26 | LocalUserAuthorizedList="[LOCALUSERS]" | ||
27 | LocalUserOwner="[LOCALOWNER]" | ||
28 | RemoteMachineAuthorizedList="[REMOTEMACHINES]" | ||
29 | RemoteUserAuthorizedList="[REMOTEUSERS]" | ||
30 | IPSecSecureFlags="[SECUREFLAGS]" | ||
31 | /> | ||
32 | |||
33 | <fw:FirewallException Name="Single Nested properties" > | ||
34 | <fw:RemoteAddress Value="[REMOTEADDRESS]" /> | ||
35 | <fw:LocalAddress Value="[LOCALADDRESS]" /> | ||
36 | <fw:InterfaceType Value="[INTERFACETYPE]" /> | ||
37 | <fw:Interface Name="[INTERFACE]" /> | ||
38 | </fw:FirewallException> | ||
39 | |||
40 | <fw:FirewallException Name="Multiple Nested properties" > | ||
41 | <fw:RemoteAddress Value="[REMOTEADDRESS1]" /> | ||
42 | <fw:RemoteAddress Value="[REMOTEADDRESS2]" /> | ||
43 | <fw:LocalAddress Value="[LOCALADDRESS1]" /> | ||
44 | <fw:LocalAddress Value="[LOCALADDRESS2]" /> | ||
45 | <fw:InterfaceType Value="[INTERFACETYPE1]" /> | ||
46 | <fw:InterfaceType Value="[INTERFACETYPE2]" /> | ||
47 | <fw:Interface Name="[INTERFACE1]" /> | ||
48 | <fw:Interface Name="[INTERFACE2]" /> | ||
49 | </fw:FirewallException> | ||
50 | </Component> | ||
51 | </ComponentGroup> | ||
52 | </Fragment> | ||
53 | </Wix> | ||
diff --git a/src/ext/Firewall/test/WixToolsetTest.Firewall/TestData/UsingProperties/example.txt b/src/ext/Firewall/test/WixToolsetTest.Firewall/TestData/UsingProperties/example.txt new file mode 100644 index 00000000..1b4ffe8a --- /dev/null +++ b/src/ext/Firewall/test/WixToolsetTest.Firewall/TestData/UsingProperties/example.txt | |||
@@ -0,0 +1 @@ | |||
This is example.txt. \ No newline at end of file | |||
diff --git a/src/ext/Firewall/test/WixToolsetTest.Firewall/WixToolsetTest.Firewall.csproj b/src/ext/Firewall/test/WixToolsetTest.Firewall/WixToolsetTest.Firewall.csproj index e46020a6..68acfe52 100644 --- a/src/ext/Firewall/test/WixToolsetTest.Firewall/WixToolsetTest.Firewall.csproj +++ b/src/ext/Firewall/test/WixToolsetTest.Firewall/WixToolsetTest.Firewall.csproj | |||
@@ -5,6 +5,8 @@ | |||
5 | <PropertyGroup> | 5 | <PropertyGroup> |
6 | <TargetFramework>net6.0</TargetFramework> | 6 | <TargetFramework>net6.0</TargetFramework> |
7 | <IsWixTestProject>true</IsWixTestProject> | 7 | <IsWixTestProject>true</IsWixTestProject> |
8 | <GenerateAssemblyInfo>false</GenerateAssemblyInfo> | ||
9 | <GenerateTargetFrameworkAttribute>false</GenerateTargetFrameworkAttribute> | ||
8 | </PropertyGroup> | 10 | </PropertyGroup> |
9 | 11 | ||
10 | <ItemGroup> | 12 | <ItemGroup> |