2
votes

We have an existing InstallShield installer which installs the following:

  1. Our product
  2. Python 2.7.13 via the official Windows exe installer
  3. 3 python modules (pywin32, psycopg, and setuptools) via exe installers
  4. 2 egg modules that we produce

Python is installed silently, but the 3 module installers bring up their own installer windows that block our install, look very unprofessional, and require the user to click through them. There appears to be no parameters that we can pass to force them to run silently.

Our installer is 7 years old. I assume that advancements in how Python modules are installed on Windows have made exe-based module installers completely obsolete, but I can't seem to find a clear answer on what the recommended "modern" method of installation would be. Given the following limitations, what can we do to make the installer run to completion with no need to click through the module installers?

The following conditions apply:

  1. We must continue to use InstallShield as the installation engine.
  2. We will not have an Internet connection during installation.
  3. The install is for all users on the machine.
1

1 Answers

1
votes

I never received an answer here, so I forged ahead on my own.

The Windows Python 2.7.13 installation includes pip and setuptools by default. That fact allowed me to switch from .exe module installers to wheel (.whl) installers. Since we have no Internet connection, I couldn't use a whl with unmet dependencies, but thankfully none of the modules I needed fell into that category. Once Python itself is installed, each pip installation is triggered right from the InstallShield code via LaunchAppAndWait().

The only "gotcha" was that the pywin32 module has a post-install script that must be run after the install by pip. That was handled automatically with the exe installer, so I didn't even know about it unless things went initially wrong with the whl install.