@joebigelow / wix / commits / 97438135

Port the slipstream tests from the old repo.

Sean Hall committed Feb 17, 2021 at 16:07 UTC 974381355441c3d95d62af85bdd05f3c0e368eb5
30 files changed +736
src/TestData/SlipstreamTests/BundleA/BundleA.wixproj new
+19
@@ -0,0 +1,19 @@
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>Bundle</OutputType>
5 + <UpgradeCode>{62C28DAF-A13E-4F55-ACA1-FB843630789C}</UpgradeCode>
6 + </PropertyGroup>
7 + <ItemGroup>
8 + <Compile Include="..\..\Templates\Bundle.wxs" Link="Bundle.wxs" />
9 + </ItemGroup>
10 + <ItemGroup>
11 + <ProjectReference Include="..\PackageAv1\PackageAv1.wixproj" />
12 + <ProjectReference Include="..\PatchA\PatchA.wixproj" />
13 + <ProjectReference Include="..\..\TestBA\TestBAWixlib\testbawixlib.wixproj" />
14 + </ItemGroup>
15 + <ItemGroup>
16 + <PackageReference Include="WixToolset.Bal.wixext" Version="4.0.83" />
17 + <PackageReference Include="WixToolset.NetFx.wixext" Version="4.0.61" />
18 + </ItemGroup>
19 +</Project>
\ No newline at end of file
src/TestData/SlipstreamTests/BundleA/BundleA.wxs new
+12
@@ -0,0 +1,12 @@
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 +<Wix xmlns="http://wixtoolset.org/schemas/v4/wxs">
4 + <Fragment>
5 + <PackageGroup Id="BundlePackages">
6 + <MsiPackage Id="PackageA" SourceFile="$(var.PackageAv1.TargetPath)" Compressed="no">
7 + <SlipstreamMsp Id="PatchA" />
8 + </MsiPackage>
9 + <MspPackage Id="PatchA" SourceFile="$(var.PatchA.TargetPath)" Compressed="no" />
10 + </PackageGroup>
11 + </Fragment>
12 +</Wix>
src/TestData/SlipstreamTests/BundleAReverse/BundleAReverse.wixproj new
+19
@@ -0,0 +1,19 @@
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>Bundle</OutputType>
5 + <UpgradeCode>{F6BB4AE2-F7D4-4768-8314-3AF694C400E9}</UpgradeCode>
6 + </PropertyGroup>
7 + <ItemGroup>
8 + <Compile Include="..\..\Templates\Bundle.wxs" Link="Bundle.wxs" />
9 + </ItemGroup>
10 + <ItemGroup>
11 + <ProjectReference Include="..\PackageAv1\PackageAv1.wixproj" />
12 + <ProjectReference Include="..\PatchA\PatchA.wixproj" />
13 + <ProjectReference Include="..\..\TestBA\TestBAWixlib\testbawixlib.wixproj" />
14 + </ItemGroup>
15 + <ItemGroup>
16 + <PackageReference Include="WixToolset.Bal.wixext" Version="4.0.83" />
17 + <PackageReference Include="WixToolset.NetFx.wixext" Version="4.0.61" />
18 + </ItemGroup>
19 +</Project>
\ No newline at end of file
src/TestData/SlipstreamTests/BundleAReverse/BundleAReverse.wxs new
+12
@@ -0,0 +1,12 @@
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 +<Wix xmlns="http://wixtoolset.org/schemas/v4/wxs" xmlns:swid="http://wixtoolset.org/schemas/v4/wxs/tag">
4 + <Fragment>
5 + <PackageGroup Id="BundlePackages">
6 + <MspPackage Id="PatchA" SourceFile="$(var.PatchA.TargetPath)" />
7 + <MsiPackage Id="PackageA" SourceFile="$(var.PackageAv1.TargetPath)">
8 + <SlipstreamMsp Id="PatchA" />
9 + </MsiPackage>
10 + </PackageGroup>
11 + </Fragment>
12 +</Wix>
src/TestData/SlipstreamTests/BundleB/BundleB.wixproj new
+20
@@ -0,0 +1,20 @@
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>Bundle</OutputType>
5 + <UpgradeCode>{604878DE-F0EB-4FE1-B11E-DC19F07F82F5}</UpgradeCode>
6 + </PropertyGroup>
7 + <ItemGroup>
8 + <Compile Include="..\..\Templates\Bundle.wxs" Link="Bundle.wxs" />
9 + </ItemGroup>
10 + <ItemGroup>
11 + <ProjectReference Include="..\PackageAv1\PackageAv1.wixproj" />
12 + <ProjectReference Include="..\PackageBv1\PackageBv1.wixproj" />
13 + <ProjectReference Include="..\PatchA\PatchA.wixproj" />
14 + <ProjectReference Include="..\..\TestBA\TestBAWixlib\testbawixlib.wixproj" />
15 + </ItemGroup>
16 + <ItemGroup>
17 + <PackageReference Include="WixToolset.Bal.wixext" Version="4.0.83" />
18 + <PackageReference Include="WixToolset.NetFx.wixext" Version="4.0.61" />
19 + </ItemGroup>
20 +</Project>
\ No newline at end of file
src/TestData/SlipstreamTests/BundleB/BundleB.wxs new
+13
@@ -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 +
3 +<Wix xmlns="http://wixtoolset.org/schemas/v4/wxs">
4 + <Fragment>
5 + <PackageGroup Id="BundlePackages">
6 + <MsiPackage Id="PackageA" SourceFile="$(var.PackageAv1.TargetPath)">
7 + <SlipstreamMsp Id="PatchA" />
8 + </MsiPackage>
9 + <MspPackage Id="PatchA" SourceFile="$(var.PatchA.TargetPath)" />
10 + <MsiPackage Id="PackageB" SourceFile="$(var.PackageBv1.TargetPath)" />
11 + </PackageGroup>
12 + </Fragment>
13 +</Wix>
src/TestData/SlipstreamTests/BundleC/BundleC.wixproj new
+21
@@ -0,0 +1,21 @@
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>Bundle</OutputType>
5 + <UpgradeCode>{16B551B5-6EBE-417F-8CB2-50936F079301}</UpgradeCode>
6 + </PropertyGroup>
7 + <ItemGroup>
8 + <Compile Include="..\..\Templates\Bundle.wxs" Link="Bundle.wxs" />
9 + </ItemGroup>
10 + <ItemGroup>
11 + <ProjectReference Include="..\PackageAv1\PackageAv1.wixproj" />
12 + <ProjectReference Include="..\PackageBv1\PackageBv1.wixproj" />
13 + <ProjectReference Include="..\PatchAB\PatchAB.wixproj" />
14 + <ProjectReference Include="..\PatchAB2\PatchAB2.wixproj" />
15 + <ProjectReference Include="..\..\TestBA\TestBAWixlib\testbawixlib.wixproj" />
16 + </ItemGroup>
17 + <ItemGroup>
18 + <PackageReference Include="WixToolset.Bal.wixext" Version="4.0.83" />
19 + <PackageReference Include="WixToolset.NetFx.wixext" Version="4.0.61" />
20 + </ItemGroup>
21 +</Project>
\ No newline at end of file
src/TestData/SlipstreamTests/BundleC/BundleC.wxs new
+14
@@ -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 +
3 +<Wix xmlns="http://wixtoolset.org/schemas/v4/wxs">
4 + <Fragment>
5 + <PackageGroup Id="BundlePackages">
6 + <MsiPackage Id="PackageA" SourceFile="$(var.PackageAv1.TargetPath)">
7 + <SlipstreamMsp Id="PatchAB" />
8 + </MsiPackage>
9 + <MsiPackage Id="PackageB" SourceFile="$(var.PackageBv1.TargetPath)" />
10 + <MspPackage Id="PatchAB" SourceFile="$(var.PatchAB.TargetPath)" />
11 + <MspPackage Id="PatchAB2" SourceFile="$(var.PatchAB2.TargetPath)" PerMachine="default" Slipstream="yes" />
12 + </PackageGroup>
13 + </Fragment>
14 +</Wix>
src/TestData/SlipstreamTests/BundleOnlyA/BundleOnlyA.wixproj new
+18
@@ -0,0 +1,18 @@
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>Bundle</OutputType>
5 + <UpgradeCode>{80A9925A-2EC1-4BD5-BB69-2553BF7FCED9}</UpgradeCode>
6 + </PropertyGroup>
7 + <ItemGroup>
8 + <Compile Include="..\..\Templates\Bundle.wxs" Link="Bundle.wxs" />
9 + </ItemGroup>
10 + <ItemGroup>
11 + <ProjectReference Include="..\PackageAv1\PackageAv1.wixproj" />
12 + <ProjectReference Include="..\..\TestBA\TestBAWixlib\testbawixlib.wixproj" />
13 + </ItemGroup>
14 + <ItemGroup>
15 + <PackageReference Include="WixToolset.Bal.wixext" Version="4.0.83" />
16 + <PackageReference Include="WixToolset.NetFx.wixext" Version="4.0.61" />
17 + </ItemGroup>
18 +</Project>
\ No newline at end of file
src/TestData/SlipstreamTests/BundleOnlyA/BundleOnlyA.wxs new
+9
@@ -0,0 +1,9 @@
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 +<Wix xmlns="http://wixtoolset.org/schemas/v4/wxs" xmlns:swid="http://wixtoolset.org/schemas/v4/wxs/tag">
4 + <Fragment>
5 + <PackageGroup Id="BundlePackages">
6 + <MsiPackage Id="PackageA" SourceFile="$(var.PackageAv1.TargetPath)" />
7 + </PackageGroup>
8 + </Fragment>
9 +</Wix>
src/TestData/SlipstreamTests/BundleOnlyPatchA/BundleOnlyPatchA.wixproj new
+18
@@ -0,0 +1,18 @@
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>Bundle</OutputType>
5 + <UpgradeCode>{9B026C22-924C-4CEA-8726-FD07C1706A9F}</UpgradeCode>
6 + </PropertyGroup>
7 + <ItemGroup>
8 + <Compile Include="..\..\Templates\Bundle.wxs" Link="Bundle.wxs" />
9 + </ItemGroup>
10 + <ItemGroup>
11 + <ProjectReference Include="..\PatchA\PatchA.wixproj" />
12 + <ProjectReference Include="..\..\TestBA\TestBAWixlib\testbawixlib.wixproj" />
13 + </ItemGroup>
14 + <ItemGroup>
15 + <PackageReference Include="WixToolset.Bal.wixext" Version="4.0.83" />
16 + <PackageReference Include="WixToolset.NetFx.wixext" Version="4.0.61" />
17 + </ItemGroup>
18 +</Project>
\ No newline at end of file
src/TestData/SlipstreamTests/BundleOnlyPatchA/BundleOnlyPatchA.wxs new
+9
@@ -0,0 +1,9 @@
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 +<Wix xmlns="http://wixtoolset.org/schemas/v4/wxs" xmlns:swid="http://wixtoolset.org/schemas/v4/wxs/tag">
4 + <Fragment>
5 + <PackageGroup Id="BundlePackages">
6 + <MspPackage Id="PatchA" SourceFile="$(var.PatchA.TargetPath)" />
7 + </PackageGroup>
8 + </Fragment>
9 +</Wix>
src/TestData/SlipstreamTests/PackageAv0_9_0/PackageAv0_9_0.wixproj new
+10
@@ -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 + <Import Project="..\PackageAv1\PackageA.props" />
4 + <PropertyGroup>
5 + <Version>0.9.0.0</Version>
6 + </PropertyGroup>
7 + <ItemGroup>
8 + <Compile Include="..\PackageAv1\ProductComponents.wxs" Link="ProductComponents.wxs" />
9 + </ItemGroup>
10 +</Project>
\ No newline at end of file
src/TestData/SlipstreamTests/PackageAv1/PackageA.props new
+11
@@ -0,0 +1,11 @@
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>
3 + <PropertyGroup>
4 + <PackageName>PackageA</PackageName>
5 + <ProductComponentsRef>true</ProductComponentsRef>
6 + <UpgradeCode>{DB87BB66-FE5D-4293-81AC-EE313D3F864B}</UpgradeCode>
7 + </PropertyGroup>
8 + <ItemGroup>
9 + <Compile Include="..\..\Templates\Package.wxs" Link="Package.wxs" />
10 + </ItemGroup>
11 +</Project>
\ No newline at end of file
src/TestData/SlipstreamTests/PackageAv1/PackageAv1.props new
+7
@@ -0,0 +1,7 @@
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>
3 + <Import Project="PackageA.props" />
4 + <PropertyGroup>
5 + <ProductCode>{5FF7F534-3FFC-41E0-80CD-E6361E5E7B7B}</ProductCode>
6 + </PropertyGroup>
7 +</Project>
\ No newline at end of file
src/TestData/SlipstreamTests/PackageAv1/PackageAv1.wixproj new
+4
@@ -0,0 +1,4 @@
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 + <Import Project="PackageAv1.props" />
4 +</Project>
\ No newline at end of file
src/TestData/SlipstreamTests/PackageAv1/ProductComponents.wxs new
+15
@@ -0,0 +1,15 @@
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 +<Wix xmlns="http://wixtoolset.org/schemas/v4/wxs">
4 + <Fragment>
5 + <ComponentGroup Id="ProductComponents">
6 + <ComponentRef Id="RegistryComponent2" />
7 + </ComponentGroup>
8 + </Fragment>
9 +
10 + <Fragment>
11 + <Component Id="RegistryComponent2" Directory="INSTALLFOLDER">
12 + <RegistryValue Root="HKLM" Key="Software\WiX\Tests\$(var.TestGroupName)" Name="$(var.PackageName)2" Value="!(bind.Property.TestVersion)" Type="string" />
13 + </Component>
14 + </Fragment>
15 +</Wix>
src/TestData/SlipstreamTests/PackageAv1_0_1/PackageAv1_0_1.wixproj new
+10
@@ -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 + <Import Project="..\PackageAv1\PackageAv1.props" />
4 + <PropertyGroup>
5 + <Version>1.0.1.0</Version>
6 + </PropertyGroup>
7 + <ItemGroup>
8 + <Compile Include="..\PackageAv1\ProductComponents.wxs" Link="ProductComponents.wxs" />
9 + </ItemGroup>
10 +</Project>
\ No newline at end of file
src/TestData/SlipstreamTests/PackageBv1/PackageB.props new
+12
@@ -0,0 +1,12 @@
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>
3 + <PropertyGroup>
4 + <PackageName>PackageB</PackageName>
5 + <ProductComponentsRef>true</ProductComponentsRef>
6 + <ProductCode>{83B1ADF3-A8DD-41D3-9114-57703DA17754}</ProductCode>
7 + <UpgradeCode>{552F8D3B-99E1-4772-8E8C-CC47E5ED5F71}</UpgradeCode>
8 + </PropertyGroup>
9 + <ItemGroup>
10 + <Compile Include="..\..\Templates\Package.wxs" Link="Package.wxs" />
11 + </ItemGroup>
12 +</Project>
\ No newline at end of file
src/TestData/SlipstreamTests/PackageBv1/PackageBv1.wixproj new
+4
@@ -0,0 +1,4 @@
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 + <Import Project="PackageB.props" />
4 +</Project>
\ No newline at end of file
src/TestData/SlipstreamTests/PackageBv1/ProductComponents.wxs new
+15
@@ -0,0 +1,15 @@
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 +<Wix xmlns="http://wixtoolset.org/schemas/v4/wxs">
4 + <Fragment>
5 + <ComponentGroup Id="ProductComponents">
6 + <ComponentRef Id="RegistryComponent2" />
7 + </ComponentGroup>
8 + </Fragment>
9 +
10 + <Fragment>
11 + <Component Id="RegistryComponent2" Directory="INSTALLFOLDER">
12 + <RegistryValue Root="HKLM" Key="Software\WiX\Tests\$(var.TestGroupName)" Name="$(var.PackageName)2" Value="!(bind.Property.TestVersion)" Type="string" />
13 + </Component>
14 + </Fragment>
15 +</Wix>
src/TestData/SlipstreamTests/PackageBv1_0_1/PackageBv1_0_1.wixproj new
+10
@@ -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 + <Import Project="..\PackageBv1\PackageB.props" />
4 + <PropertyGroup>
5 + <Version>1.0.1.0</Version>
6 + </PropertyGroup>
7 + <ItemGroup>
8 + <Compile Include="..\PackageBv1\ProductComponents.wxs" Link="ProductComponents.wxs" />
9 + </ItemGroup>
10 +</Project>
\ No newline at end of file
src/TestData/SlipstreamTests/PatchA/PatchA.wixproj new
+12
@@ -0,0 +1,12 @@
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>PatchCreation</OutputType>
5 + <TargetExt>.msp</TargetExt>
6 + <SuppressSpecificWarnings>1079</SuppressSpecificWarnings>
7 + </PropertyGroup>
8 + <ItemGroup>
9 + <ProjectReference Include="..\PackageAv1\PackageAv1.wixproj" />
10 + <ProjectReference Include="..\PackageAv1_0_1\PackageAv1_0_1.wixproj" />
11 + </ItemGroup>
12 +</Project>
\ No newline at end of file
src/TestData/SlipstreamTests/PatchA/PatchA.wxs new
+22
@@ -0,0 +1,22 @@
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 +<?ifndef Version?>
4 +<?define Version = 1.0.0.0?>
5 +<?endif?>
6 +
7 +<Wix xmlns="http://wixtoolset.org/schemas/v4/wxs">
8 + <Patch AllowRemoval="yes" Classification="Update" Description="Patch A in test $(var.TestGroupName)" DisplayName="$(var.TestGroupName) - Patch A" Manufacturer="Example Corporation" MinorUpdateTargetRTM="yes">
9 + <Media Id="100" Cabinet="PatchA" EmbedCab="yes">
10 + <PatchBaseline
11 + Id="PatchA"
12 + BaselineFile="$(var.PackageAv1.TargetDir)$(var.PackageAv1.TargetName).wixpdb"
13 + UpdateFile="$(var.PackageAv1_0_1.TargetDir)$(var.PackageAv1_0_1.TargetName).wixpdb"
14 + />
15 + </Media>
16 +
17 + <PatchFamily Id="A" Version="$(var.Version)" Supersede="yes">
18 + <ComponentRef Id="RegistryComponent" />
19 + <PropertyRef Id="TestVersion" />
20 + </PatchFamily>
21 + </Patch>
22 +</Wix>
src/TestData/SlipstreamTests/PatchAB/PatchAB.wixproj new
+14
@@ -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 + <OutputType>PatchCreation</OutputType>
5 + <TargetExt>.msp</TargetExt>
6 + <SuppressSpecificWarnings>1079</SuppressSpecificWarnings>
7 + </PropertyGroup>
8 + <ItemGroup>
9 + <ProjectReference Include="..\PackageAv1\PackageAv1.wixproj" />
10 + <ProjectReference Include="..\PackageAv1_0_1\PackageAv1_0_1.wixproj" />
11 + <ProjectReference Include="..\PackageBv1\PackageBv1.wixproj" />
12 + <ProjectReference Include="..\PackageBv1_0_1\PackageBv1_0_1.wixproj" />
13 + </ItemGroup>
14 +</Project>
\ No newline at end of file
src/TestData/SlipstreamTests/PatchAB/PatchAB.wxs new
+27
@@ -0,0 +1,27 @@
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 +<?ifndef Version?>
4 +<?define Version = 1.0.0.0?>
5 +<?endif?>
6 +
7 +<Wix xmlns="http://wixtoolset.org/schemas/v4/wxs">
8 + <Patch AllowRemoval="yes" Classification="Update" Description="Patch AB in test $(var.TestGroupName)" DisplayName="$(var.TestGroupName) - Patch AB" Manufacturer="Example Corporation" MinorUpdateTargetRTM="yes">
9 + <Media Id="100" Cabinet="PatchAB" EmbedCab="yes">
10 + <PatchBaseline
11 + Id="PatchA"
12 + BaselineFile="$(var.PackageAv1.TargetDir)$(var.PackageAv1.TargetName).wixpdb"
13 + UpdateFile="$(var.PackageAv1_0_1.TargetDir)$(var.PackageAv1_0_1.TargetName).wixpdb"
14 + />
15 + <PatchBaseline
16 + Id="PatchB"
17 + BaselineFile="$(var.PackageBv1.TargetDir)$(var.PackageBv1.TargetName).wixpdb"
18 + UpdateFile="$(var.PackageBv1_0_1.TargetDir)$(var.PackageBv1_0_1.TargetName).wixpdb"
19 + />
20 + </Media>
21 +
22 + <PatchFamily Id="AB" Version="$(var.Version)" Supersede="yes">
23 + <ComponentRef Id="RegistryComponent" />
24 + <PropertyRef Id="TestVersion" />
25 + </PatchFamily>
26 + </Patch>
27 +</Wix>
src/TestData/SlipstreamTests/PatchAB2/PatchAB2.wixproj new
+14
@@ -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 + <OutputType>PatchCreation</OutputType>
5 + <TargetExt>.msp</TargetExt>
6 + <SuppressSpecificWarnings>1079</SuppressSpecificWarnings>
7 + </PropertyGroup>
8 + <ItemGroup>
9 + <ProjectReference Include="..\PackageAv1\PackageAv1.wixproj" />
10 + <ProjectReference Include="..\PackageAv1_0_1\PackageAv1_0_1.wixproj" />
11 + <ProjectReference Include="..\PackageBv1\PackageBv1.wixproj" />
12 + <ProjectReference Include="..\PackageBv1_0_1\PackageBv1_0_1.wixproj" />
13 + </ItemGroup>
14 +</Project>
\ No newline at end of file
src/TestData/SlipstreamTests/PatchAB2/PatchAB2.wxs new
+26
@@ -0,0 +1,26 @@
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 +<?ifndef Version?>
4 +<?define Version = 1.0.0.0?>
5 +<?endif?>
6 +
7 +<Wix xmlns="http://wixtoolset.org/schemas/v4/wxs">
8 + <Patch AllowRemoval="yes" Classification="Update" Description="Patch AB2 in test $(var.TestGroupName)" DisplayName="$(var.TestGroupName) - Patch AB2" Manufacturer="Example Corporation" MinorUpdateTargetRTM="yes">
9 + <Media Id="100" Cabinet="PatchAB2" EmbedCab="yes">
10 + <PatchBaseline
11 + Id="PatchA"
12 + BaselineFile="$(var.PackageAv1.TargetDir)$(var.PackageAv1.TargetName).wixpdb"
13 + UpdateFile="$(var.PackageAv1_0_1.TargetDir)$(var.PackageAv1_0_1.TargetName).wixpdb"
14 + />
15 + <PatchBaseline
16 + Id="PatchB"
17 + BaselineFile="$(var.PackageBv1.TargetDir)$(var.PackageBv1.TargetName).wixpdb"
18 + UpdateFile="$(var.PackageBv1_0_1.TargetDir)$(var.PackageBv1_0_1.TargetName).wixpdb"
19 + />
20 + </Media>
21 +
22 + <PatchFamily Id="AB2" Version="$(var.Version)" Supersede="yes">
23 + <ComponentRef Id="RegistryComponent2" />
24 + </PatchFamily>
25 + </Patch>
26 +</Wix>
src/WixTestTools/PackageVerifier.cs
+9
@@ -58,6 +58,15 @@ namespace WixTestTools
58 Assert.Equal(installed, MsiUtilities.IsProductInstalled(productCode));
59 }
60
61 + public void DeleteTestRegistryValue(string name)
62 + {
63 + using (var root = this.TestContext.GetTestRegistryRoot())
64 + {
65 + Assert.NotNull(root);
66 + root.DeleteValue(name);
67 + }
68 + }
69 +
70 public void VerifyTestRegistryRootDeleted()
71 {
72 using var testRegistryRoot = this.TestContext.GetTestRegistryRoot();
src/WixToolsetTest.BurnE2E/SlipstreamTests.cs new
+330
@@ -0,0 +1,330 @@
1 +// Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information.
2 +
3 +namespace WixToolsetTest.BurnE2E
4 +{
5 + using System;
6 + using System.IO;
7 + using WixTestTools;
8 + using WixToolset.Mba.Core;
9 + using Xunit;
10 + using Xunit.Abstractions;
11 +
12 + public class SlipstreamTests : BurnE2ETests
13 + {
14 + public SlipstreamTests(ITestOutputHelper testOutputHelper) : base(testOutputHelper) { }
15 +
16 + private const string V090 = "0.9.0.0";
17 + private const string V100 = "1.0.0.0";
18 + private const string V101 = "1.0.1.0";
19 +
20 + [Fact(Skip = "https://github.com/wixtoolset/issues/issues/6297")]
21 + public void CanInstallBundleWithSlipstreamedPatchThenRemoveIt()
22 + {
23 + var testRegistryValue = "PackageA";
24 +
25 + var packageAv1 = this.CreatePackageInstaller("PackageAv1");
26 + var bundleA = this.CreateBundleInstaller("BundleA");
27 +
28 + var packageAv1SourceCodeInstalled = packageAv1.GetInstalledFilePath("Package.wxs");
29 + Assert.False(File.Exists(packageAv1SourceCodeInstalled), $"PackageAv1 payload should not be there on test start: {packageAv1SourceCodeInstalled}");
30 +
31 + bundleA.Install();
32 + bundleA.VerifyRegisteredAndInPackageCache();
33 + Assert.True(File.Exists(packageAv1SourceCodeInstalled), String.Concat("Should have found PackageAv1 payload installed at: ", packageAv1SourceCodeInstalled));
34 + packageAv1.VerifyTestRegistryValue(testRegistryValue, V101);
35 +
36 + bundleA.Uninstall();
37 + bundleA.VerifyUnregisteredAndRemovedFromPackageCache();
38 + Assert.False(File.Exists(packageAv1SourceCodeInstalled), String.Concat("PackageAv1 payload should have been removed by uninstall from: ", packageAv1SourceCodeInstalled));
39 + packageAv1.VerifyTestRegistryRootDeleted();
40 + }
41 +
42 + /// <summary>
43 + /// BundleA installs PackageA with slipstreamed PatchA.
44 + /// BundleOnlyPatchA is installed which contains PatchA (which should be a no-op).
45 + /// BundleOnlyPatchA in uninstalled which should do nothing since BundleA has a dependency on it.
46 + /// Bundle is installed which should remove everything.
47 + /// </summary>
48 + [Fact(Skip = "https://github.com/wixtoolset/issues/issues/6297")]
49 + public void ReferenceCountsSlipstreamedPatch()
50 + {
51 + var testRegistryValue = "PackageA";
52 +
53 + var packageAv1 = this.CreatePackageInstaller("PackageAv1");
54 + var bundleOnlyPatchA = this.CreateBundleInstaller("BundleOnlyPatchA");
55 + var bundleA = this.CreateBundleInstaller("BundleA");
56 +
57 + var packageAv1SourceCodeInstalled = packageAv1.GetInstalledFilePath("Package.wxs");
58 + Assert.False(File.Exists(packageAv1SourceCodeInstalled), $"PackageAv1 payload should not be there on test start: {packageAv1SourceCodeInstalled}");
59 +
60 + bundleA.Install();
61 + bundleA.VerifyRegisteredAndInPackageCache();
62 + Assert.True(File.Exists(packageAv1SourceCodeInstalled), String.Concat("Should have found PackageAv1 payload installed at: ", packageAv1SourceCodeInstalled));
63 + packageAv1.VerifyTestRegistryValue(testRegistryValue, V101);
64 +
65 + bundleOnlyPatchA.Install();
66 + bundleOnlyPatchA.VerifyRegisteredAndInPackageCache();
67 + Assert.True(File.Exists(packageAv1SourceCodeInstalled), String.Concat("Should have found PackageAv1 payload installed at: ", packageAv1SourceCodeInstalled));
68 + packageAv1.VerifyTestRegistryValue(testRegistryValue, V101);
69 +
70 + bundleOnlyPatchA.Uninstall();
71 + bundleOnlyPatchA.VerifyUnregisteredAndRemovedFromPackageCache();
72 + Assert.True(File.Exists(packageAv1SourceCodeInstalled), String.Concat("Should have found PackageAv1 payload installed at: ", packageAv1SourceCodeInstalled));
73 + packageAv1.VerifyTestRegistryValue(testRegistryValue, V101);
74 +
75 + bundleA.Uninstall();
76 + bundleA.VerifyUnregisteredAndRemovedFromPackageCache();
77 + Assert.False(File.Exists(packageAv1SourceCodeInstalled), String.Concat("PackageAv1 payload should have been removed by uninstall from: ", packageAv1SourceCodeInstalled));
78 + packageAv1.VerifyTestRegistryRootDeleted();
79 + }
80 +
81 + [Fact(Skip = "https://github.com/wixtoolset/issues/issues/6350")]
82 + public void CanInstallBundleWithSlipstreamedPatchThenRepairIt()
83 + {
84 + this.InstallBundleWithSlipstreamedPatchThenRepairIt(false);
85 + }
86 +
87 + [Fact(Skip = "https://github.com/wixtoolset/issues/issues/6350")]
88 + public void CanInstallReversedBundleWithSlipstreamedPatchThenRepairIt()
89 + {
90 + this.InstallBundleWithSlipstreamedPatchThenRepairIt(true);
91 + }
92 +
93 + private void InstallBundleWithSlipstreamedPatchThenRepairIt(bool isReversed)
94 + {
95 + var bundleName = isReversed ? "BundleAReverse" : "BundleA";
96 + var testRegistryValue = "PackageA";
97 +
98 + var packageAv1 = this.CreatePackageInstaller("PackageAv1");
99 + var bundleA = this.CreateBundleInstaller(bundleName);
100 +
101 + var packageAv1SourceCodeInstalled = packageAv1.GetInstalledFilePath("Package.wxs");
102 + Assert.False(File.Exists(packageAv1SourceCodeInstalled), $"PackageAv1 payload should not be there on test start: {packageAv1SourceCodeInstalled}");
103 +
104 + bundleA.Install();
105 + bundleA.VerifyRegisteredAndInPackageCache();
106 + Assert.True(File.Exists(packageAv1SourceCodeInstalled), String.Concat("Should have found PackageAv1 payload installed at: ", packageAv1SourceCodeInstalled));
107 + packageAv1.VerifyTestRegistryValue(testRegistryValue, V101);
108 +
109 + // Delete the installed file and registry key so we have something to repair.
110 + File.Delete(packageAv1SourceCodeInstalled);
111 + packageAv1.DeleteTestRegistryValue(testRegistryValue);
112 +
113 + bundleA.Repair();
114 + bundleA.VerifyRegisteredAndInPackageCache();
115 + Assert.True(File.Exists(packageAv1SourceCodeInstalled), String.Concat("Should have found PackageAv1 payload installed at: ", packageAv1SourceCodeInstalled));
116 + packageAv1.VerifyTestRegistryValue(testRegistryValue, V101);
117 +
118 + bundleA.Uninstall();
119 + bundleA.VerifyUnregisteredAndRemovedFromPackageCache();
120 + Assert.False(File.Exists(packageAv1SourceCodeInstalled), String.Concat("PackageAv1 payload should have been removed by uninstall from: ", packageAv1SourceCodeInstalled));
121 + packageAv1.VerifyTestRegistryRootDeleted();
122 + }
123 +
124 + [Fact]
125 + public void CanInstallSlipstreamedPatchThroughForcedRepair()
126 + {
127 + this.InstallSlipstreamedPatchThroughForcedRepair(false);
128 + }
129 +
130 + [Fact]
131 + public void CanInstallSlipstreamedPatchThroughReversedForcedRepair()
132 + {
133 + this.InstallSlipstreamedPatchThroughForcedRepair(true);
134 + }
135 +
136 + private void InstallSlipstreamedPatchThroughForcedRepair(bool isReversed)
137 + {
138 + var bundleName = isReversed ? "BundleAReverse" : "BundleA";
139 + var testRegistryValue = "PackageA";
140 +
141 + var packageAv1 = this.CreatePackageInstaller("PackageAv1");
142 + var bundleA = this.CreateBundleInstaller(bundleName);
143 + var bundleOnlyA = this.CreateBundleInstaller("BundleOnlyA");
144 + var testBAController = this.CreateTestBAController();
145 +
146 + var packageAv1SourceCodeInstalled = packageAv1.GetInstalledFilePath("Package.wxs");
147 + Assert.False(File.Exists(packageAv1SourceCodeInstalled), $"PackageAv1 payload should not be there on test start: {packageAv1SourceCodeInstalled}");
148 +
149 + bundleOnlyA.Install();
150 + bundleOnlyA.VerifyRegisteredAndInPackageCache();
151 + Assert.True(File.Exists(packageAv1SourceCodeInstalled), String.Concat("Should have found PackageAv1 payload installed at: ", packageAv1SourceCodeInstalled));
152 + packageAv1.VerifyTestRegistryValue(testRegistryValue, V100);
153 +
154 + // Delete the installed file and registry key so we have something to repair.
155 + File.Delete(packageAv1SourceCodeInstalled);
156 + packageAv1.DeleteTestRegistryValue(testRegistryValue);
157 +
158 + testBAController.SetPackageRequestedState("PackageA", RequestState.Repair);
159 + testBAController.SetPackageRequestedState("PatchA", RequestState.Repair);
160 +
161 + bundleA.Install();
162 + bundleA.VerifyRegisteredAndInPackageCache();
163 + Assert.True(File.Exists(packageAv1SourceCodeInstalled), String.Concat("Should have found PackageAv1 payload installed at: ", packageAv1SourceCodeInstalled));
164 + packageAv1.VerifyTestRegistryValue(testRegistryValue, V101);
165 +
166 + testBAController.ResetPackageStates("PackageA");
167 + testBAController.ResetPackageStates("PatchA");
168 +
169 + bundleA.Uninstall();
170 + bundleA.VerifyUnregisteredAndRemovedFromPackageCache();
171 + Assert.True(File.Exists(packageAv1SourceCodeInstalled), String.Concat("Should have found PackageAv1 payload installed at: ", packageAv1SourceCodeInstalled));
172 + packageAv1.VerifyTestRegistryValue(testRegistryValue, V100);
173 +
174 + bundleOnlyA.Uninstall();
175 + bundleOnlyA.VerifyUnregisteredAndRemovedFromPackageCache();
176 + Assert.False(File.Exists(packageAv1SourceCodeInstalled), String.Concat("PackageAv1 payload should have been removed by uninstall from: ", packageAv1SourceCodeInstalled));
177 + packageAv1.VerifyTestRegistryRootDeleted();
178 + }
179 +
180 + [Fact]
181 + public void CanUninstallSlipstreamedPatchAlone()
182 + {
183 + var testRegistryValue = "PackageA";
184 +
185 + var packageAv1 = this.CreatePackageInstaller("PackageAv1");
186 + var bundleA = this.CreateBundleInstaller("BundleA");
187 + var testBAController = this.CreateTestBAController();
188 +
189 + var packageAv1SourceCodeInstalled = packageAv1.GetInstalledFilePath("Package.wxs");
190 + Assert.False(File.Exists(packageAv1SourceCodeInstalled), $"PackageAv1 payload should not be there on test start: {packageAv1SourceCodeInstalled}");
191 +
192 + bundleA.Install();
193 + bundleA.VerifyRegisteredAndInPackageCache();
194 + Assert.True(File.Exists(packageAv1SourceCodeInstalled), String.Concat("Should have found PackageAv1 payload installed at: ", packageAv1SourceCodeInstalled));
195 + packageAv1.VerifyTestRegistryValue(testRegistryValue, V101);
196 +
197 + testBAController.SetPackageRequestedState("PatchA", RequestState.Absent);
198 +
199 + bundleA.Modify();
200 + bundleA.VerifyRegisteredAndInPackageCache();
201 + Assert.True(File.Exists(packageAv1SourceCodeInstalled), String.Concat("Should have found PackageAv1 payload installed at: ", packageAv1SourceCodeInstalled));
202 + packageAv1.VerifyTestRegistryValue(testRegistryValue, V100);
203 +
204 + bundleA.Uninstall();
205 + bundleA.VerifyUnregisteredAndRemovedFromPackageCache();
206 + Assert.False(File.Exists(packageAv1SourceCodeInstalled), String.Concat("PackageAv1 payload should have been removed by uninstall from: ", packageAv1SourceCodeInstalled));
207 + packageAv1.VerifyTestRegistryRootDeleted();
208 + }
209 +
210 + [Fact]
211 + public void CanModifyToUninstallPackageWithSlipstreamedPatch()
212 + {
213 + var testRegistryValue = "PackageA";
214 +
215 + var packageAv1 = this.CreatePackageInstaller("PackageAv1");
216 + var packageBv1 = this.CreatePackageInstaller("PackageBv1");
217 + var bundleB = this.CreateBundleInstaller("BundleB");
218 + var testBAController = this.CreateTestBAController();
219 +
220 + var packageAv1SourceCodeInstalled = packageAv1.GetInstalledFilePath("Package.wxs");
221 + var packageBv1SourceCodeInstalled = packageBv1.GetInstalledFilePath("Package.wxs");
222 + Assert.False(File.Exists(packageAv1SourceCodeInstalled), $"PackageAv1 payload should not be there on test start: {packageAv1SourceCodeInstalled}");
223 + Assert.False(File.Exists(packageBv1SourceCodeInstalled), $"PackageBv1 payload should not be there on test start: {packageBv1SourceCodeInstalled}");
224 +
225 + bundleB.Install();
226 + bundleB.VerifyRegisteredAndInPackageCache();
227 + Assert.True(File.Exists(packageAv1SourceCodeInstalled), String.Concat("Should have found PackageAv1 payload installed at: ", packageAv1SourceCodeInstalled));
228 + packageAv1.VerifyTestRegistryValue(testRegistryValue, V101);
229 + Assert.True(File.Exists(packageBv1SourceCodeInstalled), String.Concat("Should have found PackageBv1 payload installed at: ", packageBv1SourceCodeInstalled));
230 +
231 + testBAController.SetPackageRequestedState("PackageA", RequestState.Absent);
232 + testBAController.SetPackageRequestedState("PatchA", RequestState.Absent);
233 +
234 + bundleB.Modify();
235 + bundleB.VerifyRegisteredAndInPackageCache();
236 + Assert.False(File.Exists(packageAv1SourceCodeInstalled), $"PackageAv1 payload should have been removed by modify from: {packageAv1SourceCodeInstalled}");
237 +
238 + testBAController.ResetPackageStates("PackageA");
239 + testBAController.ResetPackageStates("PatchA");
240 +
241 + bundleB.Uninstall();
242 + bundleB.VerifyUnregisteredAndRemovedFromPackageCache();
243 + Assert.False(File.Exists(packageBv1SourceCodeInstalled), String.Concat("PackageBv1 payload should have been removed by uninstall from: ", packageBv1SourceCodeInstalled));
244 + packageBv1.VerifyTestRegistryRootDeleted();
245 + }
246 +
247 + [Fact]
248 + public void UninstallsPackageWithSlipstreamedPatchDuringRollback()
249 + {
250 + var packageAv1 = this.CreatePackageInstaller("PackageAv1");
251 + var packageBv1 = this.CreatePackageInstaller("PackageBv1");
252 + var bundleB = this.CreateBundleInstaller("BundleB");
253 + var testBAController = this.CreateTestBAController();
254 +
255 + var packageAv1SourceCodeInstalled = packageAv1.GetInstalledFilePath("Package.wxs");
256 + var packageBv1SourceCodeInstalled = packageBv1.GetInstalledFilePath("Package.wxs");
257 + Assert.False(File.Exists(packageAv1SourceCodeInstalled), $"PackageAv1 payload should not be there on test start: {packageAv1SourceCodeInstalled}");
258 + Assert.False(File.Exists(packageBv1SourceCodeInstalled), $"PackageBv1 payload should not be there on test start: {packageBv1SourceCodeInstalled}");
259 +
260 + testBAController.SetPackageCancelExecuteAtProgress("PackageB", 50);
261 +
262 + bundleB.Install((int)MSIExec.MSIExecReturnCode.ERROR_INSTALL_USEREXIT);
263 + bundleB.VerifyUnregisteredAndRemovedFromPackageCache();
264 + Assert.False(File.Exists(packageAv1SourceCodeInstalled), $"PackageAv1 payload should have been removed by rollback from: {packageAv1SourceCodeInstalled}");
265 + Assert.False(File.Exists(packageBv1SourceCodeInstalled), String.Concat("PackageBv1 payload should not have been installed from: ", packageBv1SourceCodeInstalled));
266 + packageBv1.VerifyTestRegistryRootDeleted();
267 + }
268 +
269 + [Fact(Skip = "The bundle is slipstreaming the patches correctly, need to research why testRegistryValueB is getting patched because patch AB2 is not supposed to change it")]
270 + public void CanAutomaticallyPredetermineSlipstreamPatchesAtBuildTime()
271 + {
272 + var testRegistryValueA = "PackageA";
273 + var testRegistryValueA2 = "PackageA2";
274 + var testRegistryValueB = "PackageB";
275 + var testRegistryValueB2 = "PackageB2";
276 +
277 + var packageAv1 = this.CreatePackageInstaller("PackageAv1");
278 + var packageBv1 = this.CreatePackageInstaller("PackageBv1");
279 + var bundleC = this.CreateBundleInstaller("BundleC");
280 +
281 + var packageAv1SourceCodeInstalled = packageAv1.GetInstalledFilePath("Package.wxs");
282 + var packageBv1SourceCodeInstalled = packageBv1.GetInstalledFilePath("Package.wxs");
283 + Assert.False(File.Exists(packageAv1SourceCodeInstalled), $"PackageAv1 payload should not be there on test start: {packageAv1SourceCodeInstalled}");
284 + Assert.False(File.Exists(packageBv1SourceCodeInstalled), $"PackageBv1 payload should not be there on test start: {packageBv1SourceCodeInstalled}");
285 +
286 + bundleC.Install();
287 + bundleC.VerifyRegisteredAndInPackageCache();
288 + Assert.True(File.Exists(packageAv1SourceCodeInstalled), String.Concat("Should have found PackageAv1 payload installed at: ", packageAv1SourceCodeInstalled));
289 + // Product A should've slipstreamed both patches.
290 + packageAv1.VerifyTestRegistryValue(testRegistryValueA, V101);
291 + packageAv1.VerifyTestRegistryValue(testRegistryValueA2, V101);
292 + // Product B should've only slipstreamed patch AB2.
293 + packageBv1.VerifyTestRegistryValue(testRegistryValueB, V100);
294 + packageBv1.VerifyTestRegistryValue(testRegistryValueB2, V101);
295 +
296 + bundleC.Uninstall();
297 + bundleC.VerifyUnregisteredAndRemovedFromPackageCache();
298 + Assert.False(File.Exists(packageAv1SourceCodeInstalled), String.Concat("PackageAv1 payload should have been removed by uninstall from: ", packageAv1SourceCodeInstalled));
299 + Assert.False(File.Exists(packageBv1SourceCodeInstalled), String.Concat("PackageBv1 payload should have been removed by uninstall from: ", packageBv1SourceCodeInstalled));
300 + packageAv1.VerifyTestRegistryRootDeleted();
301 + }
302 +
303 + [Fact(Skip = "https://github.com/wixtoolset/issues/issues/6297")]
304 + public void CanInstallSlipstreamedPatchWithPackageDuringMajorUpgrade()
305 + {
306 + var testRegistryValue = "PackageA";
307 +
308 + var packageAv0 = this.CreatePackageInstaller("PackageAv0_9_0");
309 + var packageAv1 = this.CreatePackageInstaller("PackageAv1");
310 + var bundleA = this.CreateBundleInstaller("BundleA");
311 +
312 + packageAv1.VerifyInstalled(false);
313 +
314 + packageAv0.InstallProduct();
315 + packageAv0.VerifyInstalled(true);
316 + packageAv1.VerifyTestRegistryValue(testRegistryValue, V090);
317 +
318 + bundleA.Install();
319 + bundleA.VerifyRegisteredAndInPackageCache();
320 + packageAv0.VerifyInstalled(false);
321 + packageAv1.VerifyInstalled(true);
322 + packageAv1.VerifyTestRegistryValue(testRegistryValue, V101);
323 +
324 + bundleA.Uninstall();
325 + bundleA.VerifyUnregisteredAndRemovedFromPackageCache();
326 + packageAv1.VerifyInstalled(false);
327 + packageAv1.VerifyTestRegistryRootDeleted();
328 + }
329 + }
330 +}