我正在创建一个脚本来从多个位置卸载Firefox。我有一个我已经创建的脚本,它在一定程度上起作用。我已经对我的原始脚本的基础上,下面的答案加上一些其他的变化
$LocalUsers = (Get-ChildItem -Path "C:\Users").name
# Uninstalling from Program Files
if (Test-Path "${env:ProgramFiles(x86)}\Mozilla Firefox\uninstall\helper.exe"){
Start-Process -FilePath "${env:ProgramFiles(x86)}\Mozilla Firefox\uninstall\helper.exe" -ArgumentList '/S' -Verbose #-ErrorAction SilentlyContinue
}
if (Test-Path "${env:ProgramFiles}\Mozilla Firefox\uninstall\helper.exe"){
Start-Process -FilePath "${env:ProgramFiles}\Mozilla Firefox\uninstall\helper.exe" -ArgumentList '/S' -Verbose #-ErrorAction SilentlyContinue
}
# Uninstalling for each user
ForEach ($LocalUser in $LocalUsers){
$Userpath = "C:\Users\" + $LocalUser
if (Test-Path "$Userpath\AppData\Local\Mozilla Firefox\uninstall\helper.exe"){
Start-Process -FilePath "$Userpath\AppData\Local\Mozilla Firefox\uninstall\helper.exe" -ArgumentList '/S' -Verbose #-ErrorAction SilentlyContinue
}
Start-Sleep 20
# Remove shortcuts from appdata
Remove-Item -Path "$userpath\AppData\Local\Mozilla" -Force -Recurse -Verbose #-ErrorAction SilentlyContinue
Remove-Item -Path "$userpath\AppData\LocalLow\Mozilla" -Force -Recurse -Verbose #-ErrorAction SilentlyContinue
Remove-Item -Path "$userpath\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Firefox.lnk" -Force -Verbose #-ErrorAction SilentlyContinue
Remove-Item -Path "$userpath\desktop\firefox.lnk" -Force -Verbose #-ErrorAction SilentlyContinue
}
# Remove related registry keys
$pathToRemove = @(
'HKLM:\Software\Mozilla'
'HKLM:\SOFTWARE\mozilla.org'
'HKLM:\SOFTWARE\MozillaPlugins'
'HKLM:\SOFTWARE\WOW6432Node\Mozilla'
'HKLM:\SOFTWARE\WOW6432Node\mozilla.org'
'HKLM:\SOFTWARE\WOW6432Node\MozillaPlugins'
'C:\ProgramData\Microsoft\Windows\Start Menu\Programs\Firefox.lnk'
)
foreach($path in $pathToRemove) {
if(Test-Path $path) {
try {
Remove-Item $path -Recurse -Force -Verbose #-ErrorAction SilentlyContinue
}
catch {
Write-Warning $_.Exception.Message
}
}
}
字符串
该脚本已在某些机器上卸载应用程序,但是,对于其他人来说,它的痕迹被留在Windows程序文件中。它看起来像一个死链接。我知道这是一个死链接,因为它缺少Firefox徽标。奇怪的是,它的指向%localappdata%\Mozilla Firefox\uninstall\helper.exe每个错误
100d1x
的字符串
的字符串
如果安装了应用程序应该是什么样子(忽略版本,只是在线截图):
的
2条答案
按热度按时间20jt8wwn1#
我假设问题是你的chained
if
\elseif
\else
条件,可能发生的是,如果第一个条件是$true
,你只是删除了第一个注册表项,然后退出了chained条件(这是设计的):字符串
在这种情况下,你可以做的是将所有路径存储在一个数组中,然后循环遍历它们,测试路径是否存在,如果存在,则删除它:
型
jtjikinw2#
我有这个相同的问题,从一个失败的winget安装,并发现一个注册表项,是留下的。从列表中删除并允许重新安装时。
添加到您的注册表项删除数组:'HKCU:\SOFTWARE\MICROSOFT\WINDOWS\CURRENTVERSION\UNINSTALL\Mozilla Firefox*'