Indigo Rose Software

Go Back   Indigo Rose Software Forums > MSI Factory 2.0 > MSI Factory 2.0 Discussion

Reply
 
Thread Tools Display Modes
  #1  
Old 07-09-2007
alexzfirm alexzfirm is offline
Forum Member
 
Join Date: Jul 2007
Posts: 69
UpgradeCode/ProductCode - previous version does not unistall

Is there a good explanation of the UpgradeCode/ProductCode logic? It looks like the one from the help file is too complex - because I cannot make it work the way I want

I made 2 installers for 2 different versions of the product

Installer A
Version = 1.0.1.0
ProductCode = PA
UpgradeCode = UC

Installer B
Version = 1.0.2.0
ProductCode = PB (different from Installer A)
UpradeCode = UC (same as Installer A)

Installing A then B on the clean system.

Expected behavior - during B installation A will be automatically uninstalled. This does not happen. After B installation I end up with 2 entries for my product in the Control Panel\Add Remove Programs


Main question: What settings/configuration should I use to build each new version as "Minor Upgrade" that is distributed via re-installation?

Thank you

Alex
Reply With Quote
  #2  
Old 07-10-2007
Lorne's Avatar
Lorne Lorne is offline
Indigo Rose Staff Member
 
Join Date: Feb 2001
Location: Indigo Rose Software
Posts: 2,588
You should probably read up some more about the differences between major and minor upgrades in MSI before you distribute anything. The MSDN has some important information on minor upgrades and major upgrades, and as with most things in MSI it's quite complicated. Those topics contain links to other topics with important information on them so be sure to follow the links and understand as much about the process as you can.

To answer your question, I believe you need to add the UpgradeCode for the product you're replacing to the "Upgrade codes" list (Project > Settings > Product tab). In this case, it will be the same upgrade code as the product you're installing.
__________________
--[[ Indigo Rose Software Developer ]]
Reply With Quote
  #3  
Old 07-10-2007
alexzfirm alexzfirm is offline
Forum Member
 
Join Date: Jul 2007
Posts: 69
Quote:
Originally Posted by Lorne View Post
You should probably read up some more about the differences between major and minor upgrades in MSI before you distribute anything.
I have read this article like 3 times yesterday and still do not see how to accomplish what we have now (based on the ancient InstallShield technology) using MSI.

Using MSI terminology we need a "Small update" distributed as full installer. But MSI does not support that. So the next best thing is doing Minor Update, so thats what we are trying to do.

That is really frustrating. Lets say you are in beta cycle and release 1 new build every few days. With MSI every customer has to go through uninstall/reinstall every freaking build. Am I just missing something :(?


Quote:
Originally Posted by Lorne View Post
To answer your question, I believe you need to add the UpgradeCode for the product you're replacing to the "Upgrade codes" list (Project > Settings > Product tab). In this case, it will be the same upgrade code as the product you're installing.
OK, I am going to try it. Thank you. That will automate the uninstall procedure, but still - it will be the full installation with all dialogs/license agreements even if you have just a minor build version increase.
Reply With Quote
  #4  
Old 07-10-2007
Lorne's Avatar
Lorne Lorne is offline
Indigo Rose Staff Member
 
Join Date: Feb 2001
Location: Indigo Rose Software
Posts: 2,588
The alternative is to build a patch. Right now there is no automated way to build a patch in Setup Factory for Windows Installer, however it is possible with a bit of work. See my post on building .msp patches in the Upgrading an install thread.

Note that although Windows Installer supports rudimentary binary differencing it is really, really terrible at it. Not only is it ridiculously slow, but it sometimes produces binary diffs that don't work (that won't apply successfully). Unless your files are under 6 MB you will probably want to use the "whole files only" option.

MSI patches come with their own limitations and complications so this isn't necessarily an easier solution for you, unfortunately.

If you aren't adding any files between versions (e.g. you just need to update data files) you may be able to use a non-MSI patching tool such as Visual Patch or Visual Patch Express, which both include an industry-leading binary differencing engine. However those products do not have any MSI support at this time.
__________________
--[[ Indigo Rose Software Developer ]]
Reply With Quote
  #5  
Old 07-10-2007
alexzfirm alexzfirm is offline
Forum Member
 
Join Date: Jul 2007
Posts: 69
Quote:
Originally Posted by Lorne View Post
If you aren't adding any files between versions (e.g. you just need to update data files) you may be able to use a non-MSI patching tool such as Visual Patch or Visual Patch Express, which both include an industry-leading binary differencing engine. However those products do not have any MSI support at this time.
First - thank you for all your answers and recommendations

