mirror of
https://github.com/modernw/App-Installer-For-Windows-8.x-Reset.git
synced 2026-04-23 11:30:22 +10:00
Added new features and the setup scripts for ARM users.
This commit is contained in:
153
shared/ArmUninstall.ps1
Normal file
153
shared/ArmUninstall.ps1
Normal file
@@ -0,0 +1,153 @@
|
||||
#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
|
||||
}
|
||||
Reference in New Issue
Block a user