Changes are:
ADDED:
isApplicationInstalled : Check if an application is installed.
isApplicationInstalledGUID : Check if an application is installed by its Identifier.
Usefull when the Add Remove Programname is not unique
isProcessActive : Check if a process is active.
MODIFIED:
uninstallAppGUID : Fixed the exit code to be unique.
Download link: Install_Template-1.2.vbs
Changes are below:
'==========================================================================
'
' VBScript Source File -- Created with SAPIEN Technologies PrimalScript 2009
'
' NAME: Installer script template V1.2
' AUTHOR: Bas Steelooper , Steelooper Consulting
' DATE : 08-12-2009
'
' Modifications
' V1.1
' ADDED:
' uninstallAppGUID : Uninstall an application by its Identifier.
' Usefull when the Add Remove Programname is not unique
' MODIFIED:
' s_ForceUseCSCript : added variable forceCscriptSilent.
' If set to TRUE the script will NOT notify the end user that it is being relaunched
' s_ForceUseCSCript : WSHShell.run modified to hidden.
' When relaunched the script now doesn't show a cscript window.
'
' V1.2
' ADDED:
' isApplicationInstalled : Check if an application is installed.
' isApplicationInstalledGUID : Check if an application is installed by its Identifier.
' Usefull when the Add Remove Programname is not unique
' isProcessActive : Check if a process is active.
' MODIFIED:
' uninstallAppGUID : Fixed the exit code to be unique.
'
'==========================================================================
........
Const APPVER = "1.2"
........
Sub showHelp()
'===============================================================================
'# Purpose : show help information on how to use the script #
'# #
'# Modified in version 1.2 #
'===============================================================================
.....
If debug Then
.....
WScript.Echo vbTab & "66600005" & vbTab & " : uninstallAppGUID is called without information" 'added in version 1.2
WScript.Echo vbTab & "66600006" & vbTab & " : isProcessActive is called without information" 'added in version 1.2
WScript.Echo vbTab & "66600007" & vbTab & " : isApplicationInstalled is called without information" 'added in version 1.2
WScript.Echo vbTab & "66600008" & vbTab & " : isApplicationInstalledGUID is called without information" 'added in version 1.2
End If
.....
End Sub
.........
Function isProcessActive(objWMIService, arrProcName)
'==============================================================================================================================
'# purpose : check if the processes passed to this service are active #
'# input : objWMIService : initialised object from GetObject("winmgmts:" & "{impersonationLevel=impersonate}!\\.\root\cimv2") #
'# arrProcName : Array which contains the names of the processes to be checked #
'# String which contains one name of a process to be checked #
'# #
'# Example: arrProcName = Array("outlook", "communicator", "winword", "excel", "powerpnt", "access") #
'# isProcessActive objWMI, arrProcName #
'# #
'# Added in version 1.2 #
'==============================================================================================================================
writeLog "starting isProcessActive", "Starting isProcessActive", "isProcessActive"
Dim colProcesses, strQuery, procName, first
strQuery = "Select * from Win32_Process where "
first = True
If IsArray( arrProcName ) Then
For Each procName In arrProcName
If Not first Then
strQuery = strQuery & "OR "
End If
strQuery = strQuery & "Name Like '%"& procName &"%' "
first = false
Next
Else
If arrProcName = "" Then
writeLog "ERROR isProcessActive", "ERROR - Started isProcessActive with no Process te check " & _
"- Terminiting script now with errorcode 66600006", "isProcessActive"
WScript.Quit (66600006)
Else
strQuery = strQuery & "Name Like '%"& arrProcName &"%' "
End if
End If
Set colProcesses = objWMIService.ExecQuery(strQuery)
Dim Process
isProcessActive = False
For Each Process In colProcesses
isProcessActive = True
Next
End Function
..........
Private Sub uninstallAppGUID( objWMIService, arrAppName )
.......
writeLog "ERROR UNINSTALL","Error uninstalling because no parameter was set. exiting with errorcode 66600005", "uninstallAppGUID" 'fixed in version 1.2
.......
End Sub
Private Function isApplicationInstalled( objWMIService, arrAppName )
'==============================================================================================================================
'# purpose : check if the applications which are given in the input are installed #
'# input : objWMIService : initialised object from GetObject("winmgmts:" & "{impersonationLevel=impersonate}!\\.\root\cimv2") #
'# arrAppName : Array which contains the names of the applications to be checked #
'# String which contains one name of a applications to be checked #
'# #
'# Example: arrCheckAppName = Array("Office 2003 Proofing", "Microsoft Office Proof", "visio viewer") #
'# isApplicationInstalled objWMI, arrCheckAppName #
'# #
'# Added in version 1.2 #
'==============================================================================================================================
writeLog "starting isApplicationInstalled","starting to run the sub isApplicationInstalled", "isApplicationInstalled"
Dim colSoftware, objSoftware, strQuery, first, strAppName
strQuery = "Select * from Win32_Product Where "
first = True
on error resume next
If IsArray( arrAppName ) Then
For Each strAppName In arrAppName
If Not first Then
strQuery = strQuery & "OR "
End If
strQuery = strQuery & "Name Like '%"& strAppName &"%' "
first = false
Next
Else
If arrAppName = "" Then
writeLog "ERROR CHECK","Error checking because no parameter was set. exiting with errorcode 66600007", "isApplicationInstalled"
WScript.Quit (66600007)
End if
strQuery = strQuery & "Name Like '%"& arrAppName &"%' "
End If
Set colSoftware = objWMIService.ExecQuery (strQuery)
on error resume next
isApplicationInstalled = False
For Each objSoftware in colSoftware
writeLog "checking application","Now checking " & objSoftware.Name, "isApplicationInstalled"
isApplicationInstalled = True
Next
on error goto 0
End Function
Private Function isApplicationInstalledGUID( objWMIService, arrAppName )
'==============================================================================================================================
'# purpose : check if the applications which are given in the input are installed #
'# input : objWMIService : initialised object from GetObject("winmgmts:" & "{impersonationLevel=impersonate}!\\.\root\cimv2") #
'# arrAppName : Array which contains the names of the applications to be checked #
'# String which contains one name of a applications to be checked #
'# #
'# Example: arrCheckAppName = Array("{34E9AA45-3D13-4DBD-8BC9-7F06AB39B090}", "{34666A45-3D13-4DBD-8BC9-7F0612345690}") #
'# isApplicationInstalledGUID objWMI, arrCheckAppName #
'# #
'# Added in version 1.2 #
'==============================================================================================================================
writeLog "starting isApplicationInstalledGUID","starting to run the sub isApplicationInstalledGUID", "isApplicationInstalledGUID"
Dim colSoftware, objSoftware, strQuery, first, strAppName
strQuery = "Select * from Win32_Product Where "
first = True
If IsArray( arrAppName ) Then
For Each strAppName In arrAppName
If Not first Then
strQuery = strQuery & "OR "
End If
strQuery = strQuery & "IdentifyingNumber = '%"& strAppName &"%' "
first = false
Next
Else
If arrAppName = "" Then
writeLog "ERROR CHECK","Error checking because no parameter was set. exiting with errorcode 66600008", "isApplicationInstalledGUID"
WScript.Quit (66600008)
End if
strQuery = strQuery & "IdentifyingNumber = '%"& arrAppName &"%' "
End If
Set colSoftware = objWMIService.ExecQuery (strQuery)
on error resume next
isApplicationInstalled = False
For Each objSoftware in colSoftware
writeLog "checking application","Now checking " & objSoftware.Name, "isApplicationInstalledGUID"
isApplicationInstalled = True
Next
on error goto 0
End Function
Use it freely if you want. But please post here if you do.

No comments:
Post a Comment