如何检查Inno安装程序中是否安装了特定的Python版本?

如何检查Inno安装程序中是否安装了特定的Python版本?,python,inno-setup,Python,Inno Setup,如何为Inno setup Compiler编写安装脚本,只有在没有正确版本时才能安装Python 如何检查是否安装了特定的Python版本,例如32位的Python 3.6.8?方法 可以使用注册表函数在安装脚本的代码部分完成安装检查。Python安装程序根据安装类型在不同位置创建注册表项: HKEY\u CURRENT\u USER\Software\Python\PythonCore HKEY\u LOCAL\u MACHINE\Software\Python\PythonCore HK

如何为Inno setup Compiler编写安装脚本,只有在没有正确版本时才能安装Python

如何检查是否安装了特定的Python版本,例如32位的Python 3.6.8?

方法 可以使用注册表函数在安装脚本的代码部分完成安装检查。Python安装程序根据安装类型在不同位置创建注册表项:

  • HKEY\u CURRENT\u USER\Software\Python\PythonCore
  • HKEY\u LOCAL\u MACHINE\Software\Python\PythonCore
  • HKEY\u CURRENT\u USER\Software\Wow6432Node\Python\PythonCore
  • HKEY\u LOCAL\u MACHINE\Software\Wow6432Node\Python\PythonCore
Python注册表组织的完整结构可以在中找到

解决方案 使用以下函数检查是否安装了Python 3.6.8、32或64位版本。此函数不是通用的,因为Python注册表组织已随Python版本而改变。请根据您的需要进行调整,如果您找到其他版本的解决方案,请告知我们

[代码]
{检查注册表中是否存在项并检查版本字符串。
如果安装了Python且版本正确,则返回true}
函数checkKey(regpart:integer;key:string;version:string):布尔;
变量
installedVersion:字符串;
开始
结果:=
{检查密钥是否存在}
RegKeyExists(regpart,Key)和
{尝试获取版本字符串}
RegQueryStringValue(regpart,键,'Version',installedVersion)和
{检查版本字符串}
(版本=已安装版本);
结束;
{如果未安装python 3.6.8位,则返回true}
函数python_3_6_8_未安装():布尔;
变量
键:字符串;
版本:字符串;
开始
{检查注册表}
键:='Software\Python\PythonCore\3.6-32';
版本:='3.6.8';
结果:=
{检查所有用户32位安装}
(非checkKey(HKLM32,Key,Version))和
{检查当前用户32位安装}
(非checkKey(HKCU32,Key,Version))和
{检查所有用户64位安装}
(非checkKey(HKLM64,Key,Version))和
{检查当前用户64位安装}
(非checkKey(HKCU64,Key,Version));
结束;