troubleshooting Question

Need to modify application removal script

Avatar of GSLBermuda
GSLBermuda asked on
Microsoft Legacy OSWindows OS
1 Comment1 Solution307 ViewsLast Modified:
I'm using the script below to remove some apps like Groupwise and Novell Client.  I need to modify it so that when prompted with the "Do you want to uninstall" it automatically selects yes.  I don't want any user interaction with this script.  I believe I need to use the /qn switch somewhere, but I'm not sure where?
Here is the script:
Option Explicit
 
Dim strComputer, strMSI, MSIapp, App, AppToRemove, objShell
 
strComputer = "."
set objShell = CreateObject("WScript.Shell")
 
'========================================
AppToRemove = "Groupwise"
 
'
strMSI = UninstallString(AppToRemove)
If strMSI<>"" Then
      wscript.echo strMSI
      objShell.Run strMSI
End If
 
function UninstallString(strProductName)
      dim strComputer, oReg, strKeyPath, arrSubKeys, subkey, x
      Const HKEY_LOCAL_MACHINE = &H80000002
      strComputer = "."
      
      Set oReg=GetObject("winmgmts:{impersonationLevel=impersonate}!\\" & strComputer & "\root\default:StdRegProv")
 
      ' Get array of subkeys under uninstall registry entry
      strKeyPath = "SOFTWARE\microsoft\windows\currentversion\uninstall"
      oReg.EnumKey HKEY_LOCAL_MACHINE, strKeyPath, arrSubKeys
      
      For Each subkey In arrSubKeys
            x=FindUninstallString(subkey, strProductName)
            if x<>"" then
                  if LCase(Left(x,7))="msiexec" then
                        ' Check msiexec for parameters...
                        if InStr(1,x,"/I")>0 then x=Replace(x, "/I","/X")
                        if InStr(1,x,"/quiet")<1 then x=x & " /quiet"
                        if InStr(1,x,"/noreboot")<1 then x=x & " /noreboot"
                  end if
                  UninstallString=x
                  exit function
            end if
      Next
end function
 
function FindUninstallString(strKey, strProductName)
      dim DisplayName, Publisher, UninstallString, search
      On Error Resume Next
      DisplayName=objShell.RegRead ("HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\" & strKey & "\DisplayName")
      Publisher=objShell.RegRead ("HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\" & strKey & "\Publisher")
      UninstallString=objShell.RegRead ("HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\" & strKey & "\UninstallString")
      search = Instr(1, DisplayName, strProductName, 1)
      
      ' Get uninstall string
      if search>0 Then
            if UninstallString="" then UninstallString="MsiExec.exe /X" & strKey
            FindUninstallString = UninstallString
      end if
end function
ASKER CERTIFIED SOLUTION
TheBuzzMan

Our community of experts have been thoroughly vetted for their expertise and industry experience.

Join our community to see this answer!
Unlock 1 Answer and 1 Comment.
Start Free Trial
Learn from the best

Network and collaborate with thousands of CTOs, CISOs, and IT Pros rooting for you and your success.

Andrew Hancock - VMware vExpert
See if this solution works for you by signing up for a 7 day free trial.
Unlock 1 Answer and 1 Comment.
Try for 7 days

”The time we save is the biggest benefit of E-E to our team. What could take multiple guys 2 hours or more each to find is accessed in around 15 minutes on Experts Exchange.

-Mike Kapnisakis, Warner Bros