blaird
Posts: 7
Score: 0 Joined: 3/13/2006 Status: offline
|
Below is a sample I use to Uninstall/Reinstall applications: 'On Error Resume Next ' ' Author: Brian Laird ' Utility: Script to execute an uninstall of an application before ' completely reinstalling the application ' ' Application Variables: ' ' strAppName = Used in IE window and prompt to close app. ' strSWGUID = HKLM\SW\MS\Win\CV\Uninstall key to check ' strUninstallString = String to execute uninstall command ' strInstallString = String to execute install command ' strCheckExeMemory = Name of EXE to check in memory ' ' REMARK - Declare application variables strAppName = "MY Application" strSWGUID = "{EE990000-AAAA-BBBB-CCCC-EEEE633241F5}" strUninstallString = "MsiExec.exe /q /x" & strSWGUID strInstallString = "msiexec.exe /q ROOTDRIVE=C:\ ALLUSERS=2 /i My_Application.msi" strCheckExeMemory = "My Plan Management.exe" ' REMARK - Declare OS and Environment connection variables Set objShell = CreateObject("WScript.Shell") strComputer = objShell.ExpandEnvironmentStrings("%COMPUTERNAME%") strComputer = uCase(strComputer) Set objWMI = GetObject("winmgmts:" _ & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2") Set objReg = GetObject("winmgmts://" & strComputer & _ "/root/default:StdRegProv") ' REMARK - Setup IE status window Set objExplorer = WScript.CreateObject("InternetExplorer.Application") objExplorer.Navigate "about:blank" objExplorer.ToolBar = 0 objExplorer.StatusBar = 0 objExplorer.Width=400 objExplorer.Height = 200 objExplorer.Left = 0 objExplorer.Top = 0 objExplorer.Document.Title = strAppName & " Reinstaller" objExplorer.Document.Body.Style.Cursor = "wait" Do While objExplorer.Busy WScript.Sleep 200 Loop objExplorer.Visible = 1 ' REMARK - Check for application in memory colItemsCount = 1 Do While colItemsCount = 1 Set colItems = objWMI.ExecQuery _ ("SELECT * FROM Win32_Process WHERE Name = '" & strCheckExeMemory & "'") colItemsCount = colItems.count If colItemsCount <> 0 Then objExplorer.Document.Body.InnerHTML = "<DIV ALIGN=""center""><P>" _ & "Please close " & strAppName & " application" _ & "</P>" & vbCrLf _ & "<P><INPUT TYPE=""hidden"" ID=""OK"" " _ & "NAME=""OK"" VALUE=""0"">" _ & "<INPUT TYPE=""submit"" VALUE="" OK "" " _ & "OnClick=""VBScript:OK.Value=1""></P></DIV>" Do While objExplorer.Document.All.OK.Value = 0 WScript.Sleep 200 Loop End If Loop ' REMARK - Get Software Uninstall Registry information strMessageBody = vbCrlf & vbTab & vbTab & "Checking for previous install" objExplorer.Document.Body.InnerHTML = strMessageBody WScript.Sleep 2000 Const HKLM = &H80000002 strSWUninstall = _ "SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\" & _ strSWGUID objReg.GetStringValue HKLM, strSWUninstall, "UninstallString", _ strReadRegUninstallString if InStr(strReadRegUninstallString,strSWGUID) Then Set objExecObject = objShell.Exec(strUninstallString) strMessageBody = vbCrlf & vbTab & vbTab & _ "Uninstalling previous version - Please Wait" objExplorer.Document.Body.InnerHTML = strMessageBody Do Until objExecObject.Status = 1 WScript.Sleep 100 Loop End If ' REMARK - Install new version of software Set objExecObject = objShell.Exec(strInstallString) strMessageBody = vbCrlf & vbTab & vbTab & _ "Installing new version - Please Wait" objExplorer.Document.Body.InnerHTML = strMessageBody Do Until objExecObject.Status = 1 WScript.Sleep 100 Loop ' REMARK - Close IE status window objExplorer.Document.Body.Style.Cursor = "default" objExplorer.Quit Wscript.Quit
|