winutil/functions/private/Install-WinUtilWinget.ps1
Chris Titus a56aeefc7f
Test 2023 7 20 (#917)
* Remove Edge from Start Menu and Desktop (#898)

* Update edgeremoval.bat

* Fix Edge not being deleted from Desktop

* Compile Winutil

* fix yubikey users service

* Compile Winutil

* AJRouter and Kiosk Disable

* Compile Winutil

* TermService enable

This service will hang when applying tweaks. Changing to Auto from Manual

* Compile Winutil

* Fix bug with Telemetry Tweak

services should NOT be tweaked here

* dupe tweak removal

* hibernate off and delete

* Compile Winutil

* Cleaning Windows Update Folder

* Compile Winutil

* GameDVR Fix

* Compile Winutil

* Fixed consistency in variable names and values inside edgeremoval.bat (#902)

* Compile Winutil

* add spdx license

* Compile Winutil

* Updated Dark mode check (#904)

* Compile Winutil

* Update Dark Mode Check

updated the theme check to use the existing function

* Description update

Updated Description

---------

Co-authored-by: DeveloperDurp <DeveloperDurp@users.noreply.github.com>

* Compile Winutil

* fixes #569

* Compile Winutil

* Added Bing Search toggle plus some support functions (#908)

* Compile Winutil

* Update winget.ps1

* Compile Winutil

* Fix Winget Install

* Compile Winutil

* Update Install-WinUtilWinget.ps1

* Compile Winutil

* Update Install-WinUtilWinget.ps1

* Compile Winutil

* Update Install-WinUtilWinget.ps1

* Compile Winutil

* Winget fixes

* Compile Winutil

---------

Co-authored-by: Antun Nitraj <antnitraj@gmail.com>
Co-authored-by: ChrisTitusTech <ChrisTitusTech@users.noreply.github.com>
Co-authored-by: DeveloperDurp <developerdurp@durp.info>
Co-authored-by: DeveloperDurp <DeveloperDurp@users.noreply.github.com>
2023-07-27 16:06:41 -05:00

103 lines
4.1 KiB
PowerShell

function Get-LatestHash {
$shaUrl = ((Invoke-WebRequest $apiLatestUrl -UseBasicParsing | ConvertFrom-Json).assets | Where-Object { $_.name -match '^Microsoft.DesktopAppInstaller_8wekyb3d8bbwe.txt$' }).browser_download_url
$shaFile = Join-Path -Path $tempFolder -ChildPath 'Microsoft.DesktopAppInstaller_8wekyb3d8bbwe.txt'
$WebClient.DownloadFile($shaUrl, $shaFile)
Get-Content $shaFile
}
function Install-WinUtilWinget {
<#
.DESCRIPTION
Function is meant to ensure winget is installed
#>
Try{
Write-Host "Checking if Winget is Installed..."
if (Test-WinUtilPackageManager -winget) {
#Checks if winget executable exists and if the Windows Version is 1809 or higher
Write-Host "Winget Already Installed"
return
}
#Gets the computer's information
if ($null -eq $sync.ComputerInfo){
$ComputerInfo = Get-ComputerInfo -ErrorAction Stop
}
Else {
$ComputerInfo = $sync.ComputerInfo
}
if (($ComputerInfo.WindowsVersion) -lt "1809") {
#Checks if Windows Version is too old for winget
Write-Host "Winget is not supported on this version of Windows (Pre-1809)"
return
}
Write-Host "Running Alternative Installer and Direct Installing"
$ErrorActionPreference = "Stop"
$apiLatestUrl = 'https://api.github.com/repos/microsoft/winget-cli/releases/latest'
[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12
# Hide the progress bar of Invoke-WebRequest
$oldProgressPreference = $ProgressPreference
$ProgressPreference = 'SilentlyContinue'
$desktopAppInstaller = @{
fileName = 'Microsoft.DesktopAppInstaller_8wekyb3d8bbwe.msixbundle'
url = $(((Invoke-WebRequest $apiLatestUrl -UseBasicParsing | ConvertFrom-Json).assets | Where-Object { $_.name -match '^Microsoft.DesktopAppInstaller_8wekyb3d8bbwe.msixbundle$' }).browser_download_url)
hash = $(Get-LatestHash)
}
$vcLibsUwp = @{
fileName = 'Microsoft.VCLibs.x64.14.00.Desktop.appx'
url = 'https://aka.ms/Microsoft.VCLibs.x64.14.00.Desktop.appx'
hash = '6602159c341bafea747d0edf15669ac72df8817299fbfaa90469909e06794256'
}
$uiLibs = @{
nupkg = @{
fileName = 'microsoft.ui.xaml.2.7.0.nupkg'
url = 'https://www.nuget.org/api/v2/package/Microsoft.UI.Xaml/2.7.0'
hash = "422FD24B231E87A842C4DAEABC6A335112E0D35B86FAC91F5CE7CF327E36A591"
}
uwp = @{
fileName = 'Microsoft.UI.Xaml.2.7.appx'
}
}
$uiLibs.uwp.file = $PWD.Path + '\' + $uiLibs.uwp.fileName
$uiLibs.uwp.zipPath = '*/x64/*/' + $uiLibs.uwp.fileName
$dependencies = @($desktopAppInstaller, $vcLibsUwp, $uiLibs.nupkg)
foreach ($dependency in $dependencies) {
$dependency.file = $dependency.fileName
Invoke-WebRequest $dependency.url -OutFile $dependency.file
}
$uiLibs.nupkg.file = $PSScriptRoot + '\' + $uiLibs.nupkg.fileName
Add-Type -Assembly System.IO.Compression.FileSystem
$uiLibs.nupkg.zip = [IO.Compression.ZipFile]::OpenRead($uiLibs.nupkg.file)
$uiLibs.nupkg.zipUwp = $uiLibs.nupkg.zip.Entries | Where-Object { $_.FullName -like $uiLibs.uwp.zipPath }
[System.IO.Compression.ZipFileExtensions]::ExtractToFile($uiLibs.nupkg.zipUwp, $uiLibs.uwp.file, $true)
$uiLibs.nupkg.zip.Dispose()
Add-AppxPackage -Path $desktopAppInstaller.file -DependencyPath $vcLibsUwp.file,$uiLibs.uwp.file
Remove-Item $desktopAppInstaller.file
Remove-Item $vcLibsUwp.file
Remove-Item $uiLibs.nupkg.file
Remove-Item $uiLibs.uwp.file
Write-Host "WinGet installed!" -ForegroundColor Green
$ProgressPreference = $oldProgressPreference
Update-EnvironmentVariables
Write-Host "Winget Installed"
}
Catch{
throw [WingetFailedInstall]::new('Failed to install')
}
}