I launch msiexec in another process and wait for exit:
var p = new Process
{
StartInfo =
{
FileName = \"msiexec\",
Arguments = string
MSI COM API: If you can use the MSI COM API you can use the ProductState property. In other words you can check for an installed product with two lines of code if you have the actual product code (How can I find the product GUID of an installed MSI setup?):
Dim installer : Set installer = CreateObject("WindowsInstaller.Installer")
MsgBox installer.ProductState("{00000000-0000-0000-0000-000000000001}") ' <= PRODUCT CODE
Results: The normal states are 5 for installed or -1 for not installed:
INSTALLSTATE_UNKNOWN -1 The product is neither advertised or installed.
INSTALLSTATE_ADVERTISED 1 The product is advertised but not installed.
INSTALLSTATE_ABSENT 2 The product is installed for a different user.
INSTALLSTATE_DEFAULT 5 The product is installed for the current user.
Interactive VBScript: Here is a larger version of the VBScript with interactive input of product GUID in an InputBox - for use with any product GUID in an ad-hoc fashion: CheckProductState-Interactive.vbs
Links: