Creating Basic MSI that invokes another msi installation

installationinstallshield

I have asked this exact question on the Flexara forum, but got no response up to today, so I want to ask it here.

We currently have a InstallScript project which runs fine. The resulting setup can be made unattended/silent fine.
In this setup we have some features and invoke a number of third-party installations (that are a prerequisite for running our software).
However, we have customers that want an MSI file and therefore we resorted to the Basic MSI project type.

The setup is made without too much hassle (I'm fairly new to InstallShield) and I can generate a .exe and .msi from this project.
However the only issue I have left is invoking one of the third-party installers.
That third-party installer (made with NSIS) on its turn invokes another installer which is MSI based.

This results in having error 1500 – the fact that you cannot run a msi type installation while another is running.

I've tried scheduling the CA (that are used to invoke the third-party installers) as the first action and as last, but no success.
Before resorting on the more unorthodox scenarios (like creating a task on Windows Task manager that runs after our installer finishes, or at the next reboot and forcing a reboot – which our customers don't like) or a scenario that we don't bundle the 'faulting' installer (we really like to be able to hand over a single intaller and not multiple), I'd thought I ask your input.

I've tried searching for solutions everywhere on the internet, but either I'm failing due to wrong keywords or I just didn't stumble on the right post yet.

Are there any options left for us to create a single MSI installer that is able to invoke this third-party installer (which invokes a msi installer on its turn)?

Best Answer

Since an EXE bootstrapper is not acceptable, there is only one solution:

  • store the prerequisite installers in Binary table of your MSI
  • create some custom actions which extract them from this table and launch them
  • schedule them in InstallUISequence, for example right before Progress dialog
  • use searches to detect if the prerequisites are installed or not
  • condition your custom actions with the search results

Basically, you need to launch them during the installation UI. It won't work if you launch them during InstallExecuteSequence.

I don't think the basic MSI project supports this, but it may be supported by more advanced project types. Other setup authoring tools offer direct support for this.

Related Topic