Video Screencast Help
Search Video Help Close Back
to help
Not able to make it to Vision this year? Get a sampling in the Best of Vision on Demand group.

Upgrade Code / Product Code ...

Updated: 23 May 2010 | 10 comments
Prafful Sharma's picture
0 0 Votes
Login to vote

Hi,

I have a scenario where a MSI was released to users without applying an upgrade code to the product assuming a one-off installation.

Now, I need to apply an upgrade to the MSI without changing the product code.

when the user installs, he gets prompted that the MSI with the same product code is already installed and it needs to be un-installed before this one can be installed.

I don't want users to take 2 actions, initially un-installing MSI and later re-installing the same.
The new MSI which will be released will have an upgrade code applied within but with the same product code.

------------------------------------------------------------------------------------------------

Is there a way I can automatically un-install the already intalled MSI and continue with the installation of this NEW MSI when the user installs this new MSI with least interruption to the user by using a custom action or using a script ?

Thanks

Discussion Filed Under:

Comments

EdT's picture
30
Apr
2009
0 Votes 0
Login to vote

Is the new MSI always going to be run with full UI

The simplest solution relies on the new MSI always running with full UI. You could add a custom action to run MSIEXEC /X {product code of old MSI} to the UI sequence, and make sure the CA is set as synchronous, so that the install waits for completion before continuing. You could also apply a condition to this custom action using the UILevel property so that it only runs with full UI - I will leave you to look it up in MSI.CHM to get the right value for the UILevel when using full UI.

The alternative is to use an EXE wrapper which first uninstalls the existing MSI, and then installs the new one, in sequence.

The big problem you might face is if the existing MSI requires a reboot after uninstall before you can install the new one. In that case, you may have to add code to shut down any running services and unlock any locked files, so that a reboot is not necessary.

If your issue has been solved, please use the "Mark as Solution" link on the most relevant thread.

DavidAJLockwood's picture
30
Apr
2009
0 Votes 0
Login to vote

 You can do upgrades without

 You can do upgrades without changing the product code. That would be a minor upgrade. Although you are limited to what you can modify but adding some files and registry keys would be fine. Depends what is in your update.

More information here:

https://www-secure.symantec.com/connect/articles/handling-upgrades-and-patches-wise-package-studio

EdT's picture
30
Apr
2009
0 Votes 0
Login to vote

Eh?

Just read your original posting again. It doesn't make sense ...

All MSI installs have an Upgrade code, so I don't understand what relevance you are attaching to your remark that the original MSI was deployed without an Upgrade code. It surely must have one.

Then as David states, you can indeed create a minor upgrade without changing the product code, but you DO need to quote the previous version of the MSI in your upgrade configuration.

If your issue has been solved, please use the "Mark as Solution" link on the most relevant thread.

AngelD's picture
30
Apr
2009
0 Votes 0
Login to vote

MSI was released to users

MSI was released to users without applying an upgrade code
Ed,
I guess "they" removed the UpgradeCode property before production.

Are you not required to do a reinstall for minor upgrades?

EdT's picture
30
Apr
2009
0 Votes 0
Login to vote

This ranks high on the stupid scale

Why remove the Upgrade code? That has to be one of the craziest ideas I've heard for a long while.
Good point about the reinstall. Too much coding - brain is frazzled this week!

If your issue has been solved, please use the "Mark as Solution" link on the most relevant thread.

piyushnasa's picture
04
May
2009
0 Votes 0
Login to vote

use REINSTALLMODE property

 Hi,
You can do a kind of repair to the existing MSI using a forced repair. Also use REINSTALLMODE=VOMUS, which will recache thenew MSI in installer folder.

BR,
Piyush

Piyush Nasa Altiris Certified Professional (ACP)

http://msiworld.blogspot.com/

Prafful Sharma's picture
12
May
2009
0 Votes 0
Login to vote

MSIEXEC /I MSI REINSTALL=ALL REINSTALLMODE=vomus

This seems to have fixed the issue.

The new MSI loads with Re-install mode and installs fine.

I am left with only one question, if there was a way to install the MSI to the end user without him getting 
to go to a command prompt or a external exe to load the MSI with MSIEXEC command.

Is there a way if I can create a single exe file which has MSI within encapsulated and automatically runs the command
msiexec.exe /I {} REINSTALL=ALL REINSTALLMODE=vomus on the first click..

This will enable us to release only one exe file rather than 2 more separate files.

Thanks.
Prafful Sharma's picture
05
May
2009
0 Votes 0
Login to vote

Can you shed more details on

Can you shed more details on this approach or a article you may have on this solution ? How can I package the new MSI to be automatically installed on the user's PC without him to take an additional step of un-installing the old MSI.  {The old MSI and the new MSI have a same product code}.

Currently I am left with a message prompting the user to un-install or configure the existing MSI as an already MSI with the similar PRODUCT CODE already exists on the machine. Which is true as a already installed Product with a similar product code already exists.

Thanks

EdT's picture
06
May
2009
0 Votes 0
Login to vote

Look up REINSTALLMODE in the MSI.CHM help file

The MSI.CHM help file is a very useful resource for researching these issues.

You will need to set the REINSTALL and REINSTALLMODE properties on the msiexec command line for your newer MSI.

If your issue has been solved, please use the "Mark as Solution" link on the most relevant thread.

EdT's picture
12
May
2009
0 Votes 0
Login to vote

No

Have you tried setting REINSTALL and REINSTALLMODE in the property table?

If your issue has been solved, please use the "Mark as Solution" link on the most relevant thread.