Skip to content

Commit d87bca7

Browse files
committed
chore(windows): elevate apply-time package updates
Run choco and winget maintenance in an auto-elevated PowerShell block so apply-time package updates execute with the required permissions. Made-with: Cursor
1 parent ab5548f commit d87bca7

1 file changed

Lines changed: 22 additions & 6 deletions

File tree

Lines changed: 22 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,29 @@
11
{{ if eq .chezmoi.os "windows" -}}
22
$ErrorActionPreference = "Stop"
33

4-
if (Get-Command choco -ErrorAction SilentlyContinue) {
5-
Write-Host "Updating Chocolatey packages..."
6-
choco upgrade all -y --no-progress
4+
$isAdmin = ([Security.Principal.WindowsPrincipal][Security.Principal.WindowsIdentity]::GetCurrent()).IsInRole([Security.Principal.WindowsBuiltInRole]::Administrator)
5+
6+
$elevatedScript = {
7+
$ErrorActionPreference = "Stop"
8+
9+
if (Get-Command choco -ErrorAction SilentlyContinue) {
10+
Write-Host "Updating Chocolatey packages..."
11+
choco upgrade all -y --no-progress
12+
}
13+
14+
if (Get-Command winget -ErrorAction SilentlyContinue) {
15+
Write-Host "Updating Winget packages..."
16+
winget upgrade --all --silent --accept-package-agreements --accept-source-agreements
17+
}
718
}
819

9-
if (Get-Command winget -ErrorAction SilentlyContinue) {
10-
Write-Host "Updating Winget packages..."
11-
winget upgrade --all --silent --accept-package-agreements --accept-source-agreements
20+
if ($isAdmin) {
21+
& $elevatedScript
22+
} else {
23+
$scriptFile = "$env:TEMP\chezmoi-package-updates-elevated.ps1"
24+
$elevatedScript.ToString() | Out-File $scriptFile -Encoding ascii
25+
Write-Host "Elevating for package updates..."
26+
Start-Process powershell -Verb RunAs -ArgumentList "-ExecutionPolicy Bypass -File `"$scriptFile`"" -Wait
27+
Remove-Item $scriptFile -ErrorAction SilentlyContinue
1228
}
1329
{{- end }}

0 commit comments

Comments
 (0)