update
This commit is contained in:
@@ -0,0 +1,59 @@
|
||||
## Get all of the uninstall registry keys
|
||||
$UNINSTALL_KEYS = Get-ChildItem -Path HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall
|
||||
$UNINSTALL_KEYS += Get-ChildItem -Path HKLM:\SOFTWARE\WOW6432Node\Microsoft\Windows\CurrentVersion\Uninstall
|
||||
|
||||
## Create an empty list to store all of the MSI operations
|
||||
$MSI_OPS = @{}
|
||||
|
||||
Foreach ( $reg in $UNINSTALL_KEYS )
|
||||
{
|
||||
## Get each uninstall key
|
||||
$reg_property = Get-ItemProperty -Path $reg.PSPath
|
||||
|
||||
## Make sure the DisplayName matches "Java 8" or "Java 7"
|
||||
If ( ($reg_property.DisplayName -ilike "Java* 8 *") -or ($reg_property.DisplayName -ilike "Java* 7 *") )
|
||||
{
|
||||
## Make sure the software was installed using an MSI
|
||||
If ( $reg_property.WindowsInstaller -eq 1 )
|
||||
{
|
||||
## Placeholder to make sure we add the current item to $MSI_OPS
|
||||
$ADD_ITEM = $true
|
||||
|
||||
## Get the product code from the UninstallString
|
||||
If ( $reg_property.UninstallString )
|
||||
{
|
||||
## Strip away the command part of UninstallString and only return the MSI product code
|
||||
$PRODUCT_CODE = $reg_property.UninstallString.Replace('MsiExec.exe /X','')
|
||||
}
|
||||
|
||||
## Get the product code from the ModifyPath
|
||||
ElseIf ( $reg_property.ModifyPath )
|
||||
{
|
||||
## Strip away the command part of ModifyPath and only return the MSI product code
|
||||
$PRODUCT_CODE = $reg_property.ModifyPath.Replace('MsiExec.exe /X','')
|
||||
}
|
||||
|
||||
## Since we can't get a product code, make sure we don't add this item to $MSI_OPS
|
||||
Else { $ADD_ITEM = $false }
|
||||
|
||||
## Add the DisplayName and $PRODUCT_CODE to $MSI_OPS
|
||||
If ( $ADD_ITEM ) { $MSI_OPS.Add( $reg_property.DisplayName, $PRODUCT_CODE ) }
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
## Uninstall each of the products in $MSI_OPS
|
||||
Foreach ( $app in $MSI_OPS.Keys )
|
||||
{
|
||||
Write-Output $app
|
||||
$args = '/X{0} /qn /norestart' -f $MSI_OPS[$app]
|
||||
Start-Process -FilePath "msiexec.exe" -ArgumentList $args -Wait
|
||||
}
|
||||
|
||||
# Delete lingering directories and binary files
|
||||
If ( Test-Path "${Env:ProgramData}\Oracle\Java" )
|
||||
{
|
||||
Write-Output "Deleting ${Env:ProgramData}\Oracle\Java\*"
|
||||
Try { Remove-Item -Path "${Env:ProgramData}\Oracle\Java" -Recurse -Force }
|
||||
Catch { Write-Output $_ }
|
||||
}
|
||||
Reference in New Issue
Block a user