mirror of
https://github.com/modernw/App-Installer-For-Windows-8.x-Reset.git
synced 2026-04-11 17:57:19 +10:00
153 lines
5.2 KiB
PowerShell
153 lines
5.2 KiB
PowerShell
#Requires -RunAsAdministrator
|
|
|
|
Push-Location $PSScriptRoot
|
|
try {
|
|
# 语言检测函数
|
|
function Get-Language {
|
|
$lang = [System.Globalization.CultureInfo]::CurrentUICulture.TwoLetterISOLanguageName
|
|
if ($lang -eq "zh") { return "zh" }
|
|
return "en"
|
|
}
|
|
|
|
$lang = Get-Language
|
|
|
|
# 本地化消息
|
|
$messages = @{
|
|
en = @{
|
|
title = "Uninstall Desktop App Installer"
|
|
confirm = "Are you sure you want to uninstall Desktop App Installer? (y/n)"
|
|
invalid = "Invalid input. Please enter y or n."
|
|
removing_start = "Removing Start Menu folder..."
|
|
removing_reg = "Removing registry entries..."
|
|
removing_dir = "Removing installation directory..."
|
|
confirm_dir = "Do you also want to delete the installation directory? (y/n)"
|
|
complete = "Uninstallation complete."
|
|
error = "Error: "
|
|
cancelled = "Uninstall cancelled."
|
|
}
|
|
zh = @{
|
|
title = "卸载 Desktop App Installer"
|
|
confirm = "确定要卸载 Desktop App Installer 吗?(y/n)"
|
|
invalid = "无效输入,请输入 y 或 n。"
|
|
removing_start = "正在删除开始菜单文件夹..."
|
|
removing_reg = "正在删除注册表项..."
|
|
removing_dir = "正在删除安装目录..."
|
|
confirm_dir = "是否同时删除安装目录?(y/n)"
|
|
complete = "卸载完成。"
|
|
error = "错误:"
|
|
cancelled = "卸载已取消。"
|
|
}
|
|
}
|
|
|
|
$msg = $messages[$lang]
|
|
|
|
if ($env:PROCESSOR_ARCHITECTURE.Trim() -ne "ARM") {
|
|
throw "Error: Cannot continue installation because the computer's processor architecture is not ARM."
|
|
}
|
|
|
|
# 确认卸载(控制台交互)
|
|
do {
|
|
$response = Read-Host $msg.confirm
|
|
$response = $response.ToLower()
|
|
if ($response -eq 'y') {
|
|
$confirmed = $true
|
|
break
|
|
} elseif ($response -eq 'n') {
|
|
Write-Host $msg.cancelled
|
|
exit 0
|
|
} else {
|
|
Write-Host $msg.invalid
|
|
}
|
|
} while ($true)
|
|
|
|
# 定义路径
|
|
$appStartMenuFolder = "Desktop App Installer"
|
|
$appPublicStartMenuFolder = [System.IO.Path]::Combine($env:ProgramData, "Microsoft\Windows\Start Menu\Programs")
|
|
$startitemfolder = [System.IO.Path]::Combine($appPublicStartMenuFolder, $appStartMenuFolder)
|
|
$AppFolder = $PSScriptRoot
|
|
|
|
# 删除开始菜单文件夹
|
|
Write-Host $msg.removing_start
|
|
if (Test-Path $startitemfolder) {
|
|
Remove-Item -Path $startitemfolder -Recurse -Force -ErrorAction SilentlyContinue
|
|
if (Test-Path $startitemfolder) {
|
|
Write-Warning "$msg.error Could not remove $startitemfolder"
|
|
} else {
|
|
Write-Output "Removed $startitemfolder"
|
|
}
|
|
} else {
|
|
Write-Output "Start Menu folder not found, skipping."
|
|
}
|
|
|
|
# 删除注册表项
|
|
Write-Host $msg.removing_reg
|
|
$reg = [Microsoft.Win32.Registry]::ClassesRoot
|
|
|
|
$keysToDelete = @(
|
|
"Microsoft.DesktopAppInstaller",
|
|
".appx",
|
|
".appxbundle"
|
|
)
|
|
foreach ($keyName in $keysToDelete) {
|
|
try {
|
|
if ($reg.OpenSubKey($keyName) -ne $null) {
|
|
$reg.DeleteSubKeyTree($keyName)
|
|
Write-Output "Removed registry key: HKCR\$keyName"
|
|
} else {
|
|
Write-Output "Registry key not found: HKCR\$keyName"
|
|
}
|
|
} catch {
|
|
Write-Warning "$msg.error Could not remove HKCR\$keyName : $_"
|
|
}
|
|
}
|
|
|
|
# 删除 Applications\AppInstaller.exe 下的 DefaultIcon
|
|
$appPath = "Applications\AppInstaller.exe"
|
|
try {
|
|
$appKey = $reg.OpenSubKey($appPath, $true)
|
|
if ($appKey) {
|
|
$subKeyNames = $appKey.GetSubKeyNames()
|
|
if ($subKeyNames -contains "DefaultIcon") {
|
|
$appKey.DeleteSubKey("DefaultIcon")
|
|
Write-Output "Removed registry key: HKCR\$appPath\DefaultIcon"
|
|
}
|
|
$appKey.Close()
|
|
} else {
|
|
Write-Output "Registry key not found: HKCR\$appPath"
|
|
}
|
|
} catch {
|
|
Write-Warning "$msg.error Could not process HKCR\$appPath : $_"
|
|
}
|
|
|
|
# 删除安装目录
|
|
Write-Host $msg.removing_dir
|
|
do {
|
|
$respDir = Read-Host $msg.confirm_dir
|
|
$respDir = $respDir.ToLower()
|
|
if ($respDir -eq 'y') {
|
|
if (Test-Path $AppFolder) {
|
|
Remove-Item -Path $AppFolder -Recurse -Force -ErrorAction SilentlyContinue
|
|
if (Test-Path $AppFolder) {
|
|
Write-Warning "$msg.error Could not delete $AppFolder"
|
|
} else {
|
|
Write-Output "Deleted installation directory."
|
|
}
|
|
} else {
|
|
Write-Output "Installation directory not found."
|
|
}
|
|
break
|
|
} elseif ($respDir -eq 'n') {
|
|
Write-Output "Skipped deleting installation directory."
|
|
break
|
|
} else {
|
|
Write-Host $msg.invalid
|
|
}
|
|
} while ($true)
|
|
|
|
Write-Host $msg.complete
|
|
Start-Sleep -Seconds 3
|
|
} catch {
|
|
Write-Error "Uninstall failed: $_"
|
|
} finally {
|
|
Pop-Location
|
|
} |