如何最好地使用 InstallShield 在 Windows 上安装 Python + 模块

How best to install Python + modules on Windows using InstallShield

我们有一个现有的 InstallShield 安装程序,它安装了以下内容:

  1. 我们的产品
  2. Python 2.7.13 通过官方 Windows exe 安装程序
  3. 3 python 个模块(pywin32、psycopg 和 setuptools)通过 exe 安装程序
  4. 我们生产的 2 个鸡蛋模块

Python 是静默安装的,但是 3 个模块安装程序会弹出他们自己的安装程序 windows 来阻止我们的安装,看起来很不专业,并且需要用户点击它们。似乎没有我们可以传递的参数来强制它们静默地 运行。

我们的安装人员今年 7 岁。我认为 Python 模块在 Windows 上的安装方式的进步已经使基于 exe 的模块安装程序完全过时了,但我似乎找不到关于推荐 "modern" 的明确答案安装方法是。鉴于以下限制,我们可以做些什么来使安装程序 运行 完成而无需单击模块安装程序?

满足以下条件:

  1. 我们必须继续使用 InstallShield 作为安装引擎。
  2. 我们在安装过程中不会有 Internet 连接。
  3. 安装适用于计算机上的所有用户。

这里一直没有得到答复,所以我自己努力了。

Windows Python 2.7.13 安装默认包含 pip 和 setuptools。这一事实使我能够从 .exe 模块安装程序切换到 wheel (.whl) 安装程序。由于我们没有 Internet 连接,我无法使用具有未满足依赖项的 whl,但幸运的是,我需要的 none 个模块属于该类别。安装 Python 本身后,每个 pip 安装都会通过 LaunchAppAndWait() 从 InstallShield 代码触发。

唯一的 "gotcha" 是 pywin32 模块有一个 post-install 脚本,在通过 pip 安装后必须 运行。这是由 exe 安装程序自动处理的,所以我什至不知道它,除非 whl 安装最初出现问题。