85 lines
2.9 KiB
PowerShell
85 lines
2.9 KiB
PowerShell
#Install WinGet
|
|
#Based on this gist: https://gist.github.com/crutkas/6c2096eae387e544bd05cde246f23901
|
|
$hasPackageManager = Get-AppPackage -name 'Microsoft.DesktopAppInstaller'
|
|
if (!$hasPackageManager -or [version]$hasPackageManager.Version -lt [version]"1.10.0.0") {
|
|
"Installing winget Dependencies"
|
|
Add-AppxPackage -Path 'https://aka.ms/Microsoft.VCLibs.x64.14.00.Desktop.appx'
|
|
|
|
$releases_url = 'https://api.github.com/repos/microsoft/winget-cli/releases/latest'
|
|
|
|
[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12
|
|
$releases = Invoke-RestMethod -uri $releases_url
|
|
$latestRelease = $releases.assets | Where-Object { $_.browser_download_url.EndsWith('msixbundle') } | Select-Object -First 1
|
|
|
|
"Installing winget from $($latestRelease.browser_download_url)"
|
|
Add-AppxPackage -Path $latestRelease.browser_download_url
|
|
}
|
|
else {
|
|
"winget already installed"
|
|
}
|
|
|
|
#Configure WinGet
|
|
Write-Output "Configuring winget"
|
|
|
|
#winget config path from: https://github.com/microsoft/winget-cli/blob/master/doc/Settings.md#file-location
|
|
$settingsPath = "$env:LOCALAPPDATA\Packages\Microsoft.DesktopAppInstaller_8wekyb3d8bbwe\LocalState\settings.json";
|
|
$settingsJson =
|
|
@"
|
|
{
|
|
// For documentation on these settings, see: https://aka.ms/winget-settings
|
|
"experimentalFeatures": {
|
|
"experimentalMSStore": true,
|
|
}
|
|
}
|
|
"@;
|
|
$settingsJson | Out-File $settingsPath -Encoding utf8
|
|
|
|
#Install New apps
|
|
Write-Output "Installing Apps"
|
|
$apps = @(
|
|
@{name = "Microsoft.AzureCLI" },
|
|
@{name = "Microsoft.PowerShell" },
|
|
@{name = "Microsoft.VisualStudioCode" },
|
|
@{name = "Microsoft.WindowsTerminal"; source = "msstore" },
|
|
@{name = "Microsoft.Azure.StorageExplorer" },
|
|
@{name = "Microsoft.PowerToys" },
|
|
@{name = "Git.Git" },
|
|
@{name = "Docker.DockerDesktop" },
|
|
@{name = "Microsoft.DotNet.SDK.6" },
|
|
@{name = "Microsoft.DotNet.SDK.7" },
|
|
@{name = "GitHub.cli" },
|
|
@{name = "Canonical.Ubuntu.2204" },
|
|
@{name = "GitHub.GitHubDesktop" },
|
|
@{name = "JanDeDobbeleer.OhMyPosh" },
|
|
@{name = "Python.Python.3.10" },
|
|
@{name = "Node.js" },
|
|
@{name = "Visual Studio Enterprise 2022" }
|
|
);
|
|
Foreach ($app in $apps) {
|
|
$listApp = winget list --exact -q $app.name --accept-source-agreements
|
|
if (![String]::Join("", $listApp).Contains($app.name)) {
|
|
Write-host "Installing:" $app.name
|
|
if ($null -ne $app.source) {
|
|
winget install --exact --silent $app.name --source $app.source --accept-package-agreements
|
|
}
|
|
else {
|
|
winget install --exact --silent $app.name --accept-package-agreements
|
|
}
|
|
}
|
|
else {
|
|
Write-host "Skipping Install of " $app.name
|
|
}
|
|
}
|
|
|
|
#Remove Apps
|
|
Write-Output "Removing Apps"
|
|
|
|
$apps = "*3DPrint*", "Microsoft.MixedReality.Portal"
|
|
Foreach ($app in $apps)
|
|
{
|
|
Write-host "Uninstalling:" $app
|
|
Get-AppxPackage -allusers $app | Remove-AppxPackage
|
|
}
|
|
|
|
#Setup WSL
|
|
wsl --install |