使用Inno Setup安装Python

时间:2017-02-19 11:03:13

标签: python inno-setup

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

  1. 安装Python的路径:C:\Python\Python3.5.2
  2. 所有用户的安装
  3. 设置Python C:\Python\Python3.5.2
  4. 的全局环境变量
  5. 如果所有这些都已存在则无需安装
  6. 我尝试使用此代码执行此操作,但我没有取得任何成功。不幸的是,正常的Python安装正在启动。

    [Run]
    Filename: "{app}\deploy\python-3.5.2.exe"; \
        Parameters: "/i ""C:\Python\Python-3.5.2"" /qb! ALLUSER=1 ADDLOCAL=ALL"; \
        WorkingDir: "{app}\deploy"; Flags: 32bit; Check: python_is_installed
    
    [Code]
    
    function python_is_installed() : Boolean;
    var
      key : string;
    begin
       { check registry }
       key := 'software\Python\Python-3.5.2\InstallPath';
       Result := not RegValueExists(HKEY_LOCAL_MACHINE, Key, '');  
    end;
    

    我做错了什么?

    BR 斯蒂芬

2 个答案:

答案 0 :(得分:1)

另一个问题是代码部分中的安装检查没有按预期工作。 RegValueExists() 总是以空值名称返回 false。这意味着即使键存在,您的检查函数也始终返回 false。这就是为什么 Python 安装总是运行的原因,即使 Python 已经安装。

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

How to check if specific Python version is installed in Inno Setup?

答案 1 :(得分:0)

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

有关Python Windows安装程序的正确命令行参数,请参阅Python文档:
https://docs.python.org/3/using/windows.html

你可能想要这样的东西:

/passive InstallAllUsers=1 TargetDir=C:\Python\Python3.5.2 PrependPath=1