How to perform an upgrade via MSI without command line parameters
We have developed a basic MSI project with versions as - 1.0.00.00, 1.0.01.00, 1.1.00.00, 2.0.00.00 each of which will copy some text files to my preferred location.
With output as EXE,
I have first installed the project with version 1.0.00.00 and tried to upgrade to 1.0.01.00. This time, I was able to get a pop-up prompting whether I would like to perform an upgrade. This is the expected behavior and the upgrade was also successfully done.
The same upgrade had been done from 1.0.00.00 to 1.1.00.00 and also from 1.0.00.00 to 2.0.00.00 successfully.
With MSI as output,
I have done the same scenario as EXE. I have first installed the project with version 1.0.00.00 and tried to upgrade to 1.0.01.00. This time, I got a pop-up saying "Another version of this product is already installed. Installation of this version cannot continue. To configure or remove the existing version of this product, use Add/Remove Programs on the Control Panel".
I have tried to perform an upgrade via command prompt with the command "msiexec /i <MySetupPath\MyMsi.msi> REINSTALL=ALL REINSTALLMODE=vamus". This time the upgrade was succesfully performed.
I have tried to change the product code, package code and the UniqueID. All resulted in the same behavior.
To perform an upgrade via MSI, Right click on the MSI and give install does not seem to be working for me. Could you please let us know the correct scenario to perform an upgrade via MSI?
Install Shield version: 2015
Thanks in advance for the help.
InstallShield provides an upgrade view, where you can create the msi installer upgrade with less effort.
More information on this can be found at the below links:
Its not possible to deploy a Minor Upgrade without passing specific command line parameters to the MSI.
To make this process easier for end users Installshield includes these commands when you build a setup.exe release. The setup will automatically pass the commands to the MSI when it is run, meaning that the user simply has to doubleclick and not worry about anything else.
If creating a Setup.exe is not a solution, then you will need to create a Major Upgrade which does not need any commands to be passed to it.
How to create a Major Upgrade:
How to create a Minor Upgrade:
We have observed the behaviour of MariaDB which uses an msi and a right click performs a minor upgrade say for example from version 5.5.63 to 5.5.65. We would also like to obtain a similiar behaviour.
But also we could see that they have changed the product code for each release which might be similiar to a major upgrade. But in our case, when we are trying to change the product code, it results in installation of two instances.
A change of ProductCode instructs Windows Installer to perform a Major Upgrade - not a Minor Upgrade.
Microsoft explain this in more detail here: https://docs.microsoft.com/en-us/windows/win32/msi/major-upgrades
If you are changing the ProductCode and you are seeing two instances then its likely that you have not authored the upgrade correctly. Specifically make sure that the Upgrade Code is the same for the version you are upgrading and the version you are upgrading to.
If that does not help - walk through the "How to create a Major Upgrade" steps in the above post.
As per your suggestions, I have created an msi package by changing the product code for major upgrade. Now I am facing another issue in which, I am not able to get the Language dialog box. Initially when my Setup was a .exe file, I could get the Language dialog box. But now after converting my project to an msi file, the dialog box no longer appears. Is there any way to get the Language dialog box when my project is a .msi file.
Thank you for the answers.