Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/329.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用Inno安装程序安装Python_Python_Inno Setup - Fatal编程技术网

使用Inno安装程序安装Python

使用Inno安装程序安装Python,python,inno-setup,Python,Inno Setup,我正在使用Inno setup从C#程序成功创建一个安装程序。要运行这个程序,我需要Python。直到今天,我还要求我的客户手动安装Python,因为有些客户并不总是遵循我的安装指南,所以我经常收到他们的问题。现在,我想简化安装,使一切都自动完成。我需要设置: Python的安装路径:C:\Python\Python3.5.2 适用于所有用户的安装 为Python设置全局环境变量C:\Python\Python3.5.2 如果所有这些都已存在,则无需安装 我试着用这段代码来做这件事,但没有成功。

我正在使用Inno setup从C#程序成功创建一个安装程序。要运行这个程序,我需要Python。直到今天,我还要求我的客户手动安装Python,因为有些客户并不总是遵循我的安装指南,所以我经常收到他们的问题。现在,我想简化安装,使一切都自动完成。我需要设置:

  • Python的安装路径:
    C:\Python\Python3.5.2
  • 适用于所有用户的安装
  • 为Python设置全局环境变量
    C:\Python\Python3.5.2
  • 如果所有这些都已存在,则无需安装
  • 我试着用这段代码来做这件事,但没有成功。很遗憾,正常的Python安装正在启动

    [运行]
    文件名:“{app}\deploy\python-3.5.2.exe”\
    参数:“/i”C:\Python\Python-3.5.2”“/qb!ALLUSER=1 ADDLOCAL=ALL”\
    WorkingDir:“{app}\deploy”;标志:32位;检查:python_是否已安装
    [守则]
    函数python_is_installed():Boolean;
    变量
    键:字符串;
    开始
    {检查注册表}
    键:=“software\Python\Python-3.5.2\InstallPath”;
    结果:=不存在RegValueExists(HKEY_LOCAL_机器,键“”);
    结束;
    
    我做错了什么


    Stefan

    您似乎使用了完全错误的命令行参数(对于Windows Installer?)

    有关Python Windows安装程序的正确命令行参数,请参阅Python文档:


    你可能想要这样的东西:

    /passive installUsers=1 TargetDir=C:\Python\Python3.5.2 PrependPath=1
    
    另一个问题是代码部分中的安装检查未按预期工作
    RegValueExists()
    始终返回值名为空的false。这意味着您的check函数总是返回false,即使密钥存在。这就是为什么Python安装总是运行的原因,即使已经安装了Python

    要检查是否存在键,而不是值,请使用函数
    RegKeyExists()

    请参见

    注册表值存在(根,键“”)检查键中是否存在默认值。我没有安装特定的Python版本。但是检查我安装的版本,它们的
    InstallPath
    子键中确实有默认值。所以OP的代码很可能在这方面起作用。否则,就测试Python安装而言,您的代码似乎更好。但我仍然相信你没有回答OP的问题。考虑启动一个关于检测Python安装的新问题,并自行回答。到时候我很乐意为你的帖子投票。