No we do not want to go to the patch path. We release too frequently to maintain upgrade matrix for all the patches. We want to have the same installer that installs new copy of the software or upgrades any previous copy to the current version.

I think I am getting warmer though. It looks like I want "Small Update" or "Minor Update" and I want it applied by "reinstalling product" just like described in this article.

http://msdn2.microsoft.com/en-us/library/aa367575.aspx

How do I do that? Do I need to create some kind of a custom bootstrapper? I can see that in your library there is a function g_GetInstalledRunCommandLine() that uses the required command line parameters ("REINSTALL=ALL REINSTALLMODE=vomus"). But I do not understand how can I use it from the Setup Factory main project...

Do you have any sample projects/articles/etc related to "applying small updates by reinstalling"? Help please
Reply With Quote
  #6  
Old 11-18-2007
jmaldonadom jmaldonadom is offline
Indigo Rose Customer
 
Join Date: Nov 2007
Posts: 6
Update previous versions???

I am in the same circumstances. How to upgrade a previous version? I have followed this thread and made a lot of test without success. I do not want the user to uninstall the previous version, only rewrite files with the new versions.
Reply With Quote
  #7  
Old 11-20-2007
Brett's Avatar
Brett Brett is offline
Indigo Rose Staff Member
 
Join Date: Jan 2000
Posts: 2,001
To update a previous version as a minor upgrade, you need to run the msiexec.exe with special command line parameters on the taget system:

Code:
msiexec.exe -i <path to your new msi file> REINSTALL=ALL REINSTALLMODE=vomus
That can be done from Start > Run on the user's system.

Unfortunately, that is the ONLY way to do a minor upgrade in MSI. There is no way to tell the MSI file to do that when it is double-clicked.

The easiest way to handle the situation is to use our standard bootstrapper which contains all of the logic to do all of this behind the scenes for the user - all that they have to do is to double-click the .exe file created by the bootstrapper.

We will be releasing a new version of SUFWI this week that includes a bootstrapper designer application and a script editor application that allow you to easily edit and modify custom bootstrapper scripts as well.
Reply With Quote
  #8  
Old 11-21-2007
jmaldonadom jmaldonadom is offline
Indigo Rose Customer
 
Join Date: Nov 2007
Posts: 6
bootstrapper works OK! with upgrade codes

Ok, thank you for your answer, and I saw that the bootstrapper standard works with the upgrade codes correctly.
Reply With Quote
  #9  
Old 11-22-2007
jmaldonadom jmaldonadom is offline
Indigo Rose Customer
 
Join Date: Nov 2007
Posts: 6
A related issue:

I got install new full version of the product, but I need to install only a few files.

I created an installer that includes only the files to replace, the same product code and the code update appropriate. The version number is updated in "Add / Remove Programs", but the files are not replaced.
Any thoughts?

My first project is to install the full version of the product. Subsequently, only modified files in distributing new versions, I do not need to distribute again DLL's or other auxiliary files. Only need to distribute new compilation of .Exe and few modified files (. Mdb,. Help ...)
It is possible?
Reply With Quote
  #10  
Old 12-14-2007
jmaldonadom jmaldonadom is offline
Indigo Rose Customer
 
Join Date: Nov 2007
Posts: 6
Minor Upgrade

I created an installer that includes only the files to replace, the same product code and the appropriate code update . The version number is updated in "Add / Remove Programs", but the files are not replaced.
Any thoughts?

My first project is to install the full version of the product. Subsequently, only modified files in distributing new versions, I do not need to distribute again DLL's or other auxiliary files. Only need to distribute new compilation of .Exe and few modified files (. Mdb,. Help ...)
It is possible?
Reply With Quote
Reply

Thread Tools
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off


Similar Threads
Thread Thread Starter Forum Replies Last Post
Silently removing previous version of an app lcantat Setup Factory 7.0 Discussion 1 06-21-2007 09:10 PM
Unable to find software? NigelLacey Visual Patch 2.0 4 10-11-2005 11:35 AM
HOWTO: Open a Version 3.0 Project in Version 4.0 Support AutoPlay Media Studio 4.0 Examples 0 10-30-2002 03:09 PM
HOWTO: Detect Acrobat Version Support AutoPlay Media Studio 4.0 Examples 0 10-22-2002 05:01 PM
INFO: Moving from the Trial Version to Commercial Version Support AutoPlay Media Studio 4.0 Examples 0 10-07-2002 09:52 AM


All times are GMT -6. The time now is 11:04 PM.


Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2009, Jelsoft Enterprises Ltd.
Copyright © 2000 - 2009 Indigo Rose Corporation. All rights reserved.
Indigo Rose Software