mirror of
https://github.com/ChrisTitusTech/winutil.git
synced 2024-11-15 07:05:51 -06:00
1891ea7966
* Remove All Trailing Whitespace Characters in '.ps1' Files * Remove All Trailing Whitespace Characters in '.json' Files * Remove All Trailing Whitespace Characters in '.yaml' Files * Remove All Trailing Whitespace Characters in Different Files * Remove Even More Trailing Whitespace Characters
67 lines
3.3 KiB
PowerShell
67 lines
3.3 KiB
PowerShell
function Install-WinUtilWinget {
|
|
<#
|
|
|
|
.SYNOPSIS
|
|
Installs Winget if it is not already installed.
|
|
|
|
.DESCRIPTION
|
|
This function will download the latest version of Winget and install it. If Winget is already installed, it will do nothing.
|
|
#>
|
|
$isWingetInstalled = Test-WinUtilPackageManager -winget
|
|
|
|
Try {
|
|
if ($isWingetInstalled -eq "installed") {
|
|
Write-Host "`nWinget is already installed.`r" -ForegroundColor Green
|
|
return
|
|
} elseif ($isWingetInstalled -eq "outdated") {
|
|
Write-Host "`nWinget is Outdated. Continuing with install.`r" -ForegroundColor Yellow
|
|
} else {
|
|
Write-Host "`nWinget is not Installed. Continuing with install.`r" -ForegroundColor Red
|
|
}
|
|
|
|
# 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)" -ForegroundColor Red
|
|
return
|
|
}
|
|
|
|
# Install Winget via GitHub method.
|
|
# Used part of my own script with some modification: ruxunderscore/windows-initialization
|
|
Write-Host "Downloading Winget Prerequsites`n"
|
|
Get-WinUtilWingetPrerequisites
|
|
Write-Host "Downloading Winget and License File`r"
|
|
Get-WinUtilWingetLatest
|
|
Write-Host "Installing Winget w/ Prerequsites`r"
|
|
Add-AppxProvisionedPackage -Online -PackagePath $ENV:TEMP\Microsoft.DesktopAppInstaller.msixbundle -DependencyPackagePath $ENV:TEMP\Microsoft.VCLibs.x64.Desktop.appx, $ENV:TEMP\Microsoft.UI.Xaml.x64.appx -LicensePath $ENV:TEMP\License1.xml
|
|
Write-Host "Manually adding Winget Sources, from Winget CDN."
|
|
Add-AppxPackage -Path https://cdn.winget.microsoft.com/cache/source.msix #Seems some installs of Winget don't add the repo source, this should makes sure that it's installed every time.
|
|
Write-Host "Winget Installed" -ForegroundColor Green
|
|
Write-Host "Enabling NuGet and Module..."
|
|
Install-PackageProvider -Name NuGet -Force
|
|
Install-Module -Name Microsoft.WinGet.Client -Force
|
|
# Winget only needs a refresh of the environment variables to be used.
|
|
Write-Output "Refreshing Environment Variables...`n"
|
|
$ENV:PATH = [System.Environment]::GetEnvironmentVariable("Path", "Machine") + ";" + [System.Environment]::GetEnvironmentVariable("Path", "User")
|
|
} Catch {
|
|
Write-Host "Failure detected while installing via GitHub method. Continuing with Chocolatey method as fallback." -ForegroundColor Red
|
|
# In case install fails via GitHub method.
|
|
Try {
|
|
# Install Choco if not already present
|
|
Install-WinUtilChoco
|
|
Start-Process -Verb runas -FilePath powershell.exe -ArgumentList "choco install winget-cli"
|
|
Write-Host "Winget Installed" -ForegroundColor Green
|
|
Write-Output "Refreshing Environment Variables...`n"
|
|
$ENV:PATH = [System.Environment]::GetEnvironmentVariable("Path", "Machine") + ";" + [System.Environment]::GetEnvironmentVariable("Path", "User")
|
|
} Catch {
|
|
throw [WingetFailedInstall]::new('Failed to install!')
|
|
}
|
|
}
|
|
}
|