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
Thanks for sharing an article like this. The information which you have provided is better than another blog. Great work.
ReplyDeleteAndroid apps development company in Noida
I like this post, And I guess that they having fun to read this post, they shall take a good site to make a information, thanks for sharing it to me.
ReplyDeleteEmergency Dentist Services Timonium
Thanks for sharing an article like this. The information which you have provided is better than another blog.
ReplyDeleteFreelance mobile app developer
Thanks for provide great informatic and looking beautiful blog, really nice required information & the things i never imagined and i would request, wright more blog and blog post like that for us. Thanks you once agian
ReplyDeleteWarehousing Services in India
Thanks for sharing The Awesome content. I will also share with my friends. Great Content thanks a lot.
ReplyDeleteWeb and app development services
Thank you for sharing such a nice article with us I had visited your website first time and got myself fall in love with your content, i have bookmarked your website to visit again ahead
ReplyDeletePersonalized gifts dubai
You guys are writing some Amazing tips. This article really helped me a lot. Thanks for sharing this
ReplyDeleteAI Voice Generator132wss