Article ID: 974653 - Last Review: July 1, 2010 - Revision: 2.0

How to programmatically check for the presence of a Windows Installer-based product by using its product code

System TipThis article applies to a different operating system than the one you are using. Article content that may not be relevant to you is disabled.

On This Page

Expand all | Collapse all

INTRODUCTION

Windows Installer provides APIs that let a user query the Windows Installer database for the presence of a particular product. Each product is uniquely identified by its product code, which is a GUID. This article provides code samples that show how to programmatically check for the presence of a Windows Installer-based product by using its product code.

MORE INFORMATION

Call the API from Visual C++

The following is an example of how you can call the MsiGetProductInfoExW() method in Visual C++ to detect the presence of a specific product. The product is specified by its unique product code GUID.
TCHAR szVersion[20];
DWORD cchVersion = 20;
BOOL fInstalled = (ERROR_SUCCESS == MsiGetProductInfoEx (TEXT("{ProductCode}"), NULL, MSIINSTALLCONTEXT_MACHINE, INSTALLPROPERTY_VERSIONSTRING, szVersion, &cchVersion));
In this code example fragment, the fInstalled Boolean variable will contain a TRUE or FALSE value, depending on whether the product that is specified is installed or not installed.

Call the API from VBScript

The following is an example of how you can call the ProductInfo() method on the WindowsInstaller.Installer object in Microsoft Visual Basic Script to detect the presence of a specific product. The product is specified by its unique product code GUID.
 
Dim msi : Set msi = CreateObject("WindowsInstaller.Installer")
On Error Resume Next
Dim version : version = msi.ProductInfo("{ProductCode}", "VersionString")
Dim installed : installed = ( Err.Number = 0 )
In this code example fragment, the installed variable will contain a 0 or 1 value, depending on whether the product that is specified is installed or not installed.

Note The ProductCode property that is passed to the functions in both examples here include braces ({ }) inside the quotation marks. For more information about Windows Installer, visit the following Microsoft Windows Installer MSDN Web page:
http://msdn.microsoft.com/en-us/library/aa367449(VS.85).aspx (http://msdn.microsoft.com/en-us/library/aa367449(VS.85).aspx)
For more information about how to obtain the latest version of Windows Installer for your computer, visit the following Microsoft Web page:
http://www.microsoft.com/downloads/details.aspx?familyid=5A58B56F-60B6-4412-95B9-54D056D6F9F4&displaylang=en (http://www.microsoft.com/downloads/details.aspx?familyid=5A58B56F-60B6-4412-95B9-54D056D6F9F4&displaylang=en)
For more information, visit the following Microsoft Web pages: Note about the "Applies to" section In addition to the products that are listed in the "Applies to" section, the information in this article also applies to the following product:
  • Windows Installer 4.0
Note This is a "FAST PUBLISH" article created directly from within the Microsoft support organization. The information contained herein is provided as-is in response to emerging issues. As a result of the speed in making it available, the materials may include typographical errors and may be revised at any time without notice. See Terms of Use (http://go.microsoft.com/fwlink/?LinkId=151500) for other considerations.

APPLIES TO
  • Microsoft Windows Installer 4.5
  • Microsoft Windows Installer 3.1
  • Microsoft Security Essentials
Keywords: 
kbexpertiseinter kbsecurity kbsecvulnerability kbsurveynew KB974653