112 lines
4 KiB
PowerShell
112 lines
4 KiB
PowerShell
$scriptDirectory = $script:MyInvocation.MyCommand.Path | Split-Path -Parent
|
|
|
|
# List all processes to aid debugging:
|
|
Write-Host "All processes running:"
|
|
Get-Process
|
|
|
|
tasklist /svc
|
|
|
|
# Add this test directory as an exclusion for Windows Defender
|
|
Write-Host "Add $scriptDirectory as Exclusion Path"
|
|
Add-MpPreference -ExclusionPath $scriptDirectory
|
|
Write-Host "Add $($env:HELIX_CORRELATION_PAYLOAD) as Exclusion Path"
|
|
Add-MpPreference -ExclusionPath $env:HELIX_CORRELATION_PAYLOAD
|
|
Get-MpPreference
|
|
Get-MpComputerStatus
|
|
|
|
|
|
# Minimize all windows:
|
|
$shell = New-Object -ComObject "Shell.Application"
|
|
$shell.minimizeall()
|
|
|
|
# Kill any instances of Windows Security Alert:
|
|
$windowTitleToMatch = "*Windows Security Alert*"
|
|
$procs = Get-Process | Where {$_.MainWindowTitle -like "*Windows Security Alert*"}
|
|
foreach ($proc in $procs)
|
|
{
|
|
Write-Host "Found process with '$windowTitleToMatch' title: $proc"
|
|
$proc.Kill();
|
|
}
|
|
|
|
# Kill processes by name that are known to interfere with our tests:
|
|
$processNamesToStop = @("Microsoft.Photos", "WinStore.App", "SkypeApp", "SkypeBackgroundHost", "OneDriveSetup", "OneDrive")
|
|
foreach($procName in $processNamesToStop)
|
|
{
|
|
Write-Host "Attempting to kill $procName if it is running"
|
|
Stop-Process -ProcessName $procName -Verbose -ErrorAction Ignore
|
|
}
|
|
Write-Host "All processes running after attempting to kill unwanted processes:"
|
|
Get-Process
|
|
|
|
tasklist /svc
|
|
|
|
$platform = $env:testbuildplatform
|
|
if(!$platform)
|
|
{
|
|
$platform = "x86"
|
|
}
|
|
|
|
function UninstallApps {
|
|
Param([string[]]$appsToUninstall)
|
|
|
|
foreach($pkgName in $appsToUninstall)
|
|
{
|
|
foreach($pkg in (Get-AppxPackage $pkgName).PackageFullName)
|
|
{
|
|
Write-Output "Removing: $pkg"
|
|
Remove-AppxPackage $pkg
|
|
}
|
|
}
|
|
}
|
|
|
|
function UninstallTestApps {
|
|
Param([string[]]$appsToUninstall)
|
|
|
|
foreach($pkgName in $appsToUninstall)
|
|
{
|
|
foreach($pkg in (Get-AppxPackage $pkgName).PackageFullName)
|
|
{
|
|
Write-Output "Removing: $pkg"
|
|
Remove-AppxPackage $pkg
|
|
}
|
|
|
|
# Sometimes an app can get into a state where it is no longer returned by Get-AppxPackage, but it is still present
|
|
# which prevents other versions of the app from being installed.
|
|
# To handle this, we can directly call Remove-AppxPackage against the full name of the package. However, without
|
|
# Get-AppxPackage to find the PackageFullName, we just have to manually construct the name.
|
|
$packageFullName = "$($pkgName)_1.0.0.0_$($platform)__8wekyb3d8bbwe"
|
|
Write-Host "Removing $packageFullName if installed"
|
|
Remove-AppPackage $packageFullName -ErrorVariable appxerror -ErrorAction SilentlyContinue
|
|
if($appxerror)
|
|
{
|
|
foreach($error in $appxerror)
|
|
{
|
|
# In most cases, Remove-AppPackage will fail due to the package not being found. Don't treat this as an error.
|
|
if(!($error.Exception.Message -match "0x80073CF1"))
|
|
{
|
|
Write-Error $error
|
|
}
|
|
}
|
|
}
|
|
else
|
|
{
|
|
Write-Host "Successfully removed $packageFullName"
|
|
}
|
|
}
|
|
}
|
|
|
|
Write-Host "Uninstall AppX packages that are known to cause issues with our tests"
|
|
UninstallApps("*Skype*", "*Windows.Photos*")
|
|
|
|
Write-Host "Uninstall any of our test apps that may have been left over from previous test runs"
|
|
UninstallTestApps("NugetPackageTestApp", "NugetPackageTestAppCX", "IXMPTestApp", "MUXControlsTestApp")
|
|
|
|
Write-Host "Uninstall MUX Framework package that may have been left over from previous test runs"
|
|
# We don't want to uninstall all versions of the MUX Framework package, as there may be other apps preinstalled on the system
|
|
# that depend on it. We only uninstall the Framework package that corresponds to the version of MUX that we are testing.
|
|
[xml]$versionData = (Get-Content "version.props")
|
|
$versionMajor = $versionData.GetElementsByTagName("MUXVersionMajor").'#text'
|
|
$versionMinor = $versionData.GetElementsByTagName("MUXVersionMinor").'#text'
|
|
UninstallApps("Microsoft.UI.Xaml.$versionMajor.$versionMinor")
|
|
|
|
Get-Process |