'Chained Installation

Consider a case where I have installshield software which installs a .msi through chained installation. Let's say it's Setup-1. Now I have another setup Setup-2 which installs the same .msi through chained installation.

Now if I uninstall either of the setup (Setup-1 or Setup-2), it is uninstalling the chained msi. So the other setup cannot use it which leads to a problem. Only when both are uninstalled, it should be uninstalled. It should be something like shared components.

How to avoid this scenario?



Solution 1:[1]

For this scenario, it is better to use the concept of prerequisites instead of chained packages.

What is a prerequisite?

This is a separate installation package that contains the resources required by your application to run. Your main installer will check if this is installed and install it if it is missing from the machine.

When you install Setup-2 it should see the package is already installed and skip it.

When you uninstall Setup-1 or 2 the prerequisite should not be removed. So your end-user would need to manually uninstall the prerequisite package too.

This is how must common shared components are deployed. Things like VC++ Redist, SQL Server Express, etc...

Solution 2:[2]

InstallShield has a project type called Suite Installers which provides bootstrapper/chainer for installing multiple packages. One of the features is the concept of a shared package where InstallShield will reference count the package and remove it like you want.

https://docs.revenera.com/installshield22helplib/helplibrary/SteSharedPackages.htm

Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source
Solution 1 Bogdan Mitrache
Solution 2 Christopher Painter