我有一些软件可以在加载和调用需要它的DLL之前检查是否安装了Visual C ++ 2015 x86可再发行组件。检查是通过使用以下声明
的MsiQueryProductState
的互操作来完成的
[DllImport("msi.dll", SetLastError = true)]
public static extern INSTALLSTATE MsiQueryProductState(string product);
,电话是
Win32API.MsiQueryProductState("{A2563E55-3BEC-3828-8D67-E5E8B9E8B675}")
曾经工作过,但在其他安装了Windows 10的机器上仍然可以安装原始的,未更新的可再发行组件。
我使用VS2015和Update 2进行C#Windows桌面开发,其中包括可再发行的更新2.
几周前,我将Windows 7升级到Windows 10,昨天发现支票从返回INSTALLSTATE_DEFAULT
返回到INSTALLSTATE_UNKNOWN
。我不确定这是否与此问题有关,因为我在升级后才发现它。
在谷歌搜索并找不到任何内容后,我搜索了注册表和可再发行的安装日志文件,我找到了以下密钥
{BD9CFD69-EB91-354E-9C98-D439E6091932}
{2e085fd2-a3e4-4b39-8e10-6b8d35f55244}
{B5FC62F5-A367-37A5-9FD2-A6E137C0096F}
{BE960C1C-7BAD-3DE6-8B1A-2616FE532845}
但如果我做得对,我不是最微弱的想法 - 前两个返回INSTALLSTATE_UNKNOWN
,后两个返回INSTALLSTATE_DEFAULT
。哪个有效,但我不知道它是否正确。我以为所有的版本和更新都会使用相同的密钥。
所以,我想问的问题是:我应该查询哪些密钥才能知道是否安装了兼容版本的Visual C ++ 2015 x86 Redistributables,无论是更新,更新还是更新2?