Inno Setup打包程序如何检测此电脑是否安装2005到2022的运行库

摘要:Visual C++ 运行库2005 版本:32 位系统检查注册表项 HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\VisualStudio\8.0\VC\Runtimes\x86 ,64 位系统检查 HKEY_LOCAL_MAC

Visual C++ 运行库2005 版本:32 位系统检查注册表项 HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\VisualStudio\8.0\VC\Runtimes\x86 ,64 位系统检查 HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\VisualStudio\8.0\VC\Runtimes\x64 。若存在相关键值,通常表示运行库已安装。2008 版本:对应 32 位的注册表项为 HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\VisualStudio\9.0\VC\Runtimes\x86 ,64 位是 HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\VisualStudio\9.0\VC\Runtimes\x64510。2010 版本:32 位在 HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\VisualStudio\10.0\VC\Runtimes\x86 ,64 位在 HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\VisualStudio\10.0\VC\Runtimes\x64 。2012 版本:32 位可看 HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\VisualStudio\11.0\VC\Runtimes\x86 ,64 位则是 HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\VisualStudio\11.0\VC\Runtimes\x64 。2013 版本:32 位的注册表位置是 HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\VisualStudio\12.0\VC\Runtimes\x86 ,64 位是 HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\VisualStudio\12.0\VC\Runtimes\x64 。2015 版本:检查 HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\VisualStudio\14.0\VC\Runtimes\x64 等,可获取版本号进一步确认7。2017 版本:在注册表中找 HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\VisualStudio\15.0\VC\Runtimes\x64 等类似项。2019 版本:对应的注册表项例如 HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\VisualStudio\16.0\VC\Runtimes\x64 。2022 版本:需查找如 HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\VisualStudio\17.0\VC\Runtimes\x64 等相关注册表位置。.NET Framework 运行库:不同版本的.NET Framework 也有其对应的注册表检测位置。如.NET Framework 2.0,可检查 HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.NETFramework\policy\v2.0 24。function InitializeSetup: Boolean;beginif RegKeyExists(HKLM, 'SOFTWARE\Microsoft\VisualStudio\9.0\VC\Runtimes\x86') thenbegin// 运行库已安装,可进行相应操作MsgBox('Visual C++ 2008运行库(32位)已安装。', mbInformation, MB_OK);Result := True;endelsebegin// 运行库未安装,可选择安装或提示用户if MsgBox('未检测到Visual C++ 2008运行库(32位),是否现在安装?', mbConfirmation, MB_YESNO) = idYes thenbegin// 执行安装运行库的操作// 例如:Exec('{app}\vcredist_2008_x86.exe', '/q', '', SW_SHOWNORMAL, ewWaitUntilTerminated, ResultCode);Result := True;endelseResult := False;end;end;RegQueryStringValue 函数和 RegQueryDWordValue 函数:可以用来获取注册表键值中的字符串值和 DWORD 值,进一步判断运行库的详细信息,如版本号等。以下是一个获取 Visual C++ 2015 运行库版本号的示例:function InitializeSetup: Boolean;varVersion: string;beginif RegQueryStringValue(HKLM, 'SOFTWARE\Wow6432Node\Microsoft\VisualStudio\14.0\VC\Runtimes\x64', 'Version', Version) thenbegin// 在这里可以根据获取到的版本号进行进一步判断和处理MsgBox('Visual C++ 2015运行库已安装,版本号:' + Version, mbInformation, MB_OK);Result := True;endelsebeginMsgBox('未检测到Visual C++ 2015运行库。', mbInformation, MB_OK);Result := False;end;end;

来源:miniappbb2525efcf084

相关推荐