This website uses cookies. By clicking Accept, you consent to the use of cookies. Click Here to learn more about how we use cookies.
Turn on suggestions
Auto-suggest helps you quickly narrow down your search results by suggesting possible matches as you type.
- Revenera Community
- :
- InstallShield
- :
- InstallShield Forum
- :
- Re: Creating Basic MSI that invokes another msi installation
Subscribe
- Mark Topic as New
- Mark Topic as Read
- Float this Topic for Current User
- Subscribe
- Mute
- Printer Friendly Page
- Mark as New
- Subscribe
- Mute
- Permalink
- Report Inappropriate Content
‎Sep 30, 2011
04:28 AM
Creating Basic MSI that invokes another msi installation
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)?
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)?
(2) Replies
- Mark as New
- Subscribe
- Mute
- Permalink
- Report Inappropriate Content
‎Oct 06, 2011
03:34 AM
Due to lack of response, I asked the same question on StackOverflow, see http://stackoverflow.com/questions/7645801/creating-basic-msi-that-invokes-another-msi-installation.
Some of the answers here:
Some of the answers here:
Realistically, most people who want a raw MSI want it that way to deploy it. So typically they can be given instructions on installing the dependencies as a separate step. – Michael Urman
There's also chaining. If running on Windows Installer 4.5 or later, either the bootstrap or the MsiEmbeddedChainer table can kick this off, and the latter presents just an MSI to the user. However the latter doesn't run properly in all scenarios under Terminal Services. – Michael Urman yesterday
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. - Cosmin Pirvu
- Mark as New
- Subscribe
- Mute
- Permalink
- Report Inappropriate Content
‎Oct 06, 2011
03:40 AM
See the following StackOverflow question that somewhat answers my post: http://stackoverflow.com/questions/7645801/creating-basic-msi-that-invokes-another-msi-installation
Realistically, most people who want a raw MSI want it that way to deploy it. So typically they can be given instructions on installing the dependencies as a separate step. – Michael Urman
There's also chaining. If running on Windows Installer 4.5 or later, either the bootstrap or the MsiEmbeddedChainer table can kick this off, and the latter presents just an MSI to the user. However the latter doesn't run properly in all scenarios under Terminal Services. – Michael Urman
Windows Installer doesn't support this. – Cosmin Pirvu
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. - Cosmin Pirvu