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

Posted

技术标签:

【中文标题】如何使用 InstallShield 在 Windows 上最好地安装 Python + 模块【英文标题】:How best to install Python + modules on Windows using InstallShield 【发布时间】:2017-09-05 23:51:52 【问题描述】:

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

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

Python 是静默安装的,但是 3 个模块安装程序会打开他们自己的安装程序窗口,这些窗口会阻止我们的安装,看起来非常不专业,并且需要用户单击它们。似乎没有我们可以传递的参数来强制它们静默运行。

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

以下条件适用:

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

【问题讨论】:

【参考方案1】:

我这里从来没有收到过答复,所以我独自前行。

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

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

【讨论】:

另一种选择是使用捆绑工具。有一些工具可以将你的 python 应用程序捆绑到 .exe 中。

以上是关于如何使用 InstallShield 在 Windows 上最好地安装 Python + 模块的主要内容,如果未能解决你的问题,请参考以下文章

InstallShield - 相对文件路径

如何让 InstallShield LE 自动卸载现有安装?

Installshield:如何更新已经运行的 Windows 服务

InstallShield 执行卸载自定义动作

如何在MSI Installshield重新启动管理器对话框中禁用“不关闭应用程序”选项

在Visual Studio和InstallShield中签署所有需要的文件