The following code checks if vcredist (Microsoft Visual C++ 2008 SP1 Redistributable Package) is installed.
This check is used when we want to assure that the Visual C++ 2008 SP1 is INSTALLED perior to the application launch.
The code is using the MsiQueryProductState function from the msi.dll.
We check the product codes of vcredist_x86, vcredist_x64 and vcredist_IA64 using MsiQueryProductState to validate if the product is installed or not!
(vcredist product codes are listed HERE)
The Code:
You may also extent and improve this method to check only those Product Codes that matching current architecture (x86/x64/IA64).
Hope it helps,
MDB-Blog
This check is used when we want to assure that the Visual C++ 2008 SP1 is INSTALLED perior to the application launch.
The code is using the MsiQueryProductState function from the msi.dll.
We check the product codes of vcredist_x86, vcredist_x64 and vcredist_IA64 using MsiQueryProductState to validate if the product is installed or not!
(vcredist product codes are listed HERE)
The Code:
public enum INSTALLSTATE
{
INSTALLSTATE_NOTUSED = -7, // component disabled
INSTALLSTATE_BADCONFIG = -6, // configuration datacorrupt
INSTALLSTATE_INCOMPLETE = -5, // installationsuspended or in progress
INSTALLSTATE_SOURCEABSENT = -4, // run from source,source is unavailable
INSTALLSTATE_MOREDATA = -3, // return bufferoverflow
INSTALLSTATE_INVALIDARG = -2, // invalid functionargument
INSTALLSTATE_UNKNOWN = -1, // unrecognized productor feature
INSTALLSTATE_BROKEN = 0, // broken
INSTALLSTATE_ADVERTISED = 1, // advertised feature
INSTALLSTATE_REMOVED = 1, // component being removed(action state, not settable)
INSTALLSTATE_ABSENT = 2, // uninstalled (or actionstate absent but clients remain)
INSTALLSTATE_LOCAL = 3, // installed on local drive
INSTALLSTATE_SOURCE = 4, // run from source, CD ornet
INSTALLSTATE_DEFAULT = 5, // use default, local orsource
}
[DllImport("msi.dll")]
private static extern INSTALLSTATE MsiQueryProductState(string product);
public static boolIsVCRedistInstalled()
{
string[] strCodes = newstring[]
{
//vcredist_x86 - ProductCode
"{9A25302D-30C0-39D9-BD6F-21E6EC160475}",
"{86CE1746-9EFF-3C9C-8755-81EA8903AC34}",
"{CA8A885F-E95B-3FC6-BB91-F4D9377C7686}",
"{820B6609-4C97-3A2B-B644-573B06A0F0CC}",
"{6AFCA4E1-9B78-3640-8F72-A7BF33448200}",
"{F03CB3EF-DC16-35CE-B3C1-C68EA09E5E97}",
"{402ED4A1-8F5B-387A-8688-997ABF58B8F2}",
"{887868A2-D6DE-3255-AA92-AA0B5A59B874}",
"{527BBE2F-1FED-3D8B-91CB-4DB0F838E69E}",
"{57660847-B1F7-35BD-9118-F62EB863A598}",
//vcredist_x64 - ProductCode
"{8220EEFE-38CD-377E-8595-13398D740ACE}",
"{56F27690-F6EA-3356-980A-02BA379506EE}",
"{14297226-E0A0-3781-8911-E9D529552663}",
"{9B3F0A88-790D-3AD9-9F96-B19CF2746452}",
"{D285FC5F-3021-32E9-9C59-24CA325BDC5C}",
"{092EE08C-60DE-3FE6-B113-90076EC06D0D}",
"{A96702F7-EFC8-3EED-BE46-22C809D4EBE5}",
"{92B8FD1F-C1AE-3750-8577-631B0AA85DF5}",
"{2DFD8316-9EF1-3210-908C-4CB61961C1AC}",
"{E34002C7-8CE7-3F76-B36C-09FA973BC4F6}",
//vcredist_IA64 - ProductCode
"{5827ECE1-AEB0-328E-B813-6FC68622C1F9}",
"{9363B366-8370-34F7-8164-25052EBF35FD}",
"{4EC84186-70BB-3121-9C1B-C63512D7126E}",
"{1F7B9797-A3C8-3B98-85C4-00620F221CE8}",
"{6BE0A7C7-3462-30EE-8B77-D21D7848D967}",
"{BF58DC07-38AB-3887-8000-70173F9650EA}",
"{D289009A-2728-3D0A-833E-F08E0E58934C}",
"{9476DC14-00C3-3C36-A435-00D714CF77B8}",
"{678835D7-D524-3C0E-9C33-1D3767FDA6BF}"
};
INSTALLSTATE state;
for (int i = 0;i < strCodes.Length; i++)
{
state = MsiQueryProductState(strCodes[i]);
if (state == INSTALLSTATE.INSTALLSTATE_LOCAL||
state == INSTALLSTATE.INSTALLSTATE_DEFAULT)
{
return true;
}
}
return false;
}
{
INSTALLSTATE_NOTUSED = -7, // component disabled
INSTALLSTATE_BADCONFIG = -6, // configuration datacorrupt
INSTALLSTATE_INCOMPLETE = -5, // installationsuspended or in progress
INSTALLSTATE_SOURCEABSENT = -4, // run from source,source is unavailable
INSTALLSTATE_MOREDATA = -3, // return bufferoverflow
INSTALLSTATE_INVALIDARG = -2, // invalid functionargument
INSTALLSTATE_UNKNOWN = -1, // unrecognized productor feature
INSTALLSTATE_BROKEN = 0, // broken
INSTALLSTATE_ADVERTISED = 1, // advertised feature
INSTALLSTATE_REMOVED = 1, // component being removed(action state, not settable)
INSTALLSTATE_ABSENT = 2, // uninstalled (or actionstate absent but clients remain)
INSTALLSTATE_LOCAL = 3, // installed on local drive
INSTALLSTATE_SOURCE = 4, // run from source, CD ornet
INSTALLSTATE_DEFAULT = 5, // use default, local orsource
}
[DllImport("msi.dll")]
private static extern INSTALLSTATE MsiQueryProductState(string product);
public static boolIsVCRedistInstalled()
{
string[] strCodes = newstring[]
{
//vcredist_x86 - ProductCode
"{9A25302D-30C0-39D9-BD6F-21E6EC160475}",
"{86CE1746-9EFF-3C9C-8755-81EA8903AC34}",
"{CA8A885F-E95B-3FC6-BB91-F4D9377C7686}",
"{820B6609-4C97-3A2B-B644-573B06A0F0CC}",
"{6AFCA4E1-9B78-3640-8F72-A7BF33448200}",
"{F03CB3EF-DC16-35CE-B3C1-C68EA09E5E97}",
"{402ED4A1-8F5B-387A-8688-997ABF58B8F2}",
"{887868A2-D6DE-3255-AA92-AA0B5A59B874}",
"{527BBE2F-1FED-3D8B-91CB-4DB0F838E69E}",
"{57660847-B1F7-35BD-9118-F62EB863A598}",
//vcredist_x64 - ProductCode
"{8220EEFE-38CD-377E-8595-13398D740ACE}",
"{56F27690-F6EA-3356-980A-02BA379506EE}",
"{14297226-E0A0-3781-8911-E9D529552663}",
"{9B3F0A88-790D-3AD9-9F96-B19CF2746452}",
"{D285FC5F-3021-32E9-9C59-24CA325BDC5C}",
"{092EE08C-60DE-3FE6-B113-90076EC06D0D}",
"{A96702F7-EFC8-3EED-BE46-22C809D4EBE5}",
"{92B8FD1F-C1AE-3750-8577-631B0AA85DF5}",
"{2DFD8316-9EF1-3210-908C-4CB61961C1AC}",
"{E34002C7-8CE7-3F76-B36C-09FA973BC4F6}",
//vcredist_IA64 - ProductCode
"{5827ECE1-AEB0-328E-B813-6FC68622C1F9}",
"{9363B366-8370-34F7-8164-25052EBF35FD}",
"{4EC84186-70BB-3121-9C1B-C63512D7126E}",
"{1F7B9797-A3C8-3B98-85C4-00620F221CE8}",
"{6BE0A7C7-3462-30EE-8B77-D21D7848D967}",
"{BF58DC07-38AB-3887-8000-70173F9650EA}",
"{D289009A-2728-3D0A-833E-F08E0E58934C}",
"{9476DC14-00C3-3C36-A435-00D714CF77B8}",
"{678835D7-D524-3C0E-9C33-1D3767FDA6BF}"
};
INSTALLSTATE state;
for (int i = 0;i < strCodes.Length; i++)
{
state = MsiQueryProductState(strCodes[i]);
if (state == INSTALLSTATE.INSTALLSTATE_LOCAL||
state == INSTALLSTATE.INSTALLSTATE_DEFAULT)
{
return true;
}
}
return false;
}
You may also extent and improve this method to check only those Product Codes that matching current architecture (x86/x64/IA64).
Hope it helps,
MDB-Blog
amazing Article, Thanks for sharing!
ReplyDeleteFix Msvcp100.dll Missing Or Not Found Error In Windows 10
Mdb Blog: C >>>>> Download Now
ReplyDelete>>>>> Download Full
Mdb Blog: C >>>>> Download LINK
>>>>> Download Now
Mdb Blog: C >>>>> Download Full
>>>>> Download LINK 6v