winget-cli/tools/CorrelationTestbed/InSandboxScript.ps1

122 строки
3.5 KiB
PowerShell

Param(
[String] $DesktopAppInstallerPath,
[String[]] $DesktopAppInstallerDependencyPath,
[String] $PackageIdentifier,
[String] $SourceName,
[String] $OutputPath,
[Switch] $UseDev,
[Switch] $MetadataCollection,
[String] $System32Path
)
function Get-ARPTable {
$registry_paths = @('HKLM:\Software\Microsoft\Windows\CurrentVersion\Uninstall\*','HKLM:\Software\WOW6432Node\Microsoft\Windows\CurrentVersion\Uninstall\*', 'HKCU:\Software\Microsoft\Windows\CurrentVersion\Uninstall\*', 'HKCU:\Software\WOW6432Node\Microsoft\Windows\CurrentVersion\Uninstall\*')
return Get-ItemProperty $registry_paths -ErrorAction SilentlyContinue |
Select-Object DisplayName, DisplayVersion, Publisher, @{N='ProductCode'; E={$_.PSChildName}} |
Where-Object {$null -ne $_.DisplayName }
}
$ProgressPreference = 'SilentlyContinue'
$desktopPath = "C:\Users\WDAGUtilityAccount\Desktop"
$regFilesDirPath = Join-Path $desktopPath "RegFiles"
if (Test-Path $regFilesDirPath)
{
foreach ($regFile in (Get-ChildItem $regFilesDirPath))
{
Write-Host @"
--> Importing reg file $($regFile.FullName)
"@
reg import $($regFile.FullName)
}
}
Write-Host @"
--> Installing WinGet
"@
if ($UseDev)
{
foreach($dependency in $DesktopAppInstallerDependencyPath)
{
Write-Host @"
----> Installing $dependency
"@
Add-AppxPackage -Path $dependency
}
Write-Host @"
----> Enabling dev mode
"@
reg add "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\AppModelUnlock" /t REG_DWORD /f /v "AllowDevelopmentWithoutDevLicense" /d "1"
$devPackageManifestPath = Join-Path $desktopPath "DevPackage\AppxManifest.xml"
Write-Host @"
----> Installing $devPackageManifestPath
"@
Add-AppxPackage -Path $devPackageManifestPath -Register
}
else
{
Install-PackageProvider -Name NuGet -Force | Out-Null
Install-Module Microsoft.WinGet.Client -Force | Out-Null
Repair-WingetPackageManager -Latest
}
$originalARP = Get-ARPTable
Write-Host @"
--> Installing $PackageIdentifier
"@
$installAndCorrelateOutPath = Join-Path $OutputPath "install_and_correlate.json"
$installAndCheckCorrelationExe = Join-Path $desktopPath "InstallAndCheckCorrelation\InstallAndCheckCorrelation.exe"
$installAndCheckCorrelationArgs = @('-id', $PackageIdentifier, '-src', $SourceName, '-out', $installAndCorrelateOutPath)
if ($UseDev)
{
$installAndCheckCorrelationArgs += '-dev'
}
if ($MetadataCollection)
{
$wingetUtilPath = Join-Path $PSScriptRoot "WinGetUtil.dll"
$installAndCheckCorrelationArgs += ('-meta', $wingetUtilPath, '-sys32', $System32Path)
}
& $installAndCheckCorrelationExe $installAndCheckCorrelationArgs
Write-Host @"
--> Copying logs
"@
if ($UseDev)
{
Copy-Item -Recurse (Join-Path $env:LOCALAPPDATA "Packages\WinGetDevCLI_8wekyb3d8bbwe\LocalState\DiagOutputDir") $OutputPath
}
else
{
Copy-Item -Recurse (Join-Path $env:LOCALAPPDATA "Packages\Microsoft.DesktopAppInstaller_8wekyb3d8bbwe\LocalState\DiagOutputDir") $OutputPath
}
Write-Host @"
--> Comparing ARP Entries
"@
$arpCompared = (Compare-Object (Get-ARPTable) $originalARP -Property DisplayName,DisplayVersion,Publisher,ProductCode)
$arpCompared | Select-Object -Property * -ExcludeProperty SideIndicator | Format-Table
$arpCompared | Select-Object -Property * -ExcludeProperty SideIndicator | Format-Table | Out-File (Join-Path $OutputPath "ARPCompare.txt")
"Done" | Out-File (Join-Path $OutputPath "done.txt")