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/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/test')
18 files changed, 925 insertions, 20 deletions
diff --git a/src/test/burn/WixTestTools/Firewall/RuleDetails.cs b/src/test/burn/WixTestTools/Firewall/RuleDetails.cs index d1e53de4..8c8cdda3 100644 --- a/src/test/burn/WixTestTools/Firewall/RuleDetails.cs +++ b/src/test/burn/WixTestTools/Firewall/RuleDetails.cs | |||
@@ -146,7 +146,9 @@ namespace WixTestTools.Firewall | |||
146 | /// This parameter allows the specification of an array of interface LUIDs (locally unique identifiers) supplied as strings.<br/> | 146 | /// This parameter allows the specification of an array of interface LUIDs (locally unique identifiers) supplied as strings.<br/> |
147 | /// This is commonly used by USB RNDIS (Remote Network Driver Interface Specification) devices to restrict traffic to a specific non-routable interface.<br/> | 147 | /// This is commonly used by USB RNDIS (Remote Network Driver Interface Specification) devices to restrict traffic to a specific non-routable interface.<br/> |
148 | /// Use <b>netsh trace show interfaces</b> to show a list of local interfaces and their LUIDs.<br/> | 148 | /// Use <b>netsh trace show interfaces</b> to show a list of local interfaces and their LUIDs.<br/> |
149 | /// Example: new object[] { "Wi-Fi", "Local Area Connection* 14" } | 149 | /// The interfaces are stored in the registry as GUIDs, but need to be passed to the API as text. eg from the registry<br/> |
150 | /// v2.30|Action=Allow|Active=TRUE|Dir=In|Protocol=6|LPort=23456|IF={423411CD-E627-4A1A-9E1F-C5BE6CD2CC99}|IF={49A98AD0-8379-4079-A445-77066C52E338}|Name=WiXToolset401 Test - 0002|Desc=WiX Toolset firewall exception rule integration test - minimal port properties|<br/> | ||
151 | /// Example API value: new object[] { "Wi-Fi", "Local Area Connection* 14" } | ||
150 | /// </summary> | 152 | /// </summary> |
151 | public object[] Interfaces { get; set; } | 153 | public object[] Interfaces { get; set; } |
152 | 154 | ||
@@ -227,13 +229,13 @@ namespace WixTestTools.Firewall | |||
227 | public string LocalUserOwner { get; set; } | 229 | public string LocalUserOwner { get; set; } |
228 | 230 | ||
229 | /// <summary> | 231 | /// <summary> |
230 | /// This property is optional. It specifies a list of authorized local users for an app container.<br/> | 232 | /// This property is optional. It specifies a list of authorized local users for an app container (using SDDL).<br/> |
231 | /// Example: "O:LSD:(A;;CC;;;S-1-5-84-0-0-0-0-0)" | 233 | /// Example: "O:LSD:(A;;CC;;;S-1-5-84-0-0-0-0-0)" |
232 | /// </summary> | 234 | /// </summary> |
233 | public string LocalUserAuthorizedList { get; set; } | 235 | public string LocalUserAuthorizedList { get; set; } |
234 | 236 | ||
235 | /// <summary> | 237 | /// <summary> |
236 | /// This property is optional. It specifies a list of remote users who are authorized to access an app container.<br/> | 238 | /// This property is optional. It specifies a list of remote users who are authorized to access an app container (using SDDL).<br/> |
237 | /// </summary> | 239 | /// </summary> |
238 | public string RemoteUserAuthorizedList { get; set; } | 240 | public string RemoteUserAuthorizedList { get; set; } |
239 | 241 | ||
diff --git a/src/test/msi/TestData/FirewallExtensionTests/CrossVersionMerge/CrossVersionMerge.wixproj b/src/test/msi/TestData/FirewallExtensionTests/CrossVersionMerge/CrossVersionMerge.wixproj new file mode 100644 index 00000000..f1c71d3d --- /dev/null +++ b/src/test/msi/TestData/FirewallExtensionTests/CrossVersionMerge/CrossVersionMerge.wixproj | |||
@@ -0,0 +1,13 @@ | |||
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 | <Project Sdk="WixToolset.Sdk"> | ||
3 | <PropertyGroup> | ||
4 | <SuppressSpecificWarnings>1055;1056</SuppressSpecificWarnings> | ||
5 | </PropertyGroup> | ||
6 | <ItemGroup> | ||
7 | <!-- <ProjectReference Include="..\Module401\Module401.wixproj" /> --> | ||
8 | <ProjectReference Include="..\ModuleCurrent\ModuleCurrent.wixproj" /> | ||
9 | </ItemGroup> | ||
10 | <ItemGroup> | ||
11 | <PackageReference Include="WixToolset.Firewall.wixext" /> | ||
12 | </ItemGroup> | ||
13 | </Project> | ||
diff --git a/src/test/msi/TestData/FirewallExtensionTests/CrossVersionMerge/Module401.msm b/src/test/msi/TestData/FirewallExtensionTests/CrossVersionMerge/Module401.msm new file mode 100644 index 00000000..4dd5bd09 --- /dev/null +++ b/src/test/msi/TestData/FirewallExtensionTests/CrossVersionMerge/Module401.msm | |||
Binary files differ | |||
diff --git a/src/test/msi/TestData/FirewallExtensionTests/CrossVersionMerge/package.wxs b/src/test/msi/TestData/FirewallExtensionTests/CrossVersionMerge/package.wxs new file mode 100644 index 00000000..6d5ea47a --- /dev/null +++ b/src/test/msi/TestData/FirewallExtensionTests/CrossVersionMerge/package.wxs | |||
@@ -0,0 +1,35 @@ | |||
1 | <Wix xmlns="http://wixtoolset.org/schemas/v4/wxs" xmlns:fw="http://wixtoolset.org/schemas/v4/wxs/firewall"> | ||
2 | <Package Name="MsiPackage" Language="1033" Version="1.0.0.0" Manufacturer="Example Corporation" | ||
3 | UpgradeCode="41B5F815-E7F6-44E0-B92A-AE95DFF683F9" Compressed="yes" Scope="perMachine"> | ||
4 | <MediaTemplate EmbedCab="yes" /> | ||
5 | |||
6 | <MajorUpgrade DowngradeErrorMessage="A newer version of [ProductName] is already installed." /> | ||
7 | |||
8 | <Feature Id="ProductFeature" Title="Feature with merged modules"> | ||
9 | <MergeRef Id="TestMsm1" /> | ||
10 | <MergeRef Id="TestMsm2" /> | ||
11 | <ComponentRef Id="FirewallComponent1" /> | ||
12 | </Feature> | ||
13 | </Package> | ||
14 | |||
15 | <Fragment> | ||
16 | <StandardDirectory Id="ProgramFilesFolder"> | ||
17 | <Directory Id="INSTALLFOLDER" Name="MsiPackage"> | ||
18 | <Merge Id="TestMsm1" Language="1033" SourceFile="Module401.msm" /> | ||
19 | <Merge Id="TestMsm2" Language="1033" SourceFile="ModuleCurrent.msm" /> | ||
20 | </Directory> | ||
21 | </StandardDirectory> | ||
22 | </Fragment> | ||
23 | |||
24 | <Fragment> | ||
25 | <Property Id="MSIPORT1" Value="20001" /> | ||
26 | <Property Id="MSIPORT2" Value="20002" /> | ||
27 | |||
28 | <Component Id="FirewallComponent1" Guid="3E9A6190-3E6B-4BC2-8C84-D89D1549FEBD" Directory="INSTALLFOLDER"> | ||
29 | <File Source="$(sys.SOURCEFILEPATH)"> | ||
30 | <fw:FirewallException Id="FirewallException1" Description="WiX Toolset firewall exception rule integration test - package app" Name="WiXToolset Test - 0026" Scope="any" Port="[MSIPORT1]" /> | ||
31 | </File> | ||
32 | <fw:FirewallException Id="FirewallException2" Description="WiX Toolset firewall exception rule integration test - package port" Name="WiXToolset Test - 0027" Scope="any" Port="[MSIPORT2]" /> | ||
33 | </Component> | ||
34 | </Fragment> | ||
35 | </Wix> | ||
diff --git a/src/test/msi/TestData/FirewallExtensionTests/FirewallRulesInterfaces/FirewallRulesInterfaces.wixproj b/src/test/msi/TestData/FirewallExtensionTests/FirewallRulesInterfaces/FirewallRulesInterfaces.wixproj new file mode 100644 index 00000000..3c6ef5cf --- /dev/null +++ b/src/test/msi/TestData/FirewallExtensionTests/FirewallRulesInterfaces/FirewallRulesInterfaces.wixproj | |||
@@ -0,0 +1,13 @@ | |||
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 | <Project Sdk="WixToolset.Sdk"> | ||
3 | <PropertyGroup> | ||
4 | <UpgradeCode>{F153C27F-0236-4A0F-ADB3-50BFC73B4FEA}</UpgradeCode> | ||
5 | <ProductComponentsRef>true</ProductComponentsRef> | ||
6 | </PropertyGroup> | ||
7 | <ItemGroup> | ||
8 | <Compile Include="..\..\Templates\Product.wxs" Link="Product.wxs" /> | ||
9 | </ItemGroup> | ||
10 | <ItemGroup> | ||
11 | <PackageReference Include="WixToolset.Firewall.wixext" /> | ||
12 | </ItemGroup> | ||
13 | </Project> \ No newline at end of file | ||
diff --git a/src/test/msi/TestData/FirewallExtensionTests/FirewallRulesInterfaces/product.wxs b/src/test/msi/TestData/FirewallExtensionTests/FirewallRulesInterfaces/product.wxs new file mode 100644 index 00000000..142c8f68 --- /dev/null +++ b/src/test/msi/TestData/FirewallExtensionTests/FirewallRulesInterfaces/product.wxs | |||
@@ -0,0 +1,32 @@ | |||
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 | |||
4 | <Wix xmlns="http://wixtoolset.org/schemas/v4/wxs" xmlns:fw="http://wixtoolset.org/schemas/v4/wxs/firewall"> | ||
5 | <Fragment> | ||
6 | <ComponentGroup Id="ProductComponents"> | ||
7 | <ComponentRef Id="FirewallComponent1"/> | ||
8 | </ComponentGroup> | ||
9 | </Fragment> | ||
10 | |||
11 | <Fragment> | ||
12 | <Component Id="FirewallComponent1" Guid="08044660-CB5D-4891-8BD5-0CB5BB668D78" Directory="INSTALLFOLDER"> | ||
13 | <File Source="$(sys.SOURCEFILEPATH)" KeyPath="yes" > | ||
14 | <fw:FirewallException Id="FirewallException28" | ||
15 | Description="WiX Toolset firewall exception rule integration test - three interfaces" | ||
16 | Name="WiXToolset500 Test - 0028" Scope="any" > | ||
17 | <fw:Interface Name="[INTERFACE1]" /> | ||
18 | <fw:Interface Name="[INTERFACE2]" /> | ||
19 | <fw:Interface Name="[INTERFACE3]" /> | ||
20 | <fw:InterfaceType Value="RemoteAccess" /> | ||
21 | <fw:InterfaceType Value="Lan" /> | ||
22 | <fw:InterfaceType Value="Wireless" /> | ||
23 | </fw:FirewallException> | ||
24 | </File> | ||
25 | |||
26 | <fw:FirewallException Id="FirewallException29" | ||
27 | Description="WiX Toolset firewall exception rule integration test - one interface" | ||
28 | Name="WiXToolset500 Test - 0029" Scope="any" Port="29292" Interface="[INTERFACE1]" InterfaceType="[INTERFACETYPE]" > | ||
29 | </fw:FirewallException> | ||
30 | </Component> | ||
31 | </Fragment> | ||
32 | </Wix> | ||
diff --git a/src/test/msi/TestData/FirewallExtensionTests/FirewallRulesProperties/FirewallRulesProperties.wixproj b/src/test/msi/TestData/FirewallExtensionTests/FirewallRulesProperties/FirewallRulesProperties.wixproj new file mode 100644 index 00000000..38d94265 --- /dev/null +++ b/src/test/msi/TestData/FirewallExtensionTests/FirewallRulesProperties/FirewallRulesProperties.wixproj | |||
@@ -0,0 +1,13 @@ | |||
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 | <Project Sdk="WixToolset.Sdk"> | ||
3 | <PropertyGroup> | ||
4 | <UpgradeCode>{DC2C3CDC-112F-40A8-A7B4-2C7B758F4F94}</UpgradeCode> | ||
5 | <ProductComponentsRef>true</ProductComponentsRef> | ||
6 | </PropertyGroup> | ||
7 | <ItemGroup> | ||
8 | <Compile Include="..\..\Templates\Product.wxs" Link="Product.wxs" /> | ||
9 | </ItemGroup> | ||
10 | <ItemGroup> | ||
11 | <PackageReference Include="WixToolset.Firewall.wixext" /> | ||
12 | </ItemGroup> | ||
13 | </Project> \ No newline at end of file | ||
diff --git a/src/test/msi/TestData/FirewallExtensionTests/FirewallRulesProperties/product.wxs b/src/test/msi/TestData/FirewallExtensionTests/FirewallRulesProperties/product.wxs new file mode 100644 index 00000000..1f9935d5 --- /dev/null +++ b/src/test/msi/TestData/FirewallExtensionTests/FirewallRulesProperties/product.wxs | |||
@@ -0,0 +1,57 @@ | |||
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 | |||
4 | <Wix xmlns="http://wixtoolset.org/schemas/v4/wxs" xmlns:fw="http://wixtoolset.org/schemas/v4/wxs/firewall"> | ||
5 | <Fragment> | ||
6 | <ComponentGroup Id="ProductComponents"> | ||
7 | <ComponentRef Id="FirewallComponent1"/> | ||
8 | </ComponentGroup> | ||
9 | </Fragment> | ||
10 | |||
11 | <Fragment> | ||
12 | <Component Id="FirewallComponent1" Guid="A1553D10-BEB7-4E60-A0DC-6F1EEE5A1719" Directory="INSTALLFOLDER"> | ||
13 | <fw:FirewallException | ||
14 | Name="WiXToolset Test - 0028" OnUpdate="EnableOnly" | ||
15 | Port="[LOCALPORT]" | ||
16 | Protocol="[PROTOCOL]" | ||
17 | Program="[PROGRAM]" | ||
18 | Profile="[PROFILE]" | ||
19 | Description="[DESCRIPTION]" | ||
20 | Scope="[REMOTESCOPE]" | ||
21 | EdgeTraversal="[EDGETRAVERSAL]" | ||
22 | Enabled="[ENABLED]" | ||
23 | Grouping="[GROUPING]" | ||
24 | IcmpTypesAndCodes="[ICMPTYPES]" | ||
25 | Interface="[INTERFACE]" | ||
26 | InterfaceType="[INTERFACETYPE]" | ||
27 | LocalScope="[LOCALSCOPE]" | ||
28 | RemotePort="[REMOTEPORT]" | ||
29 | Service="[SERVICE]" | ||
30 | LocalAppPackageId="[PACKAGEID]" | ||
31 | LocalUserAuthorizedList="[LOCALUSERS]" | ||
32 | LocalUserOwner="[LOCALOWNER]" | ||
33 | RemoteMachineAuthorizedList="[REMOTEMACHINES]" | ||
34 | RemoteUserAuthorizedList="[REMOTEUSERS]" | ||
35 | IPSecSecureFlags="[SECUREFLAGS]" | ||
36 | /> | ||
37 | |||
38 | <fw:FirewallException Name="WiXToolset Test - 0029" OnUpdate="DoNothing" > | ||
39 | <fw:RemoteAddress Value="[REMOTEADDRESS]" /> | ||
40 | <fw:LocalAddress Value="[LOCALADDRESS]" /> | ||
41 | <fw:InterfaceType Value="[INTERFACETYPE]" /> | ||
42 | <fw:Interface Name="[INTERFACE]" /> | ||
43 | </fw:FirewallException> | ||
44 | |||
45 | <fw:FirewallException Name="WiXToolset Test - 0030" > | ||
46 | <fw:RemoteAddress Value="[REMOTEADDRESS1]" /> | ||
47 | <fw:RemoteAddress Value="[REMOTEADDRESS2]" /> | ||
48 | <fw:LocalAddress Value="[LOCALADDRESS1]" /> | ||
49 | <fw:LocalAddress Value="[LOCALADDRESS2]" /> | ||
50 | <fw:InterfaceType Value="[INTERFACETYPE1]" /> | ||
51 | <fw:InterfaceType Value="[INTERFACETYPE2]" /> | ||
52 | <fw:Interface Name="[INTERFACE1]" /> | ||
53 | <fw:Interface Name="[INTERFACE2]" /> | ||
54 | </fw:FirewallException> | ||
55 | </Component> | ||
56 | </Fragment> | ||
57 | </Wix> | ||
diff --git a/src/test/msi/TestData/FirewallExtensionTests/Module401/Module401.wixproj b/src/test/msi/TestData/FirewallExtensionTests/Module401/Module401.wixproj new file mode 100644 index 00000000..5f65e657 --- /dev/null +++ b/src/test/msi/TestData/FirewallExtensionTests/Module401/Module401.wixproj | |||
@@ -0,0 +1,10 @@ | |||
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 | <Project Sdk="WixToolset.Sdk"> | ||
3 | <PropertyGroup> | ||
4 | <OutputType>Module</OutputType> | ||
5 | <SuppressSpecificWarnings>1072</SuppressSpecificWarnings> | ||
6 | </PropertyGroup> | ||
7 | <ItemGroup> | ||
8 | <PackageReference Include="WixToolset.Firewall.wixext"/><!--VersionOverride="4.0.1"--> | ||
9 | </ItemGroup> | ||
10 | </Project> \ No newline at end of file | ||
diff --git a/src/test/msi/TestData/FirewallExtensionTests/Module401/data/test.txt b/src/test/msi/TestData/FirewallExtensionTests/Module401/data/test.txt new file mode 100644 index 00000000..cd0db0e1 --- /dev/null +++ b/src/test/msi/TestData/FirewallExtensionTests/Module401/data/test.txt | |||
@@ -0,0 +1 @@ | |||
This is test.txt. \ No newline at end of file | |||
diff --git a/src/test/msi/TestData/FirewallExtensionTests/Module401/module.wxs b/src/test/msi/TestData/FirewallExtensionTests/Module401/module.wxs new file mode 100644 index 00000000..872743c7 --- /dev/null +++ b/src/test/msi/TestData/FirewallExtensionTests/Module401/module.wxs | |||
@@ -0,0 +1,36 @@ | |||
1 | <Wix xmlns="http://wixtoolset.org/schemas/v4/wxs" xmlns:fw="http://wixtoolset.org/schemas/v4/wxs/firewall" > | ||
2 | <Module Id="MergeModule1" Language="1033" Version="1.0.0.0" Guid="4B2C61BF-59F5-453B-98E3-3389F681EA00"> | ||
3 | <SummaryInformation Manufacturer="Module 4.0.1 Manufacturer" /> | ||
4 | |||
5 | <Property Id="MODULE401PORT1" Value="40101" /> | ||
6 | <Property Id="MODULE401PORT2" Value="40102" /> | ||
7 | <Property Id="MODULE401PORT3" Value="40103" /> | ||
8 | <Property Id="MODULE401PORT4" Value="40104" /> | ||
9 | |||
10 | <Directory Id="MergeRedirectFolder"> | ||
11 | <Component Id="ModuleComponent1" Guid="257F9283-1334-423C-A7E7-FEE848BCD37F"> | ||
12 | <File Id="File1" Name="file1.txt" Source="data/test.txt"> | ||
13 | <fw:FirewallException Id="FirewallException1" | ||
14 | Description="WiX Toolset firewall exception rule integration test - module 401 MergeRedirectFolder - app" | ||
15 | Name="WiXToolset401 Test - 0018" Scope="any" Port="[MODULE401PORT1]" /> | ||
16 | </File> | ||
17 | <fw:FirewallException Id="FirewallException2" | ||
18 | Description="WiX Toolset firewall exception rule integration test - module 401 MergeRedirectFolder - port" | ||
19 | Name="WiXToolset401 Test - 0019" Scope="any" Port="[MODULE401PORT2]" /> | ||
20 | </Component> | ||
21 | </Directory> | ||
22 | |||
23 | <Directory Id="NotTheMergeRedirectFolder"> | ||
24 | <Component Id="ModuleComponent2" Guid="48A2D573-0ADB-4010-84E3-96C3D6803E90"> | ||
25 | <File Id="File2" Name="file2.txt" Source="data/test.txt"> | ||
26 | <fw:FirewallException Id="FirewallException3" | ||
27 | Description="WiX Toolset firewall exception rule integration test - module 401 NotTheMergeRedirectFolder - app" | ||
28 | Name="WiXToolset401 Test - 0020" Scope="any" Port="[MODULE401PORT3]" /> | ||
29 | </File> | ||
30 | <fw:FirewallException Id="FirewallException4" | ||
31 | Description="WiX Toolset firewall exception rule integration test - module 401 NotTheMergeRedirectFolder - port" | ||
32 | Name="WiXToolset401 Test - 0021" Scope="any" Port="[MODULE401PORT4]" /> | ||
33 | </Component> | ||
34 | </Directory> | ||
35 | </Module> | ||
36 | </Wix> | ||
diff --git a/src/test/msi/TestData/FirewallExtensionTests/ModuleCurrent/ModuleCurrent.wixproj b/src/test/msi/TestData/FirewallExtensionTests/ModuleCurrent/ModuleCurrent.wixproj new file mode 100644 index 00000000..8a84280c --- /dev/null +++ b/src/test/msi/TestData/FirewallExtensionTests/ModuleCurrent/ModuleCurrent.wixproj | |||
@@ -0,0 +1,10 @@ | |||
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 | <Project Sdk="WixToolset.Sdk"> | ||
3 | <PropertyGroup> | ||
4 | <OutputType>Module</OutputType> | ||
5 | <SuppressSpecificWarnings>1072</SuppressSpecificWarnings> | ||
6 | </PropertyGroup> | ||
7 | <ItemGroup> | ||
8 | <PackageReference Include="WixToolset.Firewall.wixext" /> | ||
9 | </ItemGroup> | ||
10 | </Project> \ No newline at end of file | ||
diff --git a/src/test/msi/TestData/FirewallExtensionTests/ModuleCurrent/data/test.txt b/src/test/msi/TestData/FirewallExtensionTests/ModuleCurrent/data/test.txt new file mode 100644 index 00000000..cd0db0e1 --- /dev/null +++ b/src/test/msi/TestData/FirewallExtensionTests/ModuleCurrent/data/test.txt | |||
@@ -0,0 +1 @@ | |||
This is test.txt. \ No newline at end of file | |||
diff --git a/src/test/msi/TestData/FirewallExtensionTests/ModuleCurrent/module.wxs b/src/test/msi/TestData/FirewallExtensionTests/ModuleCurrent/module.wxs new file mode 100644 index 00000000..53097acd --- /dev/null +++ b/src/test/msi/TestData/FirewallExtensionTests/ModuleCurrent/module.wxs | |||
@@ -0,0 +1,36 @@ | |||
1 | <Wix xmlns="http://wixtoolset.org/schemas/v4/wxs" xmlns:fw="http://wixtoolset.org/schemas/v4/wxs/firewall" > | ||
2 | <Module Id="MergeModule1" Language="1033" Version="1.0.0.0" Guid="44FA5DBE-2413-436E-99B3-A0751D6EB420"> | ||
3 | <SummaryInformation Manufacturer="Example Company - Module Current" /> | ||
4 | |||
5 | <Property Id="MODULECURRENTPORT1" Value="50001" /> | ||
6 | <Property Id="MODULECURRENTPORT2" Value="50002" /> | ||
7 | <Property Id="MODULECURRENTPORT3" Value="50003" /> | ||
8 | <Property Id="MODULECURRENTPORT4" Value="50004" /> | ||
9 | |||
10 | <Directory Id="MergeRedirectFolder"> | ||
11 | <Component Id="ModuleComponent1" Guid="EB7B8A63-85C4-4ABB-B9DA-33AECAFE38F7"> | ||
12 | <File Id="File1" Name="file1.txt" Source="data/test.txt"> | ||
13 | <fw:FirewallException Id="FirewallException1" | ||
14 | Description="WiX Toolset firewall exception rule integration test - module MergeRedirectFolder - app" | ||
15 | Name="WiXToolset Test - 0022" Scope="any" Port="[MODULECURRENTPORT1]" /> | ||
16 | </File> | ||
17 | <fw:FirewallException Id="FirewallException2" | ||
18 | Description="WiX Toolset firewall exception rule integration test - module MergeRedirectFolder - port" | ||
19 | Name="WiXToolset Test - 0023" Scope="any" Port="[MODULECURRENTPORT2]" /> | ||
20 | </Component> | ||
21 | </Directory> | ||
22 | |||
23 | <Directory Id="NotTheMergeRedirectFolder"> | ||
24 | <Component Id="ModuleComponent2" Guid="0C9DD4FC-5A54-4E96-830D-DDE27B3017B5"> | ||
25 | <File Id="File2" Name="file2.txt" Source="data/test.txt"> | ||
26 | <fw:FirewallException Id="FirewallException3" | ||
27 | Description="WiX Toolset firewall exception rule integration test - module NotTheMergeRedirectFolder - app" | ||
28 | Name="WiXToolset Test - 0024" Scope="any" Port="[MODULECURRENTPORT3]" /> | ||
29 | </File> | ||
30 | <fw:FirewallException Id="FirewallException4" | ||
31 | Description="WiX Toolset firewall exception rule integration test - module NotTheMergeRedirectFolder - port" | ||
32 | Name="WiXToolset Test - 0025" Scope="any" Port="[MODULECURRENTPORT4]" /> | ||
33 | </Component> | ||
34 | </Directory> | ||
35 | </Module> | ||
36 | </Wix> | ||
diff --git a/src/test/msi/TestData/FirewallExtensionTests/NestedService/NestedService.wixproj b/src/test/msi/TestData/FirewallExtensionTests/NestedService/NestedService.wixproj new file mode 100644 index 00000000..4a9c9dbd --- /dev/null +++ b/src/test/msi/TestData/FirewallExtensionTests/NestedService/NestedService.wixproj | |||
@@ -0,0 +1,14 @@ | |||
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 | <Project Sdk="WixToolset.Sdk"> | ||
3 | <PropertyGroup> | ||
4 | <UpgradeCode>{80635798-F904-4C4E-81D8-27A5106F3998}</UpgradeCode> | ||
5 | <ProductComponentsRef>true</ProductComponentsRef> | ||
6 | </PropertyGroup> | ||
7 | <ItemGroup> | ||
8 | <Compile Include="..\..\Templates\Product.wxs" Link="Product.wxs" /> | ||
9 | </ItemGroup> | ||
10 | <ItemGroup> | ||
11 | <PackageReference Include="WixToolset.Firewall.wixext" /> | ||
12 | <PackageReference Include="WixToolset.Util.wixext" /> | ||
13 | </ItemGroup> | ||
14 | </Project> \ No newline at end of file | ||
diff --git a/src/test/msi/TestData/FirewallExtensionTests/NestedService/product.wxs b/src/test/msi/TestData/FirewallExtensionTests/NestedService/product.wxs new file mode 100644 index 00000000..24559a33 --- /dev/null +++ b/src/test/msi/TestData/FirewallExtensionTests/NestedService/product.wxs | |||
@@ -0,0 +1,25 @@ | |||
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 | |||
4 | <Wix xmlns="http://wixtoolset.org/schemas/v4/wxs" xmlns:fw="http://wixtoolset.org/schemas/v4/wxs/firewall" xmlns:util="http://wixtoolset.org/schemas/v4/wxs/util" > | ||
5 | <Fragment> | ||
6 | <ComponentGroup Id="ProductComponents"> | ||
7 | <ComponentRef Id="FirewallComponent1"/> | ||
8 | </ComponentGroup> | ||
9 | </Fragment> | ||
10 | |||
11 | <Fragment> | ||
12 | <Component Id="FirewallComponent1" Guid="FD6E696A-8C42-49BF-B686-0DA5CD4B2C5A" Directory="INSTALLFOLDER" > | ||
13 | <fw:FirewallException Id="FirewallException1" Description="WiX Toolset firewall exception rule integration test - service property" | ||
14 | Name="WiXToolset Test - 0031" Service="Spooler"/> | ||
15 | <util:ServiceConfig ServiceName="Spooler" FirstFailureActionType="restart" SecondFailureActionType="restart" ThirdFailureActionType="none" > | ||
16 | <fw:FirewallException Id="FirewallException2" Description="WiX Toolset firewall exception rule integration test - ServiceConfig" | ||
17 | Name="WiXToolset Test - 0032" /> | ||
18 | </util:ServiceConfig> | ||
19 | <ServiceInstall Name="WixTestFirewallSrv" Type="ownProcess" Start="disabled" ErrorControl="ignore" Vital="no" Arguments="%WINDIR%\System32\spoolsv.exe" > | ||
20 | <fw:FirewallException Id="FirewallException3" Description="WiX Toolset firewall exception rule integration test - ServiceInstall" | ||
21 | Name="WiXToolset Test - 0033" /> | ||
22 | </ServiceInstall> | ||
23 | </Component> | ||
24 | </Fragment> | ||
25 | </Wix> | ||
diff --git a/src/test/msi/WixToolsetTest.MsiE2E/FirewallExtensionTests.cs b/src/test/msi/WixToolsetTest.MsiE2E/FirewallExtensionTests.cs index ce55aa14..380e6f4c 100644 --- a/src/test/msi/WixToolsetTest.MsiE2E/FirewallExtensionTests.cs +++ b/src/test/msi/WixToolsetTest.MsiE2E/FirewallExtensionTests.cs | |||
@@ -4,6 +4,8 @@ namespace WixToolsetTest.MsiE2E | |||
4 | { | 4 | { |
5 | using System; | 5 | using System; |
6 | using System.IO; | 6 | using System.IO; |
7 | using System.Linq; | ||
8 | using System.Net.NetworkInformation; | ||
7 | using NetFwTypeLib; | 9 | using NetFwTypeLib; |
8 | using WixTestTools; | 10 | using WixTestTools; |
9 | using WixTestTools.Firewall; | 11 | using WixTestTools.Firewall; |
@@ -37,8 +39,8 @@ namespace WixToolsetTest.MsiE2E | |||
37 | ApplicationName = this.TestContext.GetTestInstallFolder(false, Path.Combine("FirewallRules", "product.wxs")), | 39 | ApplicationName = this.TestContext.GetTestInstallFolder(false, Path.Combine("FirewallRules", "product.wxs")), |
38 | Description = "WiX Toolset firewall exception rule integration test - minimal app properties", | 40 | Description = "WiX Toolset firewall exception rule integration test - minimal app properties", |
39 | Direction = NET_FW_RULE_DIRECTION_.NET_FW_RULE_DIR_IN, | 41 | Direction = NET_FW_RULE_DIRECTION_.NET_FW_RULE_DIR_IN, |
40 | EdgeTraversal = true, | 42 | EdgeTraversal = false, |
41 | EdgeTraversalOptions = 1, | 43 | EdgeTraversalOptions = 0, |
42 | Enabled = true, | 44 | Enabled = true, |
43 | InterfaceTypes = "All", | 45 | InterfaceTypes = "All", |
44 | LocalAddresses = "*", | 46 | LocalAddresses = "*", |
@@ -124,8 +126,8 @@ namespace WixToolsetTest.MsiE2E | |||
124 | ApplicationName = this.TestContext.GetTestInstallFolder(false, Path.Combine("FirewallRules", "product.wxs")), | 126 | ApplicationName = this.TestContext.GetTestInstallFolder(false, Path.Combine("FirewallRules", "product.wxs")), |
125 | Description = "WiX Toolset firewall exception rule integration test - minimal app properties", | 127 | Description = "WiX Toolset firewall exception rule integration test - minimal app properties", |
126 | Direction = NET_FW_RULE_DIRECTION_.NET_FW_RULE_DIR_IN, | 128 | Direction = NET_FW_RULE_DIRECTION_.NET_FW_RULE_DIR_IN, |
127 | EdgeTraversal = true, | 129 | EdgeTraversal = false, |
128 | EdgeTraversalOptions = 1, | 130 | EdgeTraversalOptions = 0, |
129 | Enabled = true, | 131 | Enabled = true, |
130 | InterfaceTypes = "All", | 132 | InterfaceTypes = "All", |
131 | LocalAddresses = "*", | 133 | LocalAddresses = "*", |
@@ -187,8 +189,8 @@ namespace WixToolsetTest.MsiE2E | |||
187 | ApplicationName = this.TestContext.GetTestInstallFolder(false, Path.Combine("FirewallRules", "product.wxs")), | 189 | ApplicationName = this.TestContext.GetTestInstallFolder(false, Path.Combine("FirewallRules", "product.wxs")), |
188 | Description = "WiX Toolset firewall exception rule integration test - minimal app properties", | 190 | Description = "WiX Toolset firewall exception rule integration test - minimal app properties", |
189 | Direction = NET_FW_RULE_DIRECTION_.NET_FW_RULE_DIR_IN, | 191 | Direction = NET_FW_RULE_DIRECTION_.NET_FW_RULE_DIR_IN, |
190 | EdgeTraversal = true, | 192 | EdgeTraversal = false, |
191 | EdgeTraversalOptions = 1, | 193 | EdgeTraversalOptions = 0, |
192 | Enabled = true, | 194 | Enabled = true, |
193 | InterfaceTypes = "All", | 195 | InterfaceTypes = "All", |
194 | LocalAddresses = "*", | 196 | LocalAddresses = "*", |
@@ -213,8 +215,8 @@ namespace WixToolsetTest.MsiE2E | |||
213 | ApplicationName = this.TestContext.GetTestInstallFolder(false, Path.Combine("DynamicFirewallRules", "product.wxs")), | 215 | ApplicationName = this.TestContext.GetTestInstallFolder(false, Path.Combine("DynamicFirewallRules", "product.wxs")), |
214 | Description = "WiX Toolset firewall exception rule integration test - dynamic app description 9999", | 216 | Description = "WiX Toolset firewall exception rule integration test - dynamic app description 9999", |
215 | Direction = NET_FW_RULE_DIRECTION_.NET_FW_RULE_DIR_IN, | 217 | Direction = NET_FW_RULE_DIRECTION_.NET_FW_RULE_DIR_IN, |
216 | EdgeTraversal = true, | 218 | EdgeTraversal = false, |
217 | EdgeTraversalOptions = 1, | 219 | EdgeTraversalOptions = 0, |
218 | Enabled = true, | 220 | Enabled = true, |
219 | InterfaceTypes = "All", | 221 | InterfaceTypes = "All", |
220 | LocalAddresses = "*", | 222 | LocalAddresses = "*", |
@@ -255,8 +257,8 @@ namespace WixToolsetTest.MsiE2E | |||
255 | ApplicationName = Path.Combine(Environment.GetEnvironmentVariable("windir"), "system32", "9999.exe"), | 257 | ApplicationName = Path.Combine(Environment.GetEnvironmentVariable("windir"), "system32", "9999.exe"), |
256 | Description = "WiX Toolset firewall exception rule integration test - dynamic Name 9999", | 258 | Description = "WiX Toolset firewall exception rule integration test - dynamic Name 9999", |
257 | Direction = NET_FW_RULE_DIRECTION_.NET_FW_RULE_DIR_IN, | 259 | Direction = NET_FW_RULE_DIRECTION_.NET_FW_RULE_DIR_IN, |
258 | EdgeTraversal = true, | 260 | EdgeTraversal = false, |
259 | EdgeTraversalOptions = 1, | 261 | EdgeTraversalOptions = 0, |
260 | Enabled = true, | 262 | Enabled = true, |
261 | InterfaceTypes = "All", | 263 | InterfaceTypes = "All", |
262 | LocalAddresses = "*", | 264 | LocalAddresses = "*", |
@@ -285,10 +287,10 @@ namespace WixToolsetTest.MsiE2E | |||
285 | var log1 = product.InstallProduct(MSIExec.MSIExecReturnCode.SUCCESS); | 287 | var log1 = product.InstallProduct(MSIExec.MSIExecReturnCode.SUCCESS); |
286 | 288 | ||
287 | Assert.False(Verifier.FirewallRuleExists("WiXToolset401 Test - 0006 pipe")); | 289 | Assert.False(Verifier.FirewallRuleExists("WiXToolset401 Test - 0006 pipe")); |
288 | Assert.True(LogVerifier.MessageInLogFile(log1, "failed to add app to the authorized apps list")); | 290 | Assert.True(LogVerifier.MessageInLogFile(log1, "failed to add firewall exception 'WiXToolset401 Test - 0006 pipe' to the list")); |
289 | 291 | ||
290 | Assert.False(Verifier.FirewallRuleExists("WiXToolset401 Test - 0007 pipe")); | 292 | Assert.False(Verifier.FirewallRuleExists("WiXToolset401 Test - 0007 pipe")); |
291 | Assert.True(LogVerifier.MessageInLogFile(log1, "failed to add app to the authorized ports list")); | 293 | Assert.True(LogVerifier.MessageInLogFile(log1, "failed to add firewall exception 'WiXToolset401 Test - 0007 pipe' to the list")); |
292 | 294 | ||
293 | var expected = new RuleDetails("WiXToolset401 Test - 0008 removal") | 295 | var expected = new RuleDetails("WiXToolset401 Test - 0008 removal") |
294 | { | 296 | { |
@@ -296,8 +298,8 @@ namespace WixToolsetTest.MsiE2E | |||
296 | ApplicationName = "test.exe", | 298 | ApplicationName = "test.exe", |
297 | Description = "WiX Toolset firewall exception rule integration test - removal test", | 299 | Description = "WiX Toolset firewall exception rule integration test - removal test", |
298 | Direction = NET_FW_RULE_DIRECTION_.NET_FW_RULE_DIR_IN, | 300 | Direction = NET_FW_RULE_DIRECTION_.NET_FW_RULE_DIR_IN, |
299 | EdgeTraversal = true, | 301 | EdgeTraversal = false, |
300 | EdgeTraversalOptions = 1, | 302 | EdgeTraversalOptions = 0, |
301 | Enabled = true, | 303 | Enabled = true, |
302 | InterfaceTypes = "All", | 304 | InterfaceTypes = "All", |
303 | LocalPorts = "52390", | 305 | LocalPorts = "52390", |
@@ -313,7 +315,7 @@ namespace WixToolsetTest.MsiE2E | |||
313 | Verifier.RemoveFirewallRuleByName("WiXToolset401 Test - 0008 removal"); | 315 | Verifier.RemoveFirewallRuleByName("WiXToolset401 Test - 0008 removal"); |
314 | 316 | ||
315 | var log2 = product.UninstallProduct(MSIExec.MSIExecReturnCode.SUCCESS, "NORULENAME=1"); | 317 | var log2 = product.UninstallProduct(MSIExec.MSIExecReturnCode.SUCCESS, "NORULENAME=1"); |
316 | Assert.True(LogVerifier.MessageInLogFile(log2, "failed to remove firewall rule")); | 318 | Assert.True(LogVerifier.MessageInLogFile(log2, "failed to remove firewall exception for name")); |
317 | } | 319 | } |
318 | 320 | ||
319 | [RuntimeFact] | 321 | [RuntimeFact] |
@@ -370,8 +372,8 @@ namespace WixToolsetTest.MsiE2E | |||
370 | ApplicationName = "test.exe", | 372 | ApplicationName = "test.exe", |
371 | Description = "WiX Toolset firewall exception rule integration test - ports can only be specified if protocol is TCP or UDP", | 373 | Description = "WiX Toolset firewall exception rule integration test - ports can only be specified if protocol is TCP or UDP", |
372 | Direction = NET_FW_RULE_DIRECTION_.NET_FW_RULE_DIR_IN, | 374 | Direction = NET_FW_RULE_DIRECTION_.NET_FW_RULE_DIR_IN, |
373 | EdgeTraversal = true, | 375 | EdgeTraversal = false, |
374 | EdgeTraversalOptions = 1, | 376 | EdgeTraversalOptions = 0, |
375 | Enabled = true, | 377 | Enabled = true, |
376 | InterfaceTypes = "All", | 378 | InterfaceTypes = "All", |
377 | LocalAddresses = "*", | 379 | LocalAddresses = "*", |
@@ -532,5 +534,609 @@ namespace WixToolsetTest.MsiE2E | |||
532 | Assert.False(Verifier.FirewallRuleExists("WiXToolset401 Test - 0016")); | 534 | Assert.False(Verifier.FirewallRuleExists("WiXToolset401 Test - 0016")); |
533 | Assert.False(Verifier.FirewallRuleExists("WiXToolset401 Test - 0017")); | 535 | Assert.False(Verifier.FirewallRuleExists("WiXToolset401 Test - 0017")); |
534 | } | 536 | } |
537 | |||
538 | [RuntimeFact] | ||
539 | public void CanInstallAndUninstallFirewallRulesWithInterfaces() | ||
540 | { | ||
541 | var names = NetworkInterface.GetAllNetworkInterfaces() | ||
542 | .Take(3) | ||
543 | .Select(ni => ni.Name); | ||
544 | |||
545 | var props = names.Select((name, idx) => $"INTERFACE{idx + 1}=\"{name}\"") | ||
546 | .Concat(new[] { "INTERFACETYPE=Lan" }).ToArray(); | ||
547 | |||
548 | var product = this.CreatePackageInstaller("FirewallRulesInterfaces"); | ||
549 | product.InstallProduct(MSIExec.MSIExecReturnCode.SUCCESS, props); | ||
550 | |||
551 | var expected1 = new RuleDetails("WiXToolset500 Test - 0028") | ||
552 | { | ||
553 | Action = NET_FW_ACTION_.NET_FW_ACTION_ALLOW, | ||
554 | ApplicationName = this.TestContext.GetTestInstallFolder(false, Path.Combine("FirewallRulesInterfaces", "product.wxs")), | ||
555 | Description = "WiX Toolset firewall exception rule integration test - three interfaces", | ||
556 | Direction = NET_FW_RULE_DIRECTION_.NET_FW_RULE_DIR_IN, | ||
557 | EdgeTraversal = false, | ||
558 | EdgeTraversalOptions = 0, | ||
559 | Enabled = true, | ||
560 | InterfaceTypes = "Lan,Wireless,RemoteAccess", | ||
561 | Interfaces = names.ToArray<object>(), | ||
562 | LocalAddresses = "*", | ||
563 | Profiles = Int32.MaxValue, | ||
564 | Protocol = 256, | ||
565 | RemoteAddresses = "*", | ||
566 | SecureFlags = 0, | ||
567 | }; | ||
568 | |||
569 | Verifier.VerifyFirewallRule("WiXToolset500 Test - 0028", expected1); | ||
570 | |||
571 | var expected2 = new RuleDetails("WiXToolset500 Test - 0029") | ||
572 | { | ||
573 | Action = NET_FW_ACTION_.NET_FW_ACTION_ALLOW, | ||
574 | Description = "WiX Toolset firewall exception rule integration test - one interface", | ||
575 | Direction = NET_FW_RULE_DIRECTION_.NET_FW_RULE_DIR_IN, | ||
576 | EdgeTraversal = false, | ||
577 | EdgeTraversalOptions = 0, | ||
578 | Enabled = true, | ||
579 | InterfaceTypes = "Lan", | ||
580 | Interfaces = names.Take(1).ToArray<object>(), | ||
581 | LocalAddresses = "*", | ||
582 | LocalPorts = "29292", | ||
583 | Profiles = Int32.MaxValue, | ||
584 | Protocol = 6, | ||
585 | RemoteAddresses = "*", | ||
586 | RemotePorts = "*", | ||
587 | SecureFlags = 0, | ||
588 | }; | ||
589 | |||
590 | Verifier.VerifyFirewallRule("WiXToolset500 Test - 0029", expected2); | ||
591 | |||
592 | props = names.Take(1).Select((name, idx) => $"INTERFACE{idx + 2}=\"{name}\"").ToArray(); | ||
593 | |||
594 | product.RepairProduct(MSIExec.MSIExecReturnCode.SUCCESS, props); | ||
595 | |||
596 | var expected3 = new RuleDetails("WiXToolset500 Test - 0028") | ||
597 | { | ||
598 | Action = NET_FW_ACTION_.NET_FW_ACTION_ALLOW, | ||
599 | ApplicationName = this.TestContext.GetTestInstallFolder(false, Path.Combine("FirewallRulesInterfaces", "product.wxs")), | ||
600 | Description = "WiX Toolset firewall exception rule integration test - three interfaces", | ||
601 | Direction = NET_FW_RULE_DIRECTION_.NET_FW_RULE_DIR_IN, | ||
602 | EdgeTraversal = false, | ||
603 | EdgeTraversalOptions = 0, | ||
604 | Enabled = true, | ||
605 | InterfaceTypes = "Lan,Wireless,RemoteAccess", | ||
606 | Interfaces = names.Take(1).ToArray<object>(), | ||
607 | LocalAddresses = "*", | ||
608 | Profiles = Int32.MaxValue, | ||
609 | Protocol = 256, | ||
610 | RemoteAddresses = "*", | ||
611 | SecureFlags = 0, | ||
612 | }; | ||
613 | |||
614 | Verifier.VerifyFirewallRule("WiXToolset500 Test - 0028", expected3); | ||
615 | |||
616 | var expected4 = new RuleDetails("WiXToolset500 Test - 0029") | ||
617 | { | ||
618 | Action = NET_FW_ACTION_.NET_FW_ACTION_ALLOW, | ||
619 | Description = "WiX Toolset firewall exception rule integration test - one interface", | ||
620 | Direction = NET_FW_RULE_DIRECTION_.NET_FW_RULE_DIR_IN, | ||
621 | EdgeTraversal = false, | ||
622 | EdgeTraversalOptions = 0, | ||
623 | Enabled = true, | ||
624 | InterfaceTypes = "All", | ||
625 | LocalAddresses = "*", | ||
626 | LocalPorts = "29292", | ||
627 | Profiles = Int32.MaxValue, | ||
628 | Protocol = 6, | ||
629 | RemoteAddresses = "*", | ||
630 | RemotePorts = "*", | ||
631 | SecureFlags = 0, | ||
632 | }; | ||
633 | |||
634 | Verifier.VerifyFirewallRule("WiXToolset500 Test - 0029", expected4); | ||
635 | |||
636 | product.UninstallProduct(MSIExec.MSIExecReturnCode.SUCCESS); | ||
637 | |||
638 | // verify the firewall exceptions have been removed. | ||
639 | Assert.False(Verifier.FirewallRuleExists("WiXToolset500 Test - 0028")); | ||
640 | Assert.False(Verifier.FirewallRuleExists("WiXToolset500 Test - 0029")); | ||
641 | } | ||
642 | |||
643 | [RuntimeFact] | ||
644 | public void CanInstallAndUninstallFirewallRulesPackagedByDifferentModules() | ||
645 | { | ||
646 | var product = this.CreatePackageInstaller("CrossVersionMerge"); | ||
647 | product.InstallProduct(MSIExec.MSIExecReturnCode.SUCCESS); | ||
648 | |||
649 | // Validate new firewall exception details. | ||
650 | var expected1 = new RuleDetails("WiXToolset401 Test - 0018") | ||
651 | { | ||
652 | Action = NET_FW_ACTION_.NET_FW_ACTION_ALLOW, | ||
653 | ApplicationName = Path.Combine(Environment.GetEnvironmentVariable("ProgramFiles(x86)"), "MsiPackage", "file1.txt"), | ||
654 | Description = "WiX Toolset firewall exception rule integration test - module 401 MergeRedirectFolder - app", | ||
655 | Direction = NET_FW_RULE_DIRECTION_.NET_FW_RULE_DIR_IN, | ||
656 | EdgeTraversal = true, | ||
657 | EdgeTraversalOptions = 1, | ||
658 | Enabled = true, | ||
659 | InterfaceTypes = "All", | ||
660 | LocalAddresses = "*", | ||
661 | LocalPorts = "40101", | ||
662 | Profiles = Int32.MaxValue, | ||
663 | Protocol = 6, | ||
664 | RemoteAddresses = "*", | ||
665 | RemotePorts = "*", | ||
666 | SecureFlags = 0, | ||
667 | }; | ||
668 | |||
669 | Verifier.VerifyFirewallRule("WiXToolset401 Test - 0018", expected1); | ||
670 | |||
671 | var expected2 = new RuleDetails("WiXToolset401 Test - 0019") | ||
672 | { | ||
673 | Action = NET_FW_ACTION_.NET_FW_ACTION_ALLOW, | ||
674 | Description = "WiX Toolset firewall exception rule integration test - module 401 MergeRedirectFolder - port", | ||
675 | Direction = NET_FW_RULE_DIRECTION_.NET_FW_RULE_DIR_IN, | ||
676 | EdgeTraversal = false, | ||
677 | EdgeTraversalOptions = 0, | ||
678 | Enabled = true, | ||
679 | InterfaceTypes = "All", | ||
680 | LocalAddresses = "*", | ||
681 | LocalPorts = "40102", | ||
682 | Profiles = Int32.MaxValue, | ||
683 | Protocol = 6, | ||
684 | RemoteAddresses = "*", | ||
685 | RemotePorts = "*", | ||
686 | SecureFlags = 0, | ||
687 | }; | ||
688 | |||
689 | Verifier.VerifyFirewallRule("WiXToolset401 Test - 0019", expected2); | ||
690 | |||
691 | var expected3 = new RuleDetails("WiXToolset401 Test - 0020") | ||
692 | { | ||
693 | Action = NET_FW_ACTION_.NET_FW_ACTION_ALLOW, | ||
694 | ApplicationName = Path.Combine(Environment.GetEnvironmentVariable("ProgramFiles(x86)"), "MsiPackage", "file2.txt"), | ||
695 | Description = "WiX Toolset firewall exception rule integration test - module 401 NotTheMergeRedirectFolder - app", | ||
696 | Direction = NET_FW_RULE_DIRECTION_.NET_FW_RULE_DIR_IN, | ||
697 | EdgeTraversal = true, | ||
698 | EdgeTraversalOptions = 1, | ||
699 | Enabled = true, | ||
700 | InterfaceTypes = "All", | ||
701 | LocalAddresses = "*", | ||
702 | LocalPorts = "40103", | ||
703 | Profiles = Int32.MaxValue, | ||
704 | Protocol = 6, | ||
705 | RemoteAddresses = "*", | ||
706 | RemotePorts = "*", | ||
707 | SecureFlags = 0, | ||
708 | }; | ||
709 | |||
710 | Verifier.VerifyFirewallRule("WiXToolset401 Test - 0020", expected3); | ||
711 | |||
712 | var expected4 = new RuleDetails("WiXToolset401 Test - 0021") | ||
713 | { | ||
714 | Action = NET_FW_ACTION_.NET_FW_ACTION_ALLOW, | ||
715 | Description = "WiX Toolset firewall exception rule integration test - module 401 NotTheMergeRedirectFolder - port", | ||
716 | Direction = NET_FW_RULE_DIRECTION_.NET_FW_RULE_DIR_IN, | ||
717 | EdgeTraversal = false, | ||
718 | EdgeTraversalOptions = 0, | ||
719 | Enabled = true, | ||
720 | InterfaceTypes = "All", | ||
721 | LocalAddresses = "*", | ||
722 | LocalPorts = "40104", | ||
723 | Profiles = Int32.MaxValue, | ||
724 | Protocol = 6, | ||
725 | RemoteAddresses = "*", | ||
726 | RemotePorts = "*", | ||
727 | SecureFlags = 0, | ||
728 | }; | ||
729 | |||
730 | Verifier.VerifyFirewallRule("WiXToolset401 Test - 0021", expected4); | ||
731 | |||
732 | var expected5 = new RuleDetails("WiXToolset Test - 0022") | ||
733 | { | ||
734 | Action = NET_FW_ACTION_.NET_FW_ACTION_ALLOW, | ||
735 | ApplicationName = Path.Combine(Environment.GetEnvironmentVariable("ProgramFiles(x86)"), "MsiPackage", "file1.txt"), | ||
736 | Description = "WiX Toolset firewall exception rule integration test - module MergeRedirectFolder - app", | ||
737 | Direction = NET_FW_RULE_DIRECTION_.NET_FW_RULE_DIR_IN, | ||
738 | EdgeTraversal = false, | ||
739 | EdgeTraversalOptions = 0, | ||
740 | Enabled = true, | ||
741 | InterfaceTypes = "All", | ||
742 | LocalAddresses = "*", | ||
743 | LocalPorts = "50001", | ||
744 | Profiles = Int32.MaxValue, | ||
745 | Protocol = 6, | ||
746 | RemoteAddresses = "*", | ||
747 | RemotePorts = "*", | ||
748 | SecureFlags = 0, | ||
749 | }; | ||
750 | |||
751 | Verifier.VerifyFirewallRule("WiXToolset Test - 0022", expected5); | ||
752 | |||
753 | var expected6 = new RuleDetails("WiXToolset Test - 0023") | ||
754 | { | ||
755 | Action = NET_FW_ACTION_.NET_FW_ACTION_ALLOW, | ||
756 | Description = "WiX Toolset firewall exception rule integration test - module MergeRedirectFolder - port", | ||
757 | Direction = NET_FW_RULE_DIRECTION_.NET_FW_RULE_DIR_IN, | ||
758 | EdgeTraversal = false, | ||
759 | EdgeTraversalOptions = 0, | ||
760 | Enabled = true, | ||
761 | InterfaceTypes = "All", | ||
762 | LocalAddresses = "*", | ||
763 | LocalPorts = "50002", | ||
764 | Profiles = Int32.MaxValue, | ||
765 | Protocol = 6, | ||
766 | RemoteAddresses = "*", | ||
767 | RemotePorts = "*", | ||
768 | SecureFlags = 0, | ||
769 | }; | ||
770 | |||
771 | Verifier.VerifyFirewallRule("WiXToolset Test - 0023", expected6); | ||
772 | |||
773 | var expected7 = new RuleDetails("WiXToolset Test - 0024") | ||
774 | { | ||
775 | Action = NET_FW_ACTION_.NET_FW_ACTION_ALLOW, | ||
776 | ApplicationName = Path.Combine(Environment.GetEnvironmentVariable("ProgramFiles(x86)"), "MsiPackage", "file2.txt"), | ||
777 | Description = "WiX Toolset firewall exception rule integration test - module NotTheMergeRedirectFolder - app", | ||
778 | Direction = NET_FW_RULE_DIRECTION_.NET_FW_RULE_DIR_IN, | ||
779 | EdgeTraversal = false, | ||
780 | EdgeTraversalOptions = 0, | ||
781 | Enabled = true, | ||
782 | InterfaceTypes = "All", | ||
783 | LocalAddresses = "*", | ||
784 | LocalPorts = "50003", | ||
785 | Profiles = Int32.MaxValue, | ||
786 | Protocol = 6, | ||
787 | RemoteAddresses = "*", | ||
788 | RemotePorts = "*", | ||
789 | SecureFlags = 0, | ||
790 | }; | ||
791 | |||
792 | Verifier.VerifyFirewallRule("WiXToolset Test - 0024", expected7); | ||
793 | |||
794 | var expected8 = new RuleDetails("WiXToolset Test - 0025") | ||
795 | { | ||
796 | Action = NET_FW_ACTION_.NET_FW_ACTION_ALLOW, | ||
797 | Description = "WiX Toolset firewall exception rule integration test - module NotTheMergeRedirectFolder - port", | ||
798 | Direction = NET_FW_RULE_DIRECTION_.NET_FW_RULE_DIR_IN, | ||
799 | EdgeTraversal = false, | ||
800 | EdgeTraversalOptions = 0, | ||
801 | Enabled = true, | ||
802 | InterfaceTypes = "All", | ||
803 | LocalAddresses = "*", | ||
804 | LocalPorts = "50004", | ||
805 | Profiles = Int32.MaxValue, | ||
806 | Protocol = 6, | ||
807 | RemoteAddresses = "*", | ||
808 | RemotePorts = "*", | ||
809 | SecureFlags = 0, | ||
810 | }; | ||
811 | |||
812 | Verifier.VerifyFirewallRule("WiXToolset Test - 0025", expected8); | ||
813 | |||
814 | var expected9 = new RuleDetails("WiXToolset Test - 0026") | ||
815 | { | ||
816 | Action = NET_FW_ACTION_.NET_FW_ACTION_ALLOW, | ||
817 | ApplicationName = Path.Combine(Environment.GetEnvironmentVariable("ProgramFiles(x86)"), "MsiPackage", "package.wxs"), | ||
818 | Description = "WiX Toolset firewall exception rule integration test - package app", | ||
819 | Direction = NET_FW_RULE_DIRECTION_.NET_FW_RULE_DIR_IN, | ||
820 | EdgeTraversal = false, | ||
821 | EdgeTraversalOptions = 0, | ||
822 | Enabled = true, | ||
823 | InterfaceTypes = "All", | ||
824 | LocalAddresses = "*", | ||
825 | LocalPorts = "20001", | ||
826 | Profiles = Int32.MaxValue, | ||
827 | Protocol = 6, | ||
828 | RemoteAddresses = "*", | ||
829 | RemotePorts = "*", | ||
830 | SecureFlags = 0, | ||
831 | }; | ||
832 | |||
833 | Verifier.VerifyFirewallRule("WiXToolset Test - 0026", expected9); | ||
834 | |||
835 | var expected10 = new RuleDetails("WiXToolset Test - 0027") | ||
836 | { | ||
837 | Action = NET_FW_ACTION_.NET_FW_ACTION_ALLOW, | ||
838 | Description = "WiX Toolset firewall exception rule integration test - package port", | ||
839 | Direction = NET_FW_RULE_DIRECTION_.NET_FW_RULE_DIR_IN, | ||
840 | EdgeTraversal = false, | ||
841 | EdgeTraversalOptions = 0, | ||
842 | Enabled = true, | ||
843 | InterfaceTypes = "All", | ||
844 | LocalAddresses = "*", | ||
845 | LocalPorts = "20002", | ||
846 | Profiles = Int32.MaxValue, | ||
847 | Protocol = 6, | ||
848 | RemoteAddresses = "*", | ||
849 | RemotePorts = "*", | ||
850 | SecureFlags = 0, | ||
851 | }; | ||
852 | |||
853 | Verifier.VerifyFirewallRule("WiXToolset Test - 0027", expected10); | ||
854 | |||
855 | product.UninstallProduct(MSIExec.MSIExecReturnCode.SUCCESS); | ||
856 | |||
857 | // verify the firewall exceptions have been removed. | ||
858 | Assert.False(Verifier.FirewallRuleExists("WiXToolset401 Test - 0018")); | ||
859 | Assert.False(Verifier.FirewallRuleExists("WiXToolset401 Test - 0019")); | ||
860 | Assert.False(Verifier.FirewallRuleExists("WiXToolset401 Test - 0020")); | ||
861 | Assert.False(Verifier.FirewallRuleExists("WiXToolset401 Test - 0021")); | ||
862 | Assert.False(Verifier.FirewallRuleExists("WiXToolset Test - 0022")); | ||
863 | Assert.False(Verifier.FirewallRuleExists("WiXToolset Test - 0023")); | ||
864 | Assert.False(Verifier.FirewallRuleExists("WiXToolset Test - 0024")); | ||
865 | Assert.False(Verifier.FirewallRuleExists("WiXToolset Test - 0025")); | ||
866 | Assert.False(Verifier.FirewallRuleExists("WiXToolset Test - 0026")); | ||
867 | Assert.False(Verifier.FirewallRuleExists("WiXToolset Test - 0027")); | ||
868 | } | ||
869 | |||
870 | [RuntimeFact] | ||
871 | public void ServiceNameIsPassedIntoNestedRules() | ||
872 | { | ||
873 | var product = this.CreatePackageInstaller("NestedService"); | ||
874 | product.InstallProduct(MSIExec.MSIExecReturnCode.SUCCESS); | ||
875 | |||
876 | var expected1 = new RuleDetails("WiXToolset Test - 0031") | ||
877 | { | ||
878 | Action = NET_FW_ACTION_.NET_FW_ACTION_ALLOW, | ||
879 | Protocol = 256, | ||
880 | LocalAddresses = "*", | ||
881 | RemoteAddresses = "*", | ||
882 | Direction = NET_FW_RULE_DIRECTION_.NET_FW_RULE_DIR_IN, | ||
883 | Description = "WiX Toolset firewall exception rule integration test - service property", | ||
884 | EdgeTraversal = false, | ||
885 | EdgeTraversalOptions = 0, | ||
886 | Enabled = true, | ||
887 | InterfaceTypes = "All", | ||
888 | Profiles = Int32.MaxValue, | ||
889 | SecureFlags = 0, | ||
890 | ServiceName = "Spooler", | ||
891 | }; | ||
892 | |||
893 | Verifier.VerifyFirewallRule("WiXToolset Test - 0031", expected1); | ||
894 | |||
895 | var expected2 = new RuleDetails("WiXToolset Test - 0032") | ||
896 | { | ||
897 | Action = NET_FW_ACTION_.NET_FW_ACTION_ALLOW, | ||
898 | Protocol = 256, | ||
899 | LocalAddresses = "*", | ||
900 | RemoteAddresses = "*", | ||
901 | Direction = NET_FW_RULE_DIRECTION_.NET_FW_RULE_DIR_IN, | ||
902 | Description = "WiX Toolset firewall exception rule integration test - ServiceConfig", | ||
903 | EdgeTraversal = false, | ||
904 | EdgeTraversalOptions = 0, | ||
905 | Enabled = true, | ||
906 | InterfaceTypes = "All", | ||
907 | Profiles = Int32.MaxValue, | ||
908 | SecureFlags = 0, | ||
909 | ServiceName = "Spooler", | ||
910 | }; | ||
911 | |||
912 | Verifier.VerifyFirewallRule("WiXToolset Test - 0032", expected2); | ||
913 | |||
914 | var expected3 = new RuleDetails("WiXToolset Test - 0033") | ||
915 | { | ||
916 | Action = NET_FW_ACTION_.NET_FW_ACTION_ALLOW, | ||
917 | Protocol = 256, | ||
918 | LocalAddresses = "*", | ||
919 | RemoteAddresses = "*", | ||
920 | Direction = NET_FW_RULE_DIRECTION_.NET_FW_RULE_DIR_IN, | ||
921 | Description = "WiX Toolset firewall exception rule integration test - ServiceInstall", | ||
922 | EdgeTraversal = false, | ||
923 | EdgeTraversalOptions = 0, | ||
924 | Enabled = true, | ||
925 | InterfaceTypes = "All", | ||
926 | Profiles = Int32.MaxValue, | ||
927 | SecureFlags = 0, | ||
928 | ServiceName = "WixTestFirewallSrv", | ||
929 | }; | ||
930 | |||
931 | Verifier.VerifyFirewallRule("WiXToolset Test - 0033", expected3); | ||
932 | |||
933 | product.UninstallProduct(MSIExec.MSIExecReturnCode.SUCCESS); | ||
934 | |||
935 | // verify the firewall exceptions have been removed. | ||
936 | Assert.False(Verifier.FirewallRuleExists("WiXToolset Test - 0031")); | ||
937 | Assert.False(Verifier.FirewallRuleExists("WiXToolset Test - 0032")); | ||
938 | Assert.False(Verifier.FirewallRuleExists("WiXToolset Test - 0033")); | ||
939 | } | ||
940 | |||
941 | [RuntimeFact] | ||
942 | public void SucceedWhenEnableOnlyFlagIsSet() | ||
943 | { | ||
944 | var product = this.CreatePackageInstaller("FirewallRulesProperties"); | ||
945 | product.InstallProduct(MSIExec.MSIExecReturnCode.SUCCESS); | ||
946 | |||
947 | var expected1 = new RuleDetails("WiXToolset Test - 0028") | ||
948 | { | ||
949 | Action = NET_FW_ACTION_.NET_FW_ACTION_ALLOW, | ||
950 | Protocol = 256, | ||
951 | LocalAddresses = "*", | ||
952 | RemoteAddresses = "*", | ||
953 | Direction = NET_FW_RULE_DIRECTION_.NET_FW_RULE_DIR_IN, | ||
954 | EdgeTraversal = false, | ||
955 | EdgeTraversalOptions = 0, | ||
956 | Enabled = true, | ||
957 | InterfaceTypes = "All", | ||
958 | Profiles = Int32.MaxValue, | ||
959 | SecureFlags = 0, | ||
960 | }; | ||
961 | |||
962 | Verifier.VerifyFirewallRule("WiXToolset Test - 0028", expected1); | ||
963 | |||
964 | Verifier.DisableFirewallRule("WiXToolset Test - 0028"); | ||
965 | |||
966 | var args = new[] | ||
967 | { | ||
968 | "LOCALPORT=3456", | ||
969 | "PROTOCOL=6", | ||
970 | "PROGRAM=ShouldBeUnchanged", | ||
971 | "PROFILE=2", | ||
972 | "DESCRIPTION=ShouldBeUnchanged", | ||
973 | "REMOTESCOPE=ShouldBeUnchanged", | ||
974 | "EDGETRAVERSAL=3", | ||
975 | "ENABLED=1", | ||
976 | "GROUPING=ShouldBeUnchanged", | ||
977 | "ICMPTYPES=ShouldBeUnchanged", | ||
978 | "INTERFACE=ShouldBeUnchanged", | ||
979 | "INTERFACETYPE=ShouldBeUnchanged", | ||
980 | "LOCALSCOPE=ShouldBeUnchanged", | ||
981 | "REMOTEPORT=60000", | ||
982 | "SERVICE=ShouldBeUnchanged", | ||
983 | "PACKAGEID=ShouldBeUnchanged", | ||
984 | "LOCALUSERS=ShouldBeUnchanged", | ||
985 | "LOCALOWNER=ShouldBeUnchanged", | ||
986 | "REMOTEMACHINES=ShouldBeUnchanged", | ||
987 | "REMOTEUSERS=ShouldBeUnchanged", | ||
988 | "SECUREFLAGS=15", | ||
989 | "REMOTEADDRESS=ShouldBeUnchanged", | ||
990 | "LOCALADDRESS=ShouldBeUnchanged", | ||
991 | }; | ||
992 | |||
993 | product.RepairProduct(MSIExec.MSIExecReturnCode.SUCCESS, args); | ||
994 | |||
995 | var expected2 = new RuleDetails("WiXToolset Test - 0028") | ||
996 | { | ||
997 | Action = NET_FW_ACTION_.NET_FW_ACTION_ALLOW, | ||
998 | Protocol = 256, | ||
999 | LocalAddresses = "*", | ||
1000 | RemoteAddresses = "*", | ||
1001 | Direction = NET_FW_RULE_DIRECTION_.NET_FW_RULE_DIR_IN, | ||
1002 | EdgeTraversal = false, | ||
1003 | EdgeTraversalOptions = 0, | ||
1004 | Enabled = true, | ||
1005 | InterfaceTypes = "All", | ||
1006 | Profiles = Int32.MaxValue, | ||
1007 | SecureFlags = 0, | ||
1008 | }; | ||
1009 | |||
1010 | Verifier.VerifyFirewallRule("WiXToolset Test - 0028", expected2); | ||
1011 | |||
1012 | product.UninstallProduct(MSIExec.MSIExecReturnCode.SUCCESS); | ||
1013 | |||
1014 | // verify the firewall exceptions have been removed. | ||
1015 | Assert.False(Verifier.FirewallRuleExists("WiXToolset Test - 0028")); | ||
1016 | } | ||
1017 | |||
1018 | [RuntimeFact] | ||
1019 | public void SucceedWhenDoNothingFlagIsSet() | ||
1020 | { | ||
1021 | var product = this.CreatePackageInstaller("FirewallRulesProperties"); | ||
1022 | product.InstallProduct(MSIExec.MSIExecReturnCode.SUCCESS); | ||
1023 | |||
1024 | var expected1 = new RuleDetails("WiXToolset Test - 0029") | ||
1025 | { | ||
1026 | Action = NET_FW_ACTION_.NET_FW_ACTION_ALLOW, | ||
1027 | Protocol = 256, | ||
1028 | LocalAddresses = "*", | ||
1029 | RemoteAddresses = "*", | ||
1030 | Direction = NET_FW_RULE_DIRECTION_.NET_FW_RULE_DIR_IN, | ||
1031 | EdgeTraversal = false, | ||
1032 | EdgeTraversalOptions = 0, | ||
1033 | Enabled = true, | ||
1034 | InterfaceTypes = "All", | ||
1035 | Profiles = Int32.MaxValue, | ||
1036 | SecureFlags = 0, | ||
1037 | }; | ||
1038 | |||
1039 | Verifier.VerifyFirewallRule("WiXToolset Test - 0029", expected1); | ||
1040 | Verifier.DisableFirewallRule("WiXToolset Test - 0029"); | ||
1041 | |||
1042 | var args = new[] | ||
1043 | { | ||
1044 | "INTERFACE=ShouldBeUnchanged", | ||
1045 | "INTERFACETYPE=ShouldBeUnchanged", | ||
1046 | "REMOTEADDRESS=ShouldBeUnchanged", | ||
1047 | "LOCALADDRESS=ShouldBeUnchanged", | ||
1048 | }; | ||
1049 | |||
1050 | product.RepairProduct(MSIExec.MSIExecReturnCode.SUCCESS, args); | ||
1051 | |||
1052 | var expected2 = new RuleDetails("WiXToolset Test - 0029") | ||
1053 | { | ||
1054 | Action = NET_FW_ACTION_.NET_FW_ACTION_ALLOW, | ||
1055 | Protocol = 256, | ||
1056 | LocalAddresses = "*", | ||
1057 | RemoteAddresses = "*", | ||
1058 | Direction = NET_FW_RULE_DIRECTION_.NET_FW_RULE_DIR_IN, | ||
1059 | EdgeTraversal = false, | ||
1060 | EdgeTraversalOptions = 0, | ||
1061 | Enabled = false, // remains as disabled after the repair | ||
1062 | InterfaceTypes = "All", | ||
1063 | Profiles = Int32.MaxValue, | ||
1064 | SecureFlags = 0, | ||
1065 | }; | ||
1066 | |||
1067 | Verifier.VerifyFirewallRule("WiXToolset Test - 0029", expected2); | ||
1068 | |||
1069 | product.UninstallProduct(MSIExec.MSIExecReturnCode.SUCCESS); | ||
1070 | |||
1071 | // verify the firewall exceptions have been removed. | ||
1072 | Assert.False(Verifier.FirewallRuleExists("WiXToolset Test - 0029")); | ||
1073 | } | ||
1074 | |||
1075 | [RuntimeFact] | ||
1076 | public void SucceedWhenNoFlagIsSet() | ||
1077 | { | ||
1078 | var product = this.CreatePackageInstaller("FirewallRulesProperties"); | ||
1079 | product.InstallProduct(MSIExec.MSIExecReturnCode.SUCCESS); | ||
1080 | |||
1081 | var expected1 = new RuleDetails("WiXToolset Test - 0030") | ||
1082 | { | ||
1083 | Action = NET_FW_ACTION_.NET_FW_ACTION_ALLOW, | ||
1084 | Protocol = 256, | ||
1085 | LocalAddresses = "*", | ||
1086 | RemoteAddresses = "*", | ||
1087 | Direction = NET_FW_RULE_DIRECTION_.NET_FW_RULE_DIR_IN, | ||
1088 | EdgeTraversal = false, | ||
1089 | EdgeTraversalOptions = 0, | ||
1090 | Enabled = true, | ||
1091 | InterfaceTypes = "All", | ||
1092 | Profiles = Int32.MaxValue, | ||
1093 | SecureFlags = 0, | ||
1094 | }; | ||
1095 | |||
1096 | Verifier.VerifyFirewallRule("WiXToolset Test - 0030", expected1); | ||
1097 | Verifier.DisableFirewallRule("WiXToolset Test - 0030"); | ||
1098 | |||
1099 | var names = NetworkInterface.GetAllNetworkInterfaces() | ||
1100 | .Take(2) | ||
1101 | .Select(ni => ni.Name); | ||
1102 | |||
1103 | var args = names.Select((name, idx) => $"INTERFACE{idx + 1}=\"{name}\"") | ||
1104 | .Concat(new[] | ||
1105 | { | ||
1106 | "INTERFACETYPE1=Wireless", | ||
1107 | "INTERFACETYPE2=Lan", | ||
1108 | "REMOTEADDRESS1=DHCP", | ||
1109 | "REMOTEADDRESS2=LocalSubnet", | ||
1110 | "LOCALADDRESS1=127.0.0.1", | ||
1111 | "LOCALADDRESS2=192.168.1.1", | ||
1112 | }) | ||
1113 | .ToArray(); | ||
1114 | |||
1115 | product.RepairProduct(MSIExec.MSIExecReturnCode.SUCCESS, args); | ||
1116 | |||
1117 | var expected2 = new RuleDetails("WiXToolset Test - 0030") | ||
1118 | { | ||
1119 | Action = NET_FW_ACTION_.NET_FW_ACTION_ALLOW, | ||
1120 | Protocol = 256, | ||
1121 | LocalAddresses = "127.0.0.1/255.255.255.255,192.168.1.1/255.255.255.255", | ||
1122 | RemoteAddresses = "LocalSubnet,DHCP", | ||
1123 | Direction = NET_FW_RULE_DIRECTION_.NET_FW_RULE_DIR_IN, | ||
1124 | Description = "", | ||
1125 | EdgeTraversal = false, | ||
1126 | EdgeTraversalOptions = 0, | ||
1127 | Enabled = true, | ||
1128 | Interfaces = names.ToArray(), | ||
1129 | InterfaceTypes = "Lan,Wireless", | ||
1130 | Profiles = Int32.MaxValue, | ||
1131 | SecureFlags = 0, | ||
1132 | }; | ||
1133 | |||
1134 | Verifier.VerifyFirewallRule("WiXToolset Test - 0030", expected2); | ||
1135 | |||
1136 | product.UninstallProduct(MSIExec.MSIExecReturnCode.SUCCESS); | ||
1137 | |||
1138 | // verify the firewall exceptions have been removed. | ||
1139 | Assert.False(Verifier.FirewallRuleExists("WiXToolset Test - 0030")); | ||
1140 | } | ||
535 | } | 1141 | } |
536 | } | 1142 | } |
diff --git a/src/test/msi/WixToolsetTest.MsiE2E/WixToolsetTest.MsiE2E.csproj b/src/test/msi/WixToolsetTest.MsiE2E/WixToolsetTest.MsiE2E.csproj index a5536de4..7d4695d3 100644 --- a/src/test/msi/WixToolsetTest.MsiE2E/WixToolsetTest.MsiE2E.csproj +++ b/src/test/msi/WixToolsetTest.MsiE2E/WixToolsetTest.MsiE2E.csproj | |||
@@ -29,6 +29,7 @@ | |||
29 | 29 | ||
30 | <ItemGroup> | 30 | <ItemGroup> |
31 | <PackageReference Include="Microsoft.Win32.Registry" /> | 31 | <PackageReference Include="Microsoft.Win32.Registry" /> |
32 | <PackageReference Include="System.Net.NetworkInformation" /> | ||
32 | <PackageReference Include="System.Security.Principal.Windows" /> | 33 | <PackageReference Include="System.Security.Principal.Windows" /> |
33 | <PackageReference Include="WixInternal.TestSupport" /> | 34 | <PackageReference Include="WixInternal.TestSupport" /> |
34 | <PackageReference Include="WixToolset.Data" /> | 35 | <PackageReference Include="WixToolset.Data" /> |