Link to home
Start Free TrialLog in
Avatar of GSLBermuda
GSLBermuda

asked on

Need to modify application removal script

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
Avatar of TheBuzzMan
TheBuzzMan
Flag of United States of America image

Link to home
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
Start Free Trial