aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSean Hall <r.sean.hall@gmail.com>2021-05-06 14:42:01 -0500
committerSean Hall <r.sean.hall@gmail.com>2021-05-11 19:11:19 -0500
commita91c413750b354ba6975be9d427787b13664b750 (patch)
tree230c04174a3f01e15fbed26fc70a4101276c595f
parent8c27fbe1bc8a6d83859aead2105d6d528c307726 (diff)
downloadwix-a91c413750b354ba6975be9d427787b13664b750.tar.gz
wix-a91c413750b354ba6975be9d427787b13664b750.tar.bz2
wix-a91c413750b354ba6975be9d427787b13664b750.zip
Add tests for WixBA.
-rw-r--r--src/test/burn/BurnE2ETests.sln14
-rw-r--r--src/test/burn/TestData/BasicFunctionalityTests/BundleD/BundleD.wixproj20
-rw-r--r--src/test/burn/TestData/BasicFunctionalityTests/BundleD_x64/BundleD_x64.wixproj21
-rw-r--r--src/test/burn/TestData/Templates/Bundle.wxs8
-rw-r--r--src/test/burn/TestData/TestBA/TestBAWixlib/WixBA.wxs17
-rw-r--r--src/test/burn/TestData/TestBA/TestBAWixlib/testbawixlib.wixproj2
-rw-r--r--src/test/burn/TestData/TestBA/TestBAWixlib_x64/WixBA_x64.wxs18
-rw-r--r--src/test/burn/TestData/TestBA/TestBAWixlib_x64/testbawixlib_x64.wixproj2
-rw-r--r--src/test/burn/WixToolset.WixBA/InstallationViewModel.cs4
-rw-r--r--src/test/burn/WixToolset.WixBA/RootView.xaml2
-rw-r--r--src/test/burn/WixToolset.WixBA/Styles.xaml4
-rw-r--r--src/test/burn/WixToolset.WixBA/UpdateViewModel.cs11
-rw-r--r--src/test/burn/WixToolset.WixBA/WixBA.cs8
-rw-r--r--src/test/burn/WixToolset.WixBA/WixToolset.WixBA.csproj30
-rw-r--r--src/test/burn/WixToolset.WixBA/WixToolset.WixBA_x64.csproj40
-rw-r--r--src/test/burn/WixToolsetTest.BurnE2E/BasicFunctionalityTests.cs150
16 files changed, 202 insertions, 149 deletions
diff --git a/src/test/burn/BurnE2ETests.sln b/src/test/burn/BurnE2ETests.sln
index f7850250..5d69855c 100644
--- a/src/test/burn/BurnE2ETests.sln
+++ b/src/test/burn/BurnE2ETests.sln
@@ -9,6 +9,8 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "TestExe", "TestExe\TestExe.
9EndProject 9EndProject
10Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "WixTestTools", "WixTestTools\WixTestTools.csproj", "{3D3B02F3-79B6-4BD5-AD49-2889DA3849A7}" 10Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "WixTestTools", "WixTestTools\WixTestTools.csproj", "{3D3B02F3-79B6-4BD5-AD49-2889DA3849A7}"
11EndProject 11EndProject
12Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "WixToolset.WixBA", "WixToolset.WixBA\WixToolset.WixBA.csproj", "{7C27518B-84AD-4679-8EF4-29DF552CF1AC}"
13EndProject
12Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "WixToolsetTest.BurnE2E", "WixToolsetTest.BurnE2E\WixToolsetTest.BurnE2E.csproj", "{FED9D707-E5C3-4867-87B0-FABDB5EB0823}" 14Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "WixToolsetTest.BurnE2E", "WixToolsetTest.BurnE2E\WixToolsetTest.BurnE2E.csproj", "{FED9D707-E5C3-4867-87B0-FABDB5EB0823}"
13EndProject 15EndProject
14Global 16Global
@@ -69,6 +71,18 @@ Global
69 {FED9D707-E5C3-4867-87B0-FABDB5EB0823}.Release|x64.Build.0 = Release|Any CPU 71 {FED9D707-E5C3-4867-87B0-FABDB5EB0823}.Release|x64.Build.0 = Release|Any CPU
70 {FED9D707-E5C3-4867-87B0-FABDB5EB0823}.Release|x86.ActiveCfg = Release|Any CPU 72 {FED9D707-E5C3-4867-87B0-FABDB5EB0823}.Release|x86.ActiveCfg = Release|Any CPU
71 {FED9D707-E5C3-4867-87B0-FABDB5EB0823}.Release|x86.Build.0 = Release|Any CPU 73 {FED9D707-E5C3-4867-87B0-FABDB5EB0823}.Release|x86.Build.0 = Release|Any CPU
74 {7C27518B-84AD-4679-8EF4-29DF552CF1AC}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
75 {7C27518B-84AD-4679-8EF4-29DF552CF1AC}.Debug|Any CPU.Build.0 = Debug|Any CPU
76 {7C27518B-84AD-4679-8EF4-29DF552CF1AC}.Debug|x64.ActiveCfg = Debug|Any CPU
77 {7C27518B-84AD-4679-8EF4-29DF552CF1AC}.Debug|x64.Build.0 = Debug|Any CPU
78 {7C27518B-84AD-4679-8EF4-29DF552CF1AC}.Debug|x86.ActiveCfg = Debug|Any CPU
79 {7C27518B-84AD-4679-8EF4-29DF552CF1AC}.Debug|x86.Build.0 = Debug|Any CPU
80 {7C27518B-84AD-4679-8EF4-29DF552CF1AC}.Release|Any CPU.ActiveCfg = Release|Any CPU
81 {7C27518B-84AD-4679-8EF4-29DF552CF1AC}.Release|Any CPU.Build.0 = Release|Any CPU
82 {7C27518B-84AD-4679-8EF4-29DF552CF1AC}.Release|x64.ActiveCfg = Release|Any CPU
83 {7C27518B-84AD-4679-8EF4-29DF552CF1AC}.Release|x64.Build.0 = Release|Any CPU
84 {7C27518B-84AD-4679-8EF4-29DF552CF1AC}.Release|x86.ActiveCfg = Release|Any CPU
85 {7C27518B-84AD-4679-8EF4-29DF552CF1AC}.Release|x86.Build.0 = Release|Any CPU
72 EndGlobalSection 86 EndGlobalSection
73 GlobalSection(SolutionProperties) = preSolution 87 GlobalSection(SolutionProperties) = preSolution
74 HideSolutionNode = FALSE 88 HideSolutionNode = FALSE
diff --git a/src/test/burn/TestData/BasicFunctionalityTests/BundleD/BundleD.wixproj b/src/test/burn/TestData/BasicFunctionalityTests/BundleD/BundleD.wixproj
new file mode 100644
index 00000000..a2af1aa5
--- /dev/null
+++ b/src/test/burn/TestData/BasicFunctionalityTests/BundleD/BundleD.wixproj
@@ -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 <BA>WixBA</BA>
6 <UpgradeCode>{2557AA80-E432-48BF-BF01-DD27DD1BD291}</UpgradeCode>
7 </PropertyGroup>
8 <ItemGroup>
9 <Compile Include="..\..\Templates\Bundle.wxs" Link="Bundle.wxs" />
10 <Compile Include="..\BundleA\BundleA.wxs" Link="BundleD.wxs" />
11 </ItemGroup>
12 <ItemGroup>
13 <ProjectReference Include="..\PackageA\PackageA.wixproj" />
14 <ProjectReference Include="..\..\TestBA\TestBAWixlib\testbawixlib.wixproj" />
15 </ItemGroup>
16 <ItemGroup>
17 <PackageReference Include="WixToolset.Bal.wixext" />
18 <PackageReference Include="WixToolset.NetFx.wixext" />
19 </ItemGroup>
20</Project> \ No newline at end of file
diff --git a/src/test/burn/TestData/BasicFunctionalityTests/BundleD_x64/BundleD_x64.wixproj b/src/test/burn/TestData/BasicFunctionalityTests/BundleD_x64/BundleD_x64.wixproj
new file mode 100644
index 00000000..338d523d
--- /dev/null
+++ b/src/test/burn/TestData/BasicFunctionalityTests/BundleD_x64/BundleD_x64.wixproj
@@ -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 <BA>WixBAdnc_x64</BA>
6 <UpgradeCode>{62E3DFA4-6849-44F0-93A1-C8F60DBB76E3}</UpgradeCode>
7 <InstallerPlatform>x64</InstallerPlatform>
8 </PropertyGroup>
9 <ItemGroup>
10 <Compile Include="..\..\Templates\Bundle.wxs" Link="Bundle.wxs" />
11 <Compile Include="..\BundleA_x64\BundleA_x64.wxs" Link="BundleD_x64.wxs" />
12 </ItemGroup>
13 <ItemGroup>
14 <ProjectReference Include="..\PackageA_x64\PackageA_x64.wixproj" />
15 <ProjectReference Include="..\..\TestBA\TestBAWixlib_x64\testbawixlib_x64.wixproj" />
16 </ItemGroup>
17 <ItemGroup>
18 <PackageReference Include="WixToolset.Bal.wixext" />
19 <PackageReference Include="WixToolset.NetFx.wixext" />
20 </ItemGroup>
21</Project> \ No newline at end of file
diff --git a/src/test/burn/TestData/Templates/Bundle.wxs b/src/test/burn/TestData/Templates/Bundle.wxs
index 06409504..b211d9c3 100644
--- a/src/test/burn/TestData/Templates/Bundle.wxs
+++ b/src/test/burn/TestData/Templates/Bundle.wxs
@@ -22,6 +22,10 @@
22 <!-- pulled in through the PackageGroupRef below --> 22 <!-- pulled in through the PackageGroupRef below -->
23 <?elseif $(var.BA) = "TestBAdnc_x64"?> 23 <?elseif $(var.BA) = "TestBAdnc_x64"?>
24 <!-- pulled in through the PackageGroupRef below --> 24 <!-- pulled in through the PackageGroupRef below -->
25 <?elseif $(var.BA) = "WixBA"?>
26 <!-- pulled in through the PackageGroupRef below -->
27 <?elseif $(var.BA) = "WixBAdnc_x64"?>
28 <!-- pulled in through the PackageGroupRef below -->
25 <?elseif $(var.BA) = "hyperlinkLicense"?> 29 <?elseif $(var.BA) = "hyperlinkLicense"?>
26 <BootstrapperApplication> 30 <BootstrapperApplication>
27 <bal:WixStandardBootstrapperApplication LicenseUrl="" Theme="hyperlinkLicense" /> 31 <bal:WixStandardBootstrapperApplication LicenseUrl="" Theme="hyperlinkLicense" />
@@ -39,6 +43,10 @@
39 <PackageGroupRef Id="TestBA_x64" /> 43 <PackageGroupRef Id="TestBA_x64" />
40 <?elseif $(var.BA) = "TestBAdnc_x64"?> 44 <?elseif $(var.BA) = "TestBAdnc_x64"?>
41 <PackageGroupRef Id="TestBAdnc_x64" /> 45 <PackageGroupRef Id="TestBAdnc_x64" />
46 <?elseif $(var.BA) = "WixBA"?>
47 <PackageGroupRef Id="WixBA" />
48 <?elseif $(var.BA) = "WixBAdnc_x64"?>
49 <PackageGroupRef Id="WixBAdnc_x64" />
42 <?endif?> 50 <?endif?>
43 51
44 <PackageGroupRef Id="BundlePackages" /> 52 <PackageGroupRef Id="BundlePackages" />
diff --git a/src/test/burn/TestData/TestBA/TestBAWixlib/WixBA.wxs b/src/test/burn/TestData/TestBA/TestBAWixlib/WixBA.wxs
new file mode 100644
index 00000000..c6da2a17
--- /dev/null
+++ b/src/test/burn/TestData/TestBA/TestBAWixlib/WixBA.wxs
@@ -0,0 +1,17 @@
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<Wix xmlns="http://wixtoolset.org/schemas/v4/wxs" xmlns:bal="http://wixtoolset.org/schemas/v4/wxs/bal">
3 <Fragment>
4 <BootstrapperApplication>
5 <Payload Name="WixToolset.Mba.Host.config" SourceFile="!(bindpath.net4x86)\WixBA.BootstrapperCore.config" />
6 <Payload SourceFile="!(bindpath.net4x86)\WixToolset.WixBA.dll" />
7 <Payload SourceFile="!(bindpath.net4x86)\mbanative.dll" />
8 <Payload SourceFile="!(bindpath.net4x86)\WixToolset.Mba.Core.dll" />
9 <Payload SourceFile='..\..\..\..\..\..\License.txt' />
10 <bal:WixManagedBootstrapperApplicationHost />
11 </BootstrapperApplication>
12
13 <PackageGroup Id="WixBA">
14 <PackageGroupRef Id="NetFx48WebAsPrereq" />
15 </PackageGroup>
16 </Fragment>
17</Wix>
diff --git a/src/test/burn/TestData/TestBA/TestBAWixlib/testbawixlib.wixproj b/src/test/burn/TestData/TestBA/TestBAWixlib/testbawixlib.wixproj
index d2ab7907..fa153974 100644
--- a/src/test/burn/TestData/TestBA/TestBAWixlib/testbawixlib.wixproj
+++ b/src/test/burn/TestData/TestBA/TestBAWixlib/testbawixlib.wixproj
@@ -7,11 +7,13 @@
7 </PropertyGroup> 7 </PropertyGroup>
8 <ItemGroup> 8 <ItemGroup>
9 <BindInputPaths Include="$(BaseOutputPath)$(Configuration)\net35\win-x86" BindName="net2x86" /> 9 <BindInputPaths Include="$(BaseOutputPath)$(Configuration)\net35\win-x86" BindName="net2x86" />
10 <BindInputPaths Include="$(BaseOutputPath)$(Configuration)\net45\win-x86" BindName="net4x86" />
10 <BindInputPaths Include="$(BaseOutputPath)$(Configuration)\net5.0-windows\win-x86" BindName="dnc5x86" /> 11 <BindInputPaths Include="$(BaseOutputPath)$(Configuration)\net5.0-windows\win-x86" BindName="dnc5x86" />
11 </ItemGroup> 12 </ItemGroup>
12 <ItemGroup> 13 <ItemGroup>
13 <ProjectReference Include="..\..\..\TestBA\TestBA.csproj" /> 14 <ProjectReference Include="..\..\..\TestBA\TestBA.csproj" />
14 <ProjectReference Include="..\..\..\TestExe\TestExe.csproj" /> 15 <ProjectReference Include="..\..\..\TestExe\TestExe.csproj" />
16 <ProjectReference Include="..\..\..\WixToolset.WixBA\WixToolset.WixBA.csproj" />
15 </ItemGroup> 17 </ItemGroup>
16 <ItemGroup> 18 <ItemGroup>
17 <PackageReference Include="WixToolset.Bal.wixext" /> 19 <PackageReference Include="WixToolset.Bal.wixext" />
diff --git a/src/test/burn/TestData/TestBA/TestBAWixlib_x64/WixBA_x64.wxs b/src/test/burn/TestData/TestBA/TestBAWixlib_x64/WixBA_x64.wxs
new file mode 100644
index 00000000..f28b6b70
--- /dev/null
+++ b/src/test/burn/TestData/TestBA/TestBAWixlib_x64/WixBA_x64.wxs
@@ -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<Wix xmlns="http://wixtoolset.org/schemas/v4/wxs" xmlns:bal="http://wixtoolset.org/schemas/v4/wxs/bal">
3 <Fragment>
4 <BootstrapperApplication>
5 <Payload SourceFile="!(bindpath.dnc5x64)\WixToolset.WixBA.deps.json" />
6 <Payload SourceFile="!(bindpath.dnc5x64)\WixToolset.WixBA.dll" bal:BAFactoryAssembly="yes" />
7 <Payload SourceFile="!(bindpath.dnc5x64)\WixToolset.WixBA.runtimeconfig.json" />
8 <Payload SourceFile="!(bindpath.dnc5x64)\mbanative.dll" />
9 <Payload SourceFile="!(bindpath.dnc5x64)\WixToolset.Mba.Core.dll" />
10 <Payload SourceFile='..\..\..\..\..\..\License.txt' />
11 <bal:WixDotNetCoreBootstrapperApplicationHost />
12 </BootstrapperApplication>
13
14 <PackageGroup Id="WixBAdnc_x64">
15 <PackageGroupRef Id="NetFx48WebAsPrereq" /> <!-- Yes, this is wrong but we don't have .NET 5 packages yet -->
16 </PackageGroup>
17 </Fragment>
18</Wix>
diff --git a/src/test/burn/TestData/TestBA/TestBAWixlib_x64/testbawixlib_x64.wixproj b/src/test/burn/TestData/TestBA/TestBAWixlib_x64/testbawixlib_x64.wixproj
index 7f3c5890..9055382f 100644
--- a/src/test/burn/TestData/TestBA/TestBAWixlib_x64/testbawixlib_x64.wixproj
+++ b/src/test/burn/TestData/TestBA/TestBAWixlib_x64/testbawixlib_x64.wixproj
@@ -8,11 +8,13 @@
8 </PropertyGroup> 8 </PropertyGroup>
9 <ItemGroup> 9 <ItemGroup>
10 <BindInputPaths Include="$(BaseOutputPath)$(Configuration)\net35\win-x64" BindName="net2x64" /> 10 <BindInputPaths Include="$(BaseOutputPath)$(Configuration)\net35\win-x64" BindName="net2x64" />
11 <BindInputPaths Include="$(BaseOutputPath)$(Configuration)\net45\win-x64" BindName="net4x64" />
11 <BindInputPaths Include="$(BaseOutputPath)$(Configuration)\net5.0-windows\win-x64" BindName="dnc5x64" /> 12 <BindInputPaths Include="$(BaseOutputPath)$(Configuration)\net5.0-windows\win-x64" BindName="dnc5x64" />
12 </ItemGroup> 13 </ItemGroup>
13 <ItemGroup> 14 <ItemGroup>
14 <ProjectReference Include="..\..\..\TestBA\TestBA_x64.csproj" /> 15 <ProjectReference Include="..\..\..\TestBA\TestBA_x64.csproj" />
15 <ProjectReference Include="..\..\..\TestExe\TestExe_x64.csproj" /> 16 <ProjectReference Include="..\..\..\TestExe\TestExe_x64.csproj" />
17 <ProjectReference Include="..\..\..\WixToolset.WixBA\WixToolset.WixBA_x64.csproj" />
16 </ItemGroup> 18 </ItemGroup>
17 <ItemGroup> 19 <ItemGroup>
18 <PackageReference Include="WixToolset.Bal.wixext" /> 20 <PackageReference Include="WixToolset.Bal.wixext" />
diff --git a/src/test/burn/WixToolset.WixBA/InstallationViewModel.cs b/src/test/burn/WixToolset.WixBA/InstallationViewModel.cs
index 2beebd02..410ab110 100644
--- a/src/test/burn/WixToolset.WixBA/InstallationViewModel.cs
+++ b/src/test/burn/WixToolset.WixBA/InstallationViewModel.cs
@@ -461,8 +461,8 @@ namespace WixToolset.WixBA
461 461
462 private void PlanPackageBegin(object sender, PlanPackageBeginEventArgs e) 462 private void PlanPackageBegin(object sender, PlanPackageBeginEventArgs e)
463 { 463 {
464 // If we're able to run our BA, we don't want to install the .NET Framework since the framework on the machine is already good enough. 464 // If we're able to run our BA, we don't want to install .NET since the one on the machine is already good enough.
465 if ( e.PackageId.StartsWith("NetFx4", StringComparison.OrdinalIgnoreCase)) 465 if (e.PackageId.StartsWith("NetFx4", StringComparison.OrdinalIgnoreCase) || e.PackageId.StartsWith("DesktopNetCoreRuntime", StringComparison.OrdinalIgnoreCase))
466 { 466 {
467 e.State = RequestState.None; 467 e.State = RequestState.None;
468 } 468 }
diff --git a/src/test/burn/WixToolset.WixBA/RootView.xaml b/src/test/burn/WixToolset.WixBA/RootView.xaml
index b7d535d1..df638c4d 100644
--- a/src/test/burn/WixToolset.WixBA/RootView.xaml
+++ b/src/test/burn/WixToolset.WixBA/RootView.xaml
@@ -19,7 +19,7 @@
19 <Window.Resources> 19 <Window.Resources>
20 <ResourceDictionary> 20 <ResourceDictionary>
21 <ResourceDictionary.MergedDictionaries> 21 <ResourceDictionary.MergedDictionaries>
22 <ResourceDictionary Source="pack://application:,,,/WixBA;component/Styles.xaml" /> 22 <ResourceDictionary Source="pack://application:,,,/WixToolset.WixBA;component/Styles.xaml" />
23 </ResourceDictionary.MergedDictionaries> 23 </ResourceDictionary.MergedDictionaries>
24 </ResourceDictionary> 24 </ResourceDictionary>
25 </Window.Resources> 25 </Window.Resources>
diff --git a/src/test/burn/WixToolset.WixBA/Styles.xaml b/src/test/burn/WixToolset.WixBA/Styles.xaml
index fa0afc4f..4e0b21a8 100644
--- a/src/test/burn/WixToolset.WixBA/Styles.xaml
+++ b/src/test/burn/WixToolset.WixBA/Styles.xaml
@@ -18,8 +18,8 @@
18 <System:Double x:Key="FontSizeButton">14</System:Double> 18 <System:Double x:Key="FontSizeButton">14</System:Double>
19 19
20 <!-- Images --> 20 <!-- Images -->
21 <BitmapImage x:Key="LogoOverLightBackground" UriSource="pack://application:,,,/WixBA;component/resources/logo-white-hollow.png" /> 21 <BitmapImage x:Key="LogoOverLightBackground" UriSource="pack://application:,,,/WixToolset.WixBA;component/resources/logo-white-hollow.png" />
22 <BitmapImage x:Key="LogoOverDarkBackground" UriSource="pack://application:,,,/WixBA;component/resources/logo-black-hollow.png" /> 22 <BitmapImage x:Key="LogoOverDarkBackground" UriSource="pack://application:,,,/WixToolset.WixBA;component/resources/logo-black-hollow.png" />
23 23
24 <!-- Colors --> 24 <!-- Colors -->
25 <Color x:Key="ProgressIndicatorColor">#FF1EF1E8</Color> 25 <Color x:Key="ProgressIndicatorColor">#FF1EF1E8</Color>
diff --git a/src/test/burn/WixToolset.WixBA/UpdateViewModel.cs b/src/test/burn/WixToolset.WixBA/UpdateViewModel.cs
index 80d894cb..dc98c858 100644
--- a/src/test/burn/WixToolset.WixBA/UpdateViewModel.cs
+++ b/src/test/burn/WixToolset.WixBA/UpdateViewModel.cs
@@ -38,6 +38,7 @@ namespace WixToolset.WixBA
38 WixBA.Model.Bootstrapper.DetectUpdateBegin += this.DetectUpdateBegin; 38 WixBA.Model.Bootstrapper.DetectUpdateBegin += this.DetectUpdateBegin;
39 WixBA.Model.Bootstrapper.DetectUpdate += this.DetectUpdate; 39 WixBA.Model.Bootstrapper.DetectUpdate += this.DetectUpdate;
40 WixBA.Model.Bootstrapper.DetectUpdateComplete += this.DetectUpdateComplete; 40 WixBA.Model.Bootstrapper.DetectUpdateComplete += this.DetectUpdateComplete;
41 WixBA.Model.Bootstrapper.DetectComplete += this.DetectComplete;
41 42
42 this.root.PropertyChanged += new PropertyChangedEventHandler(this.RootPropertyChanged); 43 this.root.PropertyChanged += new PropertyChangedEventHandler(this.RootPropertyChanged);
43 44
@@ -201,7 +202,15 @@ namespace WixToolset.WixBA
201 else if ((LaunchAction.Uninstall == WixBA.Model.Command.Action) || (UpdateState.Initializing == this.State) || (UpdateState.Checking == this.State)) 202 else if ((LaunchAction.Uninstall == WixBA.Model.Command.Action) || (UpdateState.Initializing == this.State) || (UpdateState.Checking == this.State))
202 { 203 {
203 this.State = UpdateState.Unknown; 204 this.State = UpdateState.Unknown;
204 } 205 }
206 }
207
208 private void DetectComplete(object sender, DetectCompleteEventArgs e)
209 {
210 if (this.State == UpdateState.Initializing || this.State == UpdateState.Checking)
211 {
212 this.State = UpdateState.Unknown;
213 }
205 } 214 }
206 } 215 }
207} 216}
diff --git a/src/test/burn/WixToolset.WixBA/WixBA.cs b/src/test/burn/WixToolset.WixBA/WixBA.cs
index 2d680c7e..68288f2d 100644
--- a/src/test/burn/WixToolset.WixBA/WixBA.cs
+++ b/src/test/burn/WixToolset.WixBA/WixBA.cs
@@ -163,19 +163,19 @@ namespace WixToolset.WixBA
163 WixBA.Model = new Model(this); 163 WixBA.Model = new Model(this);
164 WixBA.Dispatcher = Threading.Dispatcher.CurrentDispatcher; 164 WixBA.Dispatcher = Threading.Dispatcher.CurrentDispatcher;
165 RootViewModel viewModel = new RootViewModel(); 165 RootViewModel viewModel = new RootViewModel();
166 166 WixBA.View = new RootView(viewModel);
167 // Kick off detect which will populate the view models.
168 this.Engine.Detect();
169 167
170 // Create a Window to show UI. 168 // Create a Window to show UI.
171 if (WixBA.Model.Command.Display == Display.Passive || 169 if (WixBA.Model.Command.Display == Display.Passive ||
172 WixBA.Model.Command.Display == Display.Full) 170 WixBA.Model.Command.Display == Display.Full)
173 { 171 {
174 this.Engine.Log(LogLevel.Verbose, "Creating a UI."); 172 this.Engine.Log(LogLevel.Verbose, "Creating a UI.");
175 WixBA.View = new RootView(viewModel);
176 WixBA.View.Show(); 173 WixBA.View.Show();
177 } 174 }
178 175
176 // Kick off detect which will populate the view models.
177 this.Engine.Detect();
178
179 Threading.Dispatcher.Run(); 179 Threading.Dispatcher.Run();
180 180
181 this.PostTelemetry(); 181 this.PostTelemetry();
diff --git a/src/test/burn/WixToolset.WixBA/WixToolset.WixBA.csproj b/src/test/burn/WixToolset.WixBA/WixToolset.WixBA.csproj
index 72ef5795..2a2a0073 100644
--- a/src/test/burn/WixToolset.WixBA/WixToolset.WixBA.csproj
+++ b/src/test/burn/WixToolset.WixBA/WixToolset.WixBA.csproj
@@ -2,7 +2,7 @@
2<!-- 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<!-- 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. -->
3<Project Sdk="Microsoft.NET.Sdk"> 3<Project Sdk="Microsoft.NET.Sdk">
4 <PropertyGroup> 4 <PropertyGroup>
5 <TargetFramework>net45</TargetFramework> 5 <TargetFrameworks>net45;net5.0-windows</TargetFrameworks>
6 <AssemblyName>WixToolset.WixBA</AssemblyName> 6 <AssemblyName>WixToolset.WixBA</AssemblyName>
7 <RootNamespace>WixToolset.WixBA</RootNamespace> 7 <RootNamespace>WixToolset.WixBA</RootNamespace>
8 <DebugType>embedded</DebugType> 8 <DebugType>embedded</DebugType>
@@ -13,38 +13,28 @@
13 <GenerateAssemblyConfigurationAttribute>false</GenerateAssemblyConfigurationAttribute> 13 <GenerateAssemblyConfigurationAttribute>false</GenerateAssemblyConfigurationAttribute>
14 <GenerateAssemblyCopyrightAttribute>false</GenerateAssemblyCopyrightAttribute> 14 <GenerateAssemblyCopyrightAttribute>false</GenerateAssemblyCopyrightAttribute>
15 <GenerateAssemblyProductAttribute>false</GenerateAssemblyProductAttribute> 15 <GenerateAssemblyProductAttribute>false</GenerateAssemblyProductAttribute>
16 <EnableDynamicLoading>true</EnableDynamicLoading>
17 <UseWPF>true</UseWPF>
18 <RollForward>Major</RollForward>
19 <!-- https://stackoverflow.com/questions/58844785/how-to-reference-system-windows-forms-in-net-core-3-0-for-wpf-apps -->
20 <UseWindowsForms>true</UseWindowsForms>
16 </PropertyGroup> 21 </PropertyGroup>
17 <ItemGroup> 22 <ItemGroup Condition="'$(TargetFramework)'=='net45'">
18 <Page Include="Styles.xaml"> 23 <Content Include="WixBA.BootstrapperCore.config" CopyToOutputDirectory="PreserveNewest" />
19 <Generator>MSBuild:Compile</Generator>
20 <SubType>Designer</SubType>
21 </Page>
22 <Page Include="RootView.xaml">
23 <Generator>MSBuild:Compile</Generator>
24 <SubType>Designer</SubType>
25 </Page>
26 <None Include="WixBA.BootstrapperCore.config">
27 <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
28 <SubType>Designer</SubType>
29 </None>
30 </ItemGroup> 24 </ItemGroup>
31 <ItemGroup> 25 <ItemGroup>
32 <Resource Include="Resources\logo-white-hollow.png" /> 26 <Resource Include="Resources\logo-white-hollow.png" />
33 <Resource Include="Resources\logo-black-hollow.png" /> 27 <Resource Include="Resources\logo-black-hollow.png" />
34 </ItemGroup> 28 </ItemGroup>
35 <ItemGroup> 29 <ItemGroup Condition="'$(TargetFramework)'=='net45'">
36 <Reference Include="PresentationCore" /> 30 <Reference Include="PresentationCore" />
37 <Reference Include="PresentationFramework" /> 31 <Reference Include="PresentationFramework" />
38 <Reference Include="System.Windows.Forms" /> 32 <Reference Include="System.Windows.Forms" />
39 <Reference Include="System.Xaml" /> 33 <Reference Include="System.Xaml" />
40 <Reference Include="WindowsBase" /> 34 <Reference Include="WindowsBase" />
41 </ItemGroup> 35 </ItemGroup>
42 <ItemGroup>
43 <PackageReference Include="WixToolset.Mba.Core" Version="4.0.0-preview.0-build.0" />
44 </ItemGroup>
45 36
46 <ItemGroup> 37 <ItemGroup>
47 <PackageReference Include="Microsoft.SourceLink.GitHub" Version="1.0.0" PrivateAssets="All" /> 38 <PackageReference Include="WixToolset.Mba.Core" />
48 <PackageReference Include="GitInfo" Version="2.1.2" PrivateAssets="All" />
49 </ItemGroup> 39 </ItemGroup>
50</Project> \ No newline at end of file 40</Project> \ No newline at end of file
diff --git a/src/test/burn/WixToolset.WixBA/WixToolset.WixBA_x64.csproj b/src/test/burn/WixToolset.WixBA/WixToolset.WixBA_x64.csproj
new file mode 100644
index 00000000..bc1aa7bf
--- /dev/null
+++ b/src/test/burn/WixToolset.WixBA/WixToolset.WixBA_x64.csproj
@@ -0,0 +1,40 @@
1<?xml version="1.0" encoding="utf-8"?>
2<!-- 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. -->
3<Project Sdk="Microsoft.NET.Sdk">
4 <PropertyGroup>
5 <TargetFrameworks>net45;net5.0-windows</TargetFrameworks>
6 <AssemblyName>WixToolset.WixBA</AssemblyName>
7 <RootNamespace>WixToolset.WixBA</RootNamespace>
8 <DebugType>embedded</DebugType>
9 <RuntimeIdentifier>win-x64</RuntimeIdentifier>
10 <AssemblyTitle>WixToolset.WixBA</AssemblyTitle>
11 <Description>WiX Bootstrapper Application</Description>
12 <GenerateAssemblyCompanyAttribute>false</GenerateAssemblyCompanyAttribute>
13 <GenerateAssemblyConfigurationAttribute>false</GenerateAssemblyConfigurationAttribute>
14 <GenerateAssemblyCopyrightAttribute>false</GenerateAssemblyCopyrightAttribute>
15 <GenerateAssemblyProductAttribute>false</GenerateAssemblyProductAttribute>
16 <EnableDynamicLoading>true</EnableDynamicLoading>
17 <UseWPF>true</UseWPF>
18 <RollForward>Major</RollForward>
19 <!-- https://stackoverflow.com/questions/58844785/how-to-reference-system-windows-forms-in-net-core-3-0-for-wpf-apps -->
20 <UseWindowsForms>true</UseWindowsForms>
21 </PropertyGroup>
22 <ItemGroup Condition="'$(TargetFramework)'=='net45'">
23 <Content Include="WixBA.BootstrapperCore.config" CopyToOutputDirectory="PreserveNewest" />
24 </ItemGroup>
25 <ItemGroup>
26 <Resource Include="Resources\logo-white-hollow.png" />
27 <Resource Include="Resources\logo-black-hollow.png" />
28 </ItemGroup>
29 <ItemGroup Condition="'$(TargetFramework)'=='net45'">
30 <Reference Include="PresentationCore" />
31 <Reference Include="PresentationFramework" />
32 <Reference Include="System.Windows.Forms" />
33 <Reference Include="System.Xaml" />
34 <Reference Include="WindowsBase" />
35 </ItemGroup>
36
37 <ItemGroup>
38 <PackageReference Include="WixToolset.Mba.Core" />
39 </ItemGroup>
40</Project> \ No newline at end of file
diff --git a/src/test/burn/WixToolsetTest.BurnE2E/BasicFunctionalityTests.cs b/src/test/burn/WixToolsetTest.BurnE2E/BasicFunctionalityTests.cs
index 5df86fff..f8361d90 100644
--- a/src/test/burn/WixToolsetTest.BurnE2E/BasicFunctionalityTests.cs
+++ b/src/test/burn/WixToolsetTest.BurnE2E/BasicFunctionalityTests.cs
@@ -14,163 +14,75 @@ namespace WixToolsetTest.BurnE2E
14 [Fact] 14 [Fact]
15 public void CanInstallAndUninstallSimpleBundle_x86_wixstdba() 15 public void CanInstallAndUninstallSimpleBundle_x86_wixstdba()
16 { 16 {
17 var packageA = this.CreatePackageInstaller("PackageA"); 17 this.CanInstallAndUninstallSimpleBundle("PackageA", "BundleA");
18
19 var bundleA = this.CreateBundleInstaller("BundleA");
20
21 var packageASourceCodeInstalled = packageA.GetInstalledFilePath("Package.wxs");
22
23 // Source file should *not* be installed
24 Assert.False(File.Exists(packageASourceCodeInstalled), $"Package A payload should not be there on test start: {packageASourceCodeInstalled}");
25
26 bundleA.Install();
27
28 var cachedBundlePath = bundleA.VerifyRegisteredAndInPackageCache();
29
30 // Source file should be installed
31 Assert.True(File.Exists(packageASourceCodeInstalled), String.Concat("Should have found Package A payload installed at: ", packageASourceCodeInstalled));
32
33 bundleA.Uninstall(cachedBundlePath);
34
35 // Source file should *not* be installed
36 Assert.False(File.Exists(packageASourceCodeInstalled), String.Concat("Package A payload should have been removed by uninstall from: ", packageASourceCodeInstalled));
37
38 bundleA.VerifyUnregisteredAndRemovedFromPackageCache(cachedBundlePath);
39 } 18 }
40 19
41 [Fact] 20 [Fact]
42 public void CanInstallAndUninstallSimpleBundle_x86_testba() 21 public void CanInstallAndUninstallSimpleBundle_x86_testba()
43 { 22 {
44 var packageA = this.CreatePackageInstaller("PackageA"); 23 this.CanInstallAndUninstallSimpleBundle("PackageA", "BundleB");
45
46 var bundleB = this.CreateBundleInstaller("BundleB");
47
48 var packageASourceCodeInstalled = packageA.GetInstalledFilePath("Package.wxs");
49
50 // Source file should *not* be installed
51 Assert.False(File.Exists(packageASourceCodeInstalled), $"Package A payload should not be there on test start: {packageASourceCodeInstalled}");
52
53 bundleB.Install();
54
55 var cachedBundlePath = bundleB.VerifyRegisteredAndInPackageCache();
56
57 // Source file should be installed
58 Assert.True(File.Exists(packageASourceCodeInstalled), String.Concat("Should have found Package A payload installed at: ", packageASourceCodeInstalled));
59
60 bundleB.Uninstall(cachedBundlePath);
61
62 // Source file should *not* be installed
63 Assert.False(File.Exists(packageASourceCodeInstalled), String.Concat("Package A payload should have been removed by uninstall from: ", packageASourceCodeInstalled));
64
65 bundleB.VerifyUnregisteredAndRemovedFromPackageCache(cachedBundlePath);
66 } 24 }
67 25
68 [Fact] 26 [Fact]
69 public void CanInstallAndUninstallSimpleBundle_x86_dnctestba() 27 public void CanInstallAndUninstallSimpleBundle_x86_dnctestba()
70 { 28 {
71 var packageA = this.CreatePackageInstaller("PackageA"); 29 this.CanInstallAndUninstallSimpleBundle("PackageA", "BundleC");
72 30 }
73 var bundleC = this.CreateBundleInstaller("BundleC");
74
75 var packageASourceCodeInstalled = packageA.GetInstalledFilePath("Package.wxs");
76
77 // Source file should *not* be installed
78 Assert.False(File.Exists(packageASourceCodeInstalled), $"Package A payload should not be there on test start: {packageASourceCodeInstalled}");
79
80 bundleC.Install();
81
82 var cachedBundlePath = bundleC.VerifyRegisteredAndInPackageCache();
83
84 // Source file should be installed
85 Assert.True(File.Exists(packageASourceCodeInstalled), String.Concat("Should have found Package A payload installed at: ", packageASourceCodeInstalled));
86
87 bundleC.Uninstall(cachedBundlePath);
88
89 // Source file should *not* be installed
90 Assert.False(File.Exists(packageASourceCodeInstalled), String.Concat("Package A payload should have been removed by uninstall from: ", packageASourceCodeInstalled));
91 31
92 bundleC.VerifyUnregisteredAndRemovedFromPackageCache(cachedBundlePath); 32 [Fact]
33 public void CanInstallAndUninstallSimpleBundle_x86_wixba()
34 {
35 this.CanInstallAndUninstallSimpleBundle("PackageA", "BundleD");
93 } 36 }
94 37
95 [Fact] 38 [Fact]
96 public void CanInstallAndUninstallSimpleBundle_x64_wixstdba() 39 public void CanInstallAndUninstallSimpleBundle_x64_wixstdba()
97 { 40 {
98 var packageA_x64 = this.CreatePackageInstaller("PackageA_x64"); 41 this.CanInstallAndUninstallSimpleBundle("PackageA_x64", "BundleA_x64");
99
100 var bundleA_x64 = this.CreateBundleInstaller("BundleA_x64");
101
102 var packageASourceCodeInstalled = packageA_x64.GetInstalledFilePath("Package.wxs");
103
104 // Source file should *not* be installed
105 Assert.False(File.Exists(packageASourceCodeInstalled), $"Package A x64 payload should not be there on test start: {packageASourceCodeInstalled}");
106
107 bundleA_x64.Install();
108
109 var cachedBundlePath = bundleA_x64.VerifyRegisteredAndInPackageCache();
110
111 // Source file should be installed
112 Assert.True(File.Exists(packageASourceCodeInstalled), String.Concat("Should have found Package A x64 payload installed at: ", packageASourceCodeInstalled));
113
114 bundleA_x64.Uninstall(cachedBundlePath);
115
116 // Source file should *not* be installed
117 Assert.False(File.Exists(packageASourceCodeInstalled), String.Concat("Package A x64 payload should have been removed by uninstall from: ", packageASourceCodeInstalled));
118
119 bundleA_x64.VerifyUnregisteredAndRemovedFromPackageCache(cachedBundlePath);
120 } 42 }
121 43
122 [Fact] 44 [Fact]
123 public void CanInstallAndUninstallSimpleBundle_x64_testba() 45 public void CanInstallAndUninstallSimpleBundle_x64_testba()
124 { 46 {
125 var packageA_x64 = this.CreatePackageInstaller("PackageA_x64"); 47 this.CanInstallAndUninstallSimpleBundle("PackageA_x64", "BundleB_x64");
126
127 var bundleB_x64 = this.CreateBundleInstaller("BundleB_x64");
128
129 var packageASourceCodeInstalled = packageA_x64.GetInstalledFilePath("Package.wxs");
130
131 // Source file should *not* be installed
132 Assert.False(File.Exists(packageASourceCodeInstalled), $"Package A x64 payload should not be there on test start: {packageASourceCodeInstalled}");
133
134 bundleB_x64.Install();
135
136 var cachedBundlePath = bundleB_x64.VerifyRegisteredAndInPackageCache();
137
138 // Source file should be installed
139 Assert.True(File.Exists(packageASourceCodeInstalled), String.Concat("Should have found Package A x64 payload installed at: ", packageASourceCodeInstalled));
140
141 bundleB_x64.Uninstall(cachedBundlePath);
142
143 // Source file should *not* be installed
144 Assert.False(File.Exists(packageASourceCodeInstalled), String.Concat("Package A x64 payload should have been removed by uninstall from: ", packageASourceCodeInstalled));
145
146 bundleB_x64.VerifyUnregisteredAndRemovedFromPackageCache(cachedBundlePath);
147 } 48 }
148 49
149 [Fact] 50 [Fact]
150 public void CanInstallAndUninstallSimpleBundle_x64_dnctestba() 51 public void CanInstallAndUninstallSimpleBundle_x64_dnctestba()
151 { 52 {
152 var packageA_x64 = this.CreatePackageInstaller("PackageA_x64"); 53 this.CanInstallAndUninstallSimpleBundle("PackageA_x64", "BundleC_x64");
54 }
55
56 [Fact]
57 public void CanInstallAndUninstallSimpleBundle_x64_dncwixba()
58 {
59 this.CanInstallAndUninstallSimpleBundle("PackageA_x64", "BundleD_x64");
60 }
61
62 private void CanInstallAndUninstallSimpleBundle(string packageName, string bundleName)
63 {
64 var package = this.CreatePackageInstaller(packageName);
153 65
154 var bundleC_x64 = this.CreateBundleInstaller("BundleC_x64"); 66 var bundle = this.CreateBundleInstaller(bundleName);
155 67
156 var packageASourceCodeInstalled = packageA_x64.GetInstalledFilePath("Package.wxs"); 68 var packageSourceCodeInstalled = package.GetInstalledFilePath("Package.wxs");
157 69
158 // Source file should *not* be installed 70 // Source file should *not* be installed
159 Assert.False(File.Exists(packageASourceCodeInstalled), $"Package A x64 payload should not be there on test start: {packageASourceCodeInstalled}"); 71 Assert.False(File.Exists(packageSourceCodeInstalled), $"{packageName} payload should not be there on test start: {packageSourceCodeInstalled}");
160 72
161 bundleC_x64.Install(); 73 bundle.Install();
162 74
163 var cachedBundlePath = bundleC_x64.VerifyRegisteredAndInPackageCache(); 75 var cachedBundlePath = bundle.VerifyRegisteredAndInPackageCache();
164 76
165 // Source file should be installed 77 // Source file should be installed
166 Assert.True(File.Exists(packageASourceCodeInstalled), String.Concat("Should have found Package A x64 payload installed at: ", packageASourceCodeInstalled)); 78 Assert.True(File.Exists(packageSourceCodeInstalled), $"Should have found {packageName} payload installed at: {packageSourceCodeInstalled}");
167 79
168 bundleC_x64.Uninstall(cachedBundlePath); 80 bundle.Uninstall(cachedBundlePath);
169 81
170 // Source file should *not* be installed 82 // Source file should *not* be installed
171 Assert.False(File.Exists(packageASourceCodeInstalled), String.Concat("Package A x64 payload should have been removed by uninstall from: ", packageASourceCodeInstalled)); 83 Assert.False(File.Exists(packageSourceCodeInstalled), $"{packageName} payload should have been removed by uninstall from: {packageSourceCodeInstalled}");
172 84
173 bundleC_x64.VerifyUnregisteredAndRemovedFromPackageCache(cachedBundlePath); 85 bundle.VerifyUnregisteredAndRemovedFromPackageCache(cachedBundlePath);
174 } 86 }
175 } 87 }
176} 88}