The Prerequisites dialog box does not appear when you launch add or remove programs


I have an Installshield Basic MSI Project with prerequisites. Once the user tries to run the setup.exe file, it shows the prerequisites dialog and the user is able to install the prerequisites successfully as expected.

After the application is installed successfully, the user removes one of the prerequisites.

Later the user tries to modify the installation by double clicking the setup.exe. The installation shows the prerequisites dialog as expected before proceeding with the modification.

But if the user tries to modify the installation from Add/Remove programs (using the change option) the installation does not shows the prerequisites dialog.

My questions are as below: 1. Why prerequisites dialog is shown only when user clicks the setup.exe and not from Add/Remove programs 2. What is the expected behaviour when the user tries to modify from Add/Remove programs and one of the prerequisites is missing.

The behaviour is different when running the installer from the Add/Remove Programs Panel, because you are not running the whole Installer.

Actually, when you build a MSI installer with InstallShield, you get a "Disk 1" Folder, containing :

  • YourProduct.msi
  • a setup.exe file
  • folder containing your prerequisites, named ISSetupPrerequisites

(Or else you can get a single setup.exe file, that includes all of these items...)

If I understood it right, the prerequisites are not checked by the msi itself, but by the setup.exe.

When you run the MSI through the Add/Remove Programs panel, Windows looks for the msi, that has automatically been stored in %WinDir%\Installer. The problem is that only the msi is stored there, but the setup.exe and the prerequisites aren't, so the prerequisites cannot be checked nor installed this way.

If you want to check some condition at the beginning of your installer in order to interrupt the installation if your prerequisites are not met, then you should look at the "LaunchCondition" action.