Initial commit
This commit is contained in:
119
scripts/powershell/cleanup-and-fix-winget.ps1
Normal file
119
scripts/powershell/cleanup-and-fix-winget.ps1
Normal file
@@ -0,0 +1,119 @@
|
||||
[Console]::OutputEncoding = [Text.Encoding]::UTF8
|
||||
$ErrorActionPreference = 'Continue'
|
||||
|
||||
Write-Host "[*] Cleaning up download shortcuts and fixing winget"
|
||||
|
||||
# Remove download shortcuts
|
||||
$desktopPath = "C:\Users\User\Desktop"
|
||||
$shortcutsToRemove = @(
|
||||
"Download-Chrome.url",
|
||||
"Download-7-Zip.url",
|
||||
"Download-AnyDesk.url",
|
||||
"Download-LINE.url",
|
||||
"Download-Adobe-Reader.url",
|
||||
"Installation-Instructions.txt"
|
||||
)
|
||||
|
||||
Write-Host "[1] Removing download shortcuts..."
|
||||
foreach ($shortcut in $shortcutsToRemove) {
|
||||
$filePath = Join-Path $desktopPath $shortcut
|
||||
if (Test-Path $filePath) {
|
||||
Remove-Item $filePath -Force
|
||||
Write-Host " Removed: $shortcut"
|
||||
}
|
||||
}
|
||||
|
||||
Write-Host "[2] Checking winget status..."
|
||||
|
||||
# Check if winget is available
|
||||
try {
|
||||
$wingetVersion = & winget --version 2>&1
|
||||
if ($LASTEXITCODE -eq 0) {
|
||||
Write-Host " [OK] winget is available: $wingetVersion"
|
||||
} else {
|
||||
Write-Host " [!] winget command failed"
|
||||
throw "winget not working"
|
||||
}
|
||||
} catch {
|
||||
Write-Host " [!] winget not found or not working"
|
||||
|
||||
Write-Host "[3] Installing/Updating winget..."
|
||||
|
||||
# Method 1: Try to install App Installer (contains winget)
|
||||
try {
|
||||
Write-Host " Attempting to install Microsoft App Installer..."
|
||||
|
||||
# Download and install App Installer
|
||||
$appInstallerUrl = "https://github.com/microsoft/winget-cli/releases/latest/download/Microsoft.DesktopAppInstaller_8wekyb3d8bbwe.msixbundle"
|
||||
$downloadPath = "$env:TEMP\AppInstaller.msixbundle"
|
||||
|
||||
Invoke-WebRequest -Uri $appInstallerUrl -OutFile $downloadPath -UseBasicParsing
|
||||
|
||||
# Install the package
|
||||
Add-AppxPackage -Path $downloadPath
|
||||
|
||||
Write-Host " [OK] App Installer installed"
|
||||
|
||||
# Clean up
|
||||
Remove-Item $downloadPath -Force -ErrorAction SilentlyContinue
|
||||
|
||||
} catch {
|
||||
Write-Host " [!] Failed to install App Installer: $($_.Exception.Message)"
|
||||
|
||||
# Method 2: Try alternative approach
|
||||
Write-Host " Trying alternative winget installation..."
|
||||
|
||||
try {
|
||||
# Check Windows version and suggest manual installation
|
||||
$osVersion = [System.Environment]::OSVersion.Version
|
||||
Write-Host " Windows Version: $osVersion"
|
||||
|
||||
if ($osVersion.Major -ge 10 -and $osVersion.Build -ge 17763) {
|
||||
Write-Host " [INFO] Windows version supports winget"
|
||||
Write-Host " [ACTION] Manual steps required:"
|
||||
Write-Host " 1. Open Microsoft Store"
|
||||
Write-Host " 2. Search for 'App Installer'"
|
||||
Write-Host " 3. Install/Update App Installer"
|
||||
Write-Host " 4. Restart PowerShell session"
|
||||
} else {
|
||||
Write-Host " [!] Windows version may not support winget"
|
||||
Write-Host " Consider updating Windows or using manual installation"
|
||||
}
|
||||
|
||||
} catch {
|
||||
Write-Host " [!] Could not determine Windows version"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Write-Host "[4] Final winget verification..."
|
||||
|
||||
# Wait a moment and test again
|
||||
Start-Sleep -Seconds 3
|
||||
|
||||
try {
|
||||
$wingetTest = & winget list --source winget 2>&1
|
||||
if ($LASTEXITCODE -eq 0) {
|
||||
Write-Host " [OK] winget is working properly"
|
||||
Write-Host " [INFO] Ready for application installation"
|
||||
|
||||
# Test a simple winget operation
|
||||
Write-Host "[5] Testing winget functionality..."
|
||||
$testResult = & winget search "7zip.7zip" 2>&1
|
||||
if ($LASTEXITCODE -eq 0) {
|
||||
Write-Host " [OK] winget search working"
|
||||
} else {
|
||||
Write-Host " [!] winget search failed, may need source configuration"
|
||||
}
|
||||
|
||||
} else {
|
||||
Write-Host " [!] winget still not working properly"
|
||||
Write-Host " Output: $wingetTest"
|
||||
}
|
||||
} catch {
|
||||
Write-Host " [!] winget verification failed: $($_.Exception.Message)"
|
||||
}
|
||||
|
||||
Write-Host ""
|
||||
Write-Host "Cleanup and winget setup completed!"
|
||||
Write-Host "If winget is working, we can proceed with automated installation."
|
||||
Reference in New Issue
Block a